Operasyon
Bu sayfa sistemin operasyonel bakımını kapsar: yedekleme ve geri dönüş, veri saklama (retention), sağlık kontrolleri ile kontrollü kapanış ve deploy öncesi production doğrulaması.
Yedekleme ve geri dönüş
PostgreSQL, uploads volume'u ve .env içindeki CREDENTIALS_ENC_KEY birlikte korunmalıdır.
Anahtar olmadan şifre kasası geri getirilemez.
BACKUP_DIR=/guvenli/hedef ./scripts/backup.sh
./scripts/restore.sh /guvenli/hedef/20260716T120000ZBackup hedefini disk seviyesinde şifreleyin, yalnızca operatörlere açın ve farklı bir makine/bölgede ikinci kopya tutun. Önerilen başlangıç hedefi günlük backup, 30 günlük saklama ve ayda bir izole ortamda restore provasıdır.
Her yedek SHA256SUMS bütünlük manifesti içerir. Restore başlamadan önce manifest,
PostgreSQL dump kataloğu ve uploads arşivi doğrulanır; doğrulama başarısızsa mevcut
veriye dokunulmaz. Restore sırasında backend durdurulur ve işlem hata verse bile
yeniden başlatılır. environment.snapshot secret içerir ve otomatik olarak aktif
.env üzerine yazılmaz; anahtarları operatör ayrıca karşılaştırmalıdır.
Şifre kasası anahtarı (CREDENTIALS_ENC_KEY) kaybolursa şifreli kayıtlar geri getirilemez. Anahtarı yedekle ve yedeği verinin kendisinden ayrı bir yerde sakla.
Veri saklama
Retention komutu varsayılan olarak yalnızca rapor üretir:
docker compose exec backend npm run db:retention:check
docker compose exec backend npm run db:retention:applyRETENTION_CLOSED_TICKET_DAYS varsayılan olarak 365 gündür ve 30 günden küçük olamaz.
Silme öncesinde backup alın. İlk çalıştırmada check çıktısındaki dosya sayısı ve byte
toplamını onaylamadan apply çalıştırmayın.
Otomatik raporlama için host cron/systemd timer ile her gün yalnızca check modunu
çalıştırın; apply insan onayı olmadan zamanlanmamalıdır:
15 3 * * * cd /opt/ticket-system && docker compose exec -T backend npm run db:retention:check >> /var/log/ticket-retention.log 2>&1Silme işlemi için bakım penceresinde güncel backup sonrası db:retention:apply
çalıştırın. Çıktı JSON'dur ve merkezi log/uyarı sistemi tarafından izlenebilir.
apply verileri kalıcı olarak siler. İnsan onayı olmadan zamanlanmamalı; yalnızca güncel bir backup sonrası, bakım penceresinde çalıştırılmalıdır.
Sağlık ve kapanış
/health/live: Node.js process'i cevap veriyor mu./health/ready: PostgreSQL ve Redis istek kabul ediyor mu.SIGTERM/SIGINT: HTTP, worker, queue, Redis ve Prisma bağlantıları en fazla 30 saniye içinde kontrollü kapatılır.
Alarm başlangıçları: readiness 2 dakika başarısız, disk kullanımı yüzde 80, son başarılı backup 26 saatten eski ve failed notification sayısında olağan dışı artış.
Deploy öncesi production kontrolü
./scripts/check-production-env.sh .env
docker compose config --quietKontrol; eksik/changeme_* secret'ları, development modu, aynı veya kısa JWT
anahtarlarını, hatalı kasa anahtarını ve HTTPS olmayan APP_URL değerini reddeder.
API dokümantasyonu açık kaldıysa ayrıca uyarır.