Зазвичай Critto працює у твоєму акаунті Critto. Якщо хочеш зберігати все на власному комп’ютері, можеш самостійно запустити сервер Critto: твої крітто, їхні спогади й чати залишаться на цьому комп’ютері, а настільний і телефонний застосунки Critto підключатимуться до нього.
Цей посібник для Linux. Тобі знадобиться:
- 64-бітний комп’ютер із Linux (Intel/AMD або ARM, наприклад Raspberry Pi 4/5), який постійно ввімкнений: домашній сервер, мінікомп’ютер або невеликий хмарний сервер;
- приблизно 1 ГБ вільної пам’яті й кілька ГБ на диску;
- права адміністратора (
sudo).
Для NixOS є flake з модулем NixOS. Для Debian, Ubuntu, Fedora, систем у стилі RHEL і openSUSE є готові пакети з автоматичним оновленням. Для інших систем можна використати образ контейнера або статичну збірку.
NixOS
Додай flake Critto до системного flake:
{
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";
};
})
];
};
};
}
Потім виконай sudo nixos-rebuild switch --flake .#myserver і з’єднай застосунки командою sudo crittod pair (крок 2).
- Оновлення: виконай
nix flake update critto, а потім перебудуй систему. Пакет — підписаний готовий випуск (статичний двійковий файл, тож проблем із glibc не буде). Для бета-каналу використовуйservices.critto.package = critto.packages.${system}.crittod-beta;. - Секрети: додай
BOAT_API_KEY=…іCRITTO_BACKUP_KEY=…уenvironmentFile(власник root, права 600; також підійдуть agenix і sops-nix). Файл читається під час запуску служби й ніколи не копіюється до сховища. - Налаштування:
listen(типово127.0.0.1:8787),publicUrl,webHost,openFirewall(типово вимкнено),dataDir(типово/var/lib/critto) таsettingsдля будь-якої іншої змінноїCRITTO_*. Параметрden.backendвизначає, де працює Нора (boat,localабоnone; див. Нора). - Застосунки ШІ: віддавай перевагу пакетам nixpkgs у
aiPackages(наприклад,pkgs.codex,pkgs.claude-code, для якого потрібенallowUnfree). Для застосунків, яких немає в nixpkgs, увімкниprograms.nix-ld.enable = true;і виконайsudo crittod setup ai(крок 3). Для Pi достатньо додатиpkgs.nodejs_22уaiPackages, а потім виконатиsudo crittod setup ai pi. - Віддалений доступ: увімкни
services.tailscale.enable = true;, а потім виконайsudo tailscale serve --bg 8787або налаштуйservices.cloudflaredіз правилом маршрутизації доhttp://127.0.0.1:8787(див. крок 5). - Службу ізольовано за допомогою systemd, але простори імен користувачів залишаються доступними (вони потрібні bubblewrap і локальній Нора), тож не встановлюй
security.allowUserNamespaces = false.
Решта цього посібника стосується й NixOS, за винятком оновлень: замість apt або dnf виконуй nix flake update.
1. Встановлення
Відкрий термінал на сервері й виконай:
curl -fsSL https://downloads.critto.app/install-server.sh | sh
Скрипт додає репозиторій пакетів Critto, встановлює пакет critto-server, запускає сервер і показує код з’єднання. Готово: перейди до розділу З’єднання застосунків.
Хочеш отримувати нові версії раніше за інших? Використай бета-канал:
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Спершу перевір інсталятор (за бажанням)
Скрипт підписано ключем випусків Critto. Щоб перевірити його перед запуском:
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 є у більшості дистрибутивів. Також доступна звичайна контрольна сума у файлі install-server.sh.sha256. Пакети теж підписано, а менеджер пакетів перевіряє їх під час кожного встановлення й оновлення.
Або налаштуй репозиторій самостійно
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
Відбиток ключа: C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 ("Critto Packages packages@critto.app").
Або скористайся 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
Контейнеру не потрібні спеціальні дозволи. Твої дані зберігаються у томі critto-data, головний ключ сховища — у critto-keys (окремо від даних, тож копія одного не дасть доступу до іншого; див. розділ «Резервні копії»), а застосунки ШІ — у critto-ai. Також можна змонтувати секрет Docker у /etc/critto/vault.key. Щоб оновити, виконай docker pull ghcr.io/nexferra-ltd/critto-server:latest, а потім створи контейнер знову з тими самими томами.
Або скористайся статичною збіркою
Для кожного випуску є також збірка з одного файла, яка працює на будь-якому Linux: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (або -aarch64). Розпакуй її та запусти ./crittod serve. Сервер доведеться запускати й оновлювати самостійно, тож із пакетами простіше.
2. З’єднання застосунків
Сервер приймає з’єднання лише від пристроїв, які вже з’єднані з ним. Для цього:
Отримай код на сервері (він діє 10 хвилин і працює один раз):
sudo crittod pairНа екрані входу в застосунок Critto вибери Використати власний сервер Critto. Введи адресу сервера й код.
- На самому сервері:
http://127.0.0.1:8787 - Для інших пристроїв знадобиться доступна їм адреса; див. Підключення з інших пристроїв.
- На самому сервері:
Після з’єднання першого пристрою можна з’єднувати інші з нього: у розділі Налаштування → Пристрої → З’єднати телефон з’явиться QR-код. У ньому вказано адресу, на якій слухає сервер. Якщо пристрої підключаються до нього інакше (через тунель, проксі або домен), задай для CRITTO_PUBLIC_URL цю адресу (див. Налаштування).
Настільний застосунок на тому самому комп’ютері? Зазвичай він сам запускає окремий приватний сервер Critto. Якщо сервер тут уже встановлено, вибери Використати власний сервер Critto і вкажи
http://127.0.0.1:8787, щоб обидва застосунки користувалися тими самими крітто.
3. Підключення ШІ
Крітто думають за допомогою обраного тобою ШІ. Підключити його можна двома способами.
Твої підписки на ШІ (ChatGPT, Claude, Grok…)
Critto працює з ними через офіційні застосунки командного рядка. Встанови їх на сервері один раз:
sudo crittod setup ai
Вибери потрібні або вкажи їхні назви:
sudo crittod setup ai codex claude.
| Застосунок | Підписка |
|---|---|
codex |
тариф ChatGPT (Plus, Pro, Business…) |
claude |
тариф Claude (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (потрібен Node.js 20+; інсталятор додасть його, якщо зможе) |
antigravity |
Google Antigravity. Спершу прочитай попередження: умови Google кажуть, що інше програмне забезпечення не має використовувати вхід до Antigravity; через це акаунти вже призупиняли. |
Вони встановлюються в /opt/critto-ai й не оновлюються автоматично. Час від часу запускай sudo crittod setup ai --update, щоб оновити їх.
Потім відкрий у застосунку Critto розділ Підключення й увійди до кожного сервісу. Дані входу зберігаються на сервері, а не в застосунку.
Власний ШІ: локальні моделі й ключі API
Увімкни Налаштування → Розширений режим, а потім відкрий Налаштування → Власний ШІ → Додати підключення. Підійде будь-який сервіс із сумісним із OpenAI API. Вибери шаблон у розділі Почати з або введи адресу самостійно:
| Сервіс | Базова URL-адреса | Ключ API |
|---|---|---|
| Ollama на сервері | http://localhost:11434/v1 |
немає |
| LM Studio на сервері | http://localhost:1234/v1 |
немає |
| Ollama на іншому домашньому комп’ютері | http://192.168.1.20:11434/v1 |
немає |
| OpenRouter | https://openrouter.ai/api/v1 |
твій ключ OpenRouter |
Натисни Перевірити підключення, вибери модель і збережи. Тепер цей ШІ можна вибрати для будь-якого крітто.
Щоб скористатися Ollama на іншому комп’ютері, запусти її з OLLAMA_HOST=0.0.0.0, аби вона приймала з’єднання з мережі. «localhost» завжди означає комп’ютер, на якому працює сервер Critto.
4. Нора (за бажанням)
Нора — власний хмарний комп’ютер твоїх крітто, де вони можуть виконувати більші завдання (створювати речі, переглядати сайти, користуватися застосунками). Сервер із власним розміщенням запускає комп’ютери у твоєму акаунті Boat. Встав ключ API Boat у застосунку в розділі Підключення або додай його у файл налаштувань як BOAT_API_KEY і перезапусти сервер.
Що варто знати:
- Для роботи Нора серверу не потрібен доступ з інтернету. Він підключається до Нора, а не навпаки.
- Для роботи в Нора потрібен ШІ з публічною адресою в інтернеті (твоя підписка або сервіс на кшталт OpenRouter). ШІ у твоїй локальній мережі (Ollama, LM Studio) може спілкуватися, але хмарний Нора не має до нього доступу.
- Час у Нора оплачується через твій акаунт Boat.
Власний Нора на власному комп’ютері
Немає акаунта Boat? Тоді сервер може запустити Нора кожного користувача як невелику віртуальну машину на цьому комп’ютері. Потрібні /dev/kvm, приблизно 4 ГБ пам’яті на час роботи кожного Нора та одноразове створення образу. У NixOS:
services.critto.den.backend = "local";
В інших системах додай CRITTO_DEN_BACKEND=local у /etc/critto/critto.env. Повний посібник (вимоги, розміри, до чого може отримати доступ Нора та створення образу): Власний Нора на власному комп’ютері.
5. Підключення з інших пристроїв
Типово сервер слухає лише свій комп’ютер (127.0.0.1:8787). Це безпечне налаштування. Щоб користуватися телефоном або ноутбуком звідусіль, вибери один із варіантів. Перші два дадуть захищену адресу https:// без відкриття портів на маршрутизаторі.
Tailscale (найпростіше для особистого користування)
Встанови Tailscale на сервер і пристрої, увійди в той самий акаунт, а потім на сервері виконай:
sudo tailscale serve --bg 8787
З’явиться адреса на кшталт https://myserver.tail1234.ts.net. Введи її у застосунках. Доступ матимуть лише твої пристрої.
Cloudflare Tunnel (публічна адреса на власному домені)
Якщо маєш домен на Cloudflare, встанови cloudflared, а потім виконай:
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
Після цього сервер буде доступний за адресою https://critto.example.com. Для кожного пристрою все одно потрібен код з’єднання.
Власний зворотний проксі
Спрямуй його на http://127.0.0.1:8787 і дозволь WebSockets. У Caddy, який сам налаштовує HTTPS, це виглядає так:
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Лише в домашній мережі
Якщо всі пристрої вдома, сервер може слухати безпосередньо в мережі. Задай CRITTO_LISTEN=0.0.0.0:8787 (див. Налаштування) і введи у застосунках http://<server's IP address>:8787. Це звичайний http, тож роби так лише в мережі, якій довіряєш.
Незалежно від вибраного варіанта, задай для CRITTO_PUBLIC_URL цю адресу, щоб QR-коди з’єднання вели на неї.
6. Оновлення
Сервер оновлюється разом із системою:
- Debian / Ubuntu:
sudo apt update && sudo apt upgrade - Fedora / RHEL:
sudo dnf upgrade - openSUSE:
sudo zypper update
Після оновлення служба перезапускається сама. Настільний і телефонний застосунки оновлюються окремо.
7. Резервні копії
Усе зберігається в /var/lib/critto: твої крітто, спогади, чати, файли й дані входу до ШІ. Налаштування лежать у /etc/critto/critto.env.
Зроби копію самостійно. Щоб копія була цілісною, спершу зупини сервер:
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
Поки сервер працює, він також зберігає свіжу копію бази даних у
/var/lib/critto/backups/latest.db.
Резервні копії поза сервером (S3, Cloudflare R2, Backblaze B2…). У застосунку ввімкни Розширений режим, а потім відкрий Налаштування → Резервні копії → Змінити місце зберігання…. Перш ніж копії залишать сервер, зашифруй їх ключем:
sudo crittod backup keygen
Скопіюй рядок CRITTO_BACKUP_KEY=… у /etc/critto/critto.env, збережи його копію в надійному місці без інтернету (без нього резервні копії не відновити) й перезапусти сервер: sudo systemctl restart critto.
Резервні копії поза сервером створюються постійно:
- зміни в базі даних завантажуються кожні 10 секунд;
- файли користувачів — кожні 10 хвилин;
- повна копія завантажується щодня.
Будь-який стан за останні 7 днів можна відновити безпосередньо зі сховища:
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 — час UTC; не вказуй його, щоб відновити найновіший стан. Відновлена папка users/ залишається на тому самому місці.)
Щоб натомість відновити один завантажений файл резервної копії (щоденний знімок), поклади його туди, звідки його може прочитати користувач critto (наприклад, у /var/lib/critto), а потім виконай:
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
Ключі сховища. Збережені ключі й паролі зашифровані головним ключем у
/etc/critto/vault.key (створюється під час встановлення, доступний лише
користувачу critto; у Docker він зберігається в томі critto-keys, а в NixOS —
у services.critto.vaultKeyFile, типово /var/lib/critto-keys/vault.key:
завжди окремо від даних). Його не додають до резервних копій. Список ключів
окремих акаунтів, які він розшифровує (/var/lib/critto/vault/keys.db), має
власну зашифровану копію поряд з іншими, у vault/. Її зберігають 30 днів,
але лише якщо ти надаси ключ відновлення:
sudo crittod vault recovery-keygen
Додай рядок CRITTO_VAULT_BACKUP_RECIPIENT=… у /etc/critto/critto.env і
перезапусти сервер. Збережи надрукований ідентифікатор відновлення та копію
/etc/critto/vault.key офлайн, у менеджері паролів: ніколи не тримай їх на
сервері. Щоб відновити сховище після втрати сервера, поверни vault.key,
завантаж vault/latest.db.age, а потім виконай:
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Налаштування
Сервер читає файл /etc/critto/critto.env. У ньому наведено кожне налаштування з поясненням. Відредагуй файл командою sudo nano /etc/critto/critto.env, а потім виконай sudo systemctl restart critto. Основні налаштування:
| Налаштування | Що робить |
|---|---|
CRITTO_LISTEN |
Адреса, на якій сервер приймає з’єднання. Типово 127.0.0.1:8787 (лише цей комп’ютер). |
CRITTO_PUBLIC_URL |
Адреса для пристроїв, наприклад https://critto.example.com. |
BOAT_API_KEY |
Ключ Boat для Нора. |
CRITTO_BACKUP_KEY |
Шифрує резервні копії поза сервером. |
CRITTO_ANTIGRAVITY=0 |
Приховує Antigravity. |
CRITTO_PROACTIVE=0 |
Крітто не виходять на зв’язок самостійно (заплановані дії чекатимуть). Без Critto Smarts під час таких перевірок крітто використовуватимуть власний ШІ. |
CRITTO_JOB_WORKERS |
Кількість фонових завдань (перевірок і запланованих дій), які виконуються одночасно. Типове значення — 4. |
Корисні команди:
| Команда | |
|---|---|
sudo crittod pair |
код з’єднання для нового пристрою |
sudo crittod setup ai |
встановити або оновити застосунки ШІ |
sudo crittod users |
акаунти на цьому сервері |
systemctl status critto |
чи працює сервер? |
journalctl -u critto -f |
його журнал |
curl http://127.0.0.1:8787/health |
швидка перевірка стану |
/health показує "desktop": "on-demand", доки Нора уперше не знадобиться програмне забезпечення робочого столу. Це нормально: сервер завантажить його тоді.
Видалення
- Debian / Ubuntu:
sudo apt purge critto-server - Fedora / RHEL:
sudo dnf remove critto-server - Docker:
docker rm -f critto(додайdocker volume rm critto-data critto-keys critto-ai, щоб видалити також дані)
Це зупинить сервер і видалить пакет, а також репозиторій, якщо не залишиться інших пакетів Critto. Твої дані в /var/lib/critto залишаться, щоб за бажання можна було повернутися. Щоб видалити все:
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Щоб не додавати репозиторій під час встановлення, виконай перед цим
echo CRITTO_REPO=no | sudo tee /etc/default/critto.
Усунення проблем
- Застосунок не може підключитися до сервера. Перевір на сервері
systemctl status crittoі переконайся, що пристрій може дістатися до вказаної в застосунку адреси (на телефоні127.0.0.1означає сам телефон). - «Код з’єднання не спрацював». Код діє 10 хвилин і працює один раз. Створи новий командою
sudo crittod pair. Запускай її зsudo: без цього буде створено код для іншого, особистого сервера. - Застосунок ШІ не з’являється в розділі «Підключення». Ще раз виконай
sudo crittod setup ai <name>; після завершення сервер перезапуститься. - Інша проблема. Зазвичай причину показує команда
journalctl -u critto -n 100.