Critto findes normalt på din Critto-konto. Hvis du hellere vil beholde det hele på en computer, du selv ejer, kan du selv køre Critto-serveren: dine crittoer, deres minder og dine chats bliver på computeren, og Critto-appene til computer og telefon forbinder til den.

Denne vejledning er til Linux. Du skal bruge:

  • en 64-bit Linux-computer (Intel/AMD eller ARM, f.eks. en Raspberry Pi 4/5), der altid er tændt: en hjemmeserver, en mini-pc eller en lille server i skyen,
  • cirka 1 GB ledig hukommelse og nogle få GB diskplads,
  • administratorrettigheder (sudo).

Til NixOS findes der en flake med et NixOS-modul. Debian, Ubuntu, Fedora, RHEL-lignende systemer og openSUSE får egentlige pakker med automatiske opdateringer. Andre systemer kan bruge containerafbildningen eller den statiske udgave.


NixOS

Føj Critto-flaken til din systemflake:

{
  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 derefter sudo nixos-rebuild switch --flake .#myserver, og par dine apps med sudo crittod pair (trin 2).

  • Opdateringer: Kør nix flake update critto, og byg derefter igen. Pakken er den underskrevne, færdigbyggede udgave (en statisk binærfil, så du undgår problemer med glibc). Brug services.critto.package = critto.packages.${system}.crittod-beta; til betakanalen.
  • Hemmeligheder: Læg BOAT_API_KEY=… og CRITTO_BACKUP_KEY=… i environmentFile (ejet af root, tilstand 600; agenix og sops-nix virker også). Filen læses, når tjenesten starter, og kopieres aldrig til lageret.
  • Indstillinger: listen (standard 127.0.0.1:8787), publicUrl, webHost, openFirewall (slået fra som standard), dataDir (standard /var/lib/critto) og settings til andre CRITTO_*-variabler. den.backend vælger, hvor Hulen kører (boat, local eller none; se Hulen).
  • AI-apps: Brug helst pakker fra nixpkgs i aiPackages (f.eks. pkgs.codex, pkgs.claude-code, som kræver allowUnfree). Hvis nixpkgs ikke har dem, skal du sætte programs.nix-ld.enable = true; og bruge sudo crittod setup ai (trin 3). Pi skal kun bruge pkgs.nodejs_22 i aiPackages; kør derefter sudo crittod setup ai pi.
  • Fjernadgang: Sæt services.tailscale.enable = true;, og kør derefter sudo tailscale serve --bg 8787, eller brug services.cloudflared med en ingressregel til http://127.0.0.1:8787 (se trin 5).
  • Tjenesten er isoleret med systemd, men bruger-namespaces er stadig tilgængelige (bubblewrap og den lokale Hulen skal bruge dem), så sæt ikke security.allowUserNamespaces = false.

Resten af vejledningen gælder også for NixOS, bortset fra at opdateringer kommer fra nix flake update i stedet for apt eller dnf.


1. Installér

Åbn en terminal på serveren, og kør:

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

Det tilføjer Critto-pakkearkivet, installerer pakken critto-server, starter serveren og viser en parringskode. Gå direkte til Par dine apps.

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

Kontrollér installationsprogrammet først (valgfrit)

Scriptet er underskrevet med Critto-udgivelsesnøglen. Sådan bekræfter du underskriften, før du kø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 findes i pakkerne til de fleste distributioner.) Der findes også en almindelig kontrolsum i install-server.sh.sha256. Pakkerne er også underskrevet, og din pakkehåndtering kontrollerer dem ved hver installation og opdatering.

Eller opsæt arkivet 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øglens fingeraftryk er C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 (»Critto Packages packages@critto.app«).

Eller brug 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 kræver ingen særlige tilladelser. Dine data ligger i diskenheden critto-data, hovednøglen til boksen i critto-keys (adskilt fra dataene, så en kopi af den ene ikke kan åbne den anden; se Sikkerhedskopier) og AI-appene i critto-ai. Du kan også montere en Docker-hemmelighed på /etc/critto/vault.key. Opdatér med docker pull ghcr.io/nexferra-ltd/critto-server:latest, og opret derefter containeren igen med de samme diskenheder.

