Self Host ve Deploy
Neta self-hosted çalışacak şekilde tasarlanmıştır. Harici bir Supabase projesine, managed database servisine veya ayrı bir backend uygulamasına ihtiyaç duymaz.
Production ortamında temel ihtiyaçlar:
- Docker destekleyen bir sunucu
- HTTPS reverse proxy
- Kalıcı volume
- Güçlü auth secret
- Tek replica
Minimum Environment
Production için önerilen minimum environment:
NODE_ENV=production
DATA_DIR=/app/data
APP_URL=https://neta.example.com
NEXT_PUBLIC_SITE_URL=https://neta.example.com
BETTER_AUTH_URL=https://neta.example.com
BETTER_AUTH_SECRET=guclu-bir-secret
TRUSTED_ORIGINS=https://neta.example.comBETTER_AUTH_SECRET güçlü ve benzersiz olmalıdır.
Secret üretmek için:
openssl rand -base64 32Kalıcı Veri Alanı
Neta'nın production verisi /app/data altında saklanır.
Bu klasör mutlaka persistent volume olmalıdır.
/app/data/
neta.db
uploads/
backups/
tmp/Bu alan silinirse database, upload edilen logolar, faviconlar ve backup dosyaları kaybolabilir.
Docker ile Çalıştırma
Repository Dockerfile ile production build almaya hazırdır.
Docker Compose ile örnek çalışma:
export BETTER_AUTH_SECRET="$(openssl rand -base64 32)"
export APP_URL="https://neta.example.com"
export NEXT_PUBLIC_SITE_URL="$APP_URL"
docker compose up -d --buildCompose içinde /app/data için named volume bağlanır.
Dokploy ile Deploy
Dokploy üzerinde önerilen yöntem Application + Dockerfile deploy'dur.
Temel ayarlar:
Build Type: Dockerfile
Dockerfile Path: Dockerfile
Docker Context Path: .
Internal Port: 3000
Persistent Volume: /app/data
Replicas: 1Environment:
NODE_ENV=production
DATA_DIR=/app/data
APP_URL=https://neta.example.com
NEXT_PUBLIC_SITE_URL=https://neta.example.com
BETTER_AUTH_URL=https://neta.example.com
BETTER_AUTH_SECRET=openssl-ile-uretilmis-secret
TRUSTED_ORIGINS=https://neta.example.comDomain ayarında container internal port olarak 3000 seçilmelidir.
Deploy sonrası kontrol:
https://neta.example.com/api/health/live
https://neta.example.com/api/health/ready
https://neta.example.com/register/api/health/ready başarılı dönüyorsa database, data directory ve migration kontrolleri sağlıklı demektir.
Coolify ile Deploy
Coolify üzerinde de Dockerfile deploy kullanılabilir.
Önerilen ayarlar:
Build Pack: Dockerfile
Port: 3000
Volume: /app/data
Replica: 1Environment değerleri Dokploy ile aynıdır.
Reverse Proxy ve HTTPS
Production ortamında Neta mutlaka HTTPS arkasında çalışmalıdır.
Domain:
https://neta.example.comşeklinde belirlenmelidir.
Environment değerlerinde domain ile birebir uyum önemlidir:
APP_URL=https://neta.example.com
NEXT_PUBLIC_SITE_URL=https://neta.example.com
BETTER_AUTH_URL=https://neta.example.com
TRUSTED_ORIGINS=https://neta.example.comDomain değişirse bu değerler de güncellenmelidir.
Tek Replica Kuralı
Neta SQLite kullandığı için aynı database dosyasına yazan birden fazla replica desteklenmez.
Production'da:
Replicas: 1şeklinde çalıştırılmalıdır.
Yatay ölçekleme gerekiyorsa ileride farklı bir database stratejisi planlanmalıdır.
İlk Kurulum
Deploy tamamlandıktan sonra:
https://neta.example.com/registeradresine gidilir ve ilk owner hesabı oluşturulur.
İlk owner oluşturulduktan sonra public kayıt kapanır. Bu davranış güvenlik için bilinçli olarak uygulanır.
Health Endpointleri
Neta health kontrolü için şu endpointleri sağlar:
GET /api/health/live
GET /api/health/ready
GET /api/healthlive endpoint process'in ayakta olup olmadığını gösterir.
ready endpoint database, migration ve data directory durumunu kontrol eder.
Backup
Production ortamında düzenli backup alınmalıdır.
Komut:
pnpm db:backupBackup dosyaları yalnızca aynı sunucuda tutulmamalıdır. Harici ve güvenli bir lokasyona kopyalanmalıdır.
Restore
Restore işleminden önce uygulama durdurulmalıdır.
Komut:
pnpm db:restore -- --from /path/to/neta-backup --forceRestore sonrası uygulama tekrar başlatılır ve health endpointleri kontrol edilir.
Upgrade
Yeni sürüme geçerken önerilen akış:
1. Backup alın. 2. Backup restore provasını yapın. 3. Yeni image veya commit ile deploy başlatın. 4. Startup migrationların başarılı tamamlandığını kontrol edin. 5. /api/health/ready endpointini kontrol edin. 6. Login, müşteri, proje ve portal akışlarını test edin.
SQLite şema downgrade'i desteklenmez. Bu yüzden upgrade öncesi backup önemlidir.
Supabase'ten Geçiş
Neta'nın güncel sürümü Supabase'e ihtiyaç duymaz.
Eski bir Supabase kurulumundan veri taşınacaksa offline export bundle üzerinden import yapılabilir.
Genel akış:
pnpm db:import:supabase -- \
--from /secure/path/neta-export \
--owner-user-id BETTER_AUTH_OWNER_ID \
--dry-runDry-run raporu doğrulandıktan sonra komut --dry-run olmadan çalıştırılır.
Supabase Auth şifreleri veya sessionları taşınmaz. Müşteri kullanıcıları yeniden davet edilmelidir.
Yayın Öncesi Kontrol Listesi
Production'a çıkmadan önce şu kontroller yapılmalıdır:
- Domain DNS kaydı doğru.
- HTTPS aktif.
APP_URLdoğru.NEXT_PUBLIC_SITE_URLdoğru.BETTER_AUTH_URLdoğru.BETTER_AUTH_SECRETgüçlü ve benzersiz./app/datapersistent volume bağlı.- Replica sayısı 1.
/api/health/readybaşarılı.- İlk owner hesabı oluşturuldu.
- Logo, favicon ve tema ayarlandı.
- Backup stratejisi belirlendi.
- Login testi yapıldı.
- Müşteri oluşturma testi yapıldı.
- Proje oluşturma testi yapıldı.
- Müşteri portal daveti test edildi.
Özet
Neta self-host deployment için sade bir yapıya sahiptir. Tek container, tek persistent data volume ve doğru environment değerleriyle çalışır. Dokploy, Coolify veya Docker Compose üzerinde kolayca yayınlanabilir.