コンテンツにスキップ

本番環境でデプロイ

このガイドでは二つの本番デプロイ経路を扱います。グローバル npm パッケージを自前の PostgreSQL と Redis に対して実行する方法、そしてリポジトリのインストーラーで同梱の AWS スタックをプロビジョニングする方法です。単一マシンでの試用には、代わりにはじめにを使ってください。コンテナデプロイについては、Docker でデプロイを参照してください。ブートストラップ資格情報、シングルサインオン、安全なアップグレードはセルフホストの Chorus を運用するで扱います。

外部 PostgreSQL に対してグローバルパッケージを実行する

Section titled “外部 PostgreSQL に対してグローバルパッケージを実行する”

Web アプリケーションを実行するホスト上に、Chorus コマンドをグローバルにインストールします。

Terminal window
npm install --global @chorus-aidlc/chorus

DATABASE_URL で既存の PostgreSQL データベースを Chorus に指し示し、必要な認証と秘密鍵の変数を与えてから起動します。

Terminal window
DATABASE_URL='postgresql://chorus:password@db.internal:5432/chorus' \
NEXTAUTH_SECRET='a-long-random-string' \
SUPER_ADMIN_EMAIL='admin@example.com' \
SUPER_ADMIN_PASSWORD_HASH='$2b$10$...' \
chorus

起動時、Chorus は保留中のデータベースマイグレーションを自動的に適用し(prisma migrate deploydb:migrate スクリプトとして公開されています)、その後 Web アプリケーションを 8637 ポートで提供します。データベースはすでに存在し到達可能でなければなりません。この経路では、Chorus はサーバーをあなたのために作成しません。

Chorus が本番実行で読み取る変数:

変数必須説明
DATABASE_URLはいPostgreSQL 接続文字列、postgresql://user:password@host:port/dbname
NEXTAUTH_SECRETはいセッショントークンの署名に使う秘密鍵。ランダムな値を生成してください。例:openssl rand -base64 32
SUPER_ADMIN_EMAILはい/admin の SuperAdmin パネルをブートストラップするメール。
SUPER_ADMIN_PASSWORD_HASHはいSuperAdmin パスワードの bcrypt ハッシュ。
DEFAULT_USER任意初回アクセス用の組み込みメール/パスワードログインを有効にします。
DEFAULT_PASSWORD任意組み込みログインのパスワード。
REDIS_URL任意Redis 接続文字列。複数のインスタンスを実行する場合は必須です(下記参照)。

これらのブートストラップ資格情報の仕組み、bcrypt ハッシュの生成方法、そして組み込みログインを無効にする方法については、セルフホストの Chorus を運用するを参照してください。

複数のインスタンスを実行する

Section titled “複数のインスタンスを実行する”

Chorus は Redis を通じて、インスタンス間でライブ更新(SSE イベントストリーム)を伝播します。REDIS_URL を共有の Redis に設定し、すべてのインスタンスが同じイベントを発行・受信するようにします。

Terminal window
REDIS_URL='redis://default:password@redis.internal:6379'

インスタンス間のイベント伝播には Redis が必須です。 REDIS_URL がないと、Chorus は単一プロセスにスコープされたメモリ内イベントバスにフォールバックします。あるインスタンスで行われた更新は、他のインスタンスには決して届きません。単一インスタンスのデプロイはそのメモリ内フォールバックで Redis なしに実行できますが、複数のインスタンスを持つデプロイは共有の Redis を必ず設定しなければなりません。

Chorus は packages/chorus-cdk の下に AWS CDK スタックを同梱し、それを対話的に駆動するリポジトリルートの install.sh を提供します。このスタックは、マネージドの PostgreSQL と Redis を備えた、HTTPS で前置された完全なデプロイを立ち上げます。

install.sh はまず awsnodepnpm の各コマンドが利用可能かどうか、そして AWS 資格情報が有効かどうか(aws sts get-caller-identity を呼び出します)を確認します。実行する前に、aws configure または AWS_PROFILE で資格情報を設定し、デプロイ先リージョンで AWS Certificate Manager の証明書を用意しておいてください。

リポジトリのルートから:

Terminal window
./install.sh

インストーラーはデプロイ設定を尋ねます。

プロンプト必須備考
Stack nameいいえデフォルトは Chorus
ACM Certificate ARNはいarn:aws:acm: で始まる必要があります。ロードバランサーがこれを使って HTTPS を終端します。
Custom domainいいえ例:chorus.example.com。設定するとそのドメイン向けのホストルールを追加します。
Super admin emailはい/admin の SuperAdmin アカウントをブートストラップします。
Super admin passwordはい最低 8 文字。synth 時に bcrypt でハッシュされ、平文はテンプレートに保存されません。
NextAuth secretいいえ空欄のままだと自動生成されます。

回答を集め終えると、install.sh は CDK パッケージをインストールしてビルドし、CDK 環境をブートストラップして、スタックをデプロイします。また、あなたの回答を含む再実行可能な default_deploy.sh を書き出すので、以降のデプロイでは再度尋ねられません。

スタックがプロビジョニングするもの

Section titled “スタックがプロビジョニングするもの”

このスタック(packages/chorus-cdk/lib/{chorus-stack,service,database,cache}.ts)は以下を作成します。

コンポーネント何であるか主な設定
Application Load Balancerあなたの ACM 証明書でポート 443 の HTTPS を終端する、インターネット向けの入口。サービスへ転送します。カスタムドメインが設定されているとホストルールがそれをルーティングします。アイドルタイムアウト 60 分。
ECS Fargate サービスプライベートサブネットで Chorus コンテナを実行します。希望数 2、1024 CPU ユニット/2048 MiB、自動ロールバック付きのデプロイサーキットブレーカー。
Aurora Serverless v2(PostgreSQL)マネージドの PostgreSQL クラスター。暗号化ストレージ。資格情報は自動生成され Secrets Manager に格納。バックアップ保持 1 日。
ElastiCache Serverless(Redis)インスタンス間イベント用のマネージド Redis。RBAC ユーザー。パスワードは Secrets Manager に格納。
Secrets Manager生成されたデータベースおよび Redis の資格情報と、アプリの秘密情報を保持します。実行時に ECS タスクへ注入されます。
操作コマンド
初回デプロイ./install.sh
再デプロイまたは更新./default_deploy.sh(または pnpm cdk:deploy
破棄pnpm cdk:destroy

packages/chorus-cdk がこのスタックの権威ある出典です。正確なリソース定義が必要なとき、あるいは容量、保持期間、ネットワーキングを調整したいときは、そこを参照してください。