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şiminairotech/yeke imajı 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_KEY

Kalı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şkenZorunlu muNe yapar · boş bırakılırsa ne olur
YEKE_SNAPSHOT_KEYZorunlu 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_URLCluster 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_ORIGINSHayı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_PATHHayı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_TOKENHayı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.

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 vN satırını basar; güncellemenin başarısını tahminle değil oradan doğrulayın.
  • Yedekyeke-data volume'ü ile /etc/yeke dizini. İ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.