Eller brug den statiske udgave

Hver udgivelse har også en enkeltfiludgave, der kører på alle Linux-systemer: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (eller -aarch64). Pak den ud, og kør ./crittod serve. Du skal selv sørge for, at den kører og holdes opdateret, så pakkerne er nemmere.


2. Par dine apps

Serveren giver kun adgang til enheder, du har parret. Sådan parrer du en enhed:

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

    sudo crittod pair
    
  2. Vælg Brug min egen Critto-server på login-skærmen i Critto-appen. Indtast serverens adresse og koden.

Når én enhed er parret, kan du parre flere fra den: Indstillinger → Enheder → Par en telefon viser en QR-kode. Den indeholder adressen, som serveren lytter på. Hvis dine enheder får adgang på en anden måde (en tunnel, proxy eller et domæne), skal du sætte CRITTO_PUBLIC_URL til den adresse (se Indstillinger).

Bruger du computerappen på samme computer? Computerappen starter normalt sin egen private Critto-server. Hvis du har installeret serveren her, skal du i stedet vælge Brug min egen Critto-server med http://127.0.0.1:8787, så begge bruger de samme crittoer.


3. Forbind dine AI'er

Crittoer tænker med en AI, du vælger. Du kan tilføje en på to måder.

Dine AI-abonnementer (ChatGPT, Claude, Grok…)

Critto bruger deres officielle kommandolinjeapps, som du installerer på serveren én gang:

sudo crittod setup ai

Vælg dem, du bruger, eller angiv dem direkte: sudo crittod setup ai codex claude.

App Bruges med
codex et ChatGPT-abonnement (Plus, Pro, Business…)
claude et Claude-abonnement (Pro, Max…)
grok SuperGrok / X Premium
muse Meta AI (kræver Node.js 20+; installationsprogrammet tilføjer det, hvis muligt)
antigravity Google Antigravity. Læs først den viste advarsel: Googles vilkår siger, at anden software ikke må bruge et Antigravity-login, og Google har suspenderet konti på grund af det.

De installeres i /opt/critto-ai og opdaterer ikke sig selv. Kør sudo crittod setup ai --update en gang imellem for at opdatere dem.

Åbn derefter Forbindelser i Critto-appen, og log ind på hver af dem. Loginoplysningerne gemmes på serveren, ikke i appen.

Tilpasset AI: lokale modeller og API-nøgler

Slå Indstillinger → Avanceret tilstand til, og vælg derefter Indstillinger → Tilpasset AI → Tilføj forbindelse. Alt, der understøtter den »OpenAI-kompatible« API, virker. Vælg en forudindstilling under Start med, eller indtast selv adressen:

Tjeneste Basis-URL API-nøgle
Ollama på serveren http://localhost:11434/v1 ingen
LM Studio på serveren http://localhost:1234/v1 ingen
Ollama på en anden computer derhjemme http://192.168.1.20:11434/v1 ingen
OpenRouter https://openrouter.ai/api/v1 din OpenRouter-nøgle

Vælg Test forbindelsen, vælg en model, og gem. Nu kan du vælge den AI til alle crittoer.

Hvis Ollama kører på en anden computer, skal du starte den med OLLAMA_HOST=0.0.0.0, så den accepterer forbindelser fra dit netværk. »localhost« betyder altid selve Critto-serveren.


4. Hulen (valgfrit)

Hulen er dine crittoers egen computer i skyen, hvor de kan løse større opgaver (bygge ting, gå på nettet og bruge apps). En selvhostet server kører Hulen-miljøer på din egen Boat-konto. Indsæt din Boat-API-nøgle i appen under Forbindelser, eller skriv den i indstillingsfilen som BOAT_API_KEY, og genstart.

Godt at vide:

  • Serveren behøver ikke være tilgængelig fra internettet, for at Hulen kan fungere. Den kommunikerer med Hulen, ikke omvendt.
  • Arbejde i Hulen kræver en AI med en offentlig internetadresse (dit abonnement eller en tjeneste som OpenRouter). En AI på dit eget netværk (Ollama, LM Studio) kan chatte, men Hulen i skyen kan ikke nå den.
  • Boat opkræver betaling for tid i Hulen på din konto.

