Biasanya Critto ada di akun Critto-mu. Jika kamu lebih suka menyimpan semuanya di komputer milikmu, kamu bisa menjalankan server Critto sendiri. Critto-mu, ingatannya, dan obrolanmu akan tetap berada di komputer itu, sedangkan aplikasi desktop dan ponsel Critto terhubung ke sana.

Panduan ini untuk Linux. Yang kamu perlukan:

  • komputer Linux 64-bit (Intel/AMD atau ARM, misalnya Raspberry Pi 4/5) yang selalu menyala: server rumahan, PC mini, atau server cloud kecil,
  • sekitar 1 GB memori kosong dan beberapa GB ruang disk,
  • hak administrator (sudo).

NixOS menyediakan flake dengan modul NixOS. Debian, Ubuntu, Fedora, sistem bergaya RHEL, dan openSUSE mendapat paket lengkap dengan pembaruan otomatis. Sistem lainnya dapat memakai image container atau build statis.


NixOS

Tambahkan flake Critto ke flake sistemmu:

{
  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";
          };
        })
      ];
    };
  };
}

Lalu jalankan sudo nixos-rebuild switch --flake .#myserver dan pasangkan aplikasimu dengan sudo crittod pair (langkah 2).

  • Pembaruan: jalankan nix flake update critto, lalu bangun ulang. Paket ini adalah rilis bertanda tangan yang sudah dibangun (biner statis, jadi tidak ada masalah glibc). Gunakan services.critto.package = critto.packages.${system}.crittod-beta; untuk kanal beta.
  • Rahasia: masukkan BOAT_API_KEY=… dan CRITTO_BACKUP_KEY=… ke environmentFile (dimiliki root, mode 600; agenix dan sops-nix juga bisa digunakan). Berkas dibaca saat layanan dimulai dan tidak pernah disalin ke store.
  • Pengaturan: listen (bawaan 127.0.0.1:8787), publicUrl, webHost, openFirewall (bawaan mati), dataDir (bawaan /var/lib/critto), dan settings untuk variabel CRITTO_* lainnya. den.backend menentukan tempat Sarang berjalan (boat, local, atau none; lihat Sarang).
  • Aplikasi AI: utamakan paket nixpkgs di aiPackages (misalnya pkgs.codex, pkgs.claude-code, yang memerlukan allowUnfree). Untuk aplikasi yang tidak tersedia di nixpkgs, atur programs.nix-ld.enable = true; lalu jalankan sudo crittod setup ai (langkah 3). Pi hanya memerlukan pkgs.nodejs_22 di aiPackages, lalu sudo crittod setup ai pi.
  • Akses jarak jauh: aktifkan services.tailscale.enable = true; lalu jalankan sudo tailscale serve --bg 8787, atau gunakan services.cloudflared dengan aturan ingress ke http://127.0.0.1:8787 (lihat langkah 5).
  • Layanan ini diisolasi dengan systemd, tetapi namespace pengguna tetap tersedia (bubblewrap dan Sarang lokal memerlukannya), jadi jangan atur security.allowUserNamespaces = false.

Bagian panduan lainnya juga berlaku untuk NixOS, kecuali pembaruannya berasal dari nix flake update, bukan apt atau dnf.


1. Pasang

Buka terminal di server lalu jalankan:

curl -fsSL https://downloads.critto.app/install-server.sh | sh

Perintah ini menambahkan repositori paket Critto, memasang paket critto-server, menjalankan server, lalu menampilkan kode pemasangan. Selesai. Lanjut ke Pasangkan aplikasimu.

Ingin mendapat versi baru lebih awal? Gunakan kanal beta: curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh

Periksa installer lebih dahulu (opsional)

Skrip ini ditandatangani dengan kunci rilis Critto. Untuk memverifikasinya sebelum dijalankan:

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 tersedia dalam paket kebanyakan distribusi.) Tersedia juga checksum biasa di install-server.sh.sha256. Paketnya juga ditandatangani, dan pengelola paketmu memeriksanya setiap kali memasang atau memperbarui.

Atau siapkan repositorinya sendiri

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

Sidik jari kuncinya C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 (“Critto Packages packages@critto.app”).

Atau gunakan Docker / Podman

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

Container tidak memerlukan izin khusus. Datamu berada di volume critto-data, kunci utama brankas berada di critto-keys (terpisah dari data, jadi salinan salah satunya tidak dapat membuka yang lain; lihat Cadangan), dan aplikasi AI berada di critto-ai. Secret Docker yang dipasang di /etc/critto/vault.key juga bisa digunakan. Perbarui dengan docker pull ghcr.io/nexferra-ltd/critto-server:latest, lalu buat ulang container dengan volume yang sama.

