Vanligvis ligger Critto på Critto-kontoen din. Hvis du heller vil ha alt på en datamaskin du eier selv, kan du kjøre Critto-serveren selv: crittoene dine, minnene deres og samtalene dine blir værende på den datamaskinen, og Critto- appene for datamaskin og mobil kobler seg til den.

Denne veiledningen gjelder Linux. Du trenger:

  • en 64-bit Linux-datamaskin (Intel/AMD eller ARM, f.eks. en Raspberry Pi 4/5) som står på: en hjemmeserver, en mini-PC eller en liten skyserver,
  • omtrent 1 GB ledig minne og noen GB diskplass,
  • administratorrettigheter (sudo).

NixOS får en flake med en NixOS-modul. Debian, Ubuntu, Fedora, RHEL-lignende systemer og openSUSE får ordentlige pakker med automatiske oppdateringer. På andre systemer kan du bruke containerbildet eller den statiske versjonen.


NixOS

Legg Critto-flaken til i systemflaken din:

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

Kjør deretter sudo nixos-rebuild switch --flake .#myserver, og par appene dine med sudo crittod pair (steg 2).

  • Oppdateringer: nix flake update critto, og bygg deretter på nytt. Pakken er den signerte, ferdigbygde utgaven (en statisk binærfil, så du slipper problemer med glibc). Bruk services.critto.package = critto.packages.${system}.crittod-beta; for betakanalen.
  • Hemmeligheter: legg BOAT_API_KEY=… og CRITTO_BACKUP_KEY=… i environmentFile (eies av root, modus 600; agenix og sops-nix fungerer også). Filen leses når tjenesten starter, og kopieres aldri til lageret.
  • Innstillinger: listen (standard 127.0.0.1:8787), publicUrl, webHost, openFirewall (av som standard), dataDir (standard /var/lib/critto) og settings for andre CRITTO_*-variabler. den.backend velger hvor Hiet kjører (boat, local eller none); se Hiet.
  • KI-apper: Bruk helst pakker fra nixpkgs i aiPackages (for eksempel pkgs.codex, pkgs.claude-code, som krever allowUnfree). For appene som ikke finnes i nixpkgs, setter du programs.nix-ld.enable = true; og kjører sudo crittod setup ai (steg 3). Pi trenger bare pkgs.nodejs_22 i aiPackages, og deretter sudo crittod setup ai pi.
  • Ekstern tilgang: Sett services.tailscale.enable = true;, og kjør sudo tailscale serve --bg 8787, eller bruk services.cloudflared med en ingressregel til http://127.0.0.1:8787 (se steg 5).
  • Tjenesten er avgrenset med systemd, men bruker-navnerom er fortsatt tilgjengelige (bubblewrap og lokal Hiet trenger dem), så ikke sett security.allowUserNamespaces = false.

Resten av veiledningen gjelder også NixOS, bortsett fra at du oppdaterer med nix flake update i stedet for apt eller dnf.


1. Installer

Åpne en terminal på serveren og kjør:

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

Dette legger til pakkearkivet til Critto, installerer critto-server-pakken, starter serveren og viser en paringskode. Ferdig! Gå videre til Par appene dine.

Vil du ha nye versjoner før alle andre? Bruk betakanalen: curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh

Kontroller installasjonsprogrammet først (valgfritt)

Skriptet er signert med utgivelsesnøkkelen til Critto. Slik kontrollerer du det før du kjører 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 finnes i pakkene til de fleste distribusjoner.) Det finnes også en vanlig kontrollsum i install-server.sh.sha256. Pakkene er også signert, og pakkehåndtereren kontrollerer dem ved hver installasjon og oppdatering.

Eller sett opp pakkearkivet selv

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

Nøkkelens fingeravtrykk er C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 ("Critto Packages packages@critto.app").

Eller bruk 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

Containeren trenger ingen spesielle tillatelser. Dataene dine ligger i volumet critto-data, hovednøkkelen til hvelvet i critto-keys (adskilt fra dataene, så en kopi av det ene aldri kan åpne det andre; se Sikkerhetskopier), og KI-appene i critto-ai. Du kan også montere en Docker-hemmelighet på /etc/critto/vault.key. Oppdater med docker pull ghcr.io/nexferra-ltd/critto-server:latest, og opprett deretter containeren på nytt med de samme volumene.