Din egen Hulen på din egen computer

Ingen Boat-konto? Serveren kan i stedet køre hver persons Hulen som en lille virtuel maskine på denne computer (den kræver /dev/kvm, cirka 4 GB hukommelse pr. Hulen, mens den kører, og at et afbildningsarkiv bygges én gang). På NixOS:

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

På andre systemer skal du skrive CRITTO_DEN_BACKEND=local i /etc/critto/critto.env. Hele vejledningen (krav, størrelser, hvad en Hulen kan få adgang til, og hvordan afbildningen bygges) findes under Din egen Hulen på din egen computer.


5. Få adgang fra dine andre enheder

Som standard lytter serveren kun på sin egen computer (127.0.0.1:8787). Det er den sikre standardindstilling. Hvis du vil bruge telefon eller bærbar overalt fra, kan du vælge en af mulighederne her. De to første giver dig en sikker https://-adresse uden at åbne porte på routeren.

Tailscale (nemmest til personlig brug)

Installér Tailscale på serveren og dine enheder, log ind på den samme konto, og kør derefter på serveren:

sudo tailscale serve --bg 8787

Den viser en adresse som https://myserver.tail1234.ts.net. Brug den i appsene. Kun dine egne enheder kan få adgang.

Cloudflare Tunnel (en offentlig adresse på dit eget domæne)

Hvis du har et domæne hos Cloudflare, skal du installere cloudflared, og derefter køre:

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

Nu findes serveren på https://critto.example.com. Alle enheder skal stadig bruge en parringskode.

En omvendt proxy, du allerede kører

Peg den på http://127.0.0.1:8787, og tillad WebSockets. Med Caddy, som håndterer HTTPS selv:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

Kun på dit hjemmenetværk

Hvis alle enheder er derhjemme, kan du lade serveren lytte direkte på netværket. Sæt CRITTO_LISTEN=0.0.0.0:8787 (se Indstillinger), og brug http://<server's IP address>:8787 i appsene. Det er almindelig http, så gør det kun på et netværk, du har tillid til.

Uanset hvad du vælger, skal du sætte CRITTO_PUBLIC_URL til adressen, så parrings-QR-koderne peger på den.


6. Opdateringer

Serveren opdateres sammen med resten af systemet:

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

Tjenesten genstarter selv efter en opdatering. Computer- og telefonapps opdateres separat.


7. Sikkerhedskopier

Alt ligger i /var/lib/critto: dine crittoer, minder, chats, filer og AI-logins. Indstillingerne ligger i /etc/critto/critto.env.

Lav selv en sikkerhedskopi. Stop serveren, så kopien bliver konsistent:

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 gemmer også en ny kopi af sin database i /var/lib/critto/backups/latest.db, mens den kører.

Sikkerhedskopier uden for serveren (S3, Cloudflare R2, Backblaze B2…). Slå Avanceret tilstand til i appen, og vælg derefter Indstillinger → Sikkerhedskopier → Skift placering… Krypter dem, før de forlader serveren, ved at tilføje en sikkerhedskopinøgle:

sudo crittod backup keygen

Kopiér linjen CRITTO_BACKUP_KEY=… til /etc/critto/critto.env, opbevar en kopi et sikkert sted uden internet (sikkerhedskopier kan ikke gendannes uden den), og genstart: sudo systemctl restart critto.

Sikkerhedskopier uden for serveren opdateres løbende:

  • Ændringer i databasen sendes op hvert 10. sekund;
  • folks filer sendes op hvert 10. minut;
  • en fuld kopi sendes op hver dag.

Du kan gendanne fra et vilkårligt tidspunkt inden for de seneste 7 dage direkte fra lageret:

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 er UTC; udelad den for den nyeste tilstand. Den gendannede users/-mappe ligger samme sted.)

Hvis du vil gendanne en sikkerhedskopi fra et andet sted, skal du downloade sikkerhedskopifilen fra dit lager og lægge den et sted, hvor brugeren critto kan læse den (f.eks. /var/lib/critto). Kør derefter:

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

