Sürüm: 0.21.0Bu dokümantasyon Spitfire 0.21.0 içindir.
Kurulum, güncelleme ve yedekleme
Bu sayfa Spitfire'ı Docker, Kubernetes ya da Windows (Docker Desktop) üzerine kurmayı, ilk yöneticiyi oluşturmayı, güncellemeyi, geri almayı, yedeklemeyi ve kaldırmayı anlatır. Uzak lokasyonlara runner kurmak ayrı bir konudur: Runner'lar ve lokasyonlar.
Ne işe yarar
Kurulum betiği (install.sh, Windows'ta install.ps1) şunları tek komutla yapar:
- Sürümün kurulum paketini (install.sh, uninstall.sh, Compose/Kubernetes dosyaları; kaynak kod yok)
spitfire.tr/download'dan indirir, SHA-256'sını doğrular ve~/spitfireklasörüne açar. - İmajı Docker Hub'dan çeker:
algebransoft/spitfire:<VERSION>(public, amd64 + arm64). Go ve Node gerekmez. - Postgres, controller (web arayüzü + API) ve runner'ları başlatır.
- Gizli anahtarları (
SPITFIRE_SECRET_KEY,SPITFIRE_JWT_SECRET, kurulum kodu…) bir kez üretir ve sonraki her çalıştırmada aynen korur. - Sonunda arayüz adresini ve ilk yönetici için kurulum kodunu basar.
Aynı komutu yeniden çalıştırmak güncellemedir.
Ne zaman kullanılır
- İlk kurulumda.
- Yeni bir sürüm çıktığında (arayüzde mavi "Spitfire X çıktı" bandı).
- Controller'ın portunu, runner sayısını ya da proxy'sini değiştirmek istediğinizde (seçenekle yeniden çalıştırın).
- Bir güncelleme ters gittiğinde (
--rollback). - Destek ekibi bir destek paketi istediğinde ve arayüz açılmıyorsa (
--support-bundle).
Gereksinimler
| Kurulum | Gerekenler |
|---|---|
| Docker (Linux/macOS) | Docker Engine (Linux) ya da Docker Desktop (macOS), Docker Compose v2 eklentisi, curl. Kurulumu yapan kullanıcı Docker daemon'una erişebilmeli (Linux'ta docker grubunda). |
| Kubernetes | Yukarıdakilere ek olarak kubectl ve aktif bir context. Node'lar imajı Docker Hub'dan çeker (internet erişimi gerekir; yoksa --build --registry). |
| Windows | Docker Desktop, Windows PowerShell 5.1 ya da PowerShell 7, tar.exe (Windows 10 1803 ve sonrası ile gelir). |
| Uzak runner sunucusu | Yalnızca Docker; Docker'sız Linux'ta systemd, Docker'sız Windows'ta Windows hizmeti. Bkz. Runner'lar. |
Kurulum betiği eksik bir şey bulursa HATA: satırıyla durur ve altında bir Çözüm: satırı yazar; önce onu okuyun.
Docker ile kurulum
Docker'ın çalıştığını doğrulayın:
docker infohatasız dönmeli.Kurulum komutunu çalıştırın:
curl -fsSL https://spitfire.tr/install.sh | bash -s -- dockerBu, tek makineye Postgres + controller + 2 runner kurar. Başka bir sürüm için
SPITFIRE_VERSION=0.5.3, başka bir klasör içinSPITFIRE_DIR=/opt/spitfireyazın (ikisi debash'ten önce):curl -fsSL https://spitfire.tr/install.sh | SPITFIRE_DIR=/opt/spitfire bash -s -- dockerKurulum
Kurulum tamamlandı. Tarayıcıda açın: http://...satırıyla biter. Hemen altındaki Kurulum kodu: XXXX-XXXX-XXXX satırını kopyalayın.Adresi tarayıcıda açın ve İlk giriş ve kurulum kodu bölümüne geçin.
Varsayılan portlar: arayüz ve API 8470, uzak runner'lar için gRPC (TLS) 8471. Değiştirmek için:
~/spitfire/install.sh docker --port 8480 --grpc-port 8481 --runners 4Kubernetes ile kurulum
kubectl config current-contextile doğru cluster'da olduğunuzu kontrol edin.Kurulum komutunu çalıştırın:
curl -fsSL https://spitfire.tr/install.sh | bash -s -- kubernetesVarsayılan namespace
spitfire, context aktif context'tir. Değiştirmek için--namespace NSve--context C.Arayüz varsayılan olarak NodePort 30470'te açılır (
--node-port Nile değişir;--service-type LoadBalancerya daClusterIPda seçilebilir). Arayüz bu makineden NodePort ile açılamıyorsa kurulum arka planda birkubectl port-forwardbaşlatır (deploy/kubernetes/.port-forward.pid).Kurulum kodunu çıktıdan kopyalayın ve adresi açın.
Kubernetes kurulumunun güvenlik ayarları: pod'lar root olmadan, salt okunur kök dosya sistemiyle, yetkisiz (capabilities yok) ve RuntimeDefault seccomp ile çalışır. NetworkPolicy'ler (CNI destekliyorsa) Postgres'e yalnız controller'ın, düz metin runner portuna (8475) yalnız bu kurulumun runner'larının erişmesine izin verir. Controller durdurulurken aktif koşuları durdurup sonuçlarını kaydeder (30 sn'ye kadar; pod'a 45 sn tanınır).
Sık kullanılan Kubernetes seçenekleri:
| Seçenek | Açıklama |
|---|---|
--namespace NS, --context C |
Hedef (varsayılan spitfire, current-context) |
--service-type T |
NodePort (varsayılan), LoadBalancer, ClusterIP |
--node-port N |
Arayüz NodePort'u (varsayılan 30470) |
--storage-class SC, --storage-size S |
Postgres PVC'si (varsayılan cluster default, 5Gi) |
--local-port N |
port-forward yedeği için yerel port |
--runners N |
Sürekli açık runner sayısı |
--on-demand-runners N |
Koşu sırasında pod olarak açılan runner'lar (bkz. Runner'lar) |
--build --registry REG |
İmajı kaynaktan derleyip kendi registry'nize push eder |
--build ile derlenen imaj kind, minikube, k3d ve Docker Desktop'a doğrudan yüklenir; diğer cluster'lar için --build --registry REG gerekir. --build yalnızca kaynak ağacında çalışır; spitfire.tr'den inen pakette kaynak kod yoktur.
Windows ile kurulum
Docker Desktop'ı başlatın.
PowerShell'de:
irm https://spitfire.tr/install.ps1 | iexBu
dockermodunda kurar; paket%USERPROFILE%\spitfireklasörüne açılır ($env:SPITFIRE_DIRile değişir,$env:SPITFIRE_VERSIONile sürüm seçilir).Seçenek vermek için betiği bir scriptblock olarak çağırın:
& ([scriptblock]::Create((irm https://spitfire.tr/install.ps1))) docker -Port 8480 -GrpcPort 8481 -Runners 4
install.ps1 seçenekleri install.sh ile aynı anlamdadır: -Runners N, -Location AD, -Version V, -Image IMAGE, -AdminEmail/-AdminPassword, -Port N, -GrpcPort N, -GrpcPublicAddr H:P, -NoBackup, -Rollback, -SupportBundle, -Yes, -Help.
Docker'sız bir Windows sunucuda yalnızca runner kurmak istiyorsanız arayüzde Runner'lar → token penceresi → Windows sekmesindeki komutu kullanın: Runner'lar.
Kurulum seçenekleri
~/spitfire/install.sh --help hepsini listeler. En sık kullanılanlar:
| Seçenek | Açıklama |
|---|---|
--port 8480 --grpc-port 8481 |
Docker: arayüz ve runner portları (varsayılan 8470/8471) |
--runners N |
Yerel runner sayısı (varsayılan 2) |
--location AD |
Yerel runner'ların lokasyonu (varsayılan local; a-z 0-9 - _ .) |
--grpc-public-addr HOST:PORT |
Diğer lokasyonlardaki runner'ların bağlanacağı adres (arayüzdeki komutta görünür; Docker'da varsayılan LAN IP'si) |
--version V |
Docker Hub'dan başka bir sürüm çek |
--image IMAGE |
Belirli bir hazır imaj kullan |
--admin-email E --admin-password P |
İlk yöneticiyi kurulumda oluştur (parola en az 8 karakter) |
--no-backup |
Güncellemede veritabanı yedeğini alma |
--rollback [YEDEK] |
Son güncellemeyi geri al |
--support-bundle |
Kurmaz; destek paketi (zip) hazırlar |
-y, --yes |
Onay sorma |
İlk giriş ve kurulum kodu
İlk açılışta arayüz İlk admin'i oluşturun ekranını gösterir. Bu ekran yalnızca bir kez, henüz hiç kullanıcı yokken görünür.
İlk admin'i oluşturun ekranı: Kurulum kodu, Ad, E-posta, Parola ve Parola (tekrar) alanları
- Kurulum kodu alanına kurulumun sonunda basılan
XXXX-XXXX-XXXXkodunu yapıştırın. - Ad, E-posta ve Parola (en az 8 karakter) girin, Parola (tekrar) ile doğrulayın.
- Admin'i oluştur ve giriş yap'a tıklayın.
Oluşan hesap kurulum yöneticisidir: lisans, kullanıcılar, SSO, sistem olayları gibi kurulum ayarları yalnızca bu roldedir. Kod ilk yöneticiyle birlikte geçersiz olur.
Kodu kaybettiyseniz (kod, ilk yönetici oluşana kadar geçerli kalır ve yeniden üretilmez):
Docker:
grep SPITFIRE_SETUP_CODE ~/spitfire/deploy/docker/.envKubernetes:
kubectl -n spitfire get secret spitfire-secrets -o jsonpath='{.data.SPITFIRE_SETUP_CODE}' | base64 -dController logunda
setup_code=satırı:docker compose -p spitfire -f deploy/docker/docker-compose.yml logs controller | grep -i setup kubectl -n spitfire logs deploy/spitfire-controller | grep -i setupKurulum komutunu yeniden çalıştırmak kodu tekrar gösterir (kod değişmez).
Kodu hiç kullanmadan ilk yöneticiyi kurulumda oluşturmak için: install.sh docker --admin-email admin@ornek.com --admin-password '...' (Windows: -AdminEmail/-AdminPassword).
Kurulum kodunu kurulumu yapan kişi dışında kimseyle paylaşmayın. Kodu bilen ilk kişi kurulumun yöneticisi olur.
Giriş yaptıktan sonraki adım genellikle lisanstır: Lisans.
Güncelleme
Yeni sürümü nasıl fark edersiniz
Controller günde bir kez spitfire.tr'ye yeni sürüm olup olmadığını sorar (yalnızca kendi sürümünü gönderir). Yeni sürüm varsa admin'ler her sayfanın üstünde Spitfire X çıktı bandını görür:
- Neler yeni, nasıl güncellenir? sürüm notlarını ve bu kuruluma uygun güncelleme komutunu açar (Linux/macOS Docker, Windows PowerShell, Kubernetes ve başka lokasyonlardaki runner sunucuları için ayrı ayrı).
- Bu sürüm için gizle bandı o sürüm için kapatır. Güvenlik güncellemesi bandı (kırmızı) gizlenmez; her ziyarette yeniden görünür.
Lisans sayfasındaki Sürüm ve güncellemeler kartı kurulu sürümü, kurulum türünü, son kontrolün sonucunu, Çıkış proxy'si'ni ve Güncelleme komutu'nu gösterir; Şimdi kontrol et beklemeden kontrol eder.
Lisans sayfasındaki Sürüm ve güncellemeler kartı: kurulu sürüm, kurulum türü, güncelleme kontrolü ve Şimdi kontrol et düğmesi
Adım adım güncelleme
Süren bir koşu olmadığından emin olun (güncelleme controller'ı yeniden başlatır).
Controller'ın kurulu olduğu sunucuda kurulumdaki komutun aynısını çalıştırın:
curl -fsSL https://spitfire.tr/install.sh | bash -s -- docker curl -fsSL https://spitfire.tr/install.sh | bash -s -- kubernetes --context C --namespace NSWindows'ta:
irm https://spitfire.tr/install.ps1 | iex.Betik son sürümün paketini aynı klasöre açar ve imajı çeker. Üretilen anahtarlar (
deploy/docker/.envya daspitfire-secretsSecret'ı) ve veriler korunur.Sürüm değişiyorsa önce veritabanı
~/spitfire/backups/*.dumpolarak yedeklenir (son 5 yedek tutulur;--no-backupatlar).Başka lokasyonlardaki runner'ları da güncelleyin: Runner'lar → Runner güncelleme. Runner'lar sayfası controller'dan farklı sürümdeki runner'ları sarı eski sürüm etiketiyle işaretler.
Geri alma (rollback)
Bir güncelleme ters giderse:
~/spitfire/install.sh docker --rollback # Kubernetes: install.sh kubernetes --rollbackWindows'ta .\install.ps1 -Rollback. Betik önce şimdiki veritabanını yedekler, backups/ altındaki en yeni yedeği (ya da verdiğiniz dosyayı: --rollback backups/<dosya>.dump) geri yükler ve o yedeği alan sürüme döner. Yedekten sonra yapılan değişiklikler geri gelmez. Terminalsiz çalışırken --yes gerekir.
Proxy arkasında kurulum
Kurumsal bir HTTPS proxy'si arkasındaysanız kurulum komutunu HTTPS_PROXY (ve gerekirse HTTP_PROXY, NO_PROXY) tanımlıyken çalıştırın:
export HTTPS_PROXY=http://proxy.ornek.com:3128
export NO_PROXY=.ornek.local
curl -fsSL https://spitfire.tr/install.sh | bash -s -- dockerBetik bu değerleri controller'a aktarır (Docker: deploy/docker/.env; Kubernetes: spitfire-proxy Secret'ı). Controller güncelleme kontrolünü, webhook'ları ve SSO çağrılarını bu proxy üzerinden yapar. Kurulumun kendi adları (localhost, postgres, controller…) NO_PROXY'ye kendiliğinden eklenir. İç ağdaki SSO sağlayıcınızın ya da webhook hedeflerinizin adlarını NO_PROXY'ye siz ekleyin. Sonraki bir çalıştırmada proxy vermezseniz önceki ayar korunur.
İnternetsiz bir kurulumda güncelleme kontrolünü kapatın: controller'da SPITFIRE_UPDATE_CHECK=off; sürüm notlarını spitfire.tr/surum-notlari'dan takip edin. Kendi aynanızı kullanıyorsanız SPITFIRE_UPDATE_FEED ile verin; aynada releases.json.sig dosyası da bulunmalıdır.
Yedekleme ve SPITFIRE_SECRET_KEY
Spitfire'ın verileri Postgres'tedir; bağlantı secret'ları ise SPITFIRE_SECRET_KEY ile şifrelenir. İkisini birlikte yedekleyin:
- Anahtarlar: Docker'da
~/spitfire/deploy/docker/.envdosyası, Kubernetes'tespitfire-secretsSecret'ı. Bu dosyayı güvenli bir yere (parola kasası gibi) kopyalayın. - Veritabanı: Güncellemeler sürüm değiştiğinde otomatik
~/spitfire/backups/*.dumpalır; bu dosyalarpg_restoreile geri yüklenir. Düzenli yedek için bu klasörü ya da Postgres volume'ünü kendi yedekleme sisteminize ekleyin.
SPITFIRE_SECRET_KEY kaybolursa kayıtlı bağlantı secret'ları (veritabanı, Kafka… parolaları) okunamaz; hepsini yeniden girmeniz gerekir. Controller'ın runner'lara kendini tanıttığı TLS kimliği de bu anahtarla şifreli saklanır.
Portlar ve ağ
| Port | Ne için | Kim erişmeli |
|---|---|---|
| 8470 (Docker; Kubernetes'te NodePort 30470) | Web arayüzü ve REST API | Kullanıcılar, CI hatları |
| 8471 | Uzak runner'ların bağlandığı gRPC endpoint'i, TLS | Başka lokasyonlardaki runner sunucuları (dışarıdan içeri TCP) |
| 8475 | Aynı makinedeki/cluster'daki runner'lar için düz gRPC | Yalnızca kurulumun kendi runner'ları; yayınlanmaz |
| 8472 (opsiyonel) | Mock servisler (SPITFIRE_MOCK_ADDR ile açılır) |
Test edilen sistem |
Runner'lar controller'a dışarı doğru bağlanır; runner sunucusunda gelen port açmanız gerekmez.
Arayüzün önünde bir ters vekil (ingress, nginx) varsa, istemci adresi X-Forwarded-For'dan yalnız istek loopback'ten ya da özel ağdan geldiğinde alınır. Genel adresli bir vekili (bulut yük dengeleyici, Cloudflare) SPITFIRE_TRUSTED_PROXIES ile (virgülle ayrılmış CIDR'ler) tanıtın; aksi hâlde audit log ve giriş sınırları vekilin adresini görür.
Giriş denemeleri sınırlıdır: bir istemci adresi art arda 30 deneme yapabilir, sonra 2 sn'de bir; bir hesap 10 yanlış parolayı kabul eder, sonra dakikada bir. Çok kullanıcı tek bir proxy/NAT arkasındaysa ilk sınırı SPITFIRE_SIGNIN_BURST ile artırın.
TLS ve runner pin temelleri
- 8471 portu her zaman TLS'tir. Controller ilk açılışta kendi kimliğini üretir ve veritabanında (
SPITFIRE_SECRET_KEYile şifreli) saklar. - Uzak runner controller'ı bu anahtarın pin'i (
sha256:…) ile doğrular. Pin ve hazır kurulum komutu Runner'lar sayfasındaki token penceresindedir. Bağlantı secret'ları bu hattan runner'lara gittiği için pin zorunludur. - Kendi sertifikanızı kullanmak isterseniz controller'a
SPITFIRE_GRPC_TLS_CERTveSPITFIRE_GRPC_TLS_KEYverin; runner'lar o zaman pin yerine--tls(sistem CA'ları) ya da--ca <PEM dosyası>ile doğrular. - Uzak runner'ların gördüğü controller adresi kurulumda
--grpc-public-addr HOST:PORTya daSPITFIRE_GRPC_PUBLIC_ADDRile verilir.
Ayrıntılar: Runner'lar → TLS pin ve sertifikalar.
Kaldırma
~/spitfire/uninstall.sh docker
~/spitfire/uninstall.sh kubernetes --context C --namespace NS
~/spitfire/uninstall.sh runner # install.sh runner ile kurulan uzak runner'larWindows: .\uninstall.ps1 docker ya da .\uninstall.ps1 runner.
Varsayılan olarak veriler (Postgres volume'ü / PVC) ve üretilen anahtarlar (.env / spitfire-secrets) korunur; daha sonra install.sh her şeyi geri getirir. Her şeyi silmek için --purge (Windows: -Purge).
--purge veritabanını ve SPITFIRE_SECRET_KEY'i siler; geri alınamaz. Önce yedek alın.
Sık karşılaşılan sorunlar
Belirti: HATA: Docker daemon'una ulaşılamıyor.
Neden: Docker çalışmıyor ya da kullanıcınız docker grubunda değil.
Çözüm: Docker Desktop'ı başlatın ya da sudo systemctl start docker; kullanıcınızı docker grubuna ekleyip oturumu yenileyin.
Belirti: HATA: Docker Compose bulunamadı.
Neden: Compose v2 eklentisi kurulu değil.
Çözüm: Docker Compose v2 eklentisini kurun (https://docs.docker.com/compose/install/).
Belirti: HATA: Port 8470 başka bir uygulama tarafından kullanılıyor.
Neden: Makinede o portu kullanan başka bir servis var.
Çözüm: Başka port seçin: install.sh docker --port 8480 --grpc-port 8481.
Belirti: HATA: İmaj indirilemedi: algebransoft/spitfire:...
Neden: Makine Docker Hub'a çıkamıyor ya da sürüm yanlış.
Çözüm: docker pull ile internet erişimini deneyin; proxy arkasındaysanız Docker daemon'unun proxy ayarını yapın; sürüm numarasını kontrol edin.
Belirti: Kurulum ekranı "Kurulum kodu yanlış" diyor.
Neden: Kod eksik kopyalandı ya da başka bir kurulumun kodu.
Çözüm: Kodu .env dosyasından ya da controller logundan yeniden kopyalayın (İlk giriş ve kurulum kodu).
Belirti: Kurulum ekranı yerine giriş sayfası açılıyor; "Kurulum zaten tamamlanmış" yazıyor.
Neden: İlk yönetici zaten oluşturulmuş (belki --admin-email ile).
Çözüm: O hesapla giriş yapın. Parolası bilinmiyorsa sunucuda spitfire-controller reset-password kullanın: Kullanıcılar ve erişim.
Belirti: HATA: Controller 180 sn içinde hazır olmadı.
Neden: Controller başlarken hata verdi (veritabanı, eksik ayar…).
Çözüm: docker compose -p spitfire -f deploy/docker/docker-compose.yml logs -f controller ile logu okuyun; çözemezseniz ./install.sh --support-bundle ile destek paketi hazırlayın (Sorun giderme).
Belirti: Sürüm ve güncellemeler kartında Kontrol başarısız görünüyor.
Neden: Controller spitfire.tr'ye ulaşamıyor.
Çözüm: Proxy arkasındaysanız kurulum komutunu HTTPS_PROXY tanımlıyken yeniden çalıştırın; internetsiz kurulumda SPITFIRE_UPDATE_CHECK=off.
Belirti: Yeniden kurulumdan sonra kayıtlı bağlantılar çalışmıyor; secret'lar okunamıyor ya da Test başarısız oluyor.
Neden: SPITFIRE_SECRET_KEY değişmiş (ör. .env silinip yeniden kurulmuş).
Çözüm: Yedeklediğiniz .env'i geri koyup kurulumu yeniden çalıştırın; yedek yoksa secret'ları yeniden girin.