Skip to main contentPhantom-WG

Sistem Mimarisi

Phantom-WG, WireGuard® tabanlı bir VPN yönetim platformudur. Tüm bileşenler Docker container yapısı içerisinde çalışır ve asıl işi yapan Phantom Daemon Unix Domain Socket (UDS) üzerinden haberleşir.

Üretim Topolojisi, Docker Compose üzerinden yürütülen üç konteyner yapısından oluşur. Organizasyon üzerindeki yapının temel görevi sorguyu güvenli bir şekilde Daemon yapısına aktarmaktır.

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...

Daemon, yapısına ulaşan iki farklı trafik yolu vardır.

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...

Yönetim Trafiği (Kullanıcı Etkileşimi) (:443): İnternet → phantom-nginx → phantom-auth → phantom-daemon

VPN trafiği (:51820/udp): WireGuard istemcileri doğrudan phantom-daemon'a bağlanır.

UDS soketi (daemon.sock) Docker named volume üzerinden phantom-auth ile paylaşılır.

Esnek Konfigürasyon
İç haberleşme ve dış haberleşme için belirtilen port değerleri konfigüre edilebilir. Ancak ek konfigürasyon ve çevre değişkenlerinin düzenlenmesi ihtiyacını beraberinde getirir.

phantom-nginx, sistemin tek dışa açık HTTPS giriş noktasıdır.

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...

Routing

Location
Hedef
Açıklama
/auth/* phantom-auth:8443 Auth endpointleri (login, MFA, session)
/api/* phantom-auth:8443 API proxy — backup işlemleri için buffering kapalı
/ SPA static (try_files) React SPA fallback — bilinmeyen path'ler index.html'e yönlenir
/assets/* Static cache 1 yıl, Cache-Control: public, immutable

Nginx Konfigürasyonu

phantom-auth, iki temel rol üstlenir: kendi auth endpointlerini doğrudan karşılar (/auth/*) ve daemon API isteklerini UDS üzerinden proxy'ler (/api/*).

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...

Çevre Değişkenleri

Değişken
Varsayılan
AUTH_HOST 0.0.0.0
AUTH_PORT 8443
AUTH_LOG_LEVEL info
AUTH_PROXY_URL unix:///var/run/phantom/daemon.sock
AUTH_PROXY_TIMEOUT 30.0
AUTH_PROXY_MAX_BODY 67108864 (64 MB)
AUTH_DB_DIR /var/lib/phantom/auth
AUTH_SECRETS_DIR /run/secrets
AUTH_TOKEN_LIFETIME 86400 (24h)
AUTH_MFA_TOKEN_LIFETIME 120 (2m)
AUTH_TOTP_SETUP_LIFETIME 300 (5m)
AUTH_INACTIVITY_TIMEOUT 1800 (30m)
AUTH_RATE_LIMIT_WINDOW 60
AUTH_RATE_LIMIT_MAX 5
Binary Proxy Passthrough
Non-JSON yanıtlar (backup export gibi) raw bytes olarak iletilir. Maksimum body boyutu AUTH_PROXY_MAX_BODY ile belirlenir.

phantom-daemon, sistemin çekirdeğidir. WireGuard arayüzlerini, istemci yönetimini, firewall kurallarını ve veritabanlarını yönetir. Yönetim erişimi yalnızca UDS üzerinden sağlanır.

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...

Çevre Değişkenleri

Değişken
Varsayılan
PHANTOM_DB_DIR /var/lib/phantom/db
PHANTOM_STATE_DIR /var/lib/phantom/state/db
WIREGUARD_LISTEN_PORT 51820
WIREGUARD_MTU 1420
WIREGUARD_KEEPALIVE 25
WIREGUARD_ENDPOINT_V4
WIREGUARD_ENDPOINT_V6

Kernel Gereksinimleri

Parametre
Açıklama
NET_ADMIN WireGuard arayüz ve nftables kural yönetimi
NET_RAW Raw socket erişimi
net.ipv4.ip_forward=1 IP paket yönlendirme
/dev/net/tun TUN arayüz oluşturma
WIREGUARD_ENDPOINT_V4
İstemci konfigürasyonlarında kullanılacak public IP adresidir. Bu değer atanmadığında istemci konfigürasyonları dışa aktarılamaz.
WIREGUARD_ENDPOINT_V6
İstemci konfigürasyonlarında kullanılacak public IP adresidir. Bu değer atanmadığında istemci konfigürasyonları dışa aktarılamaz.

Docker Compose Yapısı


İstek Yaşam Döngüsü

Bir API isteğinin sistemden geçiş süreci:

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...
Güvenlik katmanları.
Her istek 3 katmandan geçer: Nginx (TLS) → Auth Service (JWT) → Phantom Daemon (Unix Socket)

Bridge Mimarisi

Daemon, sistem düzeyindeki işlemleri native bridge'ler aracılığıyla gerçekleştirir. Python katmanı iş mantığını yönetir, bridge'ler ise kernel ile doğrudan iletişim kurar.

Diyagram Yükleniyor
Lütfen bekleyin...
Yükleniyor...
Bridge
Dil
Sorumluluk
wireguard-go-bridge Go WireGuard userspace, TUN arayüz oluşturma, peer yönetimi, UAPI protokolü
firewall-bridge Rust nftables kural grupları, routing policy, atomik kural uygulaması

Veritabanları

Tüm veritabanları SQLite formatındadır. İki kategoriye ayrılır:

Kalıcı Veriler

Kullanıcı verileri ve yapılandırma. Yedekleme ve taşıma bu veritabanları üzerinden yapılır.

Veritabanı
Sahip
Konteyner Yolu
wallet.db daemon /var/lib/phantom/db
exit.db daemon /var/lib/phantom/db
auth.db auth-service /var/lib/phantom/auth

Çalışma Zamanı (Runtime) Durumu

Bridge'ler tarafından yönetilen çalışma zamanı verileri. Daemon başlatıldığında otomatik oluşturulur, müdahale gerektirmez.

Veritabanı
Sahip
Konteyner Yolu
device.db wireguard-go-bridge /var/lib/phantom/state/db/wireguard/{ifname}/
firewall.db firewall-bridge /var/lib/phantom/state/db