yeke.io · dokümanlar

Kurulum

YEKE tek container olarak çalışır. Community tek komutla kurulur; ilk açılışta adresi ve sertifikayı tarayıcıdan onaylarsınız. Geri kalan ayarlar arayüzde.

Gerekenler

Kubernetes cluster’ını kurulumdan sonra bağlarsınız.

  • Docker olan bir makine.
  • Docker Hub erişimi — nairotech/yeke imajı herkese açık ve multi-arch (amd64 + arm64). Ağınız dışarı kapalıysa Air-gap kurulum.
  • Cluster'ların ulaşabileceği bir adres — bu makinenin DNS adı ya da IP'si. Agent'lar YEKE'ye bu adresten bağlanır.
  • Enterprise için imzalı lisans bloğu (kurulumda yapıştırılır; dosya olarak elinizde olması yeter) ve openssl (aşağıda).

Arayüz, API ve agent tüneli aynı container'dan, aynı porttan gelir; önüne ayrı bir reverse proxy koymanız gerekmez.

Tek komut

Community (SQLite) kurulumu bu komuttan ibarettir.

docker run -d --name yeke --restart unless-stopped -p 443:8443 \
  -v yeke-data:/var/lib/yeke \
  nairotech/yeke:0.84.3

Şifreleme anahtarını kaybetmeyin: core ilk açılışta volume'a snapshot.key yazar; o olmadan şifreli kayıtlar açılmaz. Kendiniz saklamak için ilk açılıştan önce -e YEKE_SNAPSHOT_KEY verin.

Kendi dizininizi bağlamak isterseniz

Dizin core'un çalıştığı kullanıcıya (65532) ait olmalı; root'a ait bir dizinde core açılmaz ve log'a düzeltme komutunu yazar:

sudo install -d -m 700 -o 65532 -g 65532 /opt/yeke/data
docker run -d --name yeke --restart unless-stopped -p 443:8443 \
  -v /opt/yeke/data:/var/lib/yeke \
  nairotech/yeke:0.84.3

Bu yolda sayfanın geri kalanındaki komutlarda yalnız -v satırı değişir.

Yedek: yeke-data volume'u

Kurulumun tuttuğu her şey bu volume'da, iki dosyada: core.db (cluster envanteri, kullanıcılar, operasyon geçmişi, denetim izi, sistem ayarları) ve snapshot.key — core'un ilk açılışta ürettiği 32 baytlık şifreleme anahtarı. Doğrudan mod kubeconfig'leri, AI sağlayıcı anahtarlarınız, hook sırlarınız, geri alma snapshot'ları, yüklediğiniz sertifikanın ve YEKE'nin kendi CA'sının özel anahtarı veritabanında o anahtarla şifreli duruyor.

İkisi birlikte yedeklenir. Anahtarsız bir veritabanı yedeği açılır ama şifreli hiçbir kaydı okuyamaz — belirtisi de sessizdir: core çökmez, /healthz yine 200 döner, yalnızca cluster'lara bağlanamaz. Ölçüldü (10.08.2026). Komutlar: Güncelleme ve yedek.

Anahtarı YEKE_SNAPSHOT_KEY ile volume'un dışında tutacaksanız bunu ilk açılıştan önce yapın (dağıtımda kalanlar); çalışan bir kurulumu sonradan bu yola geçirmeyin: o ana kadar şifrelenmiş kayıtlar başka bir anahtarla açılmaz.

