Critto zwykle działa na twoim koncie Critto. Jeśli wolisz trzymać wszystko na komputerze, który należy do ciebie, możesz samodzielnie uruchomić serwer Critto: twoje critto, ich wspomnienia i twoje czaty pozostaną na tym komputerze, a aplikacje Critto na komputer i telefon będą się z nim łączyć.
Ten przewodnik dotyczy Linuksa. Potrzebujesz:
- 64-bitowego komputera z Linuksem (Intel/AMD lub ARM, np. Raspberry Pi 4/5), który będzie stale włączony: serwera domowego, mini PC albo małego serwera w chmurze,
- około 1 GB wolnej pamięci i kilku GB miejsca na dysku,
- uprawnień administratora (
sudo).
Dla NixOS dostępny jest flake z modułem NixOS. Debian, Ubuntu, Fedora, systemy w stylu RHEL i openSUSE mają gotowe pakiety z automatycznymi aktualizacjami. W pozostałych systemach możesz użyć obrazu kontenera lub kompilacji statycznej.
NixOS
Dodaj flake Critto do swojego flake systemowego:
{
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";
};
})
];
};
};
}
Następnie uruchom sudo nixos-rebuild switch --flake .#myserver i sparuj aplikacje poleceniem sudo crittod pair (krok 2).
- Aktualizacje: uruchom
nix flake update critto, a potem przebuduj system. Pakiet to podpisane, gotowe wydanie (statyczny plik binarny, więc nie ma problemów z glibc). Kanał beta:services.critto.package = critto.packages.${system}.crittod-beta;. - Sekrety: umieść
BOAT_API_KEY=…iCRITTO_BACKUP_KEY=…w plikuenvironmentFile(właścicielem ma być root, tryb 600; działają też agenix i sops-nix). Plik jest odczytywany przy uruchomieniu usługi i nigdy nie trafia do magazynu Nix. - Ustawienia:
listen(domyślnie127.0.0.1:8787),publicUrl,webHost,openFirewall(domyślnie wyłączone),dataDir(domyślnie/var/lib/critto) orazsettingsdla innych zmiennychCRITTO_*.den.backendwybiera miejsce działania Nora (boat,locallubnone; zobacz Nora). - Aplikacje AI: w
aiPackageswybieraj pakiety z nixpkgs (np.pkgs.codex,pkgs.claude-code, które wymagaallowUnfree). Dla aplikacji niedostępnych w nixpkgs włączprograms.nix-ld.enable = true;i użyjsudo crittod setup ai(krok 3). Pi potrzebuje tylkopkgs.nodejs_22waiPackages, a potem poleceniasudo crittod setup ai pi. - Dostęp zdalny: włącz
services.tailscale.enable = true;, a potem uruchomsudo tailscale serve --bg 8787albo skonfigurujservices.cloudflaredz regułą ingress dohttp://127.0.0.1:8787(zobacz krok 5). - Usługa działa w izolacji systemd, ale zachowuje dostęp do przestrzeni nazw użytkowników (potrzebują ich bubblewrap i lokalna Nora), więc nie ustawiaj
security.allowUserNamespaces = false.
Pozostała część przewodnika dotyczy również NixOS, z wyjątkiem aktualizacji, które wykonuje się przez nix flake update, a nie apt ani dnf.
1. Instalacja
Otwórz terminal na serwerze i uruchom:
curl -fsSL https://downloads.critto.app/install-server.sh | sh
To polecenie dodaje repozytorium pakietów Critto, instaluje pakiet critto-server, uruchamia serwer i wyświetla kod parowania. Gotowe: przejdź do sekcji Sparuj aplikacje.
Chcesz otrzymywać nowe wersje przed innymi? Użyj kanału beta:
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Najpierw sprawdź instalator (opcjonalnie)
Skrypt jest podpisany kluczem wydawniczym Critto. Aby zweryfikować go przed uruchomieniem:
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 jest dostępny w pakietach większości dystrybucji). Dostępna jest też zwykła suma kontrolna w pliku install-server.sh.sha256. Pakiety również są podpisane, a menedżer pakietów sprawdza je przy każdej instalacji i aktualizacji.
Możesz też samodzielnie dodać repozytorium
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
Odcisk klucza: C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 ("Critto Packages packages@critto.app").
Możesz też użyć 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
Kontener nie wymaga specjalnych uprawnień. Dane znajdują się w woluminie critto-data, a aplikacje AI w critto-ai. Zaktualizuj je poleceniem docker pull ghcr.io/nexferra-ltd/critto-server:latest, a potem odtwórz kontener z tymi samymi woluminami.
Możesz też użyć kompilacji statycznej
Każde wydanie zawiera też pojedynczy plik działający na dowolnym Linuksie: https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz (lub -aarch64). Rozpakuj go i uruchom ./crittod serve. Trzeba samodzielnie utrzymywać serwer w działaniu i aktualizować go, dlatego pakiety są łatwiejszym rozwiązaniem.
2. Parowanie aplikacji
Serwer dopuszcza tylko sparowane urządzenia. Aby sparować nowe:
Na serwerze uzyskaj kod (jest ważny przez 10 minut i działa tylko raz):
sudo crittod pairW aplikacji Critto, na ekranie logowania, wybierz Użyj własnego serwera Critto. Wpisz adres serwera i kod.
- Na samym serwerze:
http://127.0.0.1:8787 - Inne urządzenia potrzebują dostępnego dla nich adresu; zobacz Udostępnij dostęp innym urządzeniom.
- Na samym serwerze:
Po sparowaniu jednego urządzenia możesz sparować z niego kolejne: Ustawienia → Urządzenia → Sparuj telefon wyświetla kod QR. Zawiera on adres, na którym nasłuchuje serwer. Jeśli urządzenia łączą się z nim w inny sposób (przez tunel, proxy lub domenę), ustaw CRITTO_PUBLIC_URL na ten adres (zobacz Ustawienia).
Aplikacja na komputerze i serwer na tym samym komputerze? Aplikacja na komputerze zwykle uruchamia własny, prywatny serwer Critto. Jeśli serwer jest już zainstalowany, wybierz Użyj własnego serwera Critto z adresem
http://127.0.0.1:8787, aby oba korzystały z tych samych critto.
3. Połącz swoje AI
Critto myśli za pomocą wybranego przez ciebie AI. Możesz podłączyć je na dwa sposoby.
Twoje subskrypcje AI (ChatGPT, Claude, Grok…)
Critto łączy się z nimi przez oficjalne aplikacje wiersza poleceń, które instalujesz na serwerze jeden raz:
sudo crittod setup ai
Wybierz używane aplikacje albo podaj ich nazwy bezpośrednio:
sudo crittod setup ai codex claude.
| Aplikacja | Działa z |
|---|---|
codex |
planem ChatGPT (Plus, Pro, Business…) |
claude |
planem Claude (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (wymaga Node.js 20+; jeśli to możliwe, instalator doda je sam) |
antigravity |
Google Antigravity. Najpierw przeczytaj wyświetlane ostrzeżenie: regulamin Google zabrania innym programom korzystania z logowania do Antigravity, a Google zawieszało za to konta. |
Zostaną zainstalowane w /opt/critto-ai i nie aktualizują się samodzielnie. Od czasu do czasu uruchom sudo crittod setup ai --update, by je zaktualizować.
Potem w aplikacji Critto otwórz Połączenia i zaloguj się do każdej usługi. Dane logowania są przechowywane na serwerze, nie w aplikacji.
Własne AI: modele lokalne i klucze API
Włącz Ustawienia → Tryb Zaawansowane, a potem wybierz Ustawienia → Własne AI → Dodaj połączenie. Działa wszystko, co obsługuje API „zgodne z OpenAI”. Wybierz gotowe ustawienie w sekcji Rozpocznij od albo samodzielnie wpisz adres:
| Usługa | Podstawowy adres URL | Klucz API |
|---|---|---|
| Ollama na serwerze | http://localhost:11434/v1 |
brak |
| LM Studio na serwerze | http://localhost:1234/v1 |
brak |
| Ollama na innym komputerze w domu | http://192.168.1.20:11434/v1 |
brak |
| OpenRouter | https://openrouter.ai/api/v1 |
twój klucz OpenRouter |
Wybierz Sprawdź połączenie, model i zapisz. Potem możesz wybrać to AI dla dowolnego critto.
Aby Ollama na innym komputerze przyjmowała połączenia z twojej sieci, uruchom ją z OLLAMA_HOST=0.0.0.0. „localhost” zawsze oznacza sam komputer z serwerem Critto.
4. Nora (opcjonalnie)
Nora to własny komputer twoich critto w chmurze, na którym wykonują większe zadania (tworzą rzeczy, przeglądają internet i korzystają z aplikacji). Serwer na własnym hostingu uruchamia Nora na twoim koncie Boat. Wklej klucz API Boat w aplikacji, w sekcji Połączenia, albo wpisz go w pliku ustawień jako BOAT_API_KEY i uruchom serwer ponownie.
Warto wiedzieć:
- Serwer nie musi być dostępny z internetu, aby działała Nora. To serwer łączy się z Nora, a nie odwrotnie.
- Do pracy w Nora potrzebne jest AI z publicznym adresem internetowym (twoja subskrypcja albo usługa taka jak OpenRouter). AI działające w twojej sieci (Ollama, LM Studio) może rozmawiać, ale Nora w chmurze nie może się z nim połączyć.
- Boat nalicza opłatę za czas działania Nora na twoim koncie.
Własna Nora na własnym komputerze
Nie masz konta Boat? Serwer może zamiast tego uruchamiać Nora każdej osoby jako małą maszynę wirtualną na tym komputerze (potrzebuje /dev/kvm, około 4 GB pamięci na każdą działającą Nora i jednorazowego przygotowania obrazu). W NixOS:
services.critto.den.backend = "local";
W innych systemach wpisz CRITTO_DEN_BACKEND=local w /etc/critto/critto.env. Pełny przewodnik (wymagania, rozmiary, dostęp Nora i przygotowanie obrazu) znajdziesz tutaj: Własna Nora na własnym komputerze.
5. Dostęp z innych urządzeń
Domyślnie serwer nasłuchuje tylko na swoim komputerze (127.0.0.1:8787). To bezpieczne ustawienie. Jeśli chcesz używać telefonu lub laptopa z dowolnego miejsca, wybierz jedną z metod poniżej. Dwie pierwsze zapewniają bezpieczny adres https:// bez otwierania portów na routerze.
Tailscale (najłatwiej do użytku osobistego)
Zainstaluj Tailscale na serwerze i urządzeniach, zaloguj się na to samo konto, a potem na serwerze uruchom:
sudo tailscale serve --bg 8787
Zobaczysz adres w rodzaju https://myserver.tail1234.ts.net. Użyj go w aplikacjach. Dostęp do niego mają tylko twoje urządzenia.
Cloudflare Tunnel (publiczny adres we własnej domenie)
Jeśli masz domenę w Cloudflare, zainstaluj cloudflared, a potem:
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
Serwer będzie dostępny pod adresem https://critto.example.com. Każde urządzenie nadal musi otrzymać kod parowania.
Używany już przez ciebie serwer proxy
Skieruj go na http://127.0.0.1:8787 i zezwól na WebSockets. Oto konfiguracja Caddy, który sam obsługuje HTTPS:
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Tylko w domowej sieci
Jeśli wszystkie urządzenia są w domu, możesz pozwolić serwerowi nasłuchiwać bezpośrednio w sieci. Ustaw CRITTO_LISTEN=0.0.0.0:8787 (zobacz Ustawienia) i wpisz w aplikacjach http://<server's IP address>:8787. To zwykłe połączenie http, więc używaj go tylko w zaufanej sieci.
Niezależnie od wybranej metody ustaw CRITTO_PUBLIC_URL na ten adres, by kody QR parowania prowadziły we właściwe miejsce.
6. Aktualizacje
Serwer aktualizuje się razem z resztą systemu:
- Debian / Ubuntu:
sudo apt update && sudo apt upgrade - Fedora / RHEL:
sudo dnf upgrade - openSUSE:
sudo zypper update
Po aktualizacji usługa uruchamia się ponownie sama. Aplikacje na komputer i telefon aktualizują się osobno.
7. Kopie zapasowe
Wszystko znajduje się w /var/lib/critto: twoje critto, wspomnienia, czaty, pliki i dane logowania do AI. Ustawienia są w /etc/critto/critto.env.
Skopiuj je samodzielnie. Aby kopia była spójna, zatrzymaj serwer:
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
Gdy serwer działa, przechowuje też aktualną kopię bazy danych w /var/lib/critto/backups/latest.db.
Kopie poza serwerem (S3, Cloudflare R2, Backblaze B2…). W aplikacji włącz Tryb Zaawansowane, a następnie wybierz Ustawienia → Kopie zapasowe → Zmień miejsce…. Zaszyfruj kopie przed wysłaniem ich z serwera, dodając klucz kopii zapasowej:
sudo crittod backup keygen
Skopiuj wiersz CRITTO_BACKUP_KEY=… do /etc/critto/critto.env, zachowaj kopię klucza w bezpiecznym miejscu bez dostępu do internetu (bez niego nie da się przywrócić kopii) i uruchom ponownie: sudo systemctl restart critto.
Kopie poza serwerem są tworzone na bieżąco:
- zmiany w bazie danych są wysyłane co 10 sekund;
- pliki użytkowników są wysyłane co 10 minut;
- pełna kopia jest wysyłana codziennie.
Możesz przywrócić dowolny stan z ostatnich 7 dni bezpośrednio z zasobnika:
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 przyjmuje czas UTC; pomiń go, by przywrócić najnowszy stan. Przywrócony katalog users/ pozostaje w tym samym miejscu.)
Aby przywrócić kopię przechowywaną poza serwerem, pobierz plik z miejsca przechowywania i umieść go tam, gdzie może go odczytać użytkownik critto (np. /var/lib/critto), a następnie:
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
Klucze sejfu. Zapisane klucze i hasła są szyfrowane kluczem głównym w /etc/critto/vault.key (utworzonym podczas instalacji, czytelnym tylko dla użytkownika critto; w Dockerze w woluminie critto-keys, w NixOS w services.critto.vaultKeyFile, domyślnie /var/lib/critto-keys/vault.key: zawsze poza katalogiem danych). Nie ma go w kopiach zapasowych. Lista kluczy poszczególnych kont, które odblokowuje (/var/lib/critto/vault/keys.db), ma własną zaszyfrowaną kopię obok pozostałych, w vault/, przechowywaną przez 30 dni, ale tylko po dodaniu klucza odzyskiwania:
sudo crittod vault recovery-keygen
Umieść wiersz CRITTO_VAULT_BACKUP_RECIPIENT=… w /etc/critto/critto.env i uruchom serwer ponownie. Zachowaj wydrukowaną tożsamość odzyskiwania oraz kopię /etc/critto/vault.key offline, w menedżerze haseł: nigdy na serwerze. Aby przywrócić dane po utracie serwera, przywróć vault.key, pobierz vault/latest.db.age, a następnie:
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Ustawienia
Serwer odczytuje /etc/critto/critto.env. Każda opcja jest tam opisana. Edytuj plik poleceniem sudo nano /etc/critto/critto.env, a następnie uruchom sudo systemctl restart critto. Najczęściej używane opcje:
| Ustawienie | Działanie |
|---|---|
CRITTO_LISTEN |
Adres nasłuchiwania serwera. Domyślnie 127.0.0.1:8787 (tylko ten komputer). |
CRITTO_PUBLIC_URL |
Adres używany przez twoje urządzenia, np. https://critto.example.com. |
BOAT_API_KEY |
Twój klucz Boat do Nora. |
CRITTO_BACKUP_KEY |
Szyfruje kopie zapasowe przechowywane poza serwerem. |
CRITTO_ANTIGRAVITY=0 |
Ukrywa Antigravity. |
CRITTO_PROACTIVE=0 |
Twoje critto nie wysyłają samodzielnie meldunków (zaplanowane zadania czekają). Bez Critto Smarts meldunki korzystają z własnego AI critto. |
CRITTO_JOB_WORKERS |
Liczba zadań w tle (meldunków i zaplanowanych zadań) wykonywanych jednocześnie. Domyślnie 4. |
Przydatne polecenia:
| Polecenie | |
|---|---|
sudo crittod pair |
kod parowania nowego urządzenia |
sudo crittod setup ai |
instaluje lub aktualizuje aplikacje AI |
sudo crittod users |
konta na tym serwerze |
systemctl status critto |
czy serwer działa? |
journalctl -u critto -f |
dziennik serwera |
curl http://127.0.0.1:8787/health |
szybkie sprawdzenie stanu |
Do chwili, gdy Nora po raz pierwszy będzie potrzebować oprogramowania pulpitu, /health pokazuje "desktop": "on-demand". To normalne: serwer pobierze je wtedy automatycznie.
Odinstalowanie
- Debian / Ubuntu:
sudo apt purge critto-server - Fedora / RHEL:
sudo dnf remove critto-server - Docker:
docker rm -f critto(dodajdocker volume rm critto-data critto-keys critto-ai, by usunąć też dane)
To zatrzyma serwer, usunie pakiet i repozytorium, jeśli nie pozostał żaden inny pakiet Critto. Twoje dane w /var/lib/critto zostaną zachowane, na wypadek, gdy wrócisz. Aby usunąć wszystko:
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Aby podczas instalacji pakiety nie dodawały repozytorium, przed instalacją uruchom echo CRITTO_REPO=no | sudo tee /etc/default/critto.
Rozwiązywanie problemów
- Aplikacja informuje, że nie może połączyć się z serwerem. Sprawdź na serwerze
systemctl status crittoi upewnij się, że adres wpisany w aplikacji jest osiągalny z urządzenia (na telefonie127.0.0.1oznacza sam telefon). - „Kod parowania nie zadziałał”. Kody są ważne przez 10 minut i działają tylko raz. Wygeneruj nowy poleceniem
sudo crittod pair. Uruchom je zsudo; bez tego otrzymasz kod do innego, prywatnego serwera. - Aplikacja AI nie pojawia się w sekcji Połączenia. Ponownie uruchom
sudo crittod setup ai <name>; po zakończeniu serwer zostanie uruchomiony ponownie. - Inny problem. Polecenie
journalctl -u critto -n 100zwykle pokazuje, co poszło nie tak.