Critto obvykle běží ve tvém účtu Critto. Pokud chceš mít všechno na vlastním počítači, můžeš si spustit server Critto: tvoje critto, jejich vzpomínky i chaty zůstanou na tomto počítači a připojí se k němu desktopová i mobilní aplikace Critto.

Tento návod je určený pro Linux. Potřebuješ:

  • 64bitový počítač s Linuxem (Intel/AMD nebo ARM, například Raspberry Pi 4/5), který zůstane zapnutý: domácí server, minipočítač nebo menší cloudový server,
  • přibližně 1 GB volné paměti a několik GB místa na disku,
  • oprávnění správce (sudo).

Pro NixOS je k dispozici flake s modulem NixOS. Pro Debian, Ubuntu, Fedoru, systémy ve stylu RHEL a openSUSE jsou připravené balíčky s automatickými aktualizacemi. Ostatní systémy mohou použít obraz kontejneru nebo statické sestavení.


NixOS

Přidej flake Critto do systémového flake:

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

Pak spusť sudo nixos-rebuild switch --flake .#myserver a spáruj své aplikace příkazem sudo crittod pair (krok 2).

  • Aktualizace: Spusť nix flake update critto a znovu sestav systém. Balíček je podepsané předem sestavené vydání (statický binární soubor, takže bez potíží s glibc). Beta kanál nastav pomocí services.critto.package = critto.packages.${system}.crittod-beta;.
  • Tajné údaje: Vlož BOAT_API_KEY=… a CRITTO_BACKUP_KEY=… do environmentFile (vlastník root, režim 600; fungují také agenix a sops-nix). Soubor se načte při spuštění služby a jeho obsah se nikdy nekopíruje do úložiště Nix.
  • Nastavení: listen (výchozí 127.0.0.1:8787), publicUrl, webHost, openFirewall (ve výchozím nastavení vypnuto), dataDir (výchozí /var/lib/critto) a settings pro libovolné další proměnné CRITTO_*. den.backend určuje, kde poběží Doupě (boat, local nebo none; viz část o Doupě).
  • Aplikace AI: V aiPackages upřednostni balíčky z nixpkgs (například pkgs.codex a pkgs.claude-code, které vyžadují allowUnfree). Pokud nixpkgs některou aplikaci nemá, nastav programs.nix-ld.enable = true; a použij sudo crittod setup ai (krok 3). Pi potřebuje v aiPackages pouze pkgs.nodejs_22; pak spusť sudo crittod setup ai pi.
  • Vzdálený přístup: Nastav services.tailscale.enable = true; a spusť sudo tailscale serve --bg 8787, nebo použij services.cloudflared s pravidlem ingress pro http://127.0.0.1:8787 (viz krok 5).
  • Službu izoluje systemd, ale uživatelské jmenné prostory zůstávají dostupné (potřebuje je bubblewrap i místní Doupě); nenastavuj proto security.allowUserNamespaces = false.

Zbytek tohoto návodu platí i pro NixOS. Liší se jen aktualizace: provádějí se příkazem nix flake update místo apt nebo dnf.


1. Instalace

Na serveru otevři terminál a spusť:

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

Skript přidá repozitář balíčků Critto, nainstaluje balíček critto-server, spustí server a vypíše párovací kód. Tím je hotovo; pokračuj na Spárování aplikací.

Chceš nové verze dřív než ostatní? Použij beta kanál: curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh

Nejdřív ověř instalační skript (volitelné)

Skript je podepsaný vydávacím klíčem Critto. Před spuštěním můžeš podpis ověřit:

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

Balíček minisign najdeš ve většině distribucí. K dispozici je také běžný kontrolní součet v install-server.sh.sha256. Podepsané jsou i samotné balíčky; správce balíčků ověřuje jejich podpis při každé instalaci a aktualizaci.

Nebo nastav repozitář ručně

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

Otisk klíče je C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 ("Critto Packages packages@critto.app").

Nebo použij 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

Kontejner nepotřebuje žádná zvláštní oprávnění. Data jsou ve svazku critto-data, hlavní klíč trezoru ve svazku critto-keys (odděleně od dat, takže kopie jednoho svazku sama o sobě neumožní přístup k obsahu druhého; viz Zálohy) a aplikace AI ve svazku critto-ai. Funguje také tajný údaj Dockeru připojený jako /etc/critto/vault.key. Aktualizaci proveď příkazem docker pull ghcr.io/nexferra-ltd/critto-server:latest a potom kontejner znovu vytvoř se stejnými svazky.