Atau gunakan build statis

Setiap rilis juga memiliki build satu berkas yang berjalan di Linux mana pun: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (atau -aarch64). Ekstrak lalu jalankan ./crittod serve. Kamu harus menjaga agar server tetap berjalan dan memperbaruinya sendiri, jadi paket lebih mudah digunakan.


2. Pasangkan aplikasimu

Server hanya menerima perangkat yang sudah kamu pasangkan. Untuk memasangkan perangkat:

  1. Dapatkan kode dari server (berlaku selama 10 menit dan hanya bisa dipakai sekali):

    sudo crittod pair
    
  2. Di aplikasi Critto, pada layar masuk, pilih Gunakan server Critto milikku sendiri. Masukkan alamat server dan kodenya.

    • Di server itu sendiri: http://127.0.0.1:8787
    • Untuk perangkat lain, kamu memerlukan alamat yang dapat dijangkaunya; lihat Akses dari perangkat lain.

Setelah satu perangkat dipasangkan, kamu bisa memasangkan perangkat lain darinya: Pengaturan → Perangkat → Pasangkan ponsel akan menampilkan kode QR. Kode itu memuat alamat yang digunakan server untuk mendengarkan; jika perangkatmu mengaksesnya dengan cara lain (tunnel, proksi, domain), atur CRITTO_PUBLIC_URL ke alamat tersebut (lihat Pengaturan).

Aplikasi desktop di komputer yang sama? Aplikasi desktop biasanya memulai server Critto privatnya sendiri. Jika kamu memasang server di sini, pilih Gunakan server Critto milikku sendiri dengan http://127.0.0.1:8787 agar keduanya memakai critto yang sama.


3. Hubungkan AI-mu

Critto berpikir menggunakan AI pilihanmu. Ada dua cara untuk menghubungkannya.

Langganan AI-mu (ChatGPT, Claude, Grok…)

Critto menggunakan aplikasi baris perintah resmi milik penyedia ini. Pasang aplikasinya sekali di server:

sudo crittod setup ai

Pilih yang kamu gunakan, atau sebutkan namanya langsung: sudo crittod setup ai codex claude.

Aplikasi Gunakan dengan
codex paket ChatGPT (Plus, Pro, Business…)
claude paket Claude (Pro, Max…)
grok SuperGrok / X Premium
muse Meta AI (memerlukan Node.js 20+; installer akan memasangnya jika bisa)
antigravity Google Antigravity. Baca peringatan yang ditampilkan terlebih dahulu: ketentuan Google menyatakan perangkat lunak lain tidak boleh menggunakan proses masuk Antigravity, dan Google pernah menangguhkan akun karenanya.

Aplikasi terpasang di /opt/critto-ai dan tidak memperbarui dirinya sendiri. Jalankan sudo crittod setup ai --update sesekali untuk memperbaruinya.

Lalu, di aplikasi Critto, buka Koneksi dan masuk ke tiap layanan. Data proses masuk disimpan di servermu, bukan di aplikasi.

AI kustom: model lokal dan kunci API

Aktifkan Pengaturan → Mode lanjutan, lalu buka Pengaturan → AI kustom → Tambahkan koneksi. Semua layanan yang mendukung API “kompatibel dengan OpenAI” bisa digunakan. Pilih preset di Mulai dari, atau isi alamatnya sendiri:

Layanan URL dasar Kunci API
Ollama di server http://localhost:11434/v1 tidak ada
LM Studio di server http://localhost:1234/v1 tidak ada
Ollama di komputer lain di rumah http://192.168.1.20:11434/v1 tidak ada
OpenRouter https://openrouter.ai/api/v1 kunci OpenRouter-mu

Pilih Uji koneksi, pilih model, lalu simpan. Setelah itu kamu bisa memilih AI tersebut untuk critto mana pun.

Untuk Ollama di komputer lain, jalankan dengan OLLAMA_HOST=0.0.0.0 agar menerima koneksi dari jaringanmu. “localhost” selalu berarti komputer server Critto sendiri.


4. Sarang (opsional)

Sarang adalah komputer cloud milik critto untuk mengerjakan tugas yang lebih besar (membangun sesuatu, menjelajah, memakai aplikasi). Server hosting sendiri menjalankan Den di akun Boat-mu. Tempel kunci API Boat di aplikasi, di bagian Koneksi, atau masukkan ke berkas pengaturan sebagai BOAT_API_KEY, lalu mulai ulang.

