Critto finns vanligtvis i ditt Critto-konto. Om du hellre vill ha allt på en dator du äger kan du själv köra Critto-servern: dina crittos, deras minnen och dina chattar stannar på den datorn, och Critto-apparna för dator och mobil ansluter till den.

Den här guiden gäller Linux. Du behöver:

  • en 64-bitars Linux-dator (Intel/AMD eller ARM, till exempel Raspberry Pi 4/5) som alltid är på: en hemmaserver, en mini-PC eller en liten molnserver,
  • ungefär 1 GB ledigt minne och några GB lagringsutrymme,
  • administratörsrättigheter (sudo).

För NixOS finns ett flake-paket med en NixOS-modul. Debian, Ubuntu, Fedora, RHEL-liknande system och openSUSE får vanliga paket med automatiska uppdateringar. Övriga system kan använda containeravbildningen eller den statiska versionen.


NixOS

Lägg till Critto-flaken i systemflaken:

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

Kör sedan sudo nixos-rebuild switch --flake .#myserver och parkoppla apparna med sudo crittod pair (steg 2).

  • Uppdateringar: nix flake update critto och bygg sedan om. Paketet är en signerad, förbyggd version (en statisk binär, så du slipper problem med glibc). Använd services.critto.package = critto.packages.${system}.crittod-beta; för betakanalen.
  • Hemligheter: lägg BOAT_API_KEY=… och CRITTO_BACKUP_KEY=… i environmentFile (ägs av root, läge 600; agenix och sops-nix fungerar också). Filen läses när tjänsten startar och kopieras aldrig till Nix-lagret.
  • Inställningar: listen (standard 127.0.0.1:8787), publicUrl, webHost, openFirewall (av som standard), dataDir (standard /var/lib/critto) och settings för andra CRITTO_*-variabler. den.backend väljer var Lyan körs (boat, local eller none; se om Lyan).
  • AI-appar: använd helst paket från nixpkgs i aiPackages (till exempel pkgs.codex, pkgs.claude-code, som kräver allowUnfree). För appar som saknas i nixpkgs aktiverar du programs.nix-ld.enable = true; och kör sudo crittod setup ai (steg 3). Pi behöver bara pkgs.nodejs_22 i aiPackages; kör sedan sudo crittod setup ai pi.
  • Fjärråtkomst: aktivera services.tailscale.enable = true; och kör sedan sudo tailscale serve --bg 8787, eller använd services.cloudflared med en ingressregel till http://127.0.0.1:8787 (se steg 5).
  • Tjänsten körs i en isolerad systemd-miljö, men användarnamnrymder är tillgängliga (bubblewrap och den lokala Lyan behöver dem), så ange inte security.allowUserNamespaces = false.

Resten av guiden gäller även NixOS, förutom att uppdateringar görs med nix flake update i stället för apt eller dnf.


1. Installera

Öppna en terminal på servern och kör:

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

Kommandot lägger till Critto-paketförrådet, installerar paketet critto-server, startar servern och skriver ut en parkopplingskod. Klart: fortsätt till Parkoppla apparna.

Vill du få nya versioner före alla andra? Använd betakanalen: curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh

Kontrollera installationsskriptet först (valfritt)

Skriptet är signerat med Crittos utgivningsnyckel. Så här verifierar du det innan du kör det:

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 finns i paketförråden för de flesta distributioner.) Det finns också en vanlig kontrollsumma i install-server.sh.sha256. Även paketen är signerade, och pakethanteraren kontrollerar dem vid varje installation och uppdatering.

Eller konfigurera paketförrådet själv

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

Nyckelns fingeravtryck är C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 (”Critto Packages packages@critto.app”).

Eller använd 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

Containern behöver inga särskilda behörigheter. Din data finns i volymen critto-data, valvets huvudnyckel i critto-keys (åtskild från datan, så en kopia av den ena aldrig kan öppna den andra; se Säkerhetskopior) och AI-apparna i critto-ai. Det fungerar också att montera en Docker-hemlighet på /etc/critto/vault.key. Uppdatera med docker pull ghcr.io/nexferra-ltd/critto-server:latest och återskapa sedan containern med samma volymer.