Nebo použij statické sestavení

Každé vydání obsahuje také jednosouborové sestavení pro libovolný Linux: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (nebo -aarch64). Rozbal ho a spusť ./crittod serve. Spuštění i aktualizace musíš zajišťovat sám, proto jsou balíčky jednodušší volbou.


2. Spárování aplikací

Server povoluje pouze spárovaná zařízení. Zařízení spáruješ takto:

  1. Na serveru si vyžádej kód. Platí 10 minut a lze ho použít jen jednou:

    sudo crittod pair
    
  2. V aplikaci Critto na přihlašovací obrazovce vyber Použít vlastní server Critto. Zadej adresu serveru a kód.

Po spárování jednoho zařízení můžeš spárovat další přímo z něj: v Nastavení → Zařízení → Spárovat telefon se zobrazí QR kód. Obsahuje adresu, na které server naslouchá. Pokud se zařízení připojují jiným způsobem (přes tunel, proxy nebo doménu), nastav CRITTO_PUBLIC_URL na tuto adresu (viz Nastavení).

Používáš desktopovou aplikaci na stejném počítači? Desktopová aplikace běžně spouští vlastní soukromý server Critto. Pokud jsi tady nainstaloval server, vyber Použít vlastní server Critto a zadej http://127.0.0.1:8787, aby obě aplikace používaly stejná critto.


3. Připojení AI

Tvoje critto přemýšlejí pomocí AI, kterou si vybereš. AI můžeš připojit dvěma způsoby.

Předplatná AI (ChatGPT, Claude, Grok…)

Critto se připojuje přes oficiální aplikace těchto služeb pro příkazový řádek. Nainstaluj je na server příkazem:

sudo crittod setup ai

Vyber používané aplikace, nebo je zadej přímo: sudo crittod setup ai codex claude.

Aplikace Použij s
codex předplatným ChatGPT (Plus, Pro, Business…)
claude předplatným Claude (Pro, Max…)
grok SuperGrok / X Premium
muse Meta AI (potřebuje Node.js 20+; instalátor jej podle možností přidá)
antigravity Google Antigravity. Nejdřív si přečti zobrazené upozornění: podmínky Googlu říkají, že jiné programy by neměly používat přihlášení k Antigravity, a Google kvůli tomu pozastavil účty.

Aplikace se nainstalují do /opt/critto-ai a samy se neaktualizují. Čas od času je aktualizuj příkazem sudo crittod setup ai --update.

Pak v aplikaci Critto otevři Propojení a ke každé službě se přihlas. Přihlašovací údaje se ukládají na serveru, ne v aplikaci.

Vlastní AI: místní modely a klíče API

Zapni Nastavení → Pokročilý režim a pak vyber Nastavení → Vlastní AI → Přidat propojení. Funguje vše, co podporuje API kompatibilní s OpenAI. Vyber předvolbu v části Začít od, nebo adresu zadej ručně:

Služba Základní adresa Klíč API
Ollama na serveru http://localhost:11434/v1 žádný
LM Studio na serveru http://localhost:1234/v1 žádný
Ollama na jiném domácím počítači http://192.168.1.20:11434/v1 žádný
OpenRouter https://openrouter.ai/api/v1 tvůj klíč OpenRouter

Vyber Otestovat připojení, zvol model a ulož ho. Pak můžeš tuto AI vybrat pro kterékoli critto.

Chceš-li použít Ollama na jiném počítači, spusť ji s OLLAMA_HOST=0.0.0.0, aby přijímala připojení ze sítě. „localhost“ vždy označuje počítač, na kterém běží server Critto.


4. Doupě (volitelné)

Doupě je vlastní cloudový počítač tvých critto pro větší úkoly, jako je vytváření věcí, procházení webu a používání aplikací. Vlastní server spouští Dens na tvém účtu Boat. Vlož klíč API Boat v aplikaci v části Propojení, nebo ho zapiš do souboru nastavení jako BOAT_API_KEY a server restartuj.