Yang perlu diketahui:

  • Servermu tidak perlu dapat diakses dari internet agar Sarang berfungsi. Server terhubung ke Sarang, bukan sebaliknya.
  • Pekerjaan Sarang memerlukan AI dengan alamat internet publik (langgananmu atau layanan seperti OpenRouter). AI yang berjalan di jaringanmu sendiri (Ollama, LM Studio) bisa mengobrol, tetapi Sarang di cloud tidak dapat menjangkaunya.
  • Waktu Sarang ditagihkan oleh Boat ke akunmu.

Sarang milikmu sendiri, di komputermu sendiri

Tidak punya akun Boat? Server dapat menjalankan Sarang setiap orang sebagai mesin virtual kecil di komputer ini (memerlukan /dev/kvm, sekitar 4 GB memori untuk setiap Sarang saat berjalan, dan pembuatan image satu kali). Di NixOS:

services.critto.den.backend = "local";

Di sistem lain, atur CRITTO_DEN_BACKEND=local di /etc/critto/critto.env. Panduan lengkap (persyaratan, ukuran, hal yang dapat dijangkau Sarang, pembuatan image) ada di Sarang milikmu sendiri, di komputermu.


5. Akses dari perangkat lain

Secara bawaan, server hanya mendengarkan di komputernya sendiri (127.0.0.1:8787). Ini pengaturan bawaan yang aman. Untuk menggunakan ponsel atau laptopmu dari mana saja, pilih salah satu cara berikut. Dua cara pertama memberimu alamat https:// yang aman tanpa membuka port di router.

Tailscale (paling mudah untuk penggunaan pribadi)

Pasang Tailscale di server dan perangkatmu, masuk ke akun yang sama, lalu jalankan di server:

sudo tailscale serve --bg 8787

Perintah ini menampilkan alamat seperti https://myserver.tail1234.ts.net. Gunakan alamat itu di aplikasi. Hanya perangkatmu sendiri yang dapat mengaksesnya.

Cloudflare Tunnel (alamat publik di domainmu sendiri)

Jika domainmu dikelola di Cloudflare, pasang cloudflared, lalu:

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

Servermu kini tersedia di https://critto.example.com. Setiap perangkat tetap memerlukan kode pemasangan.

Proksi terbalik yang sudah kamu jalankan

Arahkan ke http://127.0.0.1:8787 dan izinkan WebSockets. Dengan Caddy, yang menangani HTTPS sendiri:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

Hanya di jaringan rumah

Jika semua perangkat berada di rumah, kamu bisa membuat server mendengarkan langsung di jaringanmu. Atur CRITTO_LISTEN=0.0.0.0:8787 (lihat Pengaturan) dan gunakan http://<server's IP address>:8787 di aplikasi. Ini menggunakan http biasa, jadi lakukan hanya di jaringan yang kamu percaya.

Apa pun pilihanmu, atur CRITTO_PUBLIC_URL ke alamat tersebut agar kode QR pemasangan mengarah ke sana.


6. Pembaruan

Server diperbarui bersama sistem lainnya:

  • Debian / Ubuntu: sudo apt update && sudo apt upgrade
  • Fedora / RHEL: sudo dnf upgrade
  • openSUSE: sudo zypper update

Layanan dimulai ulang sendiri setelah pembaruan. Aplikasi desktop dan ponsel diperbarui secara terpisah.


7. Cadangan

Semua data berada di /var/lib/critto: critto, ingatan, obrolan, berkas, dan proses masuk AI-mu. Pengaturan ada di /etc/critto/critto.env.

Buat salinan sendiri. Hentikan server agar salinannya konsisten:

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

Saat berjalan, server juga menyimpan salinan terbaru basis datanya di /var/lib/critto/backups/latest.db.

Cadangan di luar server (S3, Cloudflare R2, Backblaze B2…). Di aplikasi, aktifkan Mode lanjutan, lalu pilih Pengaturan → Cadangan → Ubah tujuan…. Enkripsi cadangan sebelum meninggalkan server dengan menambahkan kunci cadangan:

sudo crittod backup keygen

Salin baris CRITTO_BACKUP_KEY=… ke /etc/critto/critto.env, simpan salinannya di tempat aman dan luring (cadangan tidak dapat dipulihkan tanpanya), lalu mulai ulang: sudo systemctl restart critto.

Cadangan di luar server berlangsung terus-menerus:

  • Perubahan basis data diunggah setiap 10 detik;
  • berkas pengguna diunggah setiap 10 menit;
  • salinan lengkap diunggah setiap hari.

Kamu dapat memulihkan data dari waktu mana pun dalam 7 hari terakhir langsung dari bucket:

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 menggunakan UTC; hilangkan opsi itu untuk keadaan terbaru. Folder users/ yang dipulihkan berada di tempat yang sama.)

