Files
lab/belgeler/coolify-deploy.md
kovakmedya 97f397d2dd docs: Coolify deploy guide for lab.kovakcrm.com
Step-by-step instructions for the production deploy that has to happen in
the admin.kovaksoft.com UI (Coolify doesn't expose a clean CLI for creating
resources). Covers DNS A record, Coolify resource setup, ENV mapping,
domain + SSL, Gitea webhook for auto-deploy, and a verification cookbook.
Troubleshooting section includes the Node 26 / node-appwrite patch already
shipped in repo.
2026-05-21 20:19:13 +03:00

5.5 KiB
Raw Permalink Blame History

DLS — Coolify Deploy Rehberi

lab.kovakcrm.com adresine production deploy adımları. Tüm adımlar idempotent — bir adımda hata olursa baştan deneyebilirsin.

Önkoşul

  • Coolify panel: https://admin.kovaksoft.com
  • Coolify host IP: 194.31.52.65 (CLAUDE.md'den)
  • Gitea repo: https://git.kovaksoft.com/kovakmedya/lab (zaten push edilmiş, main branch)
  • Appwrite project: 69f27b51000a5bee46ce (isletmem ile aynı, lab database eklendi)

Adım 1 — DNS (Cloudflare veya registrar)

lab.kovakcrm.com için A record:

Type Name Content Proxy
A lab 194.31.52.65 DNS only (gri bulut) — Coolify Let's Encrypt yapacak

Cloudflare proxy'yi (turuncu bulut) kapalı tut; SSL handshake'i Coolify yapacak. Sonradan istersen Full (strict) ile proxy aktif edebilirsin ama önce DNS-only ile SSL al.

Propagation 1-2 dk: dig +short lab.kovakcrm.com ile doğrula.

Adım 2 — Coolify'da yeni Resource

admin.kovaksoft.com > sol menü Projects > mevcut bir project seç (örn. KovakSoft) veya New Project > lab.

Project içinde + New Resource > Public Repository (Gitea ayrı bir kaynak değil, public repo URL veriyorsun) > Continue.

Repository ayarları

Alan Değer
Repository URL https://git.kovaksoft.com/kovakmedya/lab
Branch main
Build Pack Nixpacks (auto-detect; Next.js + pnpm)
Base Directory /
Publish Directory (boş)

Continue > yeni application oluşur.

Build / Start komutları

Coolify Nixpacks pnpm-lock.yaml'ı görüp otomatik pnpm install + pnpm run build çalıştırır. Yine de gözden geçir:

Alan Değer
Install Command pnpm install --frozen-lockfile
Build Command pnpm build
Start Command pnpm start
Port (Exposed) 3000

Environment Variables

Environment Variables sekmesi > şu 5 satırı ekle:

NEXT_PUBLIC_APPWRITE_ENDPOINT=https://db.kovaksoft.com/v1
NEXT_PUBLIC_APPWRITE_PROJECT_ID=69f27b51000a5bee46ce
NEXT_PUBLIC_APPWRITE_DATABASE_ID=lab
APPWRITE_API_KEY=<.env.local'deki değerin aynısı>
APP_URL=https://lab.kovakcrm.com

APPWRITE_API_KEY için lokalde .env.local'den kopyala (gitignore'da olduğu için repo'da yok). Coolify'da Is Build Variable kapalı, Is Preview Deployment kapalı, Locked açık olabilir.

NEXT_PUBLIC_* değişkenleri Coolify'da Build-time olmalı (Nixpacks bunu otomatik yapar, ekstra ayar gerek yok).

Domain

General sekmesi > Domains > https://lab.kovakcrm.com ekle. Coolify otomatik Let's Encrypt SSL alacak (DNS-only proxy doğru ayarlandıysa).

Adım 3 — Deploy

Sağ üstte Deploy butonuna bas. İlk build ~3-4 dk (pnpm install + next build). Logları Deployments sekmesinde takip et.

Yeşil ışık: Container running, https://lab.kovakcrm.com 200 dönüyor.

Adım 4 — Gitea webhook (auto-deploy)

Coolify resource > Webhooks veya Sources sekmesinde Webhook URL'i kopyala. Genelde:

https://admin.kovaksoft.com/webhooks/source/gitea/events/manual

Gitea > kovakmedya/lab repo > Settings > Webhooks > Add Webhook > Gitea:

Alan Değer
Target URL (Coolify'dan kopyaladığın URL)
HTTP Method POST
POST Content Type application/json
Trigger Push Events + Branch filter: main
Active

Test Delivery ile dene — Coolify'da otomatik bir deploy tetiklenir. Sonraki her main push'ta auto-deploy.

Adım 5 — Doğrulama

# DNS
dig +short lab.kovakcrm.com   # → 194.31.52.65

# HTTPS / SSL
curl -sI https://lab.kovakcrm.com/sign-in | head -3   # → HTTP/2 200

# Pill render
curl -s https://lab.kovakcrm.com/sign-in | grep -oE 'Klinik|Laboratuvar|role=.radiogroup'

Tarayıcıda https://lab.kovakcrm.com:

  • Landing açılır (varsayılan /).
  • /sign-in formu — Klinik/Lab pill, email/şifre.
  • Mevcut Appwrite hesabınla giriş → tenant'ın yoksa onboarding'e gider (login pill seçimin oraya taşınır) → workspace oluştur → dashboard.

Sorun çözme

Belirti Neden / Çözüm
Bağlantı hatası: invalid onError method Node 26 + node-appwrite uyumsuzluğu. Repo'da patches/node-fetch-native-with-agent@1.7.2.patch zaten var; Coolify pnpm install sırasında otomatik uygular. Eksikse build log'da Applied patch satırını ara.
SSL hatası "no certificate" Cloudflare proxy hâlâ açık olabilir. Gri buluta indir, DNS'i tekrar propagate et, Coolify > Domain > Regenerate Certificate.
Missing NEXT_PUBLIC_APPWRITE_ENDPOINT ENV'ler build-time değil runtime olarak ekli. Nixpacks .env ile build yapar, Coolify ENV editor'inde Is Build Variable kontrol et.
Sign-in çalışıyor ama sayfa yüklenmiyor Cookie SameSite=strict + farklı domain. Aynı tarayıcıda lokal isletmem ile lab cookie'leri çakışmaz (farklı subdomain).
EADDRINUSE :3000 Container restart sırasında ölü process kalmış. Coolify > Restart veya Redeploy.

Görsel logo yükleme (opsiyonel)

Coolify > General > Application Icon alanına bir favicon yükle (32x32 PNG). Sidebar'da ve tarayıcı tab'ında görünür.

Sonraki iyileştirmeler

  • Health check endpoint: /api/health route ekle, Coolify Healthcheck Path olarak set et.
  • Backup: Appwrite'ın volume snapshot'ı zaten kovaksoft-coolify host'unda. DB için ekstra script gerekirse belgeler/'e ekle.
  • CI checks (opsiyonel): Gitea Actions yoksa Coolify'ın "Deploy on failed build → rollback" davranışına güven.