Eller den statiske utgaven

Hver utgave finnes også som én enkelt fil som kjører på alle Linux-systemer: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (eller -aarch64). Pakk den ut og kjør ./crittod serve. Du må selv sørge for at den kjører og er oppdatert, så pakker er enklere.


2. Par appene dine

Serveren slipper bare inn enheter du har paret. Slik parer du en enhet:

  1. Hent en kode på serveren (den er gyldig i 10 minutter og kan brukes én gang):

    sudo crittod pair
    
  2. Velg Bruk min egen Critto-server på innloggingsskjermen i Critto-appen. Skriv inn serveradressen og koden.

Når én enhet er paret, kan du pare flere fra den: Innstillinger → Enheter → Par en telefon viser en QR-kode. Den inneholder adressen serveren lytter på. Hvis enhetene dine bruker en annen vei inn (en tunnel, mellomtjener eller et domene), setter du CRITTO_PUBLIC_URL til den adressen (se Innstillinger).

Bruker du skrivebordsappen på samme datamaskin? Skrivebordsappen starter vanligvis sin egen private Critto-server. Hvis du har installert serveren her, velger du Bruk min egen Critto-server med http://127.0.0.1:8787 i stedet, så begge bruker de samme crittoene.


3. Koble til KI-ene dine

Crittoer tenker ved hjelp av en KI du velger. Du kan koble til på to måter.

KI-abonnementene dine (ChatGPT, Claude, Grok…)

Critto bruker de offisielle kommandolinjeappene deres, som du installerer én gang på serveren:

sudo crittod setup ai

Velg appene du bruker, eller skriv navnene direkte: sudo crittod setup ai codex claude.

App Brukes med
codex et ChatGPT-abonnement (Plus, Pro, Business…)
claude et Claude-abonnement (Pro, Max…)
grok SuperGrok / X Premium
muse Meta AI (krever Node.js 20+; installasjonsprogrammet legger det til hvis mulig)
antigravity Google Antigravity. Les advarselen først: Ifølge vilkårene til Google skal ikke andre apper bruke Antigravity-innloggingen, og Google har stengt kontoer for slik bruk.

De installeres i /opt/critto-ai og oppdateres ikke automatisk. Kjør sudo crittod setup ai --update nå og da for å oppdatere dem.

Åpne deretter Tilkoblinger i Critto-appen og logg inn på hver av dem. Innloggingene lagres på serveren din, ikke i appen.

Tilpasset KI: lokale modeller og API-nøkler

Slå på Innstillinger → Avansert modus, og velg deretter Innstillinger → Tilpasset KI → Legg til tilkobling. Alt som støtter «OpenAI-kompatibelt» API, fungerer. Velg en forhåndsinnstilling under Start med, eller fyll inn adressen selv:

Tjeneste Basis-URL API-nøkkel
Ollama på serveren http://localhost:11434/v1 ingen
LM Studio på serveren http://localhost:1234/v1 ingen
Ollama på en annen datamaskin hjemme http://192.168.1.20:11434/v1 ingen
OpenRouter https://openrouter.ai/api/v1 OpenRouter-nøkkelen din

Velg Test tilkobling, velg en modell og lagre. Deretter kan du velge denne KI-en for alle crittoer.

Hvis Ollama kjører på en annen datamaskin, starter du den med OLLAMA_HOST=0.0.0.0 så den godtar tilkoblinger fra nettverket. «localhost» betyr alltid selve datamaskinen Critto-serveren kjører på.


4. Hiet (valgfritt)

Hiet er crittoenes egen datamaskin i skyen, der de kan gjøre større jobber (bygge ting, surfe og bruke apper). En server du drifter selv, bruker Boat-kontoen din til å kjøre datamaskiner i Hiet. Lim inn Boat-API-nøkkelen i appen under Tilkoblinger, eller legg den inn i innstillingsfilen som BOAT_API_KEY og start serveren på nytt.

