Şirket İçi sayfasına dön
✓ Yayında

On-Premise Kurulum Rehberi

Captivo'yu kendi sunucunuza kurmak için adım adım rehber. Docker kurulu bir Linux sunucu ile tüm süreç 30 dakikadan kısa sürer.

1. Önkoşullar

Sunucunuzda aşağıdakilerin kurulu olduğundan emin olun:

İşletim SistemiLinux x86_64 — Ubuntu 22.04+, Debian 12+, RHEL 9+ önerilir
RAMEn az 2 GB (üretim için 4 GB önerilir)
DiskEn az 10 GB (yedekler için 20 GB+ önerilir)
Docker Engine24+ — docker --version ile kontrol edin
Docker Compose v2docker compose version (tire değil boşluk; v1 desteklenmez)
opensslopenssl version ile kontrol edin

Docker hızlı kurulum (Ubuntu/Debian):

curl -fsSL https://get.docker.com | sh

Açık Portlar

PortProtokolKullanım
3000TCPYönetim paneli (TLS yokken HTTP)
80 / 443TCPTLS etkinleştirildiğinde Caddy
1812UDPRADIUS kimlik doğrulama
1813UDPRADIUS accounting
Test/dahili kullanım için sabit bir LAN IP yeterlidir. Üretimde genel erişimli bir alan adı ve TLS önerilir (bkz. §4).

2. Kurulum (Tek Komut)

2.1 Kurulum Dosyalarını Edinin

Kurulum paketi (docker/ klasörü) size sağlanır. Hepsini aynı klasöre koyun:

docker/
├── docker-compose.onprem.yml
├── onprem/
│   ├── install.sh
│   ├── Caddyfile
│   ├── backup.sh
│   └── .env.onprem.example

2.2 Kurulum Betiğini Çalıştırın

chmod +x docker/onprem/install.sh
./docker/onprem/install.sh

Betik şunları yapar:

  1. docker ve openssl bağımlılıklarını kontrol eder.
  2. docker/.env.onprem yoksa sunucu adresini sorar ve tüm sırları (POSTGRES_PASSWORD, AUTH_SECRET, DATA_ENCRYPTION_KEY vb.) openssl rand ile otomatik üretir.
  3. docker compose up -d komutuyla tüm servisleri başlatır.
  4. Tamamlandığında panel adresini yazdırır.

Örnek çıktı:

✓ Sırlar üretildi (.env.onprem)

✓ Servisler başlatılıyor...

✔ Container captivo-postgres Started

✔ Container captivo-migrator Exited

✔ Container captivo-radius Started

✔ Container captivo-web Started

✓ Kurulum tamamlandı!

Panel: http://localhost:3000

ÖNEMLİ — DATA_ENCRYPTION_KEY: docker/.env.onprem dosyasındaki DATA_ENCRYPTION_KEY, misafir MAC adresi ve diğer şifreli verilerin şifreleme anahtarıdır. Bu dosyayı sunucu dışında güvenli bir yerde (parola yöneticisi, şifreli USB vb.) mutlaka yedekleyin. Anahtar kaybolursa şifreli veriler kalıcı olarak okunamaz hale gelir.

3. İlk Açılış — Kurulum Sihirbazı

