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/yekeimajı 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ış
- Kurulum token'ını okuyun. Core ilk açılışta log'a bir kurulum token'ı basar:
Token tek kullanımlıktır ve 60 dakika geçerlidir; süresi dolarsa
docker logs yeke | grep -i SETUP:
docker restart yekeyenisini üretir. 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.- İ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.
- "Adres ve sertifika" adımı. Adres cluster'ların bağlanacağı adres olmalı —
localhostile girdiyseniz düzeltin. Sertifika varsayılan olarak YEKE'nin kendi CA'sıyla kesilir; kurumunuzun sertifikası için "Kendi sertifikam"ı seçin. - 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_PATHve dosya mount'u verilirse lisans dosyadan okunur, kurulum ekranı lisans istemez ve Lisans ekranı yüklemeyi reddeder. Dosya65532'ye okunur olmalıdır;root'a ait,600izinli 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 adyekeolur. 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 varsaYEKE_DB_URL'de yüzde-kodlanmış hâli yazılır. - Anahtar
-eile verildiğindedocker inspect'te görünür. İstemiyorsanız salt-okunur bağlanmış bir dosyadanYEKE_SNAPSHOT_KEY_FILEile 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:8080aynı 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 sertifika | Dış adres, sertifika, istemcilerin güveneceği CA, düz HTTP'yi ağa açma |
| Ağ ve dış erişim | Hook, SIEM aktarımı, Git ve AI sağlayıcı host'ları; izin verilen origin'ler, güvenilen proxy'ler |
| Oturumlar ve erişim | Oturum süreleri, API token ömrü ve istek sınırı, MCP sunucusu, Secret değerleri, Shell oturumu onayı |
| Veri saklama | Operasyon 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şken | Ne zaman |
|---|---|
YEKE_DB_URL | PostgreSQL kipi (Enterprise). |
YEKE_SNAPSHOT_KEYYEKE_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_FILEYEKE_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_IMAGEYEKE_TOOLBOX_IMAGE | Agent ve toolbox imajları iç registry'den (Air-gap kurulum). |
YEKE_POLICY_MODEYEKE_POLICY_DIRYEKE_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.
- 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'ı 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 vNsatı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:8443açı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
-waldosyası ç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.