Critto normalde Critto hesabında yaşar. Her şeyi sana ait bir bilgisayarda tutmayı tercih edersen Critto sunucusunu kendin çalıştırabilirsin: critto'ların, anıları ve sohbetlerin o bilgisayarda kalır; Critto masaüstü ve telefon uygulamaları da bu bilgisayara bağlanır.
Bu kılavuz Linux içindir. Gerekenler:
- açık kalacak 64 bit Linux bilgisayar (Intel/AMD veya ARM; ör. Raspberry Pi 4/5): ev sunucusu, mini bilgisayar veya küçük bir bulut sunucusu,
- yaklaşık 1 GB boş bellek ve birkaç GB disk alanı,
- yönetici hakları (
sudo).
NixOS için NixOS modülünü içeren bir flake vardır. Debian, Ubuntu, Fedora, RHEL tabanlı sistemler ve openSUSE için otomatik güncellemeli paketler bulunur. Diğer sistemlerde kapsayıcı imajını veya statik derlemeyi kullanabilirsin.
NixOS
Critto flake'ini sistem flake'ine ekle:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
critto.url = "https://downloads.critto.app/nix/critto.tar.gz";
critto.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { nixpkgs, critto, ... }: {
nixosConfigurations.myserver = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; # or aarch64-linux
modules = [
./configuration.nix
critto.nixosModules.default
({ pkgs, ... }: {
services.critto = {
enable = true;
# Secrets (Boat key, backup key) stay out of the Nix store:
environmentFile = "/etc/critto/secrets.env";
# AI apps for your subscriptions (you sign in from the app):
aiPackages = [ pkgs.codex pkgs.nodejs_22 ];
# publicUrl = "https://critto.example.com";
};
})
];
};
};
}
Ardından sudo nixos-rebuild switch --flake .#myserver komutunu çalıştır
ve uygulamalarını sudo crittod pair ile eşleştir
(2. adım).
- Güncellemeler:
nix flake update crittokomutunu çalıştır, sonra sistemi yeniden derle. Paket, imzalı ve önceden derlenmiş bir sürümdür (statik ikili dosya, yani glibc sorunu yok). Beta kanalı içinservices.critto.package = critto.packages.${system}.crittod-beta;kullan. - Gizli anahtarlar:
BOAT_API_KEY=…veCRITTO_BACKUP_KEY=…değerlerinienvironmentFiledosyasına koy (root sahibi olmalı, izin modu 600; agenix ve sops-nix de olur). Hizmet başlayınca okunur ve depoya asla kopyalanmaz. - Ayarlar:
listen(varsayılan127.0.0.1:8787),publicUrl,webHost,openFirewall(varsayılan kapalı),dataDir(varsayılan/var/lib/critto) ve diğerCRITTO_*değişkenleri içinsettings.den.backend, Yuva'in nerede çalışacağını seçer (boat,localveyanone; Yuva bölümüne bak). - Yapay zekâ uygulamaları:
aiPackagesiçinde nixpkgs paketlerini tercih et (örneğinpkgs.codex,allowUnfreegerektirenpkgs.claude-code). nixpkgs'te bulunmayanlar içinprograms.nix-ld.enable = true;ayarını yap vesudo crittod setup aikomutunu çalıştır (3. adıma bak). Pi içinaiPackagesiçinde yalnızcapkgs.nodejs_22gerekir; ardındansudo crittod setup ai piçalıştır. - Uzaktan erişim:
services.tailscale.enable = true;ayarını yapıpsudo tailscale serve --bg 8787çalıştır veyahttp://127.0.0.1:8787adresine yönlendirme kuralı olanservices.cloudflaredkullan (5. adıma bak). - Hizmet systemd ile yalıtılır, ancak kullanıcı ad alanlarını açık tutar
(bubblewrap ve yerel Yuva bunlara ihtiyaç duyar); bu yüzden
security.allowUserNamespaces = falseayarını yapma.
Bu kılavuzun geri kalanı NixOS için de geçerlidir; tek fark, güncellemelerin
apt veya dnf yerine nix flake update ile yapılmasıdır.
1. Kurulum
Sunucuda bir terminal aç ve şunu çalıştır:
curl -fsSL https://downloads.critto.app/install-server.sh | sh
Critto paket deposunu ekler, critto-server paketini kurar, sunucuyu
başlatır ve bir eşleştirme kodu gösterir. Hepsi bu: Uygulamalarını
eşleştir adımına geç.
Yeni sürümleri herkesten önce mi istiyorsun? Beta kanalını kullan:
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Önce yükleyiciyi kontrol et (isteğe bağlı)
Betik, Critto sürüm anahtarıyla imzalanmıştır. Çalıştırmadan önce doğrulamak için:
curl -fsSLO https://downloads.critto.app/install-server.sh
curl -fsSLO https://downloads.critto.app/install-server.sh.minisig
minisign -Vm install-server.sh -P RWTRac/2j5M3cvVpvtz0flaOy7sH5PFSc4LwbB7PxG0OMO2h8APoZtLG
sh install-server.sh
(minisign çoğu dağıtımın paketlerinde bulunur.) Düz bir sağlama toplamı da
install-server.sh.sha256 adresindedir. Paketler de imzalıdır; paket
yöneticin her kurulumda ve güncellemede imzalarını denetler.
Depoyu kendin de kurabilirsin
Debian / Ubuntu:
sudo install -d -m 755 /etc/apt/keyrings
sudo curl -fsSLo /etc/apt/keyrings/critto.gpg https://downloads.critto.app/keys/critto-archive-keyring.gpg
cat <<EOF | sudo tee /etc/apt/sources.list.d/critto.sources
Types: deb
URIs: https://downloads.critto.app/apt
Suites: stable
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/critto.gpg
EOF
sudo apt update && sudo apt install critto-server
Fedora / RHEL / Rocky / Alma:
sudo rpm --import https://downloads.critto.app/keys/critto-archive-keyring.asc
cat <<EOF | sudo tee /etc/yum.repos.d/critto.repo
[critto]
name=Critto
baseurl=https://downloads.critto.app/rpm/stable
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.critto.app/keys/critto-archive-keyring.asc
EOF
sudo dnf install critto-server
Anahtarın parmak izi: C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3
(“Critto Packages packages@critto.app”).
Ya da Docker / Podman kullan
docker run -d --name critto --restart unless-stopped \
-p 127.0.0.1:8787:8787 \
-v critto-data:/var/lib/critto -v critto-keys:/etc/critto -v critto-ai:/opt/critto-ai \
ghcr.io/nexferra-ltd/critto-server:latest
docker exec critto crittod pair
Kapsayıcı özel izin gerektirmez. Verilerin critto-data biriminde,
yapay zekâ uygulamaları critto-ai biriminde kalır. Güncellemek için
docker pull ghcr.io/nexferra-ltd/critto-server:latest çalıştır, sonra
kapsayıcıyı aynı birimlerle yeniden oluştur.
Ya da statik derlemeyi kullan
Her sürümde, tüm Linux sistemlerinde çalışan tek dosyalı bir derleme de
bulunur:
https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz
(veya -aarch64). Dosyayı açıp ./crittod serve komutunu çalıştır.
Çalışır ve güncel durumda tutman gerekir; bu yüzden paket kullanmak daha
kolaydır.
2. Uygulamalarını eşleştir
Sunucuya yalnızca eşleştirdiğin cihazlar girebilir. Bir cihazı eşleştirmek için:
Sunucuda bir kod al (10 dakika boyunca geçerlidir ve bir kez kullanılabilir):
sudo crittod pairCritto uygulamasında, giriş ekranında Kendi Critto sunucumu kullan seçeneğini seç. Sunucunun adresini ve kodu gir.
- Sunucunun kendisinde:
http://127.0.0.1:8787 - Diğer cihazlardan erişmek için ulaşabilecekleri bir adres gerekir; Diğer cihazlarından eriş bölümüne bak.
- Sunucunun kendisinde:
Bir cihaz eşleştirildikten sonra ondan başka cihazlar da eşleştirebilirsin: Ayarlar → Cihazlar → Telefon eşleştir
seçeneği bir QR kodu gösterir.
Kod, sunucunun dinlediği adresi içerir. Cihazların ona başka bir yoldan
(tünel, proxy veya alan adı) erişiyorsa, CRITTO_PUBLIC_URL değerini o
adrese ayarla (Ayarlar bölümüne bak).
Aynı bilgisayardaki masaüstü uygulaması mı? Masaüstü uygulaması normalde kendi özel Critto sunucusunu başlatır. Sunucuyu buraya kurduysan Kendi Critto sunucumu kullan seçeneğini seçip
http://127.0.0.1:8787adresini gir; böylece ikisi de aynı critto'ları kullanır.
3. Yapay zekâlarını bağla
Critto'lar seçtiğin bir yapay zekâyla düşünür. Bir yapay zekâ eklemenin iki yolu var.
Yapay zekâ aboneliklerin (ChatGPT, Claude, Grok…)
Critto bunlarla, sunucuya bir kez kuracağın resmî komut satırı uygulamaları üzerinden konuşur:
sudo crittod setup ai
Kullandıklarını seç veya adlarını doğrudan yaz:
sudo crittod setup ai codex claude.
| Uygulama | Şununla kullan |
|---|---|
codex |
ChatGPT planı (Plus, Pro, Business…) |
claude |
Claude planı (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (Node.js 20+ gerekir; mümkünse yükleyici kurar) |
antigravity |
Google Antigravity. Önce gösterilen uyarıyı oku: Google'ın koşulları başka yazılımların Antigravity girişi kullanmaması gerektiğini söylüyor ve Google bu nedenle hesapları askıya aldı. |
Bunlar /opt/critto-ai içine kurulur ve kendiliğinden güncellenmez.
Arada bir güncellemek için sudo crittod setup ai --update komutunu
çalıştır.
Sonra Critto uygulamasında Bağlantılar bölümünü açıp her birine giriş yap. Giriş bilgileri uygulamada değil, sunucunda saklanır.
Özel yapay zekâ: yerel modeller ve API anahtarları
Önce Ayarlar → Gelişmiş mod seçeneğini aç, ardından Ayarlar → Özel yapay zekâ → Bağlantı ekle bölümüne git. “OpenAI uyumlu” API'yi konuşabilen her şey çalışır. Başlangıç noktası altından bir şablon seç veya adresi kendin gir:
| Hizmet | Temel URL | API anahtarı |
|---|---|---|
| Sunucudaki Ollama | http://localhost:11434/v1 |
yok |
| Sunucudaki LM Studio | http://localhost:1234/v1 |
yok |
| Evde başka bilgisayardaki Ollama | http://192.168.1.20:11434/v1 |
yok |
| OpenRouter | https://openrouter.ai/api/v1 |
OpenRouter anahtarın |
Ardından Bağlantıyı sına seçeneğine bas, bir model seç ve kaydet. Artık bu yapay zekâyı istediğin critto için seçebilirsin.
Başka bilgisayardaki Ollama için ağından bağlantı kabul etmesini sağlayan
OLLAMA_HOST=0.0.0.0 ayarıyla başlat. “localhost” her zaman Critto
sunucusunun kendi bilgisayarı demektir.
4. Yuva (isteğe bağlı)
Yuva, critto'larının büyük işler yaptığı bulut bilgisayarıdır (bir şeyler
oluşturur, internette gezer, uygulamaları kullanırlar). Kendi sunucunda
çalıştırırken Yuva'ler kendi Boat hesabında
çalışır. Boat API anahtarını uygulamada Bağlantılar altına yapıştır veya
ayar dosyasına BOAT_API_KEY olarak ekleyip sunucuyu yeniden başlat.
Bilmen iyi olur:
- Yuva'in çalışması için sunucunun internetten erişilebilir olması gerekmez. Sunucu Yuva'e bağlanır; tersi olmaz.
- Yuva'de çalışmak, herkese açık internet adresi olan bir yapay zekâ gerektirir (aboneliklerin veya OpenRouter gibi bir hizmet). Kendi ağında çalışan bir yapay zekâ (Ollama, LM Studio) sohbet edebilir ama buluttaki Yuva ona ulaşamaz.
- Yuva süresini Boat, senin hesabına yazar.
Kendi Yuva'in, kendi bilgisayarında
Boat hesabın yok mu? Sunucu bunun yerine herkesin Yuva'ini bu bilgisayarda
küçük bir sanal makine olarak çalıştırabilir (çalışırken /dev/kvm ve her
Yuva için yaklaşık 4 GB bellek, ayrıca bir kez imaj oluşturmak gerekir).
NixOS'ta:
services.critto.den.backend = "local";
Diğer sistemlerde /etc/critto/critto.env dosyasına
CRITTO_DEN_BACKEND=local ekle. Gereksinimler, boyutlar, Yuva'in
erişebilecekleri ve imaj oluşturma hakkında tam kılavuz:
Kendi Yuva'in, kendi bilgisayarında.
5. Diğer cihazlarından eriş
Varsayılan olarak sunucu yalnızca kendi bilgisayarında dinler
(127.0.0.1:8787). Güvenli varsayılan budur. Telefonunu veya dizüstü
bilgisayarını her yerden kullanmak için seçeneklerden birini belirle.
İlk ikisi yönlendiricinde bağlantı noktası açmadan güvenli bir https://
adresi verir.
Tailscale (kişisel kullanım için en kolayı)
Sunucuya ve cihazlarına Tailscale kur, aynı hesapla giriş yap, sonra sunucuda şunu çalıştır:
sudo tailscale serve --bg 8787
https://myserver.tail1234.ts.net gibi bir adres verir. Bunu
uygulamalarda kullan. Yalnızca kendi cihazların erişebilir.
Cloudflare Tunnel (kendi alan adında herkese açık adres)
Cloudflare'de bir alan adın varsa cloudflared kur, ardından:
cloudflared tunnel login
cloudflared tunnel create critto
cloudflared tunnel route dns critto critto.example.com
cat > ~/.cloudflared/config.yml <<EOF
tunnel: critto
credentials-file: $HOME/.cloudflared/$(cloudflared tunnel list | awk '/critto/{print $1}').json
ingress:
- hostname: critto.example.com
service: http://127.0.0.1:8787
- service: http_status:404
EOF
sudo cloudflared service install
Sunucuna artık https://critto.example.com adresinden erişilir. Her cihaz
için yine eşleştirme kodu gerekir.
Zaten kullandığın bir ters proxy
WebSocket bağlantılarına izin vererek http://127.0.0.1:8787 adresine
yönlendir. HTTPS'i kendi yöneten Caddy ile:
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Yalnızca ev ağında
Tüm cihazların evdeyse sunucunun doğrudan ağında dinlemesine izin
verebilirsin. CRITTO_LISTEN=0.0.0.0:8787 olarak ayarla
(Ayarlar bölümüne bak) ve uygulamalarda
http://<server's IP address>:8787 kullan. Bu düz HTTP bağlantısıdır;
yalnızca güvendiğin bir ağda kullan.
Hangisini seçersen seç, eşleştirme QR kodlarının bu adresi göstermesi için
CRITTO_PUBLIC_URL değerini bu adrese ayarla.
6. Güncellemeler
Sunucu sisteminin geri kalanıyla birlikte güncellenir:
- Debian / Ubuntu:
sudo apt update && sudo apt upgrade - Fedora / RHEL:
sudo dnf upgrade - openSUSE:
sudo zypper update
Güncellemeden sonra hizmet kendiliğinden yeniden başlar. Masaüstü ve telefon uygulamaları ayrı ayrı güncellenir.
7. Yedekler
Her şey /var/lib/critto içinde bulunur: critto'ların, anıların, sohbetlerin,
dosyaların ve yapay zekâ girişlerin. Ayarlar /etc/critto/critto.env dosyasındadır.
Kopyayı kendin al. Tutarlı bir kopya için sunucuyu durdur:
sudo systemctl stop critto
sudo tar czf critto-backup-$(date +%F).tar.gz --exclude=/etc/critto/vault.key /var/lib/critto /etc/critto
sudo systemctl start critto
Sunucu çalışırken veritabanının güncel bir kopyasını
/var/lib/critto/backups/latest.db konumunda da tutar.
Sunucu dışı yedekler (S3, Cloudflare R2, Backblaze B2…). Uygulamada Gelişmiş mod seçeneğini aç, ardından Ayarlar → Yedekler → Hedefi değiştir… bölümüne git. Yedek anahtarı ekleyerek sunucundan çıkmadan önce yedekleri şifrele:
sudo crittod backup keygen
CRITTO_BACKUP_KEY=… satırını /etc/critto/critto.env dosyasına kopyala,
bir kopyasını güvenli ve çevrimdışı bir yerde sakla (bu anahtar olmadan
yedekler geri yüklenemez) ve sunucuyu yeniden başlat:
sudo systemctl restart critto.
Sunucu dışı yedekler sürekli alınır:
- Veritabanındaki değişiklikler her 10 saniyede bir yüklenir.
- Herkesin dosyaları her 10 dakikada bir yüklenir.
- Her gün tam bir kopya yüklenir.
Son 7 günün herhangi bir anına ait durum doğrudan depolama alanından geri yüklenebilir:
sudo systemctl stop critto
sudo -u critto crittod backup list
sudo -u critto crittod backup pitr --to /var/lib/critto/restore --at "2026-10-02 14:30"
sudo -u critto mv /var/lib/critto/restore/critto.db /var/lib/critto/critto.db
sudo systemctl start critto
(--at UTC'dir; en son durum için bu seçeneği kullanma. Geri yüklenen users/
klasörü aynı yerde bulunur.)
İndirilen tek bir yedek dosyasını (günlük anlık görüntü) geri yüklemek için
dosyayı critto kullanıcısının okuyabileceği bir yere (ör. /var/lib/critto)
koy, sonra:
sudo systemctl stop critto
sudo crittod backup restore --from /path/to/downloaded-backup --to /var/lib/critto/restored.db
sudo -u critto mv /var/lib/critto/restored.db /var/lib/critto/critto.db
sudo systemctl start critto
Kasadaki anahtarlar. Kaydedilmiş anahtarlar ve parolalar,
/etc/critto/vault.key içindeki bir ana anahtarla şifrelenir (kurulumda
oluşturulur ve yalnızca critto kullanıcısı okuyabilir; Docker'da
critto-keys biriminde, NixOS'ta services.critto.vaultKeyFile içinde,
varsayılan olarak /var/lib/critto-keys/vault.key konumunda: her zaman
verilerin dışında tutulur).
Bu anahtar hiçbir yedekte bulunmaz. Açtığı hesap başına anahtarların listesi
(/var/lib/critto/vault/keys.db), kurtarma anahtarı verirsen diğer yedeklerin
yanında vault/ altında ayrı bir şifreli yedek olarak 30 gün saklanır:
sudo crittod vault recovery-keygen
CRITTO_VAULT_BACKUP_RECIPIENT=… satırını /etc/critto/critto.env dosyasına
ekle ve sunucuyu yeniden başlat. Yazdırılan kurtarma kimliğini ve
/etc/critto/vault.key dosyasının bir kopyasını sunucuda değil, çevrimdışı
olarak parola yöneticinde sakla. Sunucuyu kaybettikten sonra geri yüklemek
için vault.key dosyasını yerine koy, vault/latest.db.age dosyasını indir,
ardından:
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Ayarlar
Sunucu /etc/critto/critto.env dosyasını okur. Her seçenek ve açıklaması
dosyada listelenir. sudo nano /etc/critto/critto.env ile düzenle, ardından
sudo systemctl restart critto çalıştır. Sık kullanılanlar:
| Ayar | Ne işe yarar |
|---|---|
CRITTO_LISTEN |
Sunucunun dinlediği adres. Varsayılan 127.0.0.1:8787 (yalnızca bu bilgisayar). |
CRITTO_PUBLIC_URL |
Cihazlarının kullandığı adres; ör. https://critto.example.com. |
BOAT_API_KEY |
Yuva için Boat anahtarın. |
CRITTO_BACKUP_KEY |
Sunucu dışı yedekleri şifreler. |
CRITTO_ANTIGRAVITY=0 |
Antigravity'yi gizler. |
CRITTO_PROACTIVE=0 |
Critto'lar kendiliğinden yoklama yapmaz (zamanladıkları işler bekler). Critto Smarts yoksa yoklamalarda critto'nun kendi yapay zekâsı kullanılır. |
CRITTO_JOB_WORKERS |
Aynı anda çalışan arka plan işi sayısı (yoklamalar, zamanlanmış işler). Varsayılan 4. |
Yararlı komutlar:
| Komut | |
|---|---|
sudo crittod pair |
Yeni cihaz için eşleştirme kodu |
sudo crittod setup ai |
Yapay zekâ uygulamalarını kurar veya günceller |
sudo crittod users |
Bu sunucudaki hesaplar |
systemctl status critto |
Çalışıyor mu? |
journalctl -u critto -f |
Günlüğü |
curl http://127.0.0.1:8787/health |
Hızlı sağlık kontrolü |
Yuva masaüstü yazılımına ilk kez ihtiyaç duyana kadar /health,
"desktop": "on-demand" der. Bu normaldir: sunucu yazılımı o zaman indirir.
Kaldırma
- Debian / Ubuntu:
sudo apt purge critto-server - Fedora / RHEL:
sudo dnf remove critto-server - Docker:
docker rm -f critto(verileri de silmek içindocker volume rm critto-data critto-keys critto-aiekle)
Bu işlem sunucuyu durdurur, paketi ve geride başka Critto paketi kalmamışsa
depoyu kaldırır. Geri dönme ihtimaline karşı /var/lib/critto içindeki Verilerin saklanır. Her şeyi silmek için:
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Paketlerin en başta depo eklemesini önlemek için kurulumdan önce
echo CRITTO_REPO=no | sudo tee /etc/default/critto çalıştır.
Sorun giderme
- Uygulama sunucuya ulaşamadığını söylüyor. Sunucuda
systemctl status crittokomutunu ve uygulamadaki adresin cihazın erişebileceği bir adres olduğunu kontrol et (telefonda127.0.0.1, telefonun kendisi demektir). - “Eşleştirme kodu çalışmadı.” Kodlar 10 dakika geçerlidir ve bir kez
kullanılabilir.
sudo crittod pairile yenisini al.sudoile çalıştır: yoksa başka, kişisel bir sunucu için kod alırsın. - Bağlantılar'da yapay zekâ uygulaması görünmüyor.
sudo crittod setup ai <name>komutunu yeniden çalıştır; işlem bitince sunucu yeniden başlar. - Başka bir sorun.
journalctl -u critto -n 100genelde sorunun ne olduğunu söyler.