Claude AI, GitHub ve Coolify ile Proje Geliştirme ve Otomatik Deploy Rehberi

Yaklaşık 7 dakikalık okuma

Serinin önceki yazılarında Claude AI, GitHub ve Coolify‘ı ayrı ayrı tanıttık. Bu yazıda üçünü birleştirip gerçek bir iş akışı kuruyoruz: Claude Code ile kodu yazdıracak, private bir GitHub deposunda saklayacak ve her push’ta Coolify ile kendi sunucumuzda otomatik olarak yayına alacağız. Yol boyunca private repo, Deploy Key, GitHub App, webhook ve redeploy token gibi kafa karıştıran kavramları da netleştireceğiz.

Genel Akış

  1. Claude Code, bilgisayarınızdaki proje klasöründe kodu yazar ve test eder.
  2. Kod, private bir GitHub deposuna gönderilir (push).
  3. GitHub, değişikliği webhook ile Coolify’a bildirir.
  4. Coolify, depoyu çeker, uygulamayı derler ve SSL’li alan adınızda yayına alır.
Claude Code, GitHub ve Coolify ile genel deploy akışı: git push, webhook ve deploy adımları
Claude Code kodu yazar, GitHub saklar, Coolify her push sonrası yayına alır.

Kurulum bir kez yapıldıktan sonra yeni bir sürüm çıkarmak, yalnızca git push demekten ibarettir.

Gereksinimler

  • Coolify kurulu bir sunucu ve ona yönlendirilmiş bir alan adı
  • Bir GitHub hesabı
  • Bilgisayarınızda Git ve Claude Code (Claude Pro/Max aboneliği veya API hesabı ile)

1. Adım: Claude Code ile Projeyi Oluşturma

Claude Code’u kurun. Resmi kurulum betiği:

# macOS / Linux
curl -fsSL https://claude.ai/install.sh | bash

# Windows (PowerShell)
irm https://claude.ai/install.ps1 | iex

Node.js kuruluysa npm install -g @anthropic-ai/claude-code ile de kurabilirsiniz. Claude Code ayrıca masaüstü uygulamasında ve VS Code eklentisi olarak da kullanılabilir.

Boş bir klasör oluşturup Claude Code’u başlatın:

mkdir durum-paneli && cd durum-paneli
claude

Ardından ne istediğinizi açıkça yazın. Örnek bir istem:

“Node.js ve Express ile basit bir sunucu durum paneli yap. Ana sayfada bir HTML sayfası olsun, /api/health adresi JSON olarak {status: ‘ok’} dönsün. Port numarasını PORT ortam değişkeninden alsın, yoksa 3000 kullansın. package.json’a start betiği ekle, .gitignore oluştur ve projeyi yerelde çalıştırıp test et.”

Claude Code dosyaları oluşturur, gerekli paketleri kurar, uygulamayı çalıştırıp test eder ve her adımda yaptığı değişiklikleri size gösterir. Kalıcı proje kurallarını (kod stili, kullanılacak komutlar vb.) proje kökündeki CLAUDE.md dosyasına yazarak her oturumda dikkate alınmasını sağlayabilirsiniz.

İpucu: “Port numarasını ortam değişkeninden al” gibi küçük bir detay, uygulamanın Coolify’da sorunsuz çalışmasını sağlar. Gizli bilgileri (API anahtarı, veritabanı parolası) asla koda yazdırmayın; her zaman ortam değişkeninden okutun.

2. Adım: Private GitHub Deposuna Gönderme

Gönderim öncesi .gitignore dosyasında .env ve node_modules/ satırlarının olduğundan emin olun. Ardından GitHub CLI ile private depo oluşturup gönderin:

git init
git add .
git commit -m "İlk sürüm: durum paneli"
gh repo create durum-paneli --private --source=. --push

Bu adımları Claude Code’a da yaptırabilirsiniz: “Değişiklikleri commit et ve durum-paneli adında private bir GitHub deposu oluşturup gönder” demeniz yeterlidir.

Önce Kavramları Netleştirelim

Private bir depoyu yayına almak isteyen herkesin karşılaştığı terimler şunlardır:

KavramNedir?Ne işe yarar?
Private repoYalnızca yetkili kişilerin görebildiği depoKodunuzu herkese açmadan saklar; Coolify’ın da erişmek için yetkiye ihtiyacı vardır
GitHub AppCoolify adına GitHub’da oluşturulan, seçtiğiniz depolara erişim izni olan uygulamaDepoları listeler, çeker ve push’ta otomatik deploy için webhook’u kendisi kurar (önerilen yöntem)
Deploy KeyTek bir depoya erişim veren SSH anahtarıCoolify’ın o depoyu sadece okuyarak çekmesini sağlar; webhook’u elle kurmanız gerekir
WebhookGitHub’ın bir olay olduğunda (ör. push) belirli bir adrese gönderdiği bildirimCoolify’ın yeni kodu fark edip yeniden derlemesini tetikler
Deploy (redeploy) webhook + API tokenCoolify’ın bir uygulamayı yeniden yayınlamak için sunduğu adres ve bu adresi çağırmaya yetki veren anahtarGitHub Actions veya başka bir sistemden “şimdi yayına al” komutu göndermeyi sağlar
Environment variablesUygulamaya dışarıdan verilen ayarlar (DATABASE_URL, API_KEY vb.)Gizli bilgileri koddan ayrı tutar
GitHub SecretsGitHub Actions’ın kullandığı şifreli değişkenlerToken gibi bilgileri workflow dosyasına yazmadan kullanmayı sağlar

Kısaca: Deploy Key ve GitHub App, Coolify’ın kodunuzu okuyabilmesi içindir. Webhook ve API token ise ne zaman yayına alınacağını tetiklemek içindir.

Coolify erişim ve tetikleme farkı: GitHub App veya Deploy Key ile okuma, webhook veya API token ile tetikleme
Deploy Key ve GitHub App erişim içindir; webhook ve API token ise yayını tetikler.

3. Adım (Yöntem A): GitHub App ile Bağlantı (Önerilen)

  1. Coolify panelinde Sources bölümüne gidin ve + Add ile yeni bir GitHub App oluşturun.
  2. Yönergeleri izleyerek uygulamayı GitHub hesabınızda kaydedin (register). Coolify sizi GitHub’a yönlendirir ve gerekli izinleri otomatik doldurur.
  3. Kurulum (install) adımında Only select repositories seçeneğiyle sadece Coolify’ın erişmesini istediğiniz depoları seçin. Tüm depolara erişim vermek yerine seçim yapmak daha güvenlidir.
  4. Projenizde Add New Resource › Private Repository (with GitHub App) seçin, oluşturduğunuz GitHub App’i ve durum-paneli deposunu seçin.
  5. Build pack olarak Nixpacks bırakın; Node.js projesini otomatik algılar. Ports Exposes alanına uygulamanın dinlediği portu (3000) yazın.
  6. Domains alanına https://durum.example.com yazın ve Deploy deyin.

Bu yöntemde otomatik deploy varsayılan olarak açıktır: main dalına yaptığınız her push, uygulamayı yeniden yayınlar. İsterseniz pull request’ler için Preview Deployments özelliğini açarak her PR’ı ayrı bir test adresinde görebilirsiniz.

3. Adım (Yöntem B): Deploy Key ile Bağlantı

GitHub App kurmak istemiyorsanız veya tek bir depo için yetki vermek istiyorsanız Deploy Key kullanabilirsiniz.

Deploy Key anahtar dağılımı: özel anahtar Coolify'a, açık anahtar GitHub Deploy keys bölümüne
Özel anahtar Coolify’da, açık anahtar GitHub deposunun Deploy keys bölümünde durur.

1. Anahtar çifti oluşturun (bu anahtar sadece bu iş içindir, passphrase kullanmayın):

ssh-keygen -t ed25519 -f coolify_deploy -N "" -C "coolify-durum-paneli"

2. Özel anahtarı Coolify’a ekleyin: Keys & Tokens › Private Keys › + Add bölümüne coolify_deploy dosyasının içeriğini yapıştırın. Coolify bu ekranda sizin için anahtar oluşturmayı da teklif eder.

3. Açık anahtarı GitHub’a ekleyin: Deponun Settings › Deploy keys › Add deploy key bölümüne coolify_deploy.pub içeriğini yapıştırın. Allow write access kutusunu işaretlemeyin; Coolify’ın sadece okuma yetkisine ihtiyacı vardır.

4. Kaynağı oluşturun: Add New Resource › Private Repository (with Deploy Key) seçin, eklediğiniz anahtarı seçin ve depo adresini SSH biçiminde girin:

[email protected]:kullaniciadi/durum-paneli.git

5. Otomatik deploy için webhook kurun: Bu yöntemde GitHub, push olduğunu Coolify’a kendiliğinden bildirmez. Coolify’da uygulamanın Webhooks sekmesindeki GitHub webhook adresini kopyalayın ve bir GitHub Webhook Secret belirleyin. Ardından GitHub’da deponun Settings › Webhooks › Add webhook bölümünde:

  • Payload URL: Coolify’dan kopyaladığınız adres
  • Content type: application/json
  • Secret: Coolify’da belirlediğiniz değer
  • Events: Just the push event