Eller använd den statiska versionen

Varje utgåva har också en fristående fil som körs på alla Linux-system: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (eller -aarch64). Packa upp filen och kör ./crittod serve. Du måste själv se till att den körs och hålls uppdaterad, så paket är enklare.


2. Parkoppla apparna

Servern släpper bara in enheter som du har parkopplat. Så här parkopplar du en:

  1. Hämta en kod på servern (den gäller i 10 minuter och kan användas en gång):

    sudo crittod pair
    
  2. Välj Använd min egen Critto-server på inloggningssidan i Critto-appen. Ange serverns adress och koden.

    • På själva servern: http://127.0.0.1:8787
    • Från andra enheter behöver du en adress som de kan nå; se Anslut från andra enheter.

När en enhet har parkopplats kan du parkoppla fler från den: Inställningar → Enheter → Parkoppla en mobil visar en QR-kod. Den innehåller adressen som servern lyssnar på. Om enheterna når servern på något annat sätt (en tunnel, proxy eller domän) anger du den adressen i CRITTO_PUBLIC_URL (se Inställningar).

Datorappen på samma dator? Datorappen startar vanligtvis en egen privat Critto-server. Om du har installerat servern här väljer du i stället Använd min egen Critto-server med http://127.0.0.1:8787, så att båda använder samma crittos.


3. Anslut dina AI-tjänster

Crittos tänker med en AI som du väljer. Det finns två sätt att ansluta en.

Dina AI-prenumerationer (ChatGPT, Claude, Grok…)

Critto använder de officiella kommandoradsapparna, som du installerar på servern en gång:

sudo crittod setup ai

Välj de du använder eller ange namnen direkt: sudo crittod setup ai codex claude.

App Används med
codex en ChatGPT-plan (Plus, Pro, Business…)
claude en Claude-plan (Pro, Max…)
grok SuperGrok / X Premium
muse Meta AI (kräver Node.js 20+; installationsprogrammet lägger till det om möjligt)
antigravity Google Antigravity. Läs varningen som visas först: Googles villkor säger att annan programvara inte ska använda en Antigravity-inloggning, och Google har stängt av konton för detta.

De installeras i /opt/critto-ai och uppdateras inte automatiskt. Kör sudo crittod setup ai --update då och då för att uppdatera dem.

Öppna sedan Anslutningar i Critto-appen och logga in på var och en. Inloggningarna sparas på servern, inte i appen.

Egen AI: lokala modeller och API-nycklar

Slå på Inställningar → Avancerat läge och gå sedan till Inställningar → Egen AI → Lägg till anslutning. Allt som stöder API:t ”OpenAI-kompatibelt” fungerar. Välj en förinställning under Börja med eller ange adressen själv:

Tjänst Bas-URL API-nyckel
Ollama på servern http://localhost:11434/v1 ingen
LM Studio på servern http://localhost:1234/v1 ingen
Ollama på en annan dator hemma http://192.168.1.20:11434/v1 ingen
OpenRouter https://openrouter.ai/api/v1 din OpenRouter-nyckel

Välj Testa anslutningen, välj en modell och spara. Sedan kan du välja AI-tjänsten för vilken critto som helst.

Om Ollama körs på en annan dator startar du den med OLLAMA_HOST=0.0.0.0 så att den tar emot anslutningar från nätverket. ”localhost” betyder alltid Critto-serverns egen dator.


4. Lyan (valfritt)

Lyan är crittonas egen dator i molnet, där de gör större jobb (bygger saker, surfar, använder appar). En server med egen drift kör Lyor på ditt eget Boat-konto. Klistra in Boat-API-nyckeln i appen under Anslutningar, eller lägg in den i inställningsfilen som BOAT_API_KEY och starta om.