Greit å vite:

  • Serveren din trenger ikke være tilgjengelig fra internett for at Hiet skal fungere. Serveren kobler til Hiet, ikke omvendt.
  • Arbeid i Hiet krever en KI med offentlig internettadresse (abonnementene dine eller en tjeneste som OpenRouter). En KI på ditt eget nettverk (Ollama, LM Studio) kan prate, men Hiet i skyen får ikke kontakt med den.
  • Boat fakturerer Hiet-tid på kontoen din.

Ditt eget Hiet på din egen datamaskin

Har du ikke Boat-konto? Serveren kan i stedet kjøre hver persons Hiet som en liten virtuell maskin på denne datamaskinen (det krever /dev/kvm, omtrent 4 GB minne per Hiet mens den kjører, og at et diskbilde bygges én gang). På NixOS:

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

På andre systemer legger du CRITTO_DEN_BACKEND=local i /etc/critto/critto.env. Hele veiledningen (krav, størrelser, hva et Hiet får tilgang til og bygging av diskbildet) står her: Ditt eget Hiet på din egen datamaskin.


5. Koble til fra andre enheter

Som standard lytter serveren bare på sin egen datamaskin (127.0.0.1:8787). Det er det tryggeste valget. Hvis du vil bruke telefonen eller laptopen din hvor som helst fra, velger du en av disse løsningene. De to første gir deg en sikker https://-adresse uten å åpne porter på ruteren.

Tailscale (enklest til personlig bruk)

Installer Tailscale på serveren og enhetene dine, logg inn på samme konto, og kjør deretter dette på serveren:

sudo tailscale serve --bg 8787

Da vises en adresse som https://myserver.tail1234.ts.net. Bruk den i appene. Bare enhetene dine får tilgang.

Cloudflare Tunnel (offentlig adresse på ditt eget domene)

Hvis du har et domene hos Cloudflare, installerer du cloudflared, og kjører deretter:

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

Serveren din er nå tilgjengelig på https://critto.example.com. Hver enhet trenger fortsatt en paringskode.

En mellomtjener du allerede kjører

Pek den mot http://127.0.0.1:8787 og tillat WebSockets. Med Caddy, som håndterer HTTPS selv:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

Bare på hjemmenettverket ditt

Hvis alle enhetene er hjemme, kan serveren lytte direkte på nettverket ditt. Sett CRITTO_LISTEN=0.0.0.0:8787 (se Innstillinger), og bruk http://<server's IP address>:8787 i appene. Dette er vanlig http, så gjør det bare på et nettverk du stoler på.

Uansett hva du velger, setter du CRITTO_PUBLIC_URL til adressen så parings-QR-kodene peker dit.


6. Oppdateringer

Serveren oppdateres sammen med resten av systemet:

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

Tjenesten starter på nytt av seg selv etter en oppdatering. Skrivebords- og mobilappene oppdateres hver for seg.


7. Sikkerhetskopier

Alt ligger i /var/lib/critto: crittoene, minnene, samtalene, filene og KI-innloggingene dine. Innstillingene ligger i /etc/critto/critto.env.

Kopier selv. Stopp serveren for å få en fullstendig kopi:

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

Serveren lagrer også en oppdatert kopi av databasen i /var/lib/critto/backups/latest.db mens den kjører.

Sikkerhetskopier et annet sted (S3, Cloudflare R2, Backblaze B2 …). Slå på Avansert modus i appen, og velg Innstillinger → Sikkerhetskopier → Bytt lagringssted …. Krypter kopiene før de forlater serveren ved å legge til en sikkerhetskopinøkkel:

sudo crittod backup keygen

Kopier linjen CRITTO_BACKUP_KEY=… inn i /etc/critto/critto.env, og oppbevar en kopi på et trygt sted uten nett (sikkerhetskopier kan ikke gjenopprettes uten den). Start deretter på nytt: sudo systemctl restart critto.

Sikkerhetskopier utenfor serveren tas fortløpende:

  • endringer i databasen lastes opp hvert 10. sekund;
  • filer fra brukerne lastes opp hvert 10. minutt;
  • en full kopi lastes opp hver dag.

Du kan gjenopprette fra et hvilket som helst tidspunkt de siste 7 dagene, direkte fra lagringsbøtta:

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 bruker UTC. Utelat det for siste tilstand. Den gjenopprettede users/-mappen ligger på samme sted.)

