Docker を導入したくない、あるいはプロセスや nginx を細かく制御したい人向けの手順です。フロントエンドとバックエンドは独立した 2 つのもの:バックエンドは 1 つの Node プロセス、フロントエンドは静的ファイルの集まりです。
1.ツールチェーンを揃える
必要なのは Node.js 20+、pnpm 8.15.4(リポジトリの packageManager で固定されたバージョン。corepack enable で自動取得を推奨)、nginx(静的サイト配信 + HTTP リバースプロキシができる Web サーバーなら何でも可)。better-sqlite3 のコンパイルには python3、make、g++ が必要——Linux は build-essential をインストール、macOS は xcode-select --install を実行。
2.バックエンドを起動する(ポート 3000)
リポジトリルートでまず pnpm install --frozen-lockfile(workspace パッケージ)。次に api/ に入り npm ci(api は npm + package-lock.json を使い、pnpm workspace には含まれません)、npm run build を実行し、node dist/main で起動(本番では pm2 start dist/main を推奨)。api/.env は事前に用意しておくこと。SQLite は DATABASE_PATH の位置に自動作成されます。curl http://127.0.0.1:3000/health が 200 を返せば OK。
3.フロントエンドをビルドして配信する(ポート 5180)
pnpm --filter @yinjie/app build を実行すると成果物は apps/app/dist/ に出ます。リポジトリ付属の nginx テンプレートは apps/app/nginx/default.conf.template:その中の APP_API_UPSTREAM プレースホルダーを http://127.0.0.1:3000 に置換し、リッスンポートと静的ルートを実際の値に変更して、nginx -t が通ったらリロードすればそのまま使えます。テンプレートには /api、/socket.io のプロキシと SPA フォールバックが含まれています。
4.運用エンドポイントを確認する
X-Admin-Secret ヘッダーを付けて /api/admin/stats にアクセスすると 200 + JSON が返るはずです。401 が返る場合はシークレットが間違っているか、リバースプロキシが X-Admin-Secret ヘッダーを落としています(対処は「リバースプロキシと HTTPS」を参照)。
関連する質問
Enclave はセルフホストできますか?難しいですか?
できます。難易度は普通の web サービスを動かすのと同程度です。docker compose を使ったことがあれば、3 ステップで自分のインスタンスを持てます。リポジトリをクローンし、.env をコピーし、docker compose up するだけ。API・フロントエンド・データベース・ベクトルインデックスはすべて自分のマシン上で動きます。Enclaveをセルフホストするには何が必要ですか?GPUは必要ですか?
必ずしもGPUは必要ありません。クラウドモデルAPI(OpenAI、Anthropicなど)を使うなら、Dockerが動く普通のサーバーや家庭用マシンで十分です——推論はクラウドで行われ、本機はアプリとデータベースを動かすだけです。ローカルモデル(Ollama / vLLM)でオフライン推論をしたい場合にのみ、相応のVRAMと計算リソースが必要になります。Enclaveはどんなデータベースを使いますか?自分で構築する必要がありますか?
別途構築する必要はありません。Enclaveはデータベースとベクトルインデックスを内蔵しており、docker composeで立ち上げる際に一緒にローカルで動きます。ドキュメント・会話・記憶はすべて構造化されてその中に保存され、セルフホストモードではこれらのデータはあなた自身のマシン上にのみ存在します。