Panel adresini (http://<sunucu-ip>:3000) ilk açtığınızda otomatik olarak /setup sihirbazına yönlendirilirsiniz. Sihirbaz 9 adımdan oluşur:

1

Yönetici Hesabı

Süper yönetici e-posta ve parola tanımı.

2

Kurum

Şirket/kurum adı, logo, dil tercihi.

3

Portal Görünümü

Captive portal tasarımı (arka plan, renkler, başlık).

4

RADIUS

RADIUS shared secret ve NAS yapılandırması.

5

Giriş Yöntemleri

Sosyal giriş, SMS OTP, misafir formu seçenekleri.

6

SMS

SMS sağlayıcı seçimi (Netgsm, Twilio vb.) — isteğe bağlı.

7

SMTP

Giden e-posta sunucusu (bildirimler için) — isteğe bağlı.

8

Lisans

.lic dosyası yükleme veya 15 günlük deneme başlatma.

9

Tamamlandı

Kurulum özeti ve panele giriş.

SMS ve SMTP adımları isteğe bağlıdır; atlanabilir ve sonradan Ayarlar menüsünden yapılandırılabilir.

4. TLS / HTTPS (Üretim için Önerilir)

Varsayılan http://localhost:3000 yalnızca yerel test içindir. Üretimde HTTPS zorunludur.

4.1 Alan Adını Yapılandırın

docker/.env.onprem dosyasını düzenleyin:

NEXTAUTH_URL=https://wifi.firma.com
SITE_DOMAIN=wifi.firma.com

4.2 Caddy'yi TLS Profiliyle Başlatın

docker compose -f docker/docker-compose.onprem.yml \
  --profile tls \
  --env-file docker/.env.onprem \
  up -d
Caddy, SITE_DOMAIN değişkenini kullanarak Caddyfile aracılığıyla captivo-web:3000'e ters proxy yapar ve Let's Encrypt'ten otomatik TLS sertifikası alır. Koşul: Alan adının DNS'i bu sunucunun genel IP'sine çözümlenmeli ve 80/443 portları dışarıdan erişilebilir olmalıdır.

5. RADIUS — NAS Cihazınızı Bağlama

FreeRADIUS konteyneri otomatik olarak başlar ve UDP 1812/1813 portlarını dinler. NAS veya gateway cihazınızda şu ayarları yapın:

AyarDeğer
RADIUS sunucu IPBu sunucunun LAN IP adresi
Kimlik doğrulama portu1812 UDP
Accounting portu1813 UDP
RADIUS yöntemiPAP
Shared secretSihirbaz Adım 4'te üretilen veya Ayarlar → RADIUS'ta görüntülenen değer
NAS'ınızdaki “walled garden” veya “unauthenticated pass-through” listesine Captivo sunucusunun LAN IP'sini ekleyin — misafirlerin kimlik doğrulama öncesinde panele ulaşabilmesi gerekir.

Desteklenen NAS/gateway modelleri: pfSense, OPNsense, MikroTik, FortiGate, Cisco Meraki ve PAP/CHAP destekleyen diğer cihazlar.

6. Lisans

Kurulumdan sonra 15 günlük ücretsiz deneme otomatik başlar; deneme süresinde tüm özellikler aktiftir.

Lisans dosyanızı (.lic) satıcıdan edindikten sonra:

  1. Web panelinde Ayarlar → Lisans sayfasına gidin.
  2. .lic dosyasını yükleyin.
  3. Lisans bilgileri (geçerlilik tarihi, kota) ekranda görüntülenir.

Deneme veya lisans süresi dolduğunda sistem kademeli olarak kapanır: önce uyarı, ardından salt okunur mod (yeni misafir kaydı durur, mevcut veriler görünür), son olarak panel erişimi kısıtlanır.

Air-gapped ortamda lisans doğrulama için internet bağlantısı gerekmez.

7. Yedekleme

KRİTİK UYARI: docker/.env.onprem dosyasını sunucu dışında güvenli bir yerde yedekleyin. İçindeki DATA_ENCRYPTION_KEY olmadan veritabanı yedeğindeki şifreli veriler (MAC adresleri vb.) kalıcı olarak okunamaz hale gelir.

Veritabanı Yedeği

docker/onprem/backup.sh betiği PostgreSQL'den pg_dump alır, sıkıştırır ve saklar (7 gün rotasyon).

Manuel çalıştırma:

POSTGRES_USER=captivo BACKUP_DIR=/opt/captivo-backups \
  ./docker/onprem/backup.sh

Cron ile otomatikleştirme (her gün 03:15):

15 3 * * * POSTGRES_USER=captivo BACKUP_DIR=/opt/captivo-backups \
  /opt/captivo/docker/onprem/backup.sh >> /var/log/captivo-backup.log 2>&1
Sunucu arızasında yerel yedekler de kaybolur. Yedekleri S3, R2, NAS veya şifreli harici disk gibi ikincil bir konuma düzenli olarak kopyalayın.

8. Çevrimdışı (Air-Gapped) Kurulum

İnternete bağlı olmayan ağlar için Docker image'ları önceden paketlenebilir.

İnternetli makinede paket oluşturun

# Varsayılan: latest sürümü paketler
./scripts/onprem/build-offline-bundle.sh

# Belirli sürüm için:
./scripts/onprem/build-offline-bundle.sh 1.0.0

Oluşan dosya: captivo-onprem-1.0.0.tar (web + RADIUS + postgres + caddy image'larını içerir)

Hedef makinede yükleyin

# Image'ları Docker'a yükle
docker load -i captivo-onprem-1.0.0.tar

# Kurulum betiğini çalıştır (internet gerekmez)
./docker/onprem/install.sh
Air-gapped ortamda Let's Encrypt sertifikası alınamaz. TLS için kurumsal CA sertifikanızı kullanın veya dahili ağda HTTP'yi tercih edin.

9. Sorun Giderme

Panel açılmıyor

  • docker compose … ps — tüm konteynerler Up durumunda mı?
  • migrator servisi başarıyla tamamlandı mı (Exited (0))?
  • Güvenlik duvarınızda 3000. porta erişim açık mı?
  • Loglar: docker compose … logs web

RADIUS bağlantı hatası (misafir giriş yapamıyor)

  • NAS'ta RADIUS sunucu IP adresi doğru mu? (Bu sunucunun LAN IP'si)
  • UDP 1812/1813 portlarına NAS'tan erişim var mı?
  • Shared secret NAS'ta ve Captivo panelinde birebir aynı mı?
  • captivo-radius konteyneri çalışıyor mu? (docker logs captivo-radius)

SMS gelmiyor

  • Sihirbaz Adım 6'da SMS sağlayıcı bilgileri girildi mi?
  • NAS walled garden listesinde bu sunucunun IP'si tanımlı mı?

E-posta bildirimleri gitmiyor

  • Sihirbaz Adım 7'de SMTP ayarları yapılandırıldı mı?
  • SMTP port ve şifre ayarlarını konteyner loglarından doğrulayın.

Genel log inceleme

# Tüm servis logları (son 50 satır)
docker compose -f docker/docker-compose.onprem.yml \
  --env-file docker/.env.onprem \
  logs --tail=50

# FreeRADIUS logları
docker logs captivo-radius

Sorularınız için destek ekibimizle iletişime geçin.