Files
openmaic/OpenMAIC/packages/docs/content/docs/deployment.ja.mdx
2026-08-16 14:58:47 +08:00

117 lines
7.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: デプロイ
description: OpenMAIC を Vercel、Docker、または自分のホストにデプロイします。
---
OpenMAIC は標準的な Next.js アプリケーションであり、Next.js が動作する環境であればどこでも動作します。
## Vercel(一括デプロイ)
最速の方法です。[リポジトリの README](https://github.com/THU-MAIC/OpenMAIC) にある Deploy ボタンをクリックし、リポジトリをフォークして、案内に従い少なくとも 1 つの LLM API キーを入力してください。
Vercel は各コミットごとに Next.js アプリを再ビルド・再デプロイします。デプロイ時にはプロジェクト設定で少なくとも 1 つの LLM プロバイダーを設定する必要があります。
Vercel のデプロイはデフォルトでブラウザ側の永続化を使用します。サーバー側の永続化が必要な場合は、外部の PostgreSQL とサーバー側のデプロイ方法を利用してください。`server-persistence` Compose プロファイルは Vercel では直接利用できません。
## Docker
リポジトリには本番向けの `Dockerfile` が含まれています。イメージは Node.js 22 を使用しています。ビルドして実行します:
```bash
docker build -t openmaic .
docker run --env-file .env.local -p 3000:3000 openmaic
```
リポジトリにある Docker Compose 設定の利用を推奨します:
```bash
cp .env.example .env.local
# .env.local を編集し、少なくとも 1 つの LLM プロバイダーの設定を入力したら:
docker compose up --build
```
デフォルトの Compose デプロイは OpenMAIC アプリを起動し、`openmaic-data` ボリュームをマウントします。その他のプロバイダーや機能は必要に応じて設定してください。詳細は[設定説明](./configuration.mdx)を参照してください。
`NEXT_PUBLIC_*` の機能フラグは Docker ビルド時に注入されるため、実行時の `.env.local` に書くだけでは反映されません。例えば動画エクスポートと実験的な PPTX インポートを有効にする場合:
```bash
NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \
NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \
docker compose --profile video-export up --build
```
他のクライアント機能フラグも同様に渡せます。`docker build` を使う場合は対応する `--build-arg` を利用してください。
サーバー側プロバイダー設定を使う場合は、設定ファイルをコンテナ内の固定パスにマウントします:
```yaml
services:
openmaic:
volumes:
- ./server-providers.yml:/app/server-providers.yml:ro
```
Docker コンテナ内の `localhost` はコンテナ自身を指します。ホスト上で Ollama、Lemonade、VoxCPM、ComfyUI を動かしている場合は `host.docker.internal` を使ってください。例:`http://host.docker.internal:11434/v1` や `http://host.docker.internal:8188`。Linux の Docker では通常、`openmaic` サービスに対して `extra_hosts: ["host.docker.internal:host-gateway"]` の追加が必要です。ComfyUI は現状サーバー管理型プロバイダーではないため、本番環境では `ALLOW_LOCAL_NETWORKS=true` を設定しないと SSRF 保護によりアクセスが拒否されます。
## 自前の仮想マシンでのセルフホスト
ホストには Node.js `20.9.0` 以上と pnpm `10.28.0` が必要です。`pnpm` でビルドして起動します:
```bash
pnpm install
pnpm build
pnpm start # デフォルトでポート 3000 をリッスンします
```
TLS 終端は nginx や Caddy などを前段に置いてください。デフォルトでは授業の状態はブラウザの IndexedDB に保存されます。サーバー側永続化を有効にすると、実行時データや授業ドキュメントはサーバー側ストレージと PostgreSQL に保存されます。複数インスタンスでの運用を検討する場合は、適切な永続化方式を選択してください。
## サーバー側永続化(PostgreSQL)
リポジトリの `server-persistence` プロファイルは OpenMAIC と PostgreSQL の 2 つのコンテナを起動します。永続化用の HTTP API は OpenMAIC に組み込まれており、追加の永続化サービスは不要です。
まず `.env.local` にデータベース接続情報と開発用トークンを追加します:
```bash
DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic
PERSISTENCE_DEV_TOKEN=openmaic-local-dev
```
次にプロファイルを起動します:
```bash
NEXT_PUBLIC_PERSISTENCE=1 \
NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \
docker compose --profile server-persistence up --build
```
`NEXT_PUBLIC_PERSISTENCE` と `NEXT_PUBLIC_PERSISTENCE_TOKEN` はビルド時の変数であり、実行時のサーバー設定と一致させる必要があります。`PERSISTENCE_DEV_TOKEN` 方式はローカルまたは信頼できるネットワーク向けであり、真のユーザー分離は提供しません。公開本番環境の認証方式としては推奨されません。
PostgreSQL のデータは `openmaic-postgres` ボリュームに保存されます。`PERSISTENCE_POSTGRES_PASSWORD` はデータベースディレクトリ初回初期化時にのみパスワードを設定し、その後の環境変数変更では既存ユーザーのパスワードは自動的に変更されません。
`NEXT_PUBLIC_PERSISTENCE` を設定しなければ、従来通りブラウザ側の永続化が維持されます。
## オプション:MP4 動画エクスポート
「動画エクスポート」機能は、まずブラウザで自己完結型の Hyperframes プロジェクトを生成し、独立した `render-service` が Chromium と FFmpeg を使って MP4 にレンダリングします。このサービスは任意であり、通常の授業生成には影響しません。
`video-export` プロファイルを有効にします:
```bash
docker compose --profile video-export up --build
```
Compose は `RENDER_SERVICE_URL` を通じて OpenMAIC とレンダリングサービスを接続します。このプロファイルを有効にしないか、レンダリングサービスが利用できない場合は、エクスポートはプロジェクト ZIP のダウンロードにフォールバックし、ローカル CLI でのレンダリングを想定します。レンダリングサービスは分離されたネットワークで動作し、起動時に `NET_ADMIN` 権限が必要です。詳細や独立デプロイ方法はリポジトリの [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md) を参照してください。
## 環境変数
完全な環境変数とプロバイダー設定は[設定説明](./configuration.mdx)を参照してください。最低でも 1 つの LLM プロバイダーのキーを設定する必要があります。
## アクセス制御
共有デモでは `ACCESS_CODE` を設定してサイト全体にパスワードをかけることができます。詳細は[設定説明 → ACCESS_CODE](./configuration.mdx#access_code--サイト全体のパスワード)を参照してください。
## オプションのセルフホストサービス
- [VoxCPM2:セルフホスト TTS と音声クローン →](./voxcpm.mdx)