İlk açılış

  1. Kurulum token'ını okuyun. Core ilk açılışta log'a bir kurulum token'ı basar:
    docker logs yeke | grep -i SETUP:
    Token tek kullanımlıktır ve 60 dakika geçerlidir; süresi dolarsa docker restart yeke yenisini üretir.
  2. https://<sunucu> adresini açın. Tarayıcının bir kerelik sertifika uyarısını geçin: YEKE ilk açılışta geçici bir sertifika kullanır.
  3. İlk yöneticiyi oluşturun. Token'ı yapıştırın, kullanıcı adı ve parola girin; bu hesap kurulumun sahibidir (owner). PostgreSQL kurulumunda form lisans bloğunu da ister.
  4. "Adres ve sertifika" adımı. Adres cluster'ların bağlanacağı adres olmalı — localhost ile girdiyseniz düzeltin. Sertifika varsayılan olarak YEKE'nin kendi CA'sıyla kesilir; kurumunuzun sertifikası için "Kendi sertifikam"ı seçin.
  5. CA'yı indirip güvenin. Son ekrandaki "CA sertifikasını indir" ile alıp işletim sisteminize ya da tarayıcınıza güvenilir kök olarak ekleyin. CLI için: yeke login https://<sunucu> --ca-file yeke-ca.crt.

Enterprise (PostgreSQL)

PostgreSQL kipi Enterprise lisansındaki ha-postgres özelliğini ister. YEKE kurumunuzun mevcut PostgreSQL'ine YEKE_DB_URL ile bağlanır.

Önce snapshot anahtarını üretin ve bir parola kasasına yazın. PostgreSQL kipinde core anahtarı kendisi üretmez; anahtar kaybolursa şifreli kayıtlar geri gelmez.

openssl rand -hex 32
docker run -d --name yeke --restart unless-stopped -p 443:8443 \
  -e YEKE_DB_URL='postgres://<kullanıcı>:<parola>@<sunucu>:5432/yeke' \
  -e YEKE_SNAPSHOT_KEY='<64 hex>' \
  nairotech/yeke:0.84.3
  • Lisans kurulum ekranında verilir. Boş veritabanında core lisanssız açılır ve şemayı kurar; kurulum formu ilk yöneticiyle birlikte lisans bloğunu ister. Sonra lisans veritabanında durur, yenileme Yönetim → Sistem → Lisans ekranındandır.
  • Lisansı dosyayla yönetmek isteğe bağlıdır (GitOps, HA). YEKE_LICENSE_PATH ve dosya mount'u verilirse lisans dosyadan okunur, kurulum ekranı lisans istemez ve Lisans ekranı yüklemeyi reddeder. Dosya 65532'ye okunur olmalıdır; root'a ait, 600 izinli dosyayı core okuyamaz.
  • Veritabanı yoksa YEKE onu oluşturur. YEKE_DB_URL'deki veritabanı yoksa ve bağlanan rolün veritabanı oluşturma yetkisi varsa YEKE veritabanını oluşturup kuruluma devam eder; URL veritabanı adı vermiyorsa ad yeke olur. Veritabanı varsa olduğu gibi kullanılır. Yetki yoksa açılış, veritabanı adını, rolü ve yapılacak işi söyleyerek durur.
  • Parolada @ : / ? # gibi karakterler varsa YEKE_DB_URL'de yüzde-kodlanmış hâli yazılır.
  • Anahtar -e ile verildiğinde docker inspect'te görünür. İstemiyorsanız salt-okunur bağlanmış bir dosyadan YEKE_SNAPSHOT_KEY_FILE ile verin.
  • Yedek PostgreSQL'in yedeği ve snapshot anahtarıdır; biri olmadan öteki işe yaramaz. YEKE PostgreSQL'i yedeklemez.

İlk açılış Community ile aynı: yukarıdaki beş adım. Bağlantı biçimi, havuzlama ve lisans kapısı PostgreSQL; birden çok replika Yüksek erişilebilirlik; var olan bir SQLite kurulumunu taşımak Veritabanı taşıma rehberinde.

Sertifika