Untuk memulihkan satu berkas cadangan yang sudah diunduh (snapshot harian), letakkan di tempat yang dapat dibaca pengguna critto (misalnya /var/lib/critto), lalu:

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

Kunci brankas. Kunci dan kata sandi tersimpan dienkripsi dengan kunci utama di /etc/critto/vault.key (dibuat saat pemasangan, hanya dapat dibaca pengguna critto; di Docker ada di volume critto-keys, di NixOS di services.critto.vaultKeyFile, yang secara bawaan berada di /var/lib/critto-keys/vault.key: selalu di luar data). Kunci ini tidak pernah masuk cadangan. Daftar kunci per akun yang dibukanya (/var/lib/critto/vault/keys.db) mendapat cadangan terenkripsi tersendiri bersama cadangan lainnya, di dalam vault/, disimpan selama 30 hari, tetapi hanya jika kamu memberikan kunci pemulihan:

sudo crittod vault recovery-keygen

Masukkan baris CRITTO_VAULT_BACKUP_RECIPIENT=… ke /etc/critto/critto.env, lalu mulai ulang. Simpan identitas pemulihan yang dicetak dan salinan /etc/critto/vault.key secara luring di pengelola kata sandimu, bukan di server. Untuk memulihkan setelah kehilangan server, kembalikan vault.key, unduh vault/latest.db.age, lalu:

sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age

Pengaturan

Server membaca /etc/critto/critto.env. Semua opsi tercantum di sana beserta penjelasannya. Sunting dengan sudo nano /etc/critto/critto.env, lalu jalankan sudo systemctl restart critto. Opsi yang umum:

Pengaturan Fungsinya
CRITTO_LISTEN Alamat server untuk mendengarkan. Bawaan 127.0.0.1:8787 (hanya komputer ini).
CRITTO_PUBLIC_URL Alamat yang digunakan perangkatmu, misalnya https://critto.example.com.
BOAT_API_KEY Kunci Boat-mu untuk Sarang.
CRITTO_BACKUP_KEY Mengenkripsi cadangan di luar server.
CRITTO_ANTIGRAVITY=0 Menyembunyikan Antigravity.
CRITTO_PROACTIVE=0 Critto tidak akan menyapamu lebih dulu (hal terjadwal akan menunggu). Tanpa Critto Smarts, sapaan rutin menggunakan AI milik critto.
CRITTO_JOB_WORKERS Jumlah tugas latar belakang (sapaan rutin dan hal terjadwal) yang berjalan sekaligus. Bawaan 4.

Perintah yang berguna:

Perintah
sudo crittod pair kode pemasangan untuk perangkat baru
sudo crittod setup ai memasang atau memperbarui aplikasi AI
sudo crittod users akun di server ini
systemctl status critto status server
journalctl -u critto -f log server
curl http://127.0.0.1:8787/health pemeriksaan singkat server

/health menampilkan "desktop": "on-demand" sampai Sarang pertama kali memerlukan perangkat lunak desktopnya. Itu normal: server akan mengunduhnya saat itu.


Copot pemasangan

  • Debian / Ubuntu: sudo apt purge critto-server
  • Fedora / RHEL: sudo dnf remove critto-server
  • Docker: docker rm -f critto (tambahkan docker volume rm critto-data critto-keys critto-ai untuk menghapus datanya juga)

Tindakan ini menghentikan server dan menghapus paket serta repositorinya jika tidak ada paket Critto lain yang tersisa. Data di /var/lib/critto tetap disimpan jika kelak kamu kembali. Untuk menghapus semuanya:

sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto

Agar paket tidak menambahkan repositori sejak awal, jalankan echo CRITTO_REPO=no | sudo tee /etc/default/critto sebelum memasang.


Pemecahan masalah

  • Aplikasi mengatakan server tidak dapat dijangkau. Periksa systemctl status critto di server dan pastikan alamat di aplikasi dapat dijangkau perangkat (dari ponsel, 127.0.0.1 berarti ponsel itu sendiri).
  • “Kode pemasangan tidak berfungsi.” Kode berlaku 10 menit dan hanya bisa dipakai sekali. Buat kode baru dengan sudo crittod pair. Jalankan dengan sudo: tanpa itu, kamu mendapat kode untuk server pribadi yang berbeda.
  • Aplikasi AI tidak muncul di Koneksi. Jalankan kembali sudo crittod setup ai <name>; server akan dimulai ulang setelah selesai.
  • Masalah lainnya. Biasanya journalctl -u critto -n 100 menunjukkan penyebabnya.