Kendi sunucunuzda kurmak
Captivo Access, Apache 2.0 lisanslıdır ve yayımlanmış konteyner imajları olarak dağıtılır. Bu rehber tek bir herkese açık Linux sunucuyu boş halinden otomatik HTTPS ile çalışan bir konsola götürür; sonrası (Connector, kaynaklar, kişiler) Cloud ile aynıdır.
Neler kurulur
Tek bir herkese açık sunucuda dört sürekli konteyner ve iki yardımcı. Manager konsoldur: kurulum, giriş, davetler, politika. Go ile yazılmış data-plane connector tünelini sonlandırır ve tedarikçilerin gerçekte konuştuğu kimlik denetimli vekildir. Postgres yapılandırmayı ve denetim kaydını tutar. Caddy 80 ve 443 portlarında TLS'i sonlandırır ve her sertifikayı sizin için alır. Tek seferlik access-migrate servisi Manager başlamadan önce veritabanı şemasını uygular; access-cron zamanlanmış işleri çalıştırır.
Connector bu sunucunun parçası değildir. Ayrı olarak, uygulamaların bulunduğu ağın içindeki bir makinede çalışır ve bu sunucuya dışarıdan bağlanır; konsol ayağa kalkınca Connector rehberine geçin.
1Sunucu ve portlar
Herkese açık IP'si olan bir Linux sunucu (bu rehberde Ubuntu 22.04 ya da üstü). 80 ve 443 portları internetten erişilebilir olmalıdır: Let's Encrypt her sertifikayı bu portlar üzerinden doğrular. İçeri başka hiçbir portun açık olması gerekmez; Connector daha sonra yalnızca dışarı bağlanır.
apt update && apt -y upgrade
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable2Docker kurulumu
Compose v2 ile Docker Engine; eski docker-compose ikilisi değil, docker compose alt komutu.
curl -fsSL https://get.docker.com | sh
docker version
docker compose version3DNS kayıtları
Her şeyin altında yaşayacağı alt alan adını seçin, örneğin access.sirketiniz.com, ve sunucunun herkese açık IP'sine üç A kaydı oluşturun. Üçüncüsü bir joker (wildcard) kayıttır: yayımlayacağınız her tedarikçi uygulamasını kapsayan tek kayıt; böylece uygulama başına DNS'e bir daha dokunulmaz.
| Tür | Ad | Değer |
|---|---|---|
| A | manager.access.example.com | sunucu IP |
| A | connect.access.example.com | sunucu IP |
| A | *.access.example.com | sunucu IP |
Devam etmeden önce kayıtların çözülmesini bekleyin: dig +short manager.access.sirketiniz.com ve dig +short herhangi.access.sirketiniz.com ikisi de sunucu IP'sini yazmalı; ikincisi joker kaydın çalıştığını gösterir.
4Kurulum dosyaları ve .env
Depoyu sunucuda klonlayın ve deploy dizinine girin. En hızlı yol kurulum betiğidir: verdiğiniz alan adından çerez alanını, genel adresi ve passkey relying-party kimliğini türetir, her gizli anahtarı bir kez üretir, yayımlanmış imajları çeker ve yığını başlatır. Tekrar çalıştırmak güvenlidir.
git clone https://github.com/captivo-io/captivo-access.git
cd captivo-access/deploy
./setup.sh access.example.comDosyayı elle doldurmayı tercih ederseniz .env.prod.example dosyasını .env olarak kopyalayın ve her gizli anahtarı openssl rand -hex 32 ile üretin. Önemli değişkenler:
| Değişken | Örnek | Ne işe yarar |
|---|---|---|
| ACCESS_DOMAIN | access.example.com | Her şeyin altında sunulduğu taban alan adı. |
| COOKIE_DOMAIN | .access.example.com | Baştaki nokta önemli: giriş çerezi böylece her uygulama adresinde de geçerli olur. Noktasız yazılırsa tedarikçi giriş yapar ve giriş sayfasına geri döner. |
| MANAGER_PUBLIC_URL | https://manager.access.example.com | Konsolun genel adresi; giriş yönlendirmelerinde kullanılır. |
| WEBAUTHN_RP_ID | access.example.com | Çıplak access alan adı, manager değil. Tarayıcıdaki adresle uyuşmazsa passkey çalışmaz. |
| POSTGRES_PASSWORD | openssl rand -hex 32 | Veritabanı parolası. |
| SESSION_SECRET | openssl rand -hex 32 | Oturum belirteçlerini imzalar. |
| ENCRYPTION_KEY | openssl rand -hex 32 | Kurtarma sırlarını saklarken şifreler. |
| DATAPLANE_SECRET | openssl rand -hex 32 | Manager ile data-plane arasındaki ortak sır. |
| CRON_SECRET | openssl rand -hex 32 | Zamanlanmış iş uç noktalarını yetkilendirir. |
| AUDIT_RETENTION_DAYS | 730 | Başlangıçtaki denetim kaydı saklama süresi; sonradan Policy sayfasından değiştirilir. |
Dört yetenek anahtarı RECORDING_ENABLED, NATIVE_GATEWAY, VAULT_ENABLED ve ISOLATED_ENABLED varsayılan olarak açıktır; yorum satırı olarak bırakın, yalnızca kapatmak istediğinizi 0 yapın. İşletme ayarlarının çoğu (saklama süreleri, oturum sınırları, izin listesi, webhook) daha sonra Infrastructure → Policy altından yönetilir; konsolda girilen değer ortam değişkenine her zaman üstün gelir.
5Yığını ayağa kaldırın
Kurulum betiğini kullandıysanız bu adım zaten gerçekleşti. Aksi halde yığını başlatın ve Caddy'nin manager ve connect adresleri için ilk iki sertifikayı almasını izleyin; 80 ve 443 portlarının açık olması bunun içindi.
docker compose -f docker-compose.prod.yml up -d
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f caddyVeritabanı geçişini elle çalıştırmazsınız. access-migrate servisi şemayı her up -d komutunda uygular, değişiklik yoksa hiçbir şey yapmaz ve veri silebilecek hiçbir değişikliği kabul etmez. Manager başlamazsa önce docker compose -f docker-compose.prod.yml logs access-migrate çıktısını okuyun.
Zamanlanmış işler de otomatiktir: access-cron konteyneri kaynak erişilebilirliğini beş dakikada bir kontrol eder; denetim kaydı saklama, kayıt saklama ve denetim zinciri mühürleme işlerini günde bir çalıştırır. Sunucuda crontab gerekmez.
6İlk yöneticiyi oluşturun
https://manager.access.sirketiniz.com/setup adresini açın ve ilk hesabı bir passkey ile kaydedin: Touch ID, Windows Hello ya da bir güvenlik anahtarı. Bu hesap Admin olur. Varsayılan ya da hazır bir hesap yoktur, parola da yoktur.
WEBAUTHN_RP_ID değerinin adres çubuğundaki adresle uyuşmamasıdır. Bkz. Passkey ile giriş yapılamıyor.7DNS ve TLS'i konsoldan doğrulayın
Konsolda Infrastructure → Custom domain sayfasını açın. Alan adınız için tam joker kaydı ve sunucunuzun IP'sini, bir Verify DNS düğmesiyle birlikte gösterir. Yeşil sonuç, joker kaydın canlı olduğu ve yayımlayacağınız her uygulamanın ilk ziyaretinde HTTPS alacağı anlamına gelir. Kırmızı, 3. adımdaki *.access kaydının eksik olduğu ya da henüz yayılmadığı anlamına gelir.
Buradan sonrası Cloud ile aynıdır: ağınızın içine bir Connector kurun, kaynakları tanımlayın, kişileri davet edin. Bir uygulama adresi sonradan sertifika hatası ya da 502 veriyorsa Uygulama açılmıyor rehberiyle başlayın.
Kayıtlar nerede saklanır
Bu sunucuda değil. Oturum kayıtları (ekran akışları, tuş vuruşu günlükleri, izole tarayıcı videosu) Connector'ın kendi diskine, /data altına yazılır; Connector'ın ilk açılışta ürettiği ve /data/recording.key dosyasında tuttuğu bir anahtarla AES-256-GCM ile şifrelenir. Kontrol düzlemi içeriği hiç almaz ve çözemez. Bundan dört sonuç çıkar:
- Connector'ın veri hacmini yedekleyin. Başka kimsede kopyası yoktur; hacim giderse kayıtlar kalıcı olarak gider.
- recording.key dosyasını da yedekleyin. Anahtar olmadan kayıtlar okunamaz ve anahtar yeniden üretilemez.
- Bir kayıt yalnızca Connector'ı çevrimiçiyken oynatılır ve aranır.
- Silme, Connector bir sonraki bağlanışında tamamlanır; o zamana kadar kayıt beklemede görünür.
Saklama süresi ve silme akışı dahil kalanı Oturum kaydı ve canlı izleme rehberinde.
Güncelleme
Konsolun Infrastructure → Updates sayfası yeni bir sürüm çıktığında haber verir ve tam komutları gösterir. Sunucuda komutlar şunlardır:
cd captivo-access/deploy
git pull
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
docker image prune -a -f --filter label=org.opencontainers.image.title=captivo-accessŞema up -d ile kendiliğinden geçer. Son satır değiştirilen imajların diskini geri alır; -a zorunludur çünkü compose dosyası sürümleri sabitler, değiştirilen imaj etiketini korur ve düz bir prune hiçbir şey silmez. Çalışan sürüm asla silinmez. Connector'lar başka makinelerde çalışır ve bu komuttan etkilenmez: her birini yeni connector imajını çekip konteyneri yeniden oluşturarak güncelleyin; /data içindeki belirteç kalır, yeniden eşleme gerekmez.
Ürün geneli sorunlar için: Connector çevrimdışı görünüyor · Uygulama açılmıyor · Passkey ile giriş yapılamıyor