YEKE HTTPS'i kendisi sunar. Varsayılan sertifikayı kendi CA'sıyla keser ve yeniler; ayrı bir reverse proxy gerekmez.

  • Otomatik (varsayılan) — sunucu sertifikasını YEKE kendiliğinden yeniler; CA değişmediği sürece tarayıcıda ya da agent'larda bir şey yapmanız gerekmez.
  • Kendi sertifikanız — Sistem ayarları → Adres ve sertifika → "Kendi sertifikamı kullan": sertifika zinciri, şifresiz özel anahtar ve kurum içi bir CA ise kök CA. Kayıt anında, açık bağlantılar düşmeden uygulanır; özel anahtar bir daha gösterilmez. Yenilerken yenisini aynı yerden yükleyin. Kurum CA'sıyla imzalı bir sertifikaya agent'ın, Shell'in ve CLI'nin güvenmesi için Kurum içi CA.
  • Önünüzde TLS'i sonlandıran bir proxy ya da yük dengeleyici varsa — Sistem ayarları → Adres ve sertifika → Daha fazla → "Düz HTTP'yi ağa aç". YEKE yeniden başladıktan sonra 8080'de düz HTTP sunar, 8443'ü açmaz ve kendi CA'sını kullanmaz; yayını -p 8080:8080'e çevirin. Proxy aynı makinedeyse dağıtımdan -e YEKE_HOST=0.0.0.0 -p 127.0.0.1:8080:8080 aynı sonucu verir.

Sertifikayı dosyadan vermek isterseniz YEKE_TLS_CERT_FILE ve YEKE_TLS_KEY_FILE kullanın: sertifika bölümü arayüzde kilitli görünür, dosyaları değiştirdiğinizde YEKE en geç 60 saniye içinde yenisine geçer. Tek tek dosyaları değil dizini salt-okunur bağlayın — mv ile değiştirilen dosyada tek dosya bağlaması eskisinde kalır — ve dosyalar 65532'ye okunur olsun, yoksa core açılmaz.

HTTP/2 yok. 80→443 yönlendirmesi yok; adresi https:// ile açın. Kamu CA'larından otomatik sertifika alma (ACME/Let's Encrypt) yok.

Sistem ayarları

Kurulumdan sonraki ayarlar arayüzde: Yönetim → Sistem → Sistem ayarları. Kaydedilen değer container yeniden yaratılmadan uygulanır.

Bölümİçinde
Adres ve sertifikaDış adres, sertifika, istemcilerin güveneceği CA, düz HTTP'yi ağa açma
Ağ ve dış erişimHook, SIEM aktarımı, Git ve AI sağlayıcı host'ları; izin verilen origin'ler, güvenilen proxy'ler
Oturumlar ve erişimOturum süreleri, API token ömrü ve istek sınırı, MCP sunucusu, Secret değerleri, Shell oturumu onayı
Veri saklamaOperasyon kayıtları, Shell kayıtları, sohbet geçmişi, AI egress kaydı, Secret sürümleri
AI asistanıAI asistanını açma/kapama, günlük token bütçesi
  • Yalnız kurulum sahibi değiştirir. Diğer yöneticiler değerleri görür ama değiştiremez; yönetici olmayan kullanıcılar ekranı görmez.
  • Hook ve SIEM aktarımı host'ları boşken iç ağ onlara kapalıdır. İç ağdaki bir ITSM'e ya da SIEM'e bağlanacaksanız önce bu alanları doldurun.
  • Dış adresi değiştirmek agent'ları etkiler. Kaydetmeden önce ekran agent'la bağlı cluster'ları listeler; her birinin manifesti yeni adresle yeniden uygulanmalı ve YEKE'nin kendi CA'sı da yenilenir.
  • "Düz HTTP'yi ağa aç" yeniden başlatma ister; diğer alanlar kayıt anında geçerli olur.

Ortam değişkeniyle verilen ayar kilitlenir

Bu ayarlar hâlâ ortam değişkeniyle de verilebilir (ör. -e YEKE_PUBLIC_URL=…). Verildiğinde alan arayüzde "Dağıtımdan yönetiliyor" diye kilitli görünür ve kurulum sahibi de değiştiremez. Satırı kaldırıp container'ı yeniden yarattığınızda alan kaydedilmiş değere ya da varsayılana döner; ortam değişkeninin değeri veritabanına kopyalanmaz.

Dağıtımda kalanlar

