yeke.io · dokümanlar
Kurulum
YEKE tek bir container. Tek makineye tek komutla kurulur; aşağıdaki ilk blok kopyala-yapıştır çalışır. Her ayarı açıkta gösteren ikinci komut, güncelleme ve Kubernetes hemen ardından.
Gerekenler
Üç şey. Kubernetes cluster'ı bunlardan biri değil — onu sonra bağlıyorsunuz.
- Docker olan bir makine. Docker Compose gerekmiyor; isterseniz kullanabilirsiniz (aşağıda).
openssl— ya da 32 bayt rastgele üretebilen başka bir araç.- Docker Hub erişimi —
nairotech/yekeimajı herkese açık ve multi-arch (amd64 + arm64).
Ayrı bir web container'ı ve önünde bir reverse proxy artık yok.
Arayüz, API ve agent tüneli aynı süreçten, aynı porttan geliyor — kurulacak tek şey bu imaj.
Tek komut
Kopyalayın, yapıştırın. Ayrı bir yapılandırma dosyası, klonlanacak bir depo yok.
docker run -d --name yeke --restart unless-stopped -p 8080:8080 \ -v yeke-data:/var/lib/yeke \ -e YEKE_SNAPSHOT_KEY="$(openssl rand -hex 32)" \ nairotech/yeke:0.7.3
Sürüm etiketini sabitleyin, latest yazmayın: core'un sürümü, cluster'ınıza
kurulacak agent imajının etiketini de belirliyor. Etiket kayarsa agent protokol uyuşmazlığına
düşer. Yayındaki etiketler
Docker Hub'da.
Açılmasını bekleyin
/healthz kimlik istemez, veritabanına dokunmaz; hazır olmanın en ucuz ölçütü odur.
Birkaç saniye sürer:
until curl -sf http://localhost:8080/healthz; do sleep 1; done
Bu komut {"status":"ok"} basıp çıkar. Container'ın kendi
healthcheck'i yok, yani docker ps hiçbir zaman (healthy)
yazmaz — beklenen davranış budur, kurulum hatası değil.
İlk yöneticiyi oluşturun
İlk açılışta hiç kullanıcı yoktur; core bir kurulum token'ı üretip log'a basar:
docker logs yeke 2>&1 | grep -A1 SETUP
http://localhost:8080/ adresini açın, token'ı yapıştırın, kullanıcı adı ve parola
girin. Token 60 dakika geçerlidir ve bir kez kullanılır; süresi dolarsa
docker restart yeke yenisini üretir.
Anahtarı şimdi bir yere kaydedin
YEKE_SNAPSHOT_KEY geri alma snapshot'larını ve doğrudan mod
kubeconfig'lerini şifreler. Yukarıdaki komutta anahtar container'ın yapılandırmasında
yaşıyor — container'ı silip yeniden yarattığınız an (güncelleme tam olarak bunu gerektirir)
elinizde kalan tek kopya gider.
Kaybının belirtisi sizi yanıltacak kadar sessiz: yanlış anahtarla açılan core
çökmez, /healthz yine 200 döner, kurulum ekranı da açılmaz — yalnızca
giriş sonsuza kadar başarısız olur. Ölçüldü (10.08.2026). Anahtarı okuyup parola kasanıza
koyun:
docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' yeke | grep YEKE_SNAPSHOT_KEYKalıcı kurulumlarda anahtarı komut satırında değil dosyada tutmak daha iyidir — bir sonraki bölümde öyle yapılıyor.
Her ayar açıkta
Aynı kurulumun kalıcı hâli: anahtar dosyada, dışarıya açılan adres tanımlı, lisans bağlı. Gerekmeyen satırı silin.
Önce anahtarı bir kez üretip dosyaya yazın:
install -d -m 700 /etc/yeke [ -f /etc/yeke/snapshot.key ] || openssl rand -hex 32 > /etc/yeke/snapshot.key chmod 600 /etc/yeke/snapshot.key
docker run -d --name yeke --restart unless-stopped \ -p 8080:8080 \ -v yeke-data:/var/lib/yeke \ -v /etc/yeke/lisans.txt:/etc/yeke/lisans.txt:ro \ -e YEKE_SNAPSHOT_KEY="$(cat /etc/yeke/snapshot.key)" \ -e YEKE_PUBLIC_URL="https://yeke.ornek.com" \ -e YEKE_ALLOWED_ORIGINS="https://yeke.ornek.com" \ -e YEKE_LICENSE_PATH="/etc/yeke/lisans.txt" \ nairotech/yeke:0.7.3
Son üç satır opsiyonel. Lisansınız yoksa ya da arayüzden yüklemek istiyorsanız
YEKE_LICENSE_PATH satırını ve onun bağlama satırını birlikte silin.
Yalnız birini silmek sessiz bir karışıklık üretiyor: olmayan bir dosyayı bağlamaya çalışan Docker
o yola boş bir dizin yaratır, core dizini okuyamayıp lisansı reddeder ve Community'de
çalışmaya devam eder — kurulum ayakta görünür, ama gerçek lisans dosyanızı sonradan o yola
kopyalamak istediğinizde karşınıza çıkar.
| Değişken | Zorunlu mu | Ne yapar · boş bırakılırsa ne olur |
|---|---|---|
YEKE_SNAPSHOT_KEY | Zorunlu | Snapshot'ları ve doğrudan mod credential'larını şifreleyen 32 baytlık anahtar (64 hex ya da base64). Verilmezse core hiç açılmaz ve sebebini söyleyip çıkar. |
YEKE_PUBLIC_URL | Cluster ekleyecekseniz | Core'un dışarıdan erişildiği mutlak adres; agent kurulum manifesti bu adresi
kullanır. Boşsa core sağlıklı açılır, giriş çalışır — yalnız agent modunda cluster ekleme
PUBLIC_URL_NOT_CONFIGURED ile durur. Core bu adresi tahmin etmez:
çoğu kurulumda 0.0.0.0:8080 dinler ve o adres cluster'ın içinden erişilebilir
değildir. |
YEKE_ALLOWED_ORIGINS | Hayır | CSRF/Origin kontrolünde kabul edilecek ek origin'ler (virgülle ayrılmış). Yalnızca
core'un önüne bir reverse proxy (Cloudflare, nginx, Traefik) koyduğunuzda ve o katman
dış adresi core'un gördüğü Host'tan farklı gösterdiğinde gerekir. |
YEKE_LICENSE_PATH | Hayır | Enterprise lisans dosyasının yolu. Boşsa kurulum Community çalışır: 3 cluster / 5 kullanıcı tavanı, çekirdek yeteneklerin tamamı açık, süresi dolmaz. Tanımlıysa o açılışın tek lisans kaynağı bu dosyadır ve arayüzden lisans yüklenemez. |
YEKE_BOOTSTRAP_TOKEN | Hayır | İlk yönetici için sabit kurulum token'ı — kurulumu betikle yapıyorsanız log okumaktan kurtarır. Boşsa core rastgele üretip log'a basar. |
Tabloda olmayan bir YEKE_* değişkeni tanımlamanız gerekmiyor.
Üçü — YEKE_ALLOW_HEADER_IDENTITY, YEKE_DEV_USER,
YEKE_DEV_GROUPS — kaldırıldı ve tanımlıysa core hiç açılmaz: kimlik
doğrulamasının var oluş sebebi tam olarak bu üçünün kapatılmasıydı, sessizce yok saymak
"hâlâ eskisi gibi çalışıyor" sanmanıza yol açardı.
Sonra ne olacak
YEKE ayakta ama henüz hiçbir cluster'ı görmüyor.
- Bir cluster bağlayın — agent modu ya da doğrudan kubeconfig.
- Yetkiyi ayarlayın — kim hangi Kubernetes kimliğiyle yazacak.
Güncelleme ve yedek
Güncelleme container'ı yeniden yaratır. Veri ve anahtar diskte olduğu için değişmez — anahtarı komut satırında tuttuysanız önce onu okuyun.
docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' yeke | grep YEKE_SNAPSHOT_KEY
docker pull nairotech/yeke:<yeni-sürüm>
docker rm -f yeke
# ardından aynı run komutu: yeni etiket, AYNI anahtar- Her güncelleme bir kesintidir. Veritabanı tek yazıcılı SQLite: eski core kapanmadan yenisi açılamaz. Üretimde ölçülen pencere ~60 saniye. Arayüzde tek satır metin değiştiren bir sürüm bile bu kesintiye tabidir — arayüz core'un imajının içinde.
- Göçler açılışta koşar ve core log'una
schema vNsatırını basar; güncellemenin başarısını tahminle değil oradan doğrulayın. - Yedek —
yeke-datavolume'ü ile/etc/yekedizini. İkisi birlikte kurulumun tamamıdır; anahtarsız bir veri yedeği işe yaramaz.
Compose ve Kubernetes
Tek komut çoğu kurulum için yeter. Servis tanımını bildirimsel istiyorsanız iki yol daha var; ikisi de aynı imajı çalıştırır.
Docker Compose
Depoyu klonlamanız gerekmiyor — dosyanın tamamı bu:
services:
core:
image: nairotech/yeke:0.7.3
ports:
- "8080:8080"
environment:
YEKE_SNAPSHOT_KEY: ${YEKE_SNAPSHOT_KEY:?anahtar zorunlu}
YEKE_PUBLIC_URL: ${YEKE_PUBLIC_URL:-}
volumes:
- core-data:/var/lib/yeke
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8080/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
interval: 10s
timeout: 3s
retries: 5
start_period: 10s
restart: unless-stopped
volumes:
core-data:Anahtarı yanındaki .env dosyasına yazın ve
docker compose up -d deyin. Bu yolda docker ps (healthy)
gösterir — healthcheck imajın değil bu dosyanın parçası.
Kubernetes
Core'u bir cluster'ın içinde koşturmak destekleniyor ve manifest seti hazır: namespace,
ReadWriteOnce PVC, tek Deployment (strategy: Recreate), Service ve
standart Ingress. Anahtar manifestin içinde değildir, Secret'ı elle oluşturursunuz.
Set kısa ama kuruma göre uyarlanması gereken alanlar taşıyor (host adı, StorageClass, Ingress
sınıfı); isteyin,
gönderelim.
Yönetilecek cluster'ın içine kurmak zorunda değilsiniz ve genelde istemezsiniz: YEKE'nin yönettiği cluster çöktüğünde onu düzeltecek arayüzün ayakta olması gerekir.
Takılırsanız yazın.
Bu sayfadaki her komut gerçekten çalıştırılarak doğrulandı. Yine de bir adım beklediğiniz gibi gitmezse doğrudan yazın.