Kurulum ve Güncelleme
Kurulum
Gereksinimler: Docker Engine 20.10+, Docker Compose v2, bash, git.
Yapılandırma
Erişim:
- Kontrol Paneli:
https://<sunucu-ip> - WireGuard: UDP port
51820 - Admin şifresi:
cat container-data/secrets/production/.admin_password
VPN İçinden Erişim
VPN'e bağlıyken kontrol paneline erişmek için nginx container'ın Docker network adresini kullanabilirsiniz:
Tünel içerisinden https://<IPv4> veya
https://[<IPv6>] adresi ile erişilebilir. Dilerseniz
docker-compose.yml dosyasından ports: "443:443" satırını kaldırarak
kontrol panelini yalnızca VPN tüneli üzerinden erişilebilir hale getirebilirsiniz.
Yönetim
Yönetim için ./tools/prod.sh konumunda kullanışlı bir araç bulunur.
|
Komut
|
Açıklama
|
|---|---|
setup |
Tam Kurulum |
setup --terazi-ipv4-subnet=SUBNET |
Özel subnet ile kurulum (ör. 10.9.0.0/24) |
up |
Başlat |
down |
Durdur |
restart [service] |
Yeniden Başlat (Tümü veya Belirli Servis) |
build |
İmaj Derle |
rebuild |
Sıfırdan İmaj Derle (no-cache) |
update |
Güncelle (git pull + restart) |
compose lock |
docker-compose.yml kalıcı kilitle |
compose unlock |
docker-compose.yml kilidini kaldır |
compose status |
Kilit durumunu göster |
logs [service] |
Log Takibi (Tümü veya Belirli Servis) |
status |
Docker Compose Durumu |
certbot <domain> |
Let's Encrypt TLS sertifikası al |
show-versions |
Bileşen Versiyonları (Daemon, Vendor Paketleri) |
shell [service] |
Shell (varsayılan: daemon) |
exec <svc> <cmd> |
Komut Çalıştır |
hard-reset |
Tüm Veriyi Sil |
Kurulum
setup komutu ilk kurulumda gerekli tüm bileşenleri oluşturur:
-
.env.daemonve.env.auth-servicedosyalarını.exampleşablonlarından oluşturur. -
WireGuard sunucu anahtar çifti üretir. (Curve25519 —
wg_private_key,wg_public_key) -
Auth-Service için bootstrap döngüsü:
-
Ed25519 imzalama anahtar çifti üretir. (
auth_signing_key,auth_verify_key) -
Auth veritabanını oluşturur. (
auth.db— kullanıcılar, oturumlar, TOTP, audit log) - Admin hesabı oluşturur. (Argon2id hash ile şifrelenen 32 karakterlik rastgele şifre)
-
Ed25519 imzalama anahtar çifti üretir. (
-
Nginx için self-signed TLS sertifikası üretir. (
tls_cert,tls_key)
Tüm bu işlemler container içerisinde gerçekleşir — host tarafında ek bir bağımlılık veya araç kurulumu gerekmez.
Terazi, IP havuzunu oluşturmak için bir base subnet'e ihtiyaç duyar. Varsayılan
10.8.0.0/24 olup --terazi-ipv4-subnet argümanı ile kurulumda
özelleştirilebilir. Bu değer yalnızca wallet.db oluşturulurken kullanılır —
veritabanı oluştuktan sonra subnet burada saklanır ve argümana tekrar ihtiyaç duyulmaz. Detaylar
için Terazi dokümantasyonuna bakın.
Güncelleme Mekanizması
Daemon ve auth-service kaynak kodları container'lara read-only olarak mount edilir
(phantom_daemon:/app/phantom_daemon:ro,
services/auth-service:/app/auth-service:ro). Dockerfile'lar yalnızca sistem
bağımlılıklarını (Python, runtime paketleri) sağlar — uygulama kodu image içinde değildir. Bu yapı
sayesinde:
-
Hızlı güncelleme:
git pull+restartyeterlidir, kod değişiklikleri için image rebuild gerekmez -
Hızlı rollback:
git checkout <önceki-versiyon>+restartile anında geri dönüş - Build bağımsızlığı: Kod değişiklikleri container build sürecini tetiklemez
Compose Lock
docker-compose.yml üzerinde port, volume veya environment değişikliği yaptıysanız,
güncellemelerin bu dosyayı ezme riski vardır. Compose lock bu dosyayı git güncellemelerinden
korur:
Rebuild
Sistem bağımlılıkları değiştiğinde (Dockerfile, requirements.txt) image rebuild gerekir:
Let's Encrypt (Opsiyonel)
Varsayılan self-signed sertifika, Let's Encrypt sertifikası ile değiştirilebilir. HTTP-01 standalone challenge kullanır — domain'in A kaydı sunucuyu işaret etmeli ve 80 portu müsait olmalıdır.
Sertifika dosyaları container-data/secrets/production/tls_cert ve
tls_key olarak yazılır. Yenileme idempotent'tir — sertifika süresine yaklaşınca aynı
komutu tekrar çalıştırın.