Arayüzde karşılığı olmayan, veritabanından önce ya da ondan bağımsız gereken birkaç değişken var. Hiçbiri Community için zorunlu değil.

DeğişkenNe zaman
YEKE_DB_URLPostgreSQL kipi (Enterprise).
YEKE_SNAPSHOT_KEY
YEKE_SNAPSHOT_KEY_FILE
Şifreleme anahtarı. PostgreSQL'de zorunlu; SQLite'ta verilmezse core üretip volume'a yazar.
YEKE_LICENSE_PATHİsteğe bağlı; GitOps ve HA için lisans dosyasının yolu. Verilmezse lisans kurulum ekranında, sonra Yönetim → Sistem → Lisans ekranında verilir; hiç lisans yoksa kurulum Community çalışır.
YEKE_TLS_CERT_FILE
YEKE_TLS_KEY_FILE
Sertifika dosyadan (Sertifika); arayüzdeki sertifika bölümünü kilitler.
YEKE_PUBLIC_CA_FILEİstemcilere dağıtılan kök CA, dosyadan (Kurum içi CA); arayüzdeki CA alanını kilitler.
YEKE_HOSTÖnünde TLS'i sonlandıran bir katman varken YEKE'yi yalnız düz HTTP dinleyen kipe alır.
YEKE_AGENT_IMAGE
YEKE_TOOLBOX_IMAGE
Agent ve toolbox imajları iç registry'den (Air-gap kurulum).
YEKE_POLICY_MODE
YEKE_POLICY_DIR
YEKE_POLICY_PACKAGE_PUBLIC_KEYS
Politika kaynağı (Politikalar, Yönetişim).
YEKE_BOOTSTRAP_TOKENİlk yöneticinin kurulum token'ını siz belirlersiniz; kurulumu betikle yapıyorsanız log okumaktan kurtarır.

Sonra ne olacak

YEKE ayakta ama henüz hiçbir cluster'ı görmüyor.

Güncelleme ve yedek

Güncelleme container'ı aynı volume'la yeniden yaratır; veri, anahtar ve sistem ayarları yerinde kalır.

docker pull nairotech/yeke:<yeni-sürüm>
docker rm -f yeke
# ardından aynı run komutu: yalnız etiket değişir
  • Her güncelleme bir kesintidir. Eski core kapanmadan yenisi açılamaz; üretimde ölçülen pencere ~60 saniye. Arayüz core'un imajının içinde olduğu için tek satır metin değiştiren bir sürüm de bu kesintiye tabidir.
  • 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.
  • TLS'siz kurulmuş eski bir YEKE aynı volume'la yeni imaja geçtiğinde eskisi gibi 8080'de düz HTTP sunar: 8443 açılmaz, yeni kuruluma özgü hiçbir değişiklik ona uygulanmaz.
  • Yedek — Community'de volume'un içi; anahtarı dışarıda tutuyorsanız o da. Yedeği core durmuşken alın: SQLite'ın -wal dosyası çalışırken de yazılır ve yarısı alınmış bir yedek sessizce eksik olur. Enterprise'da PostgreSQL'in yedeği ve snapshot anahtarı.
docker stop yeke
docker run --rm -v yeke-data:/v -v "$PWD":/yedek alpine:3.20 tar czf /yedek/yeke-data.tgz -C /v .
docker start yeke

Arşiv dosya sahipliğini (65532) taşır; geri yüklemek için aynı komutun tersi yeter ve core geri yüklenen volume'la doğrudan açılır. Hedef boş bir volume olmalı; yeni makinede Docker onu bu komutla yaratır. Kendi dizininizi bağladıysanız ikisi de gereksiz: dizini kopyalamak yeter.

docker run --rm -v yeke-data:/v -v "$PWD":/yedek alpine:3.20 tar xzf /yedek/yeke-data.tgz -C /v

Ayarlarda kilitlendiyseniz

Sistem ayarları'nda yanlış bir değer kaydedip arayüze ulaşamaz hâle geldiyseniz imajdaki kurtarma aracı ayarı veritabanında düzeltir. Core'u durdurmanız gerekmez.

