Skip to main contentPhantom-WG

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:

  1. .env.daemon ve .env.auth-service dosyalarını .example şablonlarından oluşturur.
  2. WireGuard sunucu anahtar çifti üretir. (Curve25519 — wg_private_key, wg_public_key)
  3. 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)
  4. 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.

Gizli Anahtarlar
Gizli anahtarlar container-data/secrets/production/ altında saklanır. Admin şifresi aynı dizindeki .admin_password dosyasına yazılır — giriş yaptıktan sonra güvenle kaldırabilirsiniz.

Güncelleme Mekanizması

Git Gereksinimi
Güncelleme mekanizması git üzerinden çalışır. Kurulum alanınızı git clone ile veya get.phantom.tc servisi ile oluşturmanız gerekir.

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 + restart yeterlidir, kod değişiklikleri için image rebuild gerekmez
  • Hızlı rollback: git checkout <önceki-versiyon> + restart ile 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:

Build ve Update Farkı
Dockerfile'lar yalnızca yapının çalışması için gereken sistem bağımlılıklarını sağlar. Kod güncellemeleri update komutuyla alınır — rebuild yalnızca bu bağımlılıklar değiştiğinde gereklidir.
Otomatik yeniden derleme (v1.1.3+)
v1.1.3 ve sonrasında prod.sh update, Dockerfile / requirements.txt değişikliklerini algılayıp etkilenen servisi otomatik yeniden derler. Yukarıdaki elle rebuild yalnızca v1.1.2 veya öncesinden yükseltirken tek seferlik bir adımdır; o sürümlerin update mantığı bu algılamadan önceye dayanır.

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.