Je dobré vědět:

  • Aby Doupě fungoval, server nemusí být dostupný z internetu. Komunikuje s Doupě, ne naopak.
  • Doupě potřebuje AI s veřejnou internetovou adresou (tvé předplatné nebo službu, jako je OpenRouter). AI běžící ve vlastní síti (Ollama, LM Studio) může chatovat, ale cloudový Doupě se k ní nedostane.
  • Čas běhu Doupě účtuje Boat na tvůj účet.

Vlastní Doupě na vlastním počítači

Nemáš účet Boat? Server může místo toho spouštět Doupě každého uživatele jako malý virtuální počítač přímo na tomto počítači. Potřebuje /dev/kvm, přibližně 4 GB paměti na každý běžící Doupě a jednorázové sestavení obrazu. V NixOS:

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

V ostatních systémech přidej CRITTO_DEN_BACKEND=local do /etc/critto/critto.env. Celý návod (požadavky, velikosti, dostupnost ze strany Doupě a sestavení obrazu) je v části Vlastní Doupě na vlastním počítači.


5. Zpřístupnění dalším zařízením

Ve výchozím nastavení server naslouchá pouze na vlastním počítači (127.0.0.1:8787). To je bezpečná výchozí volba. Pokud chceš používat telefon nebo notebook odkudkoli, vyber jednu z možností níže. První dvě ti poskytnou zabezpečenou adresu https:// bez nutnosti otevírat porty na routeru.

Tailscale (nejjednodušší pro osobní použití)

Nainstaluj Tailscale na server i svá zařízení, přihlas je ke stejnému účtu a pak na serveru spusť:

sudo tailscale serve --bg 8787

Zobrazí se adresa, například https://myserver.tail1234.ts.net. Použij ji v aplikacích. Připojit se mohou pouze tvoje zařízení.

Cloudflare Tunnel (veřejná adresa na vlastní doméně)

Pokud máš doménu u Cloudflare, nainstaluj cloudflared a pak spusť:

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

Server pak najdeš na https://critto.example.com. Každé zařízení stále potřebuje párovací kód.

Již používaná reverzní proxy

Nasměruj ji na http://127.0.0.1:8787 a povol WebSockets. Pro Caddy, která se sama postará o HTTPS, použij:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

Pouze v domácí síti

Pokud jsou všechna zařízení doma, může server naslouchat přímo v síti. Nastav CRITTO_LISTEN=0.0.0.0:8787 (viz Nastavení) a v aplikacích použij http://<server's IP address>:8787. Spojení používá nešifrované http, proto to dělej jen v důvěryhodné síti.

Ať zvolíš kteroukoli možnost, nastav CRITTO_PUBLIC_URL na danou adresu, aby na ni odkazovaly párovací QR kódy.


6. Aktualizace

Server se aktualizuje spolu se zbytkem systému:

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

Po aktualizaci se služba sama restartuje. Desktopová a mobilní aplikace se aktualizují zvlášť.


7. Zálohy

Všechno je v /var/lib/critto: tvoje critto, vzpomínky, chaty, soubory a přihlášení k AI. Nastavení najdeš v /etc/critto/critto.env.

Zálohuj ručně. Kvůli konzistentní kopii server zastav:

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

Za běhu server také uchovává aktuální kopii databáze v /var/lib/critto/backups/latest.db.

Zálohy mimo server (S3, Cloudflare R2, Backblaze B2…). V aplikaci zapni Pokročilý režim a pak vyber Nastavení → Zálohy → Změnit cíl…. Před odchodem ze serveru se zálohy zašifrují, pokud přidáš záložní klíč:

sudo crittod backup keygen

Zkopíruj řádek CRITTO_BACKUP_KEY=… do /etc/critto/critto.env, jeho kopii ulož na bezpečné místo offline (bez něj zálohy nelze obnovit) a restartuj server příkazem sudo systemctl restart critto.

Zálohy mimo server se provádějí průběžně:

  • změny v databázi se odesílají každých 10 sekund;
  • soubory uživatelů každých 10 minut;
  • úplná kopie se odesílá každý den.

Libovolný okamžik z posledních 7 dní můžeš obnovit přímo z úložiště:

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 je v UTC; vynech ho pro obnovení nejnovějšího stavu. Obnovená složka users/ zůstane na stejném místě.)

Pokud chceš místo toho obnovit jeden stažený soubor zálohy (denní snímek), ulož ho na místo, odkud ho uživatel critto může číst (například do /var/lib/critto), potom spusť:

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

Klíče trezoru. Uložená hesla a klíče jsou šifrované hlavním klíčem v /etc/critto/vault.key (vytvoří se při instalaci a číst ho může pouze uživatel critto; v Dockeru je ve svazku critto-keys, v NixOS v services.critto.vaultKeyFile, jehož výchozí hodnota je /var/lib/critto-keys/vault.key: vždy tedy leží mimo data). V záloze není. Seznam klíčů jednotlivých účtů, které odemyká (/var/lib/critto/vault/keys.db), se zálohuje zvlášť, šifrovaně do vault/ vedle ostatních záloh a uchovává 30 dní. K tomu je potřeba nastavit obnovovací klíč:

sudo crittod vault recovery-keygen

Vlož řádek CRITTO_VAULT_BACKUP_RECIPIENT=… do /etc/critto/critto.env a restartuj server. Vytištěnou obnovovací identitu i kopii /etc/critto/vault.key ulož offline do správce hesel; nikdy je nenechávej na serveru. Pokud server ztratíš, při obnově vrať soubor vault.key, stáhni vault/latest.db.age a spusť:

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

Nastavení

Server čte /etc/critto/critto.env. Najdeš v něm seznam všech možností i jejich vysvětlení. Soubor uprav příkazem sudo nano /etc/critto/critto.env a pak spusť sudo systemctl restart critto. Nejběžnější možnosti:

Nastavení K čemu slouží
CRITTO_LISTEN Adresa, na které server naslouchá. Výchozí 127.0.0.1:8787 (pouze tento počítač).
CRITTO_PUBLIC_URL Adresa používaná zařízeními, například https://critto.example.com.
BOAT_API_KEY Tvůj klíč Boat pro Doupě.
CRITTO_BACKUP_KEY Šifruje zálohy mimo server.
CRITTO_ANTIGRAVITY=0 Skryje Antigravity.
CRITTO_PROACTIVE=0 Critto se sama neozývají (naplánované úkoly počkají). Bez Critto Smarts se při ozvání použije vlastní AI daného critto.
CRITTO_JOB_WORKERS Počet úloh na pozadí (ozvání a naplánovaných úkolů), které běží současně. Výchozí hodnota 4.

Užitečné příkazy:

Příkaz
sudo crittod pair vytvoří párovací kód pro nové zařízení
sudo crittod setup ai nainstaluje nebo aktualizuje aplikace AI
sudo crittod users zobrazí účty na tomto serveru
systemctl status critto ukáže, zda server běží
journalctl -u critto -f zobrazí záznam událostí
curl http://127.0.0.1:8787/health rychlá kontrola stavu

Dokud Doupě poprvé nepotřebuje svůj desktopový software, /health uvádí "desktop": "on-demand". To je normální: server software stáhne, až bude potřeba.


Odinstalace

  • Debian / Ubuntu: sudo apt purge critto-server
  • Fedora / RHEL: sudo dnf remove critto-server
  • Docker: docker rm -f critto (přidej docker volume rm critto-data critto-keys critto-ai, pokud chceš smazat také data)

Tím se zastaví server, odstraní balíček a také repozitář, pokud v systému nezůstane žádný jiný balíček Critto. Data v /var/lib/critto zůstanou zachována, kdybys chtěl server znovu používat. Všechno smažeš takto:

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

Pokud nechceš, aby instalace balíčků přidala repozitář, spusť před instalací echo CRITTO_REPO=no | sudo tee /etc/default/critto.


Řešení potíží

  • Aplikace hlásí, že se nemůže spojit se serverem. Na serveru zkontroluj systemctl status critto a ověř, že zařízení dosáhne na adresu zadanou v aplikaci (na telefonu označuje 127.0.0.1 samotný telefon).
  • „Párovací kód nefungoval.“ Kódy platí 10 minut a lze je použít jen jednou. Vytvoř nový příkazem sudo crittod pair. Spusť jej s sudo; bez něj získáš kód pro jiný, osobní server.
  • Aplikace AI se nezobrazuje v Propojeních. Znovu spusť sudo crittod setup ai <name>; po dokončení se server restartuje.
  • Jiný problém. Příkaz journalctl -u critto -n 100 obvykle napoví, co je špatně.