Normalmente, Critto vive en tu cuenta de Critto. Si prefieres tenerlo todo en un ordenador tuyo, puedes ejecutar tú mismo el servidor de Critto: tus crittos, sus recuerdos y tus chats se quedan en ese ordenador, y las apps de Critto para escritorio y móvil se conectan a él.
Esta guía es para Linux. Necesitarás:
- un ordenador Linux de 64 bits (Intel/AMD o ARM, por ejemplo, una Raspberry Pi 4/5) que esté siempre encendido: un servidor doméstico, un mini PC o un pequeño servidor en la nube;
- aproximadamente 1 GB de memoria libre y unos cuantos GB de disco;
- permisos de administrador (
sudo).
Para NixOS hay un flake con un módulo de NixOS. Debian, Ubuntu, Fedora, los sistemas basados en RHEL y openSUSE tienen paquetes nativos con actualizaciones automáticas. En cualquier otro sistema, puedes usar la imagen de contenedor o la compilación estática.
NixOS
Añade el flake de Critto al flake de tu sistema:
{
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";
};
})
];
};
};
}
Después, ejecuta sudo nixos-rebuild switch --flake .#myserver y vincula tus
apps con sudo crittod pair (paso 2).
- Actualizaciones: ejecuta
nix flake update crittoy vuelve a compilar. El paquete es la versión firmada y precompilada (un binario estático, así que no tendrás problemas con glibc). Para el canal beta, usaservices.critto.package = critto.packages.${system}.crittod-beta;. - Secretos: añade
BOAT_API_KEY=…yCRITTO_BACKUP_KEY=…aenvironmentFile(propiedad de root, modo 600; también sirven agenix y sops-nix). Se lee al iniciar el servicio y nunca se copia al almacén. - Ajustes:
listen(por defecto,127.0.0.1:8787),publicUrl,webHost,openFirewall(desactivado por defecto),dataDir(por defecto,/var/lib/critto) ysettingspara cualquier otra variableCRITTO_*.den.backendelige dónde se ejecuta la Madriguera (boat,localonone; consulta la Madriguera). - Apps de IA: es mejor usar paquetes de nixpkgs en
aiPackages(por ejemplo,pkgs.codexopkgs.claude-code, que requiereallowUnfree). Para las que no están en nixpkgs, activaprograms.nix-ld.enable = true;y usasudo crittod setup ai(paso 3). Pi solo necesitapkgs.nodejs_22enaiPackages; después ejecutasudo crittod setup ai pi. - Acceso remoto: activa
services.tailscale.enable = true;y ejecutasudo tailscale serve --bg 8787, o configuraservices.cloudflaredcon una regla de entrada ahttp://127.0.0.1:8787(consulta el paso 5). - systemd ejecuta el servicio en un entorno aislado, pero mantiene disponibles
los espacios de nombres de usuario (bubblewrap y la Madriguera local los necesitan), así que no establezcas
security.allowUserNamespaces = false.
El resto de esta guía también sirve para NixOS, salvo que las actualizaciones
se hacen con nix flake update en vez de apt o dnf.
1. Instalar
Abre un terminal en el servidor y ejecuta:
curl -fsSL https://downloads.critto.app/install-server.sh | sh
Añade el repositorio de paquetes de Critto, instala el paquete critto-server,
inicia el servidor y muestra un código de vinculación. Eso es todo: ve a
Vincular tus apps.
¿Quieres probar las nuevas versiones antes que nadie? Usa el canal beta:
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Comprobar el instalador primero (opcional)
El script está firmado con la clave de publicación de Critto. Para verificarlo antes de ejecutarlo:
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á en los paquetes de la mayoría de distribuciones.) También
hay una suma de comprobación normal en install-server.sh.sha256. Los propios
paquetes también están firmados y tu gestor de paquetes los comprueba en cada
instalación y actualización.
O configura tú mismo el repositorio
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
La huella digital de la clave es C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3
(«Critto Packages packages@critto.app»).
O usa 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
El contenedor no necesita permisos especiales. Tus datos se guardan en el
volumen critto-data; la clave maestra de la bóveda, en critto-keys (separada
de los datos, para que una copia de uno no permita abrir el otro; consulta Copias de seguridad),
y las apps de IA, en critto-ai. También puedes montar un secreto de Docker en
/etc/critto/vault.key. Para actualizar, ejecuta
docker pull ghcr.io/nexferra-ltd/critto-server:latest y vuelve a crear el
contenedor con los mismos volúmenes.
O usa la compilación estática
Cada versión también incluye una compilación de un solo archivo que funciona en cualquier Linux:
https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz
(o -aarch64). Descomprímela y ejecuta ./crittod serve. Tendrás que mantenerla
en funcionamiento y actualizarla tú, así que los paquetes son la opción más sencilla.
2. Vincular tus apps
El servidor solo permite conectarse a los dispositivos que hayas vinculado. Para vincular uno:
En el servidor, genera un código (es válido durante 10 minutos y solo se puede usar una vez):
sudo crittod pairEn la app de Critto, en la pantalla de inicio de sesión, elige Usar mi propio servidor de Critto. Introduce la dirección del servidor y el código.
- En el propio servidor:
http://127.0.0.1:8787 - Para conectarte desde otros dispositivos, necesitarás una dirección a la que puedan acceder; consulta Acceder desde tus otros dispositivos.
- En el propio servidor:
Cuando hayas vinculado un dispositivo, puedes vincular más desde él: Ajustes → Dispositivos →
Vincular un móvil muestra un código QR. Incluye la dirección en la que escucha el servidor.
Si tus dispositivos acceden a él de otra forma (mediante un túnel, un proxy o un dominio),
asigna esa dirección a CRITTO_PUBLIC_URL (consulta Ajustes).
¿Usas la app de escritorio en el mismo ordenador? Normalmente, la app de escritorio inicia su propio servidor privado de Critto. Si has instalado aquí el servidor, elige Usar mi propio servidor de Critto con
http://127.0.0.1:8787para que ambos usen los mismos crittos.
3. Conectar tus IA
Tus crittos piensan con la IA que elijas. Puedes conectarla de dos formas.
Tus suscripciones de IA (ChatGPT, Claude, Grok…)
Critto se conecta a estas IA mediante sus apps oficiales de línea de comandos, que se instalan una sola vez en el servidor:
sudo crittod setup ai
Elige las que usas o indica sus nombres directamente:
sudo crittod setup ai codex claude.
| App | Úsala con |
|---|---|
codex |
un plan de ChatGPT (Plus, Pro, Business…) |
claude |
un plan de Claude (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (necesita Node.js 20 o posterior; el instalador lo añade si puede) |
antigravity |
Google Antigravity. Lee antes el aviso que aparece: las condiciones de Google dicen que otros programas no deberían usar el inicio de sesión de Antigravity, y Google ha suspendido cuentas por hacerlo. |
Se instalan en /opt/critto-ai y no se actualizan automáticamente. Ejecuta
sudo crittod setup ai --update de vez en cuando para actualizarlas.
Después, abre Conexiones en la app de Critto e inicia sesión en cada una. Los datos de acceso se guardan en el servidor, no en la app.
IA personalizada: modelos locales y claves de API
Activa Ajustes → Modo avanzado y ve a Ajustes → IA personalizada → Añadir conexión. Funciona cualquier servicio compatible con la API «OpenAI-compatible». Elige un preajuste en Empezar desde o introduce la dirección tú mismo:
| Servicio | URL base | Clave de API |
|---|---|---|
| Ollama en el servidor | http://localhost:11434/v1 |
ninguna |
| LM Studio en el servidor | http://localhost:1234/v1 |
ninguna |
| Ollama en otro ordenador de casa | http://192.168.1.20:11434/v1 |
ninguna |
| OpenRouter | https://openrouter.ai/api/v1 |
tu clave de OpenRouter |
Pulsa Probar conexión, elige un modelo y guarda los cambios. Después podrás elegir esa IA para cualquier critto.
Para usar Ollama en otro ordenador, inícialo con OLLAMA_HOST=0.0.0.0 para que
acepte conexiones de tu red. «localhost» siempre se refiere al propio ordenador
que ejecuta el servidor de Critto.
4. La Madriguera (opcional)
La Madriguera es el ordenador en la nube de tus crittos, donde hacen tareas más grandes
(crear cosas, navegar por Internet y usar apps). Un servidor propio ejecuta las Madriguera en tu
cuenta de Boat. Pega tu clave de API de Boat en la app, en
Conexiones, o añádela al archivo de ajustes como BOAT_API_KEY y reinicia.
Ten en cuenta:
- El servidor no necesita ser accesible desde Internet para que funcione la Madriguera. El servidor se conecta a la Madriguera, no al revés.
- Para trabajar en la Madriguera necesitas una IA con una dirección pública de Internet (tus suscripciones o un servicio como OpenRouter). Una IA que funcione en tu propia red (Ollama, LM Studio) puede chatear, pero la Madriguera en la nube no puede acceder a ella.
- Boat cobra en tu cuenta el tiempo de uso de la Madriguera.
Tu propia Madriguera, en tu propio ordenador
¿No tienes cuenta de Boat? En su lugar, el servidor puede ejecutar la Madriguera de cada persona
como una pequeña máquina virtual en este ordenador (necesita /dev/kvm, unos 4 GB de memoria
por Madriguera mientras funciona y generar una imagen una sola vez). En NixOS:
services.critto.den.backend = "local";
En otros sistemas, añade CRITTO_DEN_BACKEND=local a /etc/critto/critto.env. La guía
completa (requisitos, tamaños, a qué puede acceder una Madriguera y cómo generar la imagen) está en
Tu propia Madriguera, en tu propio ordenador.
5. Acceder desde tus otros dispositivos
De forma predeterminada, el servidor solo escucha en su propio ordenador
(127.0.0.1:8787). Es la opción más segura. Para usar el móvil o el portátil
desde cualquier sitio, elige una de estas opciones. Las dos primeras te dan una
dirección segura https:// sin abrir puertos en el router.
Tailscale (la opción más sencilla para uso personal)
Instala Tailscale en el servidor y tus dispositivos, inicia sesión con la misma cuenta y, después, en el servidor:
sudo tailscale serve --bg 8787
Mostrará una dirección como https://myserver.tail1234.ts.net. Úsala en las
apps. Solo tus dispositivos podrán acceder.
Cloudflare Tunnel (una dirección pública en tu propio dominio)
Si tienes un dominio en Cloudflare, instala cloudflared, después:
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
Tu servidor estará en https://critto.example.com. Seguirás necesitando un
código de vinculación para cada dispositivo.
Un proxy inverso que ya tengas
Dirígelo a http://127.0.0.1:8787 y permite WebSockets. Con
Caddy, que gestiona HTTPS automáticamente:
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Solo en tu red doméstica
Si todos tus dispositivos están en casa, puedes hacer que el servidor escuche
directamente en tu red. Configura CRITTO_LISTEN=0.0.0.0:8787 (consulta Ajustes) y usa
http://<server's IP address>:8787 en las apps. Es una conexión http normal, así que solo
hazlo en una red de confianza.
Elijas lo que elijas, asigna esa dirección a CRITTO_PUBLIC_URL para que los códigos QR
de vinculación apunten a ella.
6. Actualizaciones
El servidor se actualiza junto con el resto del sistema:
- Debian / Ubuntu:
sudo apt update && sudo apt upgrade - Fedora / RHEL:
sudo dnf upgrade - openSUSE:
sudo zypper update
El servicio se reinicia automáticamente después de actualizarse. Las apps de escritorio y móvil se actualizan por separado.
7. Copias de seguridad
Todo se guarda en /var/lib/critto: tus crittos, recuerdos, chats, archivos
y accesos a IA. Los ajustes están en /etc/critto/critto.env.
Haz tú mismo una copia. Detén el servidor para que la copia sea coherente:
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
Mientras está en funcionamiento, el servidor también guarda una copia reciente de su base de datos en
/var/lib/critto/backups/latest.db.
Copias de seguridad externas (S3, Cloudflare R2, Backblaze B2…). En la app, activa Modo avanzado y ve a Ajustes → Copias de seguridad → Cambiar destino…. Cífralas antes de que salgan del servidor; para ello, añade una clave de copia de seguridad:
sudo crittod backup keygen
Copia la línea CRITTO_BACKUP_KEY=… en /etc/critto/critto.env, guarda una copia
en un lugar seguro y sin conexión (sin ella no podrás restaurar las copias) y
reinicia el servidor: sudo systemctl restart critto.
Las copias externas se realizan de forma continua:
- los cambios de la base de datos se suben cada 10 segundos;
- los archivos de cada persona se suben cada 10 minutos;
- se sube una copia completa cada día.
Puedes restaurar directamente desde el almacenamiento cualquier momento de los últimos 7 días:
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; omítelo para restaurar el estado más reciente. La carpeta users/
restaurada queda en el mismo sitio.)
Para restaurar una copia externa, descarga el archivo desde tu almacenamiento y
colócalo en un lugar que el usuario critto pueda leer (por ejemplo, /var/lib/critto). Después:
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
Las claves de la bóveda. Las claves y contraseñas guardadas se cifran con
una clave maestra en /etc/critto/vault.key (se crea durante la instalación y solo
puede leerla el usuario critto; en Docker está en el volumen critto-keys, y en
NixOS en services.critto.vaultKeyFile, cuyo valor predeterminado es
/var/lib/critto-keys/vault.key: siempre fuera de los datos).
Nunca se incluye en una copia de seguridad. La lista de claves por cuenta que
desbloquea (/var/lib/critto/vault/keys.db) tiene su propia copia cifrada junto a las demás,
en vault/, conservada durante 30 días; esto solo ocurre si proporcionas una clave de recuperación:
sudo crittod vault recovery-keygen
Añade la línea CRITTO_VAULT_BACKUP_RECIPIENT=… a /etc/critto/critto.env y
reinicia. Guarda la identidad de recuperación impresa y una copia de
/etc/critto/vault.key sin conexión, en tu gestor de contraseñas; nunca en el servidor.
Para restaurar después de perder el servidor, devuelve vault.key, descarga
vault/latest.db.age y ejecuta:
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Ajustes
El servidor lee /etc/critto/critto.env. Allí se enumeran y explican todas las opciones.
Edítalo con sudo nano /etc/critto/critto.env y luego ejecuta
sudo systemctl restart critto. Estas son las más habituales:
| Ajuste | Función |
|---|---|
CRITTO_LISTEN |
Dirección en la que escucha el servidor. Por defecto, 127.0.0.1:8787 (solo este ordenador). |
CRITTO_PUBLIC_URL |
Dirección que usan tus dispositivos, por ejemplo, https://critto.example.com. |
BOAT_API_KEY |
Tu clave de Boat para la Madriguera. |
CRITTO_BACKUP_KEY |
Cifra las copias de seguridad externas. |
CRITTO_ANTIGRAVITY=0 |
Oculta Antigravity. |
CRITTO_PROACTIVE=0 |
Los crittos no inician conversaciones por su cuenta (las tareas programadas quedan en espera). Sin Critto Smarts, los avisos usan la IA propia del critto. |
CRITTO_JOB_WORKERS |
Número de tareas en segundo plano (avisos y tareas programadas) que se ejecutan a la vez. Valor predeterminado: 4. |
Comandos útiles:
| Comando | |
|---|---|
sudo crittod pair |
Genera un código de vinculación para un dispositivo nuevo |
sudo crittod setup ai |
Instala o actualiza apps de IA |
sudo crittod users |
Muestra las cuentas de este servidor |
systemctl status critto |
Indica si está en funcionamiento |
journalctl -u critto -f |
Muestra su registro |
curl http://127.0.0.1:8787/health |
Hace una comprobación rápida de estado |
/health muestra "desktop": "on-demand" hasta que una Madriguera necesita por primera vez
el software de escritorio. Es normal: el servidor lo descarga en ese momento.
Desinstalar
- Debian / Ubuntu:
sudo apt purge critto-server - Fedora / RHEL:
sudo dnf remove critto-server - Docker:
docker rm -f critto(añadedocker volume rm critto-data critto-keys critto-aipara eliminar también los datos)
Esto detiene el servidor y elimina el paquete y, si no queda ningún otro paquete de Critto,
también el repositorio. Tus datos de /var/lib/critto se conservan por si vuelves.
Para eliminarlo todo:
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Para evitar que los paquetes añadan el repositorio desde el principio, ejecuta
echo CRITTO_REPO=no | sudo tee /etc/default/critto antes de instalar.
Solución de problemas
- La app dice que no puede conectarse al servidor. Comprueba
systemctl status crittoen el servidor y verifica que el dispositivo pueda acceder a la dirección de la app (desde un móvil,127.0.0.1se refiere al propio móvil). - «El código de vinculación no funciona». Los códigos son válidos durante 10 minutos y solo se pueden usar una vez.
Genera uno nuevo con
sudo crittod pair. Ejecútalo consudo: si no, recibirás un código para otro servidor personal. - Una app de IA no aparece en Conexiones. Vuelve a ejecutar
sudo crittod setup ai <name>; al terminar, se reiniciará el servidor. - Otro problema. Normalmente,
journalctl -u critto -n 100indica qué ocurre.