Kaydettikten sonra GitHub, webhook’u test eder; yeşil tik görüyorsanız bağlantı çalışıyordur.

4. Adım: Ortam Değişkenleri

Uygulamanızın ihtiyaç duyduğu gizli bilgileri Coolify’da uygulamanın Environment Variables sekmesine ekleyin. Örneğin:

NODE_ENV=production
API_KEY=buraya-gercek-anahtar

Bu değerler depoda değil, yalnızca Coolify’da durur. Değişiklikten sonra uygulamayı yeniden yayınlamayı (Redeploy) unutmayın. Derleme sırasında gereken değişkenler için Build Variable seçeneğini işaretleyin.

5. Adım (İsteğe Bağlı): GitHub Actions ile Kontrollü Redeploy

Bazen her push’ta doğrudan yayına almak istemezsiniz; önce testlerin geçmesini beklemek istersiniz. Bunun için Coolify’daki otomatik deploy’u kapatıp yayını GitHub Actions üzerinden tetikleyebilirsiniz.

1. Coolify API token oluşturun: Keys & Tokens › API Tokens bölümünden yalnızca deploy yetkisine sahip bir token oluşturun. Token yalnızca bir kez gösterilir; güvenli bir yere kopyalayın.

2. Deploy webhook adresini alın: Uygulamanın Webhooks sekmesindeki Deploy Webhook adresini kopyalayın.

3. GitHub Secrets’a ekleyin: Deponun Settings › Secrets and variables › Actions bölümünde iki secret oluşturun: COOLIFY_WEBHOOK (adres) ve COOLIFY_TOKEN (token).

4. Workflow dosyasını oluşturun: .github/workflows/deploy.yml

name: Test ve Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test
      - name: Coolify redeploy
        run: |
          curl -fsS --request GET "${{ secrets.COOLIFY_WEBHOOK }}" \
            --header "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}"

Artık testler başarısız olursa yayın tetiklenmez; canlıdaki uygulama bozuk kodla güncellenmez. Bu dosyayı da Claude Code’a yazdırabilirsiniz.

Günlük İş Akışı

Kurulum bittikten sonra yeni bir özellik eklemek şöyle görünür:

  1. Proje klasöründe claude komutunu çalıştırın ve isteğinizi yazın: “Panele disk doluluk oranını gösteren bir kart ekle.”
  2. Claude Code değişikliği yapar ve test eder. Sonucu kontrol edin.
  3. “Yeni bir dalda commit et ve pull request aç” deyin.
  4. GitHub’da PR’ı inceleyin (Preview Deployments açıksa test adresinden deneyin) ve birleştirin.
  5. Coolify, main dalındaki değişikliği algılar ve birkaç dakika içinde yeni sürüm yayındadır.

Güvenlik Kontrol Listesi

  • Depo private olsun; .env dosyası .gitignore içinde bulunsun.
  • Deploy Key’e yazma yetkisi vermeyin; her depo için ayrı anahtar kullanın.
  • GitHub App kurulumunda sadece gerekli depoları seçin.
  • Coolify API token’ını yalnızca gereken yetkiyle oluşturun ve sadece GitHub Secrets’ta saklayın.
  • Bir anahtar veya token sızdıysa hemen iptal edip yenisini oluşturun.
  • Claude Code’a gerçek parolaları vermeyin; örnek değerlerle çalıştırın, gerçek değerleri Coolify’a siz girin.

Sık Karşılaşılan Sorunlar

SorunOlası nedenÇözüm
Permission denied (publickey)Deploy Key GitHub’a eklenmemiş ya da yanlış anahtar seçilmişAçık anahtarın doğru depoda olduğunu ve Coolify’da doğru özel anahtarın seçildiğini kontrol edin
Push yapınca deploy olmuyorWebhook kurulmamış veya secret uyuşmuyorGitHub’da Webhooks › Recent Deliveries bölümündeki hata koduna bakın
502 / Bad GatewayUygulama farklı bir portta dinliyorPorts Exposes değerini uygulamanın portuyla eşleştirin
Derleme başarısızEksik bağımlılık veya build değişkeniCoolify deploy loglarını Claude Code’a gösterip çözüm isteyin
Actions’ta 401 hatasıAPI token yanlış veya yetkisizToken’ı yeniden oluşturup secret’ı güncelleyin

Sonuç

Claude Code kodu yazar, GitHub kodu ve geçmişini güvenle saklar, Coolify da kendi sunucunuzda yayına alır. Bu üçlüyle tek kişilik bir ekip bile, büyük şirketlerin kullandığı CI/CD akışına çok düşük maliyetle sahip olabilir. Sunucu güvenliği için UFW ve düzenli yedekleme rehberlerini de uygulamayı unutmayın.