Bra att veta:

  • Servern behöver inte vara nåbar från internet för att Lyan ska fungera. Den ansluter till Lyan, inte tvärtom.
  • Arbete i Lyan kräver en AI med en offentlig internetadress (dina prenumerationer eller en tjänst som OpenRouter). En AI i ditt eget nätverk (Ollama, LM Studio) kan chatta, men Lyan i molnet kan inte nå den.
  • Boat debiterar tiden i Lyan på ditt konto.

Egen Lyan på din egen dator

Inget Boat-konto? Servern kan i stället köra varje persons Lyan som en liten virtuell dator här (den behöver /dev/kvm, cirka 4 GB minne per Lyan medan den körs och att en avbildning byggs en gång). På NixOS:

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

På andra system anger du CRITTO_DEN_BACKEND=local i /etc/critto/critto.env. Hela guiden (krav, storlekar, vad en Lyan kan nå och hur avbildningen byggs) finns här: Egen Lyan på din egen dator.


5. Anslut från dina andra enheter

Som standard lyssnar servern bara på sin egen dator (127.0.0.1:8787). Det är det säkra standardvalet. Om du vill använda mobilen eller laptopen var du än är väljer du ett av alternativen. De två första ger dig en säker https://-adress utan att öppna portar i routern.

Tailscale (enklast för privat bruk)

Installera Tailscale på servern och enheterna, logga in på samma konto och kör sedan detta på servern:

sudo tailscale serve --bg 8787

En adress som https://myserver.tail1234.ts.net visas. Använd den i apparna. Bara dina egna enheter kan nå servern.

Cloudflare Tunnel (en offentlig adress på din egen domän)

Om du har en domän hos Cloudflare installerar du cloudflared och kör sedan:

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

Servern nås sedan på https://critto.example.com. Varje enhet behöver fortfarande en parkopplingskod.

En omvänd proxy du redan kör

Rikta den mot http://127.0.0.1:8787 och tillåt WebSockets. Med Caddy, som hanterar HTTPS automatiskt:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

Bara i ditt hemmanätverk

Om alla enheter är hemma kan du låta servern lyssna direkt på nätverket. Ange CRITTO_LISTEN=0.0.0.0:8787 (se Inställningar) och använd http://<server's IP address>:8787 i apparna. Anslutningen använder vanlig http, så gör bara detta i ett nätverk du litar på.

Oavsett vilket alternativ du väljer anger du adressen i CRITTO_PUBLIC_URL så att parkopplingskoderna leder rätt.


6. Uppdateringar

Servern uppdateras tillsammans med resten av systemet:

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

Tjänsten startar om automatiskt efter en uppdatering. Dator- och mobilappar uppdateras separat.


7. Säkerhetskopior

Allt finns i /var/lib/critto: dina crittos, minnen, chattar, filer och AI-inloggningar. Inställningar finns i /etc/critto/critto.env.

Kopiera själv. Stoppa servern för att få en konsekvent kopia:

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

Servern sparar också en aktuell kopia av databasen i /var/lib/critto/backups/latest.db medan den körs.

Säkerhetskopior på annan plats (S3, Cloudflare R2, Backblaze B2…). Slå på Avancerat läge i appen och välj sedan Inställningar → Säkerhetskopior → Byt mål…. Kryptera kopiorna innan de lämnar servern genom att lägga till en säkerhetskopieringsnyckel:

sudo crittod backup keygen

Kopiera raden CRITTO_BACKUP_KEY=… till /etc/critto/critto.env, förvara en kopia säkert och offline (säkerhetskopior kan inte återställas utan den) och starta om: sudo systemctl restart critto.

Säkerhetskopior på annan plats uppdateras löpande:

  • ändringar i databasen skickas upp var tionde sekund,
  • användarnas filer skickas upp var tionde minut,
  • en fullständig kopia skickas upp varje dag.

Du kan återställa vilket ögonblick som helst från de senaste sju dagarna direkt från lagringsplatsen:

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 är UTC; utelämna det för det senaste läget. Den återställda mappen users/ finns kvar på samma plats.)