Hvis du heller vil gjenopprette én nedlastet sikkerhetskopifil (et daglig øyeblikksbilde), legger du den et sted critto-brukeren kan lese (f.eks. /var/lib/critto). Deretter:

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

Nøklene i hvelvet. Lagrede nøkler og passord krypteres med en hovednøkkel i /etc/critto/vault.key (opprettes ved installasjon, kan bare leses av critto-brukeren; i Docker ligger den i volumet critto-keys, på NixOS i services.critto.vaultKeyFile, som standard /var/lib/critto-keys/vault.key: alltid utenfor dataene). Den er aldri med i en sikkerhetskopi. Listen over nøkler per konto som den låser opp (/var/lib/critto/vault/keys.db), får en egen kryptert sikkerhetskopi under vault/, ved siden av de andre, som oppbevares i 30 dager, men bare hvis du oppgir en gjenopprettingsnøkkel:

sudo crittod vault recovery-keygen

Legg linjen CRITTO_VAULT_BACKUP_RECIPIENT=… i /etc/critto/critto.env og start serveren på nytt. Oppbevar den utskrevne gjenopprettingsidentiteten og en kopi av /etc/critto/vault.key frakoblet, i passordbehandleren din: aldri på serveren. Hvis du mister serveren, legger du tilbake vault.key, laster ned vault/latest.db.age og kjører:

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

Innstillinger

Serveren leser /etc/critto/critto.env. Alle valgene står der med en forklaring. Rediger filen med sudo nano /etc/critto/critto.env, og kjør deretter sudo systemctl restart critto. De vanligste valgene:

Innstilling Hva den gjør
CRITTO_LISTEN Hvor serveren lytter. Standard 127.0.0.1:8787 (bare denne datamaskinen).
CRITTO_PUBLIC_URL Adressen enhetene bruker, f.eks. https://critto.example.com.
BOAT_API_KEY Boat-nøkkelen din til Hiet.
CRITTO_BACKUP_KEY Krypterer sikkerhetskopier lagret et annet sted.
CRITTO_ANTIGRAVITY=0 Skjuler Antigravity.
CRITTO_PROACTIVE=0 Crittoer tar ikke kontakt av seg selv (planlagte ting venter). Uten Critto Smarts bruker innsjekkinger KI-en til crittoen.
CRITTO_JOB_WORKERS Hvor mange bakgrunnsjobber (innsjekkinger og planlagte ting) som kjører samtidig. Standard 4.

Nyttige kommandoer:

Kommando
sudo crittod pair paringskode til en ny enhet
sudo crittod setup ai installer eller oppdater KI-apper
sudo crittod users kontoene på denne serveren
systemctl status critto kjører den?
journalctl -u critto -f loggen
curl http://127.0.0.1:8787/health en rask helsesjekk

/health viser "desktop": "on-demand" fram til Hiet trenger skrivebordsprogramvaren for første gang. Det er normalt: serveren laster den ned da.


Avinstaller

  • Debian / Ubuntu: sudo apt purge critto-server
  • Fedora / RHEL: sudo dnf remove critto-server
  • Docker: docker rm -f critto (legg til docker volume rm critto-data critto-keys critto-ai for å slette dataene også)

Dette stopper serveren og fjerner pakken og, hvis ingen andre Critto-pakker er igjen, pakkearkivet. Dataene dine i /var/lib/critto blir beholdt hvis du kommer tilbake. Slik sletter du alt:

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

Hvis du ikke vil at pakkene skal legge til pakkearkivet, kjører du echo CRITTO_REPO=no | sudo tee /etc/default/critto før installasjonen.


Feilsøking

  • Appen får ikke kontakt med serveren. Sjekk systemctl status critto på serveren, og kontroller at adressen i appen kan nås fra enheten (på en telefon betyr 127.0.0.1 selve telefonen).
  • «Paringskoden virket ikke.» Kodene varer i 10 minutter og kan brukes én gang. Lag en ny med sudo crittod pair. Bruk sudo; uten det får du en kode til en annen, personlig server.
  • En KI-app vises ikke under Tilkoblinger. Kjør sudo crittod setup ai <name> på nytt; serveren starter på nytt når den er ferdig.
  • Noe annet. journalctl -u critto -n 100 viser som regel hva som er galt.