Crittoは通常、Crittoアカウントで利用します。すべてを自分のコンピューターに保管したい場合は、Crittoサーバーをご自身で動かせます。クリット、記憶、チャットはそのコンピューターに保存され、Crittoのデスクトップアプリとスマホアプリから接続できます。

このガイドはLinux向けです。次のものが必要です。

  • 電源を入れたままにできる64ビットLinuxコンピューター(Intel/AMDまたはARM。例:Raspberry Pi 4/5)。自宅のサーバー、ミニPC、小規模なクラウドサーバーなど。
  • 約1 GBの空きメモリと数GBのディスク容量。
  • 管理者権限(sudo)。

NixOSでは、NixOSモジュールを含むflakeを利用できます。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)、その他のCRITTO_*変数用のsettingsがあります。den.backendでねぐらの実行先を選びます(boat、local、none。ねぐらについてを参照)。
  • AIアプリ: aiPackagesにはnixpkgsのパッケージ(例:pkgs.codex、allowUnfreeが必要なpkgs.claude-code)をおすすめします。nixpkgsにないものは、programs.nix-ld.enable = true;を設定し、sudo crittod setup aiを実行します(手順3)。PiにはaiPackagesのpkgs.nodejs_22だけで十分です。その後、sudo crittod setup ai piを実行します。
  • リモートアクセス: services.tailscale.enable = true;を設定してからsudo tailscale serve --bg 8787を実行するか、services.cloudflaredでhttp://127.0.0.1:8787へのingressルールを設定します(手順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ボリュームに保存されます。別々に保管するため、片方だけのコピーではもう片方を使えません(「バックアップ」を参照)。AIアプリはcritto-aiに保存されます。/etc/critto/vault.keyにマウントしたDocker secretも使えます。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. アプリをペアリング

サーバーに接続できるのは、ペアリング済みの端末だけです。端末をペアリングするには、次の手順を行います。

  1. サーバーでコードを取得します(有効期限は10分で、一度だけ使えます)。

    sudo crittod pair
    
  2. Crittoアプリのログイン画面で、自分のCrittoサーバーを使うを選びます。サーバーのアドレスとコードを入力します。

    • サーバー上で使う場合:http://127.0.0.1:8787
    • 他の端末から使う場合は、その端末から接続できるアドレスが必要です。他の端末から接続するをご覧ください。

1台をペアリングすると、その端末からさらにペアリングできます。「設定」→「端末」→「スマホをペアリング」を開くとQRコードが表示されます。QRコードにはサーバーの待ち受けアドレスが含まれます。トンネル、プロキシ、ドメインなど別の方法で端末から接続する場合は、CRITTO_PUBLIC_URLにそのアドレスを設定します(設定を参照)。

同じコンピューターでデスクトップアプリを使いますか? デスクトップアプリは通常、専用のCrittoサーバーを起動します。このコンピューターにサーバーをインストールした場合は、http://127.0.0.1:8787を指定して自分のCrittoサーバーを使うを選ぶと、両方で同じクリットを使えます。


3. AIを連携

クリットは選んだAIを使って考えます。AIを連携する方法は2つあります。

