Files
kakeibo/docs/DEPLOY.md
T
suphicakir ad90551c6d feat(dağıtım): Docker imajı ve Axum'un arayüzü sunması
- Çok aşamalı Dockerfile: Node (arayüz) → Rust (release) → debian-slim, root olmayan kullanıcı
- Axum, STATIC_DIR tanımlıysa derlenmiş arayüzü sunar (SPA yönlendirmesi)
- Önbellek başlıkları (HTML no-cache, /assets 1 yıl), gzip/brotli sıkıştırma, istek logları
- Bilinmeyen /api/... → JSON 404; SIGTERM'de düzgün kapanış
- HEALTHCHECK (/api/health), .dockerignore, docs/DEPLOY.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 01:26:34 +03:00

2.5 KiB
Raw Blame History

🚀 Canlıya Alma (Atlas Homeserver + Dokploy)

Durum: Faz 3 — Adım 1 ✅ (Docker imajı) · Adım 2–5 devam ediyor

1. Mimari

İnternet ──HTTPS──▶ Traefik (Dokploy) ──▶ kakeibo konteyneri :8080 ──▶ MongoDB (rs0)
                                          ├─ /api/*  → Rust (Axum) API
                                          └─ diğer   → derlenmiş arayüz (React)
  • Tek imaj, tek servis, tek alan adı → CORS yok, cookie aynı origin'de.
  • İmaj: çok aşamalı Dockerfile (Node → arayüz derlemesi, Rust → release derleme, debian:trixie-slim çalışma imajı, root olmayan kullanıcı kakeibo, ~175 MB).
  • Sağlık kontrolü: GET /api/health → 200 {"status":"ok","db":"ok"}; veritabanı yoksa 503.
  • Kapanış: SIGTERM gelince süren istekler bitirilir, sonra kapanır.

2. Ortam değişkenleri

Değişken Zorunlu Örnek / varsayılan Açıklama
MONGODB_URI ✅ mongodb://kakeibo_app:<şifre>@<host>:27017/kakeibo?authSource=kakeibo&replicaSet=rs0 Ayrı, yalnızca kakeibo DB'sinde readWrite yetkili kullanıcı
JWT_SECRET ✅ openssl rand -hex 32 çıktısı En az 32 karakter. Değişirse tüm oturumlar kapanır
APP_URL ✅ https://kakeibo.<alan-adı> https:// ile başlarsa cookie Secure olur
REGISTRATION – invite_only invite_only: ilk hane serbest, sonra yalnızca davet · open: herkes
RUST_LOG – kakeibo=info,tower_http=info Log seviyesi
PORT – 8080 İmajda ayarlı, değiştirmeyin
STATIC_DIR – /app/static İmajda ayarlı, değiştirmeyin

3. Yerelde imajı deneme

docker build -t kakeibo .
# Yerel MongoDB (27020) ile, geliştirme sunucusuyla çakışmasın diye 8090'da:
docker run --rm --network host --env-file .env -e PORT=8090 kakeibo
# → http://localhost:8090

Kontrol listesi (Faz 3 – Adım 1'de doğrulandı):

  • / ve /defter → index.html (Cache-Control: no-cache)
  • /assets/*.js → brotli/gzip, max-age=31536000, immutable
  • /api/health → db: ok; bilinmeyen /api/... → JSON 404
  • Docker HEALTHCHECK → healthy; süreç kakeibo kullanıcısıyla çalışır
  • docker stop → düzgün kapanış logu

4. Canlı MongoDB

Faz 3 – Adım 2'de birlikte doldurulacak (KAKEIBO_PROMPT §12.3).

5. Dokploy kurulumu

Faz 3 – Adım 3'te birlikte doldurulacak.

6. Yedekleme ve geri yükleme

Faz 3 – Adım 5'te doldurulacak (günlük mongodump, son 14 yedek).