Thông thường, Critto chạy trong tài khoản Critto của bạn. Nếu muốn giữ mọi thứ trên máy tính của mình, bạn có thể tự chạy máy chủ Critto: các critto, ký ức của chúng và cuộc trò chuyện của bạn sẽ ở trên máy đó; ứng dụng Critto trên máy tính và điện thoại sẽ kết nối với máy chủ.
Hướng dẫn này dành cho Linux. Bạn cần:
- máy tính Linux 64-bit (Intel/AMD hoặc ARM, ví dụ Raspberry Pi 4/5) luôn bật: máy chủ tại nhà, máy tính mini hoặc máy chủ đám mây nhỏ,
- khoảng 1 GB bộ nhớ trống và vài GB dung lượng đĩa,
- quyền quản trị (
sudo).
NixOS có flake kèm mô-đun NixOS. Debian, Ubuntu, Fedora, hệ thống kiểu RHEL và openSUSE có gói cài đặt phù hợp với cập nhật tự động. Các hệ thống khác có thể dùng ảnh container hoặc bản dựng tĩnh.
NixOS
Thêm flake của Critto vào flake hệ thống:
{
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";
};
})
];
};
};
}
Sau đó chạy sudo nixos-rebuild switch --flake .#myserver rồi ghép nối ứng dụng bằng sudo crittod pair (bước 2).
- Cập nhật: chạy
nix flake update critto, rồi dựng lại. Gói là bản phát hành dựng sẵn đã ký (tệp nhị phân tĩnh, không gặp vấn đề glibc). Dùngservices.critto.package = critto.packages.${system}.crittod-beta;để dùng kênh beta. - Bí mật: đặt
BOAT_API_KEY=…vàCRITTO_BACKUP_KEY=…trongenvironmentFile(chủ sở hữu là root, quyền 600; agenix và sops-nix cũng dùng được). Tệp được đọc khi dịch vụ khởi động và không bao giờ được sao chép vào kho lưu trữ. - Cài đặt:
listen(mặc định127.0.0.1:8787),publicUrl,webHost,openFirewall(mặc định tắt),dataDir(mặc định/var/lib/critto) vàsettingscho mọi biếnCRITTO_*khác.den.backendchọn nơi chạy Tổ (boat,localhoặcnone; xem mục Tổ). - Ứng dụng AI: ưu tiên gói từ nixpkgs trong
aiPackages(ví dụpkgs.codex,pkgs.claude-code, cần bậtallowUnfree). Với ứng dụng không có trong nixpkgs, đặtprograms.nix-ld.enable = true;rồi chạysudo crittod setup ai(bước 3). Pi chỉ cầnpkgs.nodejs_22trongaiPackages, sau đó chạysudo crittod setup ai pi. - Truy cập từ xa: đặt
services.tailscale.enable = true;rồi chạysudo tailscale serve --bg 8787, hoặc dùngservices.cloudflaredvới quy tắc ingress trỏ đếnhttp://127.0.0.1:8787(xem bước 5). - Dịch vụ được cô lập bằng systemd nhưng vẫn cho phép user namespace (bubblewrap và Tổ cục bộ cần tính năng này), vì vậy đừng đặt
security.allowUserNamespaces = false.
Các phần còn lại của hướng dẫn này cũng áp dụng cho NixOS, ngoại trừ việc cập nhật dùng nix flake update thay vì apt hoặc dnf.
1. Cài đặt
Mở terminal trên máy chủ và chạy:
curl -fsSL https://downloads.critto.app/install-server.sh | sh
Lệnh này thêm kho gói Critto, cài gói critto-server, khởi động máy chủ và in mã ghép nối. Vậy là xong: chuyển đến Ghép nối ứng dụng.
Muốn dùng phiên bản mới trước mọi người? Chọn kênh beta:
curl -fsSL https://downloads.critto.app/install-server.sh | CRITTO_CHANNEL=beta sh
Kiểm tra trình cài đặt trước (không bắt buộc)
Tập lệnh được ký bằng khóa phát hành của Critto. Để xác minh trước khi chạy:
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 có trong gói của hầu hết bản phân phối.) Ngoài ra còn có mã kiểm tra thông thường tại install-server.sh.sha256. Các gói cũng được ký và trình quản lý gói sẽ kiểm tra chữ ký mỗi lần cài đặt hoặc cập nhật.
Hoặc tự thiết lập kho gói
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
Dấu vân tay của khóa là C78E FB7F 67CC 8184 1F70 EE3D D121 DC94 C534 50E3 (“Critto Packages packages@critto.app”).
Hoặc dùng 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
Container không cần quyền đặc biệt. Dữ liệu nằm trong volume critto-data, khóa chính của két bảo mật nằm trong critto-keys (được tách riêng khỏi dữ liệu, nên bản sao của volume này không thể mở volume kia; xem mục Sao lưu), còn ứng dụng AI nằm trong critto-ai. Bạn cũng có thể gắn Docker secret tại /etc/critto/vault.key. Cập nhật bằng docker pull ghcr.io/nexferra-ltd/critto-server:latest, rồi tạo lại container với cùng các volume.
Hoặc dùng bản dựng tĩnh
Mỗi bản phát hành cũng có một gói duy nhất chạy trên mọi Linux:
https://downloads.critto.app/releases/<version>/critto-server-<version>-linux-x86_64.tar.gz
(hoặc -aarch64). Giải nén rồi chạy ./crittod serve. Bạn phải tự giữ cho chương trình chạy và cập nhật, nên dùng gói cài đặt sẽ dễ hơn.
2. Ghép nối ứng dụng
Máy chủ chỉ cho phép thiết bị đã ghép nối truy cập. Cách ghép nối:
Trên máy chủ, lấy mã (có hiệu lực trong 10 phút và chỉ dùng một lần):
sudo crittod pairTrong ứng dụng Critto, tại màn hình đăng nhập, chọn Dùng máy chủ Critto của riêng tôi. Nhập địa chỉ máy chủ và mã.
- Ngay trên máy chủ:
http://127.0.0.1:8787 - Với thiết bị khác, bạn cần địa chỉ mà chúng có thể truy cập; xem Để các thiết bị khác truy cập.
- Ngay trên máy chủ:
Sau khi ghép nối một thiết bị, bạn có thể dùng thiết bị đó để ghép nối thêm: vào Cài đặt → Thiết bị → Ghép nối điện thoại để hiện mã QR. Mã có địa chỉ mà máy chủ đang lắng nghe; nếu thiết bị truy cập theo cách khác (đường hầm, proxy, tên miền), hãy đặt CRITTO_PUBLIC_URL thành địa chỉ đó (xem Cài đặt).
Ứng dụng máy tính trên cùng máy? Thông thường ứng dụng máy tính tự khởi chạy một máy chủ Critto riêng. Nếu bạn đã cài máy chủ tại đây, hãy chọn Dùng máy chủ Critto của riêng tôi với
http://127.0.0.1:8787để cả hai cùng dùng một bộ critto.
3. Kết nối AI
Các critto suy nghĩ bằng AI do bạn chọn. Có hai cách để kết nối.
Gói AI của bạn (ChatGPT, Claude, Grok…)
Critto kết nối với các dịch vụ này qua ứng dụng dòng lệnh chính thức của họ, bạn chỉ cần cài ứng dụng trên máy chủ một lần:
sudo crittod setup ai
Chọn dịch vụ bạn dùng hoặc ghi tên trực tiếp:
sudo crittod setup ai codex claude.
| Ứng dụng | Dùng với |
|---|---|
codex |
Gói ChatGPT (Plus, Pro, Business…) |
claude |
Gói Claude (Pro, Max…) |
grok |
SuperGrok / X Premium |
muse |
Meta AI (cần Node.js 20+; trình cài đặt sẽ thêm nếu có thể) |
antigravity |
Google Antigravity. Trước tiên hãy đọc cảnh báo được hiển thị: điều khoản của Google nói phần mềm khác không nên dùng thông tin đăng nhập Antigravity, và Google đã đình chỉ tài khoản vì việc này. |
Các ứng dụng được cài trong /opt/critto-ai và không tự cập nhật. Thỉnh thoảng chạy sudo crittod setup ai --update để cập nhật.
Sau đó, trong ứng dụng Critto, mở Kết nối và đăng nhập vào từng dịch vụ. Thông tin đăng nhập được lưu trên máy chủ, không phải trong ứng dụng.
AI tùy chỉnh: mô hình cục bộ và khóa API
Bật Cài đặt → Chế độ Nâng cao, rồi chọn Cài đặt → AI tùy chỉnh → Thêm kết nối. Mọi dịch vụ hỗ trợ API tương thích với “OpenAI” đều dùng được. Chọn cấu hình có sẵn trong Bắt đầu từ hoặc tự điền địa chỉ:
| Dịch vụ | URL gốc | Khóa API |
|---|---|---|
| Ollama trên máy chủ | http://localhost:11434/v1 |
không có |
| LM Studio trên máy chủ | http://localhost:1234/v1 |
không có |
| Ollama trên máy tính khác ở nhà | http://192.168.1.20:11434/v1 |
không có |
| OpenRouter | https://openrouter.ai/api/v1 |
khóa OpenRouter của bạn |
Chọn Kiểm tra kết nối, chọn mô hình rồi lưu. Sau đó, bạn có thể chọn AI đó cho bất kỳ critto nào.
Với Ollama trên máy tính khác, khởi chạy bằng OLLAMA_HOST=0.0.0.0 để Ollama nhận kết nối từ mạng của bạn. “localhost” luôn là máy chủ Critto.
4. Tổ (không bắt buộc)
Tổ là máy tính đám mây riêng của các critto, nơi bé làm những việc lớn hơn (xây dựng, duyệt web, dùng ứng dụng). Máy chủ tự lưu trữ chạy Tổ bằng tài khoản Boat của bạn. Dán khóa API Boat trong ứng dụng tại mục Kết nối, hoặc thêm khóa vào tệp cài đặt dưới tên BOAT_API_KEY rồi khởi động lại.
Điều cần biết:
- Máy chủ của bạn không cần truy cập được từ Internet để Tổ hoạt động. Máy chủ kết nối đến Tổ, chứ không phải ngược lại.
- Tổ cần AI có địa chỉ Internet công khai để làm việc (gói đăng ký của bạn hoặc dịch vụ như OpenRouter). AI chạy trong mạng riêng (Ollama, LM Studio) vẫn trò chuyện được, nhưng Tổ trên đám mây không thể kết nối với AI đó.
- Boat tính phí giờ Tổ vào tài khoản của bạn.
Tổ riêng trên máy của bạn
Không có tài khoản Boat? Máy chủ có thể chạy Tổ của mỗi người dưới dạng máy ảo nhỏ trên máy này (cần /dev/kvm, khoảng 4 GB bộ nhớ cho mỗi Tổ khi chạy và một lần dựng ảnh). Trên NixOS:
services.critto.den.backend = "local";
Với các hệ thống khác, đặt CRITTO_DEN_BACKEND=local trong /etc/critto/critto.env. Hướng dẫn đầy đủ (yêu cầu, kích thước, những nơi Tổ có thể truy cập, cách dựng ảnh) nằm tại Tổ riêng trên máy của bạn.
5. Kết nối từ các thiết bị khác
Theo mặc định, máy chủ chỉ lắng nghe trên chính máy đó (127.0.0.1:8787). Đây là cài đặt an toàn. Để dùng điện thoại hoặc máy tính xách tay ở bất cứ đâu, hãy chọn một trong các cách sau. Hai cách đầu cung cấp địa chỉ https:// an toàn mà không cần mở cổng trên bộ định tuyến.
Tailscale (dễ nhất cho mục đích cá nhân)
Cài Tailscale trên máy chủ và các thiết bị, đăng nhập cùng một tài khoản, rồi trên máy chủ chạy:
sudo tailscale serve --bg 8787
Lệnh sẽ in địa chỉ dạng https://myserver.tail1234.ts.net. Dùng địa chỉ này trong ứng dụng. Chỉ thiết bị của bạn mới truy cập được.
Cloudflare Tunnel (địa chỉ công khai trên tên miền của bạn)
Nếu có tên miền trên Cloudflare, hãy cài cloudflared, rồi chạy:
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
Máy chủ sẽ hoạt động tại https://critto.example.com. Mỗi thiết bị vẫn cần mã ghép nối.
Dùng reverse proxy bạn đã có
Trỏ proxy đến http://127.0.0.1:8787 và cho phép WebSocket. Với Caddy, công cụ tự xử lý HTTPS:
critto.example.com {
reverse_proxy 127.0.0.1:8787
}
Chỉ dùng trong mạng gia đình
Nếu tất cả thiết bị đều ở nhà, bạn có thể để máy chủ lắng nghe trực tiếp trên mạng. Đặt CRITTO_LISTEN=0.0.0.0:8787 (xem Cài đặt) rồi dùng http://<địa chỉ IP của máy chủ>:8787 trong ứng dụng. Đây là http thường, nên chỉ dùng trên mạng mà bạn tin cậy.
Dù chọn cách nào, hãy đặt CRITTO_PUBLIC_URL thành địa chỉ đó để mã QR ghép nối trỏ đúng nơi.
6. Cập nhật
Máy chủ được cập nhật cùng hệ thống:
- Debian / Ubuntu:
sudo apt update && sudo apt upgrade - Fedora / RHEL:
sudo dnf upgrade - openSUSE:
sudo zypper update
Dịch vụ tự khởi động lại sau khi cập nhật. Ứng dụng máy tính và điện thoại được cập nhật riêng.
7. Sao lưu
Mọi thứ đều nằm trong /var/lib/critto: critto, ký ức, cuộc trò chuyện, tệp và thông tin đăng nhập AI. Cài đặt nằm trong /etc/critto/critto.env.
Tự sao chép dữ liệu. Dừng máy chủ để bản sao nhất quán:
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
Máy chủ cũng giữ một bản sao cơ sở dữ liệu mới nhất trong /var/lib/critto/backups/latest.db khi đang chạy.
Sao lưu bên ngoài (S3, Cloudflare R2, Backblaze B2…). Trong ứng dụng, bật Chế độ Nâng cao, rồi chọn Cài đặt → Sao lưu → Đổi nơi lưu…. Thêm khóa sao lưu để mã hóa dữ liệu trước khi rời máy chủ:
sudo crittod backup keygen
Sao chép dòng CRITTO_BACKUP_KEY=… vào /etc/critto/critto.env, giữ một bản ở nơi an toàn và ngoại tuyến (không thể khôi phục bản sao lưu nếu thiếu khóa), rồi khởi động lại: sudo systemctl restart critto.
Sao lưu bên ngoài diễn ra liên tục:
- Các thay đổi trong cơ sở dữ liệu được tải lên mỗi 10 giây;
- tệp của mọi người được tải lên mỗi 10 phút;
- bản sao đầy đủ được tải lên mỗi ngày.
Có thể khôi phục bất kỳ thời điểm nào trong 7 ngày gần nhất trực tiếp từ nơi lưu trữ:
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 dùng UTC; bỏ tùy chọn này để khôi phục trạng thái mới nhất. Thư mục users/ được khôi phục ở đúng vị trí cũ.)
Để thay vào đó khôi phục một tệp sao lưu đã tải xuống (bản chụp hằng ngày), hãy đặt tệp ở nơi người dùng critto có thể đọc (ví dụ /var/lib/critto), rồi chạy:
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
Khóa của két bảo mật. Khóa và mật khẩu đã lưu được mã hóa bằng khóa chính tại
/etc/critto/vault.key (được tạo khi cài đặt, chỉ người dùng critto đọc được;
trong Docker là volume critto-keys, trên NixOS là services.critto.vaultKeyFile,
mặc định /var/lib/critto-keys/vault.key: luôn nằm ngoài dữ liệu).
Khóa này không bao giờ nằm trong bản sao lưu. Danh sách khóa theo từng tài khoản mà nó mở
(/var/lib/critto/vault/keys.db) có bản sao lưu mã hóa riêng bên cạnh các bản khác,
trong vault/, được giữ 30 ngày, nhưng chỉ khi bạn cung cấp khóa khôi phục:
sudo crittod vault recovery-keygen
Thêm dòng CRITTO_VAULT_BACKUP_RECIPIENT=… vào /etc/critto/critto.env rồi khởi động lại.
Giữ danh tính khôi phục được in ra và bản sao của /etc/critto/vault.key ngoại tuyến,
trong trình quản lý mật khẩu: tuyệt đối không để trên máy chủ. Để khôi phục sau khi mất máy chủ,
đặt lại vault.key, tải vault/latest.db.age, rồi chạy:
sudo -u critto crittod vault restore --identity /path/to/recovery.txt /path/to/latest.db.age
Cài đặt
Máy chủ đọc /etc/critto/critto.env. Tệp liệt kê mọi tùy chọn và giải thích. Chỉnh sửa bằng sudo nano /etc/critto/critto.env, rồi chạy sudo systemctl restart critto. Các tùy chọn thường dùng:
| Cài đặt | Tác dụng |
|---|---|
CRITTO_LISTEN |
Địa chỉ máy chủ lắng nghe. Mặc định 127.0.0.1:8787 (chỉ máy này). |
CRITTO_PUBLIC_URL |
Địa chỉ thiết bị của bạn dùng, ví dụ https://critto.example.com. |
BOAT_API_KEY |
Khóa Boat của bạn để dùng Tổ. |
CRITTO_BACKUP_KEY |
Mã hóa bản sao lưu bên ngoài. |
CRITTO_ANTIGRAVITY=0 |
Ẩn Antigravity. |
CRITTO_PROACTIVE=0 |
Các critto không tự hỏi thăm (việc đã lên lịch sẽ chờ). Nếu không dùng Critto Smarts, các lần hỏi thăm dùng AI riêng của critto. |
CRITTO_JOB_WORKERS |
Số tác vụ nền chạy cùng lúc (hỏi thăm, tác vụ đã lên lịch). Mặc định là 4. |
Lệnh hữu ích:
| Lệnh | |
|---|---|
sudo crittod pair |
tạo mã ghép nối cho thiết bị mới |
sudo crittod setup ai |
cài hoặc cập nhật ứng dụng AI |
sudo crittod users |
xem tài khoản trên máy chủ này |
systemctl status critto |
kiểm tra máy chủ có đang chạy không |
journalctl -u critto -f |
xem nhật ký |
curl http://127.0.0.1:8787/health |
kiểm tra nhanh tình trạng |
/health hiển thị "desktop": "on-demand" cho đến khi Tổ cần phần mềm máy tính lần đầu. Điều đó bình thường: máy chủ sẽ tải phần mềm lúc đó.
Gỡ cài đặt
- Debian / Ubuntu:
sudo apt purge critto-server - Fedora / RHEL:
sudo dnf remove critto-server - Docker:
docker rm -f critto(thêmdocker volume rm critto-data critto-keys critto-aiđể xóa cả dữ liệu)
Lệnh này dừng máy chủ và xóa gói cũng như kho phần mềm nếu không còn gói Critto nào khác. Dữ liệu trong /var/lib/critto được giữ lại phòng khi bạn quay lại. Để xóa mọi thứ:
sudo rm -rf /var/lib/critto /etc/critto /opt/critto-ai
sudo userdel critto
Để gói cài đặt không thêm kho phần mềm ngay từ đầu, chạy echo CRITTO_REPO=no | sudo tee /etc/default/critto trước khi cài.
Khắc phục sự cố
- Ứng dụng báo không kết nối được với máy chủ. Kiểm tra
systemctl status crittotrên máy chủ và xác nhận địa chỉ trong ứng dụng có thể được thiết bị truy cập (trên điện thoại,127.0.0.1là chính điện thoại đó). - “Mã ghép nối không dùng được.” Mã có hiệu lực trong 10 phút và chỉ dùng một lần. Tạo mã mới bằng
sudo crittod pair. Hãy chạy lệnh vớisudo: nếu không, bạn sẽ nhận mã cho một máy chủ cá nhân khác. - Ứng dụng AI không xuất hiện trong mục Kết nối. Chạy lại
sudo crittod setup ai <name>; máy chủ sẽ khởi động lại khi hoàn tất. - Vấn đề khác. Thường thì
journalctl -u critto -n 100sẽ cho biết nguyên nhân.