docker exec yeke node tools/yeke-reset-settings.mjs --list
docker exec yeke node tools/yeke-reset-settings.mjs <anahtar>
docker exec yeke node tools/yeke-reset-settings.mjs <anahtar>=<json-değer>
docker exec yeke node tools/yeke-reset-settings.mjs --all

Anahtar adları --list çıktısında. Çalışan core değişikliği kendisi alır; yalnız "Düz HTTP'yi ağa aç" yeniden başlatma ister. En sık durum bu alanı kapatıp yalnız 8080'i yayınlamaktır — geri dönüş:

docker exec yeke node tools/yeke-reset-settings.mjs address.plainHttpExternal=true
docker restart yeke

Konteyner çalışmıyorsa araç aynı volume'le tek seferlik koşar (PostgreSQL kurulumunda --network yeke ve -e YEKE_DB_URL=… de verilir):

docker run --rm -v yeke-data:/var/lib/yeke --entrypoint node \
  nairotech/yeke:0.84.3 tools/yeke-reset-settings.mjs --list

--all YEKE'nin kendi CA'sına dokunmaz. Dağıtımdan kilitli bir ayarı araçla değiştirseniz de ortam değişkeni geçerli kalır. İşlem denetim kaydına düşer.

Parolayı unuttuysanız

Tek yönetici parolasını unuttuğunda ya da hesabı kilitlendiğinde arayüzden kurtarma yolu yok; container'a exec erişimi olan biri komut satırından yeni bir parola kurulum token'ı üretir.

Container'a erişen operatör kendi kurulumuna uyan komutu aşağıdaki ikisinden seçip çalıştırır. Core'u durdurmanız gerekmez.

docker exec yeke node tools/yeke-reset-password.mjs yonetici
kubectl -n yeke-system exec deploy/yeke-core -- node tools/yeke-reset-password.mjs yonetici

Araç parolayı kendisi seçmez: terminale yalnız 60 dakika geçerli, tek kullanımlık bir parola kurulum token'ı basar. Kullanıcı bu token'ı web arayüzünde /set-password sayfasına yapıştırıp kendi parolasını seçer. Yeni bir token üretmek öncekini geçersiz kılar.

Kimlik doğrulayıcı uygulama da kaybolduysa --reset-mfa bayrağını ekleyin; MFA kaydı ve kurtarma kodları birlikte silinir; kullanıcı girişten sonra MFA'yı yeniden kurabilir.

Yalnız yerel ve etkin hesaplar içindir. LDAP/OIDC ile gelen bir hesabın parolası dizinde sıfırlanır, bu araçla değil; devre dışı bırakılmış bir hesap önce bir yönetici tarafından açılmalı. İşlem denetim kaydına düşer.

Bu aracı çalıştırabilen kişi zaten container'ın veri dizinine ve veritabanına erişebiliyor demektir — yeni bir yetki açılmıyor. Parola terminale hiçbir zaman düşmez; terminalde yalnız token görünür. API'deki kural değişmedi: kurulum sahibinin parolası arayüzden başka bir kullanıcı tarafından sıfırlanamaz.

Kubernetes

Core'u bir cluster'ın içinde koşturmak da destekleniyor; birden çok replika (yüksek erişilebilirlik) yalnız bu yolda.

Manifest seti hazır: namespace, ReadWriteOnce PVC, tek Deployment (strategy: Recreate), Service ve standart Ingress. TLS Ingress'te biter; YEKE düz HTTP dinler ve kendi CA'sını üretmez. Dış adres manifestte değil: ilk açılıştaki "Adres ve sertifika" adımında Ingress'in adresiyle dolar. Anahtarı bir Secret'a koymanızı öneriyoruz — PVC'nin anlık görüntüsünü alan yedekleme, anahtar da içindeyse şifrelemeyi anlamsız bırakır. Set kuruma göre uyarlanacak 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.

Bir adım beklediğiniz gibi gitmezse doğrudan yazın.