メインコンテンツへ

セルフホスト構成

infrastructure/selfhost/docker-compose.yml と infrastructure/selfhost/helm/ / infrastructure/selfhost/k8s/ は、顧客が自分のインフラに Astar をデプロイするための配布物です。日々の開発ループとは別物です。

コードを書きながら動作確認したいだけなら、このページではなく はじめに / dev-loop を使ってください。infrastructure/selfhost/docker-compose.yml は本番相当のビルド済みイメージを使う想定で、コード変更のたびにフルビルドが走るため開発ループには向きません。

infrastructure/selfhost/docker-compose.yml

ルート README.md の Self-Hosted セクションが示す通り、.env に必須シークレット(APP_ENCRYPTION_KEY / SESSION_PASSWORD / JWT_SECRET、いずれも顧客側で openssl rand 等で新規生成するローカル値 — infrastructure/secrets/secrets.json とは無関係)を用意してから docker compose -f infrastructure/selfhost/docker-compose.yml up -d を叩くだけで http://localhost:3000 が立ち上がる構成です。

Compose プロジェクト名の既定値は astarmanagement です。旧ルート配置で作成した named volume(astarmanagement_postgres_data / astarmanagement_minio_data)をそのまま再利用できます。1 台で複数の self-host スタックを動かす場合は、COMPOSE_PROJECT_NAME または docker compose -p <name> でスタックごとに一意の名前を指定してください。

.env をリポジトリルートに置く場合は、Compose ファイルがルート配下に移動したため、各コマンドに --env-file .env を付けて明示的に読み込ませます。

含まれるサービス:

サービスイメージ / ビルド元役割
postgrespgvector/pgvector:pg17DB。app_user(RLS 用)は init スクリプトで作成、以降のマイグレーションは backend 起動時の Flyway が担当
minio / minio-initminio/minioS3 互換オブジェクトストレージ。minio-init が documents バケットをバージョニング有効で作成
kreuzbergghcr.io/kreuzberg-dev/kreuzberg:4.7.4ファイルのテキスト抽出(OCR/Markdown化)
ndlocrservices/ndlocr/日本語最適化 OCR(NDLOCR-Lite)
doc-exportservices/doc-export/HTML → PDF/PNG エクスポートレンダラー
doc-converterservices/doc-converter/旧 Office 形式 (.doc/.xls) の LibreOffice 変換
backendinfrastructure/gcp/backend/Dockerfile.productionSpring Boot API。SPRING_PROFILES_ACTIVE=selfhost
frontendfrontend/DockerfileNuxt Web UI

認証は組み込みモード(NUXT_PUBLIC_AUTH_MODE: builtin)で、本番 SaaS の Auth0 は使いません。

Collabora(ブラウザ内 Office 編集)は本番 SaaS では専用 GCE VM として動いていますが、現時点の infrastructure/selfhost/docker-compose.yml には含まれていません。self-host 環境でこの機能が必要な場合は個別に構成が必要です。

Kubernetes 版(infrastructure/selfhost/helm・infrastructure/selfhost/k8s)

より大規模な顧客向けに、Compose の代わりに Kubernetes へデプロイする経路も用意されています。

  • infrastructure/selfhost/helm/astar/ — Helm チャート
  • infrastructure/selfhost/k8s/ — Helm を使わないプレーンな YAML マニフェスト一式(namespace.yaml → secret.yaml → configmap.yaml → 各サービスの順に kubectl apply)

サービス構成は Compose 版と近いものの、infrastructure/selfhost/k8s/ には ndlocr と doc-converter が含まれず(postgres / minio / kreuzberg / doc-export / backend / frontend の 6 つ)、認証も SPRING_PROFILES_ACTIVE=local(モック認証)固定です。frontend/backend の Docker イメージは ghcr.io に push される専用ビルド(release.yml の build-frontend-docker ジョブ等)で、本番 SaaS の Cloudflare Pages / GCE デプロイとは別系統です。

この構成を触るときの注意

  • 顧客のセルフホスト環境そのものには通常アクセスしません。動作確認はローカルで docker compose -f infrastructure/selfhost/docker-compose.yml up -d を実行して行います。
  • Compose・Helm・k8s マニフェストのいずれかに新しいサービスや環境変数を足すときは、3 経路すべて(infrastructure/selfhost/docker-compose.yml / infrastructure/selfhost/helm/astar/values.yaml / infrastructure/selfhost/k8s/*.yaml)の整合を確認してください。放置すると経路ごとに構成がずれます。
  • ここでの環境変数名・デフォルト値は配布物の一部であり公開情報ですが、本番の infrastructure/secrets/secrets.json に載っている実際のシークレット値とは無関係です。混同しないこと。