Üretim Ortamı ve Dağıtım Rehberi
CopyPatch v2, doğrudan ana web uygulamanızın sunucusu içinde barındırılır. API rotası aynı HTTPS kökeni (same-origin) altında /__copypatch/api/v2 adresinde çalıştığı için ek süreçler, açık portlar veya CORS reverse proxy kuralları gerektirmez.
1. Kalıcılık (Depolama) Yapılandırması
Seçenek A: SQLite (Tek Node Sunucusu / VPS / Konteyner)
SQLite tek sunuculu yapılar için son derece hızlı, işlemsel ve sıfır bakım maliyetlidir:
lib/copypatch.ts (SQLite)
import { createSQLitePersistence } from '@copypatch/storage-sqlite';
const persistence = createSQLitePersistence({
filename: process.env.COPYPATCH_SQLITE_PATH ?? './data/copypatch.sqlite',
busyTimeoutMs: 5_000,
});
// Sunucu başlarken şema migrasyonlarını çalıştırın
await persistence.migrate(); - Kalıcı Disk (Persistent Volume): Docker veya Kubernetes üzerinde veritabanı dosyasını ve WAL yan dosyalarını (
.sqlite-walve.sqlite-shm) korumak için kalıcı bir dizin (örn./data) bağlayın. - WAL Modu:
@copypatch/storage-sqliteyüksek eşzamanlılık için WAL (Write-Ahead Logging) modunu ve meşgul yeniden deneme sürelerini otomatik olarak yönetir.
Seçenek B: PostgreSQL (Çoklu Sunucu Kümeleri / Sunucusuz Mimari)
PostgreSQL, birden fazla sunucu örneğinde metinleri, taslakları ve hız sınırlarını senkronize eder:
lib/copypatch.ts (PostgreSQL)
import { Pool } from 'pg';
import { createPostgresPersistence } from '@copypatch/storage-postgres';
const pool = new Pool({
connectionString: process.env.DATABASE_URL!,
max: 10,
idleTimeoutMillis: 30000,
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: true } : false,
});
const persistence = createPostgresPersistence({
pool,
schema: 'copypatch',
});
// Idempotent şema migrasyonları (PostgreSQL advisory transaction kilitleri ile korunur)
await persistence.migrate(); - Advisory Kilitleri: Şema migrasyonları PostgreSQL transaction advisory kilitleri kullanarak eşzamanlı konteyner dağıtımlarında mükerrer migrasyon riskini engeller.
- Bağlantı Havuzu: Mevcut bir
pg.Poolnesnesini aktararak ana uygulamanızla veritabanı bağlantılarını paylaşabilirsiniz.
2. Ortam Değişkenleri Referansı
| Değişken | Zorunluluk | Açıklama |
|---|---|---|
COPYPATCH_PASSPHRASE_HASH | Evet (Dahili auth için) | copypatch hash --stdin ile üretilmiş Argon2id parola özeti. |
COPYPATCH_SQLITE_PATH | Hayır (SQLite için) | SQLite veritabanı dosyasının mutlak veya göreli yolu (varsayılan: ./data/copypatch.sqlite). |
DATABASE_URL | Evet (Postgres için) | PostgreSQL bağlantı dizgisi (örn. postgres://user:pass@host:5432/dbname). |
NODE_ENV | Önerilir | Güvenli çerez bayraklarını ve HTTPS kurallarını etkinleştirmek için production olarak ayarlayın. |
3. Sağlık Denetimi ve İzleme
CopyPatch, /__copypatch/api/v2/health adresinde hafif bir sağlık uç noktası sağlar:
Sağlık Denetimi
// Sağlık denetimi uç noktası
// curl -i https://siteniz.com/__copypatch/api/v2/health
// HTTP/1.1 200 OK
// Content-Type: application/json
{
"status": "ok",
"version": "2.0.0",
"storage": "ready"
} 4. Üretim Dağıtım Kontrol Listesi
- HTTPS Zorunluluğu:
Secureve__Host-oturum çerezlerinin çalışması için uygulamanızı HTTPS üzerinden sunun. - Açılışta Migrasyon: Trafik kabul etmeden önce sunucu başlatma kodunuzda
await persistence.migrate()fonksiyonunu çağırın. - Statik SSG ile Düzenleme Yapılamaz: Barındırma ortamınızın API rotasını Node.js veya sunucusuz fonksiyon olarak yürüttüğünden emin olun.
- Düzenli Yedekleme: SQLite disk hacminizi veya PostgreSQL veritabanınızı otomatik periyodik yedekleme planınıza dahil edin.