Critto se trouve normalement dans ton compte Critto. Si tu préfères tout garder sur un ordinateur qui t’appartient, tu peux héberger toi-même le serveur Critto : tes crittos, leurs souvenirs et tes discussions restent sur cette machine, et les applis Critto pour ordinateur et téléphone s’y connectent.
Ce guide concerne Linux. Il te faut :
- un ordinateur Linux 64 bits (Intel/AMD ou ARM, par exemple un Raspberry Pi 4/5) qui reste allumé : un serveur chez toi, un mini-PC ou un petit serveur cloud ;
- environ 1 Go de mémoire libre et quelques Go d’espace disque ;
- des droits d’administration (
sudo).
Pour NixOS, une flake fournit un module NixOS. Debian, Ubuntu, Fedora, les systèmes de type RHEL et openSUSE ont des paquets adaptés avec mises à jour automatiques. Les autres systèmes peuvent utiliser l’image de conteneur ou la version autonome.
NixOS
Ajoute la flake Critto à la flake de ton système :
{
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";
};
})
];
};
};
}
Lance ensuite sudo nixos-rebuild switch --flake .#myserver, puis associe tes applis avec sudo crittod pair (étape 2).
- Mises à jour :
nix flake update critto, puis reconstruis le système. Le paquet est une version signée et précompilée (un binaire statique, sans souci avec glibc). Utiliseservices.critto.package = critto.packages.${system}.crittod-beta;pour le canal bêta. - Secrets : place
BOAT_API_KEY=…etCRITTO_BACKUP_KEY=…dans le fichierenvironmentFile(propriété de root, droits 600 ; agenix et sops-nix fonctionnent aussi). Le fichier est lu au démarrage du service et n’est jamais copié dans le store. - Réglages :
listen(par défaut127.0.0.1:8787),publicUrl,webHost,openFirewall(désactivé par défaut),dataDir(par défaut/var/lib/critto) etsettingspour toute autre variableCRITTO_*.den.backendchoisit où la Tanière fonctionne (boat,localounone; voir la Tanière). - Applis d’IA : privilégie les paquets nixpkgs dans
aiPackages(par exemplepkgs.codex,pkgs.claude-code, qui nécessiteallowUnfree). Pour ceux que nixpkgs ne propose pas, activeprograms.nix-ld.enable = true;et lancesudo crittod setup ai(étape 3). Pi nécessite seulementpkgs.nodejs_22dansaiPackages, puissudo crittod setup ai pi. - Accès à distance : active
services.tailscale.enable = true;, puis lancesudo tailscale serve --bg 8787, ou configureservices.cloudflaredavec une règle d’ingress vershttp://127.0.0.1:8787(voir étape 5). - Le service est isolé par systemd, mais conserve l’accès aux espaces de noms utilisateur (nécessaires à bubblewrap et à la Tanière locale) : ne définis donc pas
security.allowUserNamespaces = false.
Le reste de ce guide s’applique aussi à NixOS, sauf que les mises à jour se font avec nix flake update au lieu d’apt ou dnf.
1. Installer
Ouvre un terminal sur le serveur et lance :
curl -fsSL https://downloads.critto.app/install-server.sh | sh
Le script ajoute le dépôt de paquets Critto, installe le paquet critto-server, démarre le serveur et affiche un code d’association. Voilà, passe directement à Associer tes applis.
Tu veux les nouvelles versions avant tout le monde ? Utilise le canal bêta :
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Vérifier d’abord le programme d’installation (facultatif)
Le script est signé avec la clé de publication de Critto. Pour le vérifier avant de l’exécuter :
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 est disponible dans les paquets de la plupart des distributions.) Une somme de contrôle classique est aussi publiée dans install-server.sh.sha256. Les paquets sont eux aussi signés et ton gestionnaire de paquets les vérifie à chaque installation et mise à jour.
Ou configure toi-même le dépôt
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
L’empreinte de la clé est C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 (« Critto Packages packages@critto.app »).
Ou utilise 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
Le conteneur n’a besoin d’aucune permission spéciale. Tes données se trouvent dans le volume critto-data, la clé maîtresse du coffre-fort dans critto-keys (séparée des données, afin qu’une copie seule ne puisse pas déverrouiller l’autre ; voir Sauvegardes), et les applis d’IA dans critto-ai. Un secret Docker monté dans /etc/critto/vault.key convient aussi. Pour mettre à jour, lance docker pull ghcr.io/nexferra-ltd/critto-server:latest, puis recrée le conteneur avec les mêmes volumes.
Ou utilise la version autonome
Chaque version comprend aussi un fichier unique qui fonctionne sous n’importe quel Linux :
https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz
(ou -aarch64). Décompresse-le et lance ./crittod serve. Tu devras le laisser fonctionner et le mettre à jour toi-même ; les paquets sont donc plus faciles à utiliser.
2. Associer tes applis
Le serveur n’accepte que les appareils que tu as associés. Pour en associer un :
Sur le serveur, récupère un code (valable 10 minutes et utilisable une seule fois) :
sudo crittod pairDans l’appli Critto, sur l’écran de connexion, choisis Utiliser mon propre serveur Critto. Saisis l’adresse du serveur et le code.
- Sur le serveur lui-même :
http://127.0.0.1:8787 - Depuis d’autres appareils, il te faut une adresse qu’ils peuvent joindre ; consulte Accéder au serveur depuis tes autres appareils.
- Sur le serveur lui-même :
Une fois un appareil associé, tu peux en associer d’autres depuis celui-ci : Réglages → Appareils → Associer un téléphone affiche un code QR. Il contient l’adresse d’écoute du serveur ; si tes appareils y accèdent autrement (tunnel, proxy ou domaine), définis CRITTO_PUBLIC_URL avec cette adresse (voir Réglages).
Appli pour ordinateur sur la même machine ? L’appli Critto pour ordinateur démarre normalement son propre serveur privé. Si tu as installé le serveur ici, choisis Utiliser mon propre serveur Critto avec
http://127.0.0.1:8787pour que les deux utilisent les mêmes crittos.
3. Connecter tes IA
Les crittos réfléchissent avec l’IA de ton choix. Tu peux en connecter une de deux façons.
Tes abonnements IA (ChatGPT, Claude, Grok…)
Critto communique avec ces services par l’intermédiaire de leurs applis officielles en ligne de commande, à installer une fois sur le serveur :
sudo crittod setup ai
Choisis les services que tu utilises ou indique directement leurs noms :
sudo crittod setup ai codex claude.
| Appli | Abonnement compatible |
|---|---|
codex |
Forfait ChatGPT (Plus, Pro, Business…) |
claude |
Forfait Claude (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (nécessite Node.js 20+ ; le programme d’installation l’ajoute s’il le peut) |
antigravity |
Google Antigravity. Lis d’abord l’avertissement affiché : selon les conditions de Google, les autres logiciels ne doivent pas utiliser une connexion Antigravity, et Google a suspendu des comptes pour cette raison. |
Les applis sont installées dans /opt/critto-ai et ne se mettent pas à jour seules. Lance de temps en temps sudo crittod setup ai --update pour les mettre à jour.
Ensuite, dans l’appli Critto, ouvre Connexions et connecte-toi à chacune. Les connexions sont conservées sur ton serveur, pas dans l’appli.
IA personnalisée : modèles locaux et clés d’API
Active Réglages → Mode avancé, puis ouvre Réglages → IA personnalisée → Ajouter une connexion. Tout service compatible avec l’API « OpenAI-compatible » convient. Choisis un modèle prédéfini dans Partir de ou indique toi-même l’adresse :
| Service | URL de base | Clé d’API |
|---|---|---|
| Ollama sur le serveur | http://localhost:11434/v1 |
aucune |
| LM Studio sur le serveur | http://localhost:1234/v1 |
aucune |
| Ollama sur un autre ordinateur chez toi | http://192.168.1.20:11434/v1 |
aucune |
| OpenRouter | https://openrouter.ai/api/v1 |
ta clé OpenRouter |
Utilise Tester la connexion, choisis un modèle et enregistre. Tu pourras ensuite sélectionner cette IA pour n’importe quel critto.
Pour utiliser Ollama sur un autre ordinateur, démarre-le avec OLLAMA_HOST=0.0.0.0 afin qu’il accepte les connexions de ton réseau. « localhost » désigne toujours la machine du serveur Critto.
4. La Tanière (facultatif)
La Tanière est l’ordinateur de tes crittos dans le cloud, où ils réalisent des tâches plus importantes (construire, naviguer sur le Web, utiliser des applis). Un serveur hébergé par tes soins exécute les Tanières dans ton propre compte Boat. Colle ta clé d’API Boat dans l’appli, sous Connexions, ou ajoute-la au fichier de réglages sous BOAT_API_KEY, puis redémarre.
Bon à savoir :
- Ton serveur n’a pas besoin d’être accessible depuis Internet pour que la Tanière fonctionne. Il se connecte à la Tanière, pas l’inverse.
- Pour travailler dans la Tanière, l’IA doit avoir une adresse Internet publique (tes abonnements ou un service comme OpenRouter). Une IA qui fonctionne sur ton propre réseau (Ollama, LM Studio) peut discuter, mais la Tanière dans le cloud ne peut pas la joindre.
- Le temps de Tanière est facturé par Boat sur ton compte.
Ta propre Tanière, sur ta propre machine
Tu n’as pas de compte Boat ? Le serveur peut exécuter la Tanière de chaque personne dans une petite machine virtuelle sur cet ordinateur (il lui faut /dev/kvm, environ 4 Go de mémoire par Tanière pendant son fonctionnement et une compilation unique de l’image). Sous NixOS :
services.critto.den.backend = "local";
Sur les autres systèmes, définis CRITTO_DEN_BACKEND=local dans /etc/critto/critto.env. Le guide complet (prérequis, tailles, accès possibles depuis une Tanière, compilation de l’image) se trouve dans Ta propre Tanière, sur ta propre machine.
5. Accéder au serveur depuis tes autres appareils
Par défaut, le serveur n’écoute que sur son propre ordinateur (127.0.0.1:8787). C’est le réglage sûr. Pour utiliser ton téléphone ou ton ordinateur portable depuis n’importe où, choisis l’une de ces solutions. Les deux premières fournissent une adresse https:// sécurisée sans ouvrir de ports sur ton routeur.
Tailscale (le plus simple pour un usage personnel)
Installe Tailscale sur le serveur et tes appareils, connecte-les au même compte, puis lance sur le serveur :
sudo tailscale serve --bg 8787
Une adresse telle que https://myserver.tail1234.ts.net s’affiche. Utilise-la dans les applis. Seuls tes appareils peuvent y accéder.
Cloudflare Tunnel (adresse publique sur ton propre domaine)
Avec un domaine géré par Cloudflare, installe cloudflared, puis :
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
Ton serveur est alors accessible à https://critto.example.com. Chaque appareil a quand même besoin d’un code d’association.
Un proxy inverse que tu utilises déjà
Configure-le vers http://127.0.0.1:8787 en autorisant les WebSockets. Avec
Caddy, qui gère lui-même HTTPS :
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Uniquement sur ton réseau domestique
Si tous tes appareils sont chez toi, tu peux faire écouter le serveur directement sur ton réseau. Définis CRITTO_LISTEN=0.0.0.0:8787 (voir Réglages) et utilise http://<server's IP address>:8787 dans les applis. La connexion n’est pas chiffrée (http) : fais-le uniquement sur un réseau de confiance.
Quelle que soit la solution choisie, définis CRITTO_PUBLIC_URL avec cette adresse afin que les codes QR d’association l’utilisent.
6. Mises à jour
Le serveur se met à jour avec le reste de ton système :
- Debian / Ubuntu :
sudo apt update && sudo apt upgrade - Fedora / RHEL :
sudo dnf upgrade - openSUSE :
sudo zypper update
Le service redémarre tout seul après une mise à jour. Les applis pour ordinateur et téléphone sont mises à jour séparément.
7. Sauvegardes
Tout se trouve dans /var/lib/critto : tes crittos, souvenirs, discussions, fichiers et connexions IA. Les réglages se trouvent dans /etc/critto/critto.env.
Copie les fichiers toi-même. Arrête le serveur pour obtenir une copie cohérente :
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
Pendant qu’il fonctionne, le serveur conserve aussi une copie récente de sa base de données dans /var/lib/critto/backups/latest.db.
Sauvegardes hors site (S3, Cloudflare R2, Backblaze B2…). Dans l’appli, active le mode Avancé, puis ouvre Réglages → Sauvegardes → Modifier la destination…. Chiffre les sauvegardes avant qu’elles quittent ton serveur en ajoutant une clé de sauvegarde :
sudo crittod backup keygen
Copie la ligne CRITTO_BACKUP_KEY=… dans /etc/critto/critto.env, garde-en une copie dans un endroit sûr et hors ligne (les sauvegardes ne peuvent pas être restaurées sans elle), puis redémarre : sudo systemctl restart critto.
Les sauvegardes hors site sont continues :
- les changements de la base de données sont envoyés toutes les 10 secondes ;
- les fichiers des utilisateurs sont envoyés toutes les 10 minutes ;
- une copie complète est envoyée chaque jour.
Tu peux restaurer depuis le compartiment n’importe quel état des 7 derniers jours :
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 est en UTC ; omets-le pour restaurer le dernier état. Le dossier users/ restauré se trouve au même endroit.)
Pour restaurer un seul fichier de sauvegarde téléchargé (un instantané quotidien), place-le dans un emplacement lisible par l’utilisateur critto (par exemple /var/lib/critto), puis :
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
Clés du coffre-fort. Les clés et mots de passe enregistrés sont chiffrés avec une clé maîtresse dans /etc/critto/vault.key (créée à l’installation, lisible uniquement par l’utilisateur critto ; dans Docker, volume critto-keys ; sous NixOS, services.critto.vaultKeyFile, par défaut /var/lib/critto-keys/vault.key : toujours hors des données). Elle n’est jamais incluse dans une sauvegarde. La liste des clés par compte qu’elle déverrouille (/var/lib/critto/vault/keys.db) est sauvegardée séparément à côté des autres, dans vault/, chiffrée et conservée 30 jours, mais uniquement si tu fournis une clé de récupération :
sudo crittod vault recovery-keygen
Ajoute la ligne CRITTO_VAULT_BACKUP_RECIPIENT=… à /etc/critto/critto.env, puis redémarre. Garde l’identité de récupération affichée et une copie de /etc/critto/vault.key hors ligne, dans ton gestionnaire de mots de passe : jamais sur le serveur. Pour restaurer après la perte du serveur, remets vault.key, télécharge vault/latest.db.age, puis :
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Réglages
Le serveur lit /etc/critto/critto.env. Chaque option y est répertoriée avec une explication. Modifie ce fichier avec sudo nano /etc/critto/critto.env, puis lance sudo systemctl restart critto. Voici les options courantes :
| Réglage | Fonction |
|---|---|
CRITTO_LISTEN |
Adresse d’écoute du serveur. Par défaut 127.0.0.1:8787 (cet ordinateur uniquement). |
CRITTO_PUBLIC_URL |
Adresse utilisée par tes appareils, par exemple https://critto.example.com. |
BOAT_API_KEY |
Ta clé Boat pour la Tanière. |
CRITTO_BACKUP_KEY |
Chiffre les sauvegardes hors site. |
CRITTO_ANTIGRAVITY=0 |
Masque Antigravity. |
CRITTO_PROACTIVE=0 |
Empêche les crittos de prendre des nouvelles d’eux-mêmes (les tâches programmées attendent). Sans Critto Smarts, les suivis utilisent l’IA propre au critto. |
CRITTO_JOB_WORKERS |
Nombre de tâches en arrière-plan (suivis, tâches programmées) exécutées simultanément. Valeur par défaut : 4. |
Commandes utiles :
| Commande | |
|---|---|
sudo crittod pair |
obtenir un code d’association pour un nouvel appareil |
sudo crittod setup ai |
installer ou mettre à jour les applis d’IA |
sudo crittod users |
afficher les comptes de ce serveur |
systemctl status critto |
vérifier s’il fonctionne |
journalctl -u critto -f |
afficher son journal |
curl http://127.0.0.1:8787/health |
effectuer un contrôle rapide |
/health indique "desktop": "on-demand" jusqu’à ce qu’une Tanière ait besoin de son logiciel de bureau pour la première fois. C’est normal : le serveur le télécharge alors.
Désinstaller
- Debian / Ubuntu :
sudo apt purge critto-server - Fedora / RHEL :
sudo dnf remove critto-server - Docker :
docker rm -f critto(ajoutedocker volume rm critto-data critto-keys critto-aipour supprimer aussi les données)
Cette commande arrête le serveur et supprime le paquet ainsi que, s’il ne reste aucun autre paquet Critto, le dépôt. Tes données dans /var/lib/critto sont conservées au cas où tu reviendrais. Pour tout supprimer :
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Pour empêcher les paquets d’ajouter le dépôt dès le départ, lance echo CRITTO_REPO=no | sudo tee /etc/default/critto avant l’installation.
Dépannage
- L’appli indique qu’elle n’arrive pas à joindre le serveur. Vérifie
systemctl status crittosur le serveur et que l’appareil peut accéder à l’adresse indiquée dans l’appli (depuis un téléphone,127.0.0.1désigne le téléphone lui-même). - « Le code d’association n’a pas fonctionné. » Les codes sont valables 10 minutes et ne servent qu’une fois. Génère-en un autre avec
sudo crittod pair. Utilisesudo: sans cette commande, tu obtiendras un code pour un autre serveur personnel. - Une appli d’IA n’apparaît pas dans Connexions. Relance
sudo crittod setup ai <name>; le serveur redémarre à la fin. - Autre problème.
journalctl -u critto -n 100indique généralement ce qui ne va pas.