Boksens nøgler. Gemte nøgler og adgangskoder krypteres med en hovednøgle i /etc/critto/vault.key (oprettes ved installationen og kan kun læses af brugeren critto; i Docker ligger den i diskenheden critto-keys, på NixOS i services.critto.vaultKeyFile, der som standard er /var/lib/critto-keys/vault.key: altid uden for dataene). Den kommer aldrig med i en sikkerhedskopi. Listen over kontonøgler, den låser op (/var/lib/critto/vault/keys.db), får sin egen krypterede sikkerhedskopi ved siden af de andre i vault/, som opbevares i 30 dage, men kun hvis du angiver en gendannelsesnøgle:

sudo crittod vault recovery-keygen

Sæt linjen CRITTO_VAULT_BACKUP_RECIPIENT=… i /etc/critto/critto.env, og genstart. Opbevar den viste gendannelsesidentitet og en kopi af /etc/critto/vault.key et sikkert sted offline, f.eks. i din adgangskodeadministrator – aldrig på serveren. Hvis du skal gendanne efter at have mistet serveren, skal du lægge vault.key tilbage, hente vault/latest.db.age og derefter køre:

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

Indstillinger

Serveren læser /etc/critto/critto.env. Alle valgmuligheder er angivet med en forklaring. Redigér filen med sudo nano /etc/critto/critto.env, og kør derefter sudo systemctl restart critto. De mest almindelige:

Indstilling Hvad den gør
CRITTO_LISTEN Hvor serveren lytter. Standard 127.0.0.1:8787 (kun denne computer).
CRITTO_PUBLIC_URL Adressen, dine enheder bruger, f.eks. https://critto.example.com.
BOAT_API_KEY Din Boat-nøgle til Hulen.
CRITTO_BACKUP_KEY Krypterer sikkerhedskopier uden for serveren.
CRITTO_ANTIGRAVITY=0 Skjuler Antigravity.
CRITTO_PROACTIVE=0 Crittos tjekker ikke selv ind (planlagte ting venter). Uden Critto Smarts tænker de med crittoens egen AI under tjek-ins.
CRITTO_JOB_WORKERS Antal baggrundsopgaver (tjek-ins, planlagte ting), der kører samtidig. Standard: 4.

Nyttige kommandoer:

Kommando
sudo crittod pair en parringskode til en ny enhed
sudo crittod setup ai installér eller opdatér AI-apps
sudo crittod users kontiene på denne server
systemctl status critto kører den?
journalctl -u critto -f dens log
curl http://127.0.0.1:8787/health et hurtigt sundhedstjek

/health viser "desktop": "on-demand", indtil en Hulen får brug for sin desktopsoftware første gang. Det er normalt: Serveren downloader den dér.


Afinstallation

  • Debian / Ubuntu: sudo apt purge critto-server
  • Fedora / RHEL: sudo dnf remove critto-server
  • Docker: docker rm -f critto (tilføj docker volume rm critto-data critto-keys critto-ai, hvis dataene også skal slettes)

Dette stopper serveren og fjerner pakken og, hvis der ikke er andre Critto-pakker tilbage, arkivet. Dine data i /var/lib/critto bevares, hvis du kommer tilbage. Sådan sletter du alt:

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

Hvis pakkerne ikke skal tilføje arkivet under installationen, skal du køre echo CRITTO_REPO=no | sudo tee /etc/default/critto før installationen.


Fejlfinding

  • Appen siger, at den ikke kan få forbindelse til serveren. Kontrollér systemctl status critto på serveren, og kontrollér, at appens adresse kan nås fra enheden (fra en telefon betyder 127.0.0.1 selve telefonen).
  • »Parringskoden virkede ikke.« Koder gælder i 10 minutter og kan kun bruges én gang. Lav en ny med sudo crittod pair. Kør kommandoen med sudo: uden det får du en kode til en anden, personlig server.
  • En AI-app vises ikke under Forbindelser. Kør sudo crittod setup ai <name> igen; serveren genstarter, når den er færdig.
  • Noget andet. journalctl -u critto -n 100 viser som regel, hvad der er galt.