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 critto komutunu ç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çin services.critto.package = critto.packages.${system}.crittod-beta; kullan.
  • Gizli anahtarlar: BOAT_API_KEY=… ve CRITTO_BACKUP_KEY=… değerlerini environmentFile dosyası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ılan 127.0.0.1:8787), publicUrl, webHost, openFirewall (varsayılan kapalı), dataDir (varsayılan /var/lib/critto) ve diğer CRITTO_* değişkenleri için settings. den.backend, Yuva'in nerede çalışacağını seçer (boat, local veya none; Yuva bölümüne bak).
  • Yapay zekâ uygulamaları: aiPackages içinde nixpkgs paketlerini tercih et (örneğin pkgs.codex, allowUnfree gerektiren pkgs.claude-code). nixpkgs'te bulunmayanlar için programs.nix-ld.enable = true; ayarını yap ve sudo crittod setup ai komutunu çalıştır (3. adıma bak). Pi için aiPackages içinde yalnızca pkgs.nodejs_22 gerekir; ardından sudo crittod setup ai pi çalıştır.
  • Uzaktan erişim: services.tailscale.enable = true; ayarını yapıp sudo tailscale serve --bg 8787 çalıştır veya http://127.0.0.1:8787 adresine yönlendirme kuralı olan services.cloudflared kullan (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 = false ayarı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:

  1. Sunucuda bir kod al (10 dakika boyunca geçerlidir ve bir kez kullanılabilir):

    sudo crittod pair
    
  2. Critto 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.

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:8787 adresini 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çin docker volume rm critto-data critto-keys critto-ai ekle)

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 critto komutunu ve uygulamadaki adresin cihazın erişebileceği bir adres olduğunu kontrol et (telefonda 127.0.0.1, telefonun kendisi demektir).
  • “Eşleştirme kodu çalışmadı.” Kodlar 10 dakika geçerlidir ve bir kez kullanılabilir. sudo crittod pair ile yenisini al. sudo ile ç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 100 genelde sorunun ne olduğunu söyler.