AIのサブスクリプション(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のログインを使うことは認められておらず、その利用を理由にGoogleがアカウントを停止した事例があります。

/opt/critto-aiにインストールされ、自動更新はされません。ときどきsudo crittod setup ai --updateを実行して更新してください。

次にCrittoアプリで連携を開き、それぞれにログインします。ログイン情報はアプリではなく、サーバーに保存されます。

カスタムAI:ローカルモデルとAPIキー

**「設定」→「詳細モード」をオンにして、「設定」→「カスタムAI」→「連携を追加」を開きます。「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キー

**「接続テスト」**を使い、モデルを選んで保存します。そのAIをどのクリットにも設定できます。

別のコンピューターでOllamaを動かす場合は、ネットワークから接続できるようOLLAMA_HOST=0.0.0.0を指定して起動します。「localhost」は常にCrittoサーバー自身のコンピューターを指します。


4. ねぐら(任意)

ねぐらはクリット専用のクラウドコンピューターで、ものを作る、ウェブを見る、アプリを使うなど、大きな作業をします。セルフホストのサーバーでは、ご自身のBoatアカウント上でねぐらを動かします。アプリの連携でBoat APIキーを貼り付けるか、設定ファイルにBOAT_API_KEYとして記述して再起動してください。

知っておくと便利なこと:

  • ねぐらが動くために、サーバーをインターネットから接続可能にする必要はありません。サーバーからねぐらに接続します。逆ではありません。
  • ねぐらで作業するには、インターネットからアクセスできるAI(ご利用中のサブスクリプションやOpenRouterなど)が必要です。自宅のネットワーク上で動くAI(Ollama、LM Studio)とはチャットできますが、クラウド上のねぐらからは接続できません。
  • ねぐらの利用時間は、ご自身のBoatアカウントに請求されます。

自分のコンピューターで動かすねぐら

Boatアカウントがなくても、このコンピューター上で各ユーザーのねぐらを小さな仮想マシンとして動かせます(/dev/kvm、稼働中のねぐらごとに約4 GBのメモリ、一度だけイメージをビルドする環境が必要です)。NixOSの場合:

services.critto.den.backend = "local";

それ以外の環境では、/etc/critto/critto.envにCRITTO_DEN_BACKEND=localを設定します。必要条件、サイズ、ねぐらからアクセスできるもの、イメージのビルド方法を含む詳しいガイドは、自分のコンピューターで動かすねぐらをご覧ください。


5. 他の端末から接続する

初期設定では、サーバーは自分のコンピューター(127.0.0.1:8787)からの接続のみを受け付けます。安全な初期設定です。どこからでもスマホやノートパソコンで使うには、次のいずれかを選びます。最初の2つは、ルーターのポートを開かずに安全な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で利用できるようになります。各端末には引き続きペアリングコードが必要です。

すでに運用しているリバースプロキシ

WebSocketを許可して、http://127.0.0.1:8787に転送します。HTTPSを自動処理するCaddyを使う場合:

critto.example.com {
    reverse_proxy 127.0.0.1:8787
}

自宅のネットワーク内だけで使う

すべての端末が自宅にある場合、サーバーがネットワーク上で直接接続を受け付けるようにできます。CRITTO_LISTEN=0.0.0.0:8787を設定し(設定を参照)、アプリでhttp://<server's IP address>:8787を使います。通常のHTTP通信なので、信頼できるネットワークでのみ設定してください。

どの方法を選んでも、ペアリング用QRコードがそのアドレスを示すよう、CRITTO_PUBLIC_URLを設定してください。


6. 更新

サーバーはシステムの他の部分と一緒に更新します。

  • Debian / Ubuntu: sudo apt update && sudo apt upgrade
  • Fedora / RHEL: sudo dnf upgrade
  • openSUSE: sudo zypper update

更新後、サービスは自動的に再起動します。デスクトップアプリとスマホアプリは別途更新します。


7. バックアップ

クリット、記憶、チャット、ファイル、AIログイン情報はすべて/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/フォルダーも同じ場所にあります。)

ダウンロードしたバックアップファイル(毎日のスナップショット)を1つだけ復元するには、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に追加して再起動します。表示された復旧IDと/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を使っていない場合、様子うかがいではクリット自身のAIを使います。
CRITTO_JOB_WORKERS 同時に実行するバックグラウンド作業(様子うかがい、予約した作業)の数。初期値は4です。

よく使うコマンド:

コマンド 内容
sudo crittod pair 新しい端末用のペアリングコードを発行
sudo crittod setup ai 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を付けてください。付けない場合、別の個人用サーバーのコードが発行されます。
  • AIアプリが「連携」に表示されない。 sudo crittod setup ai <name>をもう一度実行します。完了するとサーバーが再起動します。
  • その他。 通常、journalctl -u critto -n 100で問題の内容を確認できます。