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). Gunakanservices.critto.package = critto.packages.${system}.crittod-beta;untuk kanal beta. - Rahasia: masukkan
BOAT_API_KEY=…danCRITTO_BACKUP_KEY=…keenvironmentFile(dimiliki root, mode 600; agenix dan sops-nix juga bisa digunakan). Berkas dibaca saat layanan dimulai dan tidak pernah disalin ke store. - Pengaturan:
listen(bawaan127.0.0.1:8787),publicUrl,webHost,openFirewall(bawaan mati),dataDir(bawaan/var/lib/critto), dansettingsuntuk variabelCRITTO_*lainnya.den.backendmenentukan tempat Sarang berjalan (boat,local, ataunone; lihat Sarang). - Aplikasi AI: utamakan paket nixpkgs di
aiPackages(misalnyapkgs.codex,pkgs.claude-code, yang memerlukanallowUnfree). Untuk aplikasi yang tidak tersedia di nixpkgs, aturprograms.nix-ld.enable = true;lalu jalankansudo crittod setup ai(langkah 3). Pi hanya memerlukanpkgs.nodejs_22diaiPackages, lalusudo crittod setup ai pi. - Akses jarak jauh: aktifkan
services.tailscale.enable = true;lalu jalankansudo tailscale serve --bg 8787, atau gunakanservices.cloudflareddengan aturan ingress kehttp://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:
Dapatkan kode dari server (berlaku selama 10 menit dan hanya bisa dipakai sekali):
sudo crittod pairDi 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.
- Di server itu sendiri:
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:8787agar 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(tambahkandocker volume rm critto-data critto-keys critto-aiuntuk 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 crittodi server dan pastikan alamat di aplikasi dapat dijangkau perangkat (dari ponsel,127.0.0.1berarti ponsel itu sendiri). - “Kode pemasangan tidak berfungsi.” Kode berlaku 10 menit dan hanya bisa dipakai sekali. Buat kode baru dengan
sudo crittod pair. Jalankan dengansudo: 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 100menunjukkan penyebabnya.