Om du i stället vill återställa en enskild nedladdad säkerhetskopia (en daglig ögonblicksbild) lägger du den där användaren critto kan läsa den, till exempel /var/lib/critto, och kör sedan:

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

Valvets nycklar. Sparade nycklar och lösenord krypteras med en huvudnyckel i /etc/critto/vault.key (skapas vid installationen och kan bara läsas av användaren critto; i Docker finns den i volymen critto-keys, på NixOS i services.critto.vaultKeyFile, som standard /var/lib/critto-keys/vault.key: alltid utanför datan). Den finns aldrig i en säkerhetskopia. Listan med nycklar per konto som den låser upp (/var/lib/critto/vault/keys.db) får en egen krypterad säkerhetskopia bredvid de andra, under vault/, som sparas i 30 dagar, men bara om du anger en återställningsnyckel:

sudo crittod vault recovery-keygen

Lägg raden CRITTO_VAULT_BACKUP_RECIPIENT=… i /etc/critto/critto.env och starta om. Förvara den utskrivna återställningsidentiteten och en kopia av /etc/critto/vault.key offline i din lösenordshanterare, aldrig på servern. Om du behöver återställa efter att servern gått förlorad lägger du tillbaka vault.key, laddar ner vault/latest.db.age och kör:

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

Inställningar

Servern läser /etc/critto/critto.env. Alla alternativ finns listade där med en förklaring. Redigera filen med sudo nano /etc/critto/critto.env och kör sedan sudo systemctl restart critto. Vanliga alternativ:

Inställning Vad den gör
CRITTO_LISTEN Var servern lyssnar. Standard 127.0.0.1:8787 (bara den här datorn).
CRITTO_PUBLIC_URL Adressen dina enheter använder, till exempel https://critto.example.com.
BOAT_API_KEY Din Boat-nyckel för Lyan.
CRITTO_BACKUP_KEY Krypterar säkerhetskopior på annan plats.
CRITTO_ANTIGRAVITY=0 Döljer Antigravity.
CRITTO_PROACTIVE=0 Crittos stämmer inte av på eget initiativ (schemalagda saker får vänta). Utan Critto Smarts använder avstämningar crittons egen AI.
CRITTO_JOB_WORKERS Antal bakgrundsjobb (avstämningar och schemalagda saker) som körs samtidigt. Standardvärde 4.

Användbara kommandon:

Kommando
sudo crittod pair en parkopplingskod för en ny enhet
sudo crittod setup ai installerar eller uppdaterar AI-appar
sudo crittod users kontona på servern
systemctl status critto kör den?
journalctl -u critto -f dess logg
curl http://127.0.0.1:8787/health en snabb hälsokontroll

/health visar "desktop": "on-demand" tills Lyan först behöver skrivbordsprogramvaran. Det är normalt: servern laddar ner den då.


Avinstallera

  • Debian / Ubuntu: sudo apt purge critto-server
  • Fedora / RHEL: sudo dnf remove critto-server
  • Docker: docker rm -f critto (lägg till docker volume rm critto-data critto-keys critto-ai för att också radera datan)

Detta stoppar servern och tar bort paketet och, om inget annat Critto-paket finns kvar, paketförrådet. Din data i /var/lib/critto behålls om du kommer tillbaka. Så här raderar du allt:

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

Om du inte vill att paketen ska lägga till paketförrådet från början kör du echo CRITTO_REPO=no | sudo tee /etc/default/critto före installationen.


Felsökning

  • Appen säger att den inte kan nå servern. Kontrollera systemctl status critto på servern och att appens adress går att nå från enheten (på en mobil betyder 127.0.0.1 själva mobilen).
  • ”Parkopplingskoden fungerade inte.” Koder gäller i 10 minuter och kan användas en gång. Skapa en ny med sudo crittod pair. Kör kommandot med sudo: annars får du en kod för en annan, personlig server.
  • En AI-app visas inte under Anslutningar. Kör sudo crittod setup ai <name> igen; servern startar om när kommandot är klart.
  • Något annat. journalctl -u critto -n 100 visar oftast vad som är fel.