Repovio のデプロイ
RepovioCompose スタックが開始されます PostgreSQL、Prisma 移行を一度適用してから、API と Web アプリケーションを開始します。 TLS は終了しません。 Web サービスと API サービスを、パブリック ホスト名と証明書を所有するリバース プロキシの背後に配置します。
前提条件
- Docker Compose v2 を使用した Docker エンジン。
- パブリック ホスト名の DNS レコード。
- TLS 証明書を取得および更新するリバース プロキシ。
- 導入管理者のみが読み取り可能なプライベート サーバー ディレクトリ。
Compose スタックは存続します PostgreSQL 正規化されたユーザープロフィール写真を含むデータを、その名前付きファイルに保存します。
repovio-postgres 音量。意図的にすべてを削除する場合を除き、このボリュームを削除しないでください。 Repovio データ。
最初の展開
ステップ 1: リリースされたものを確認する Repovio バージョンを確認し、プライベート環境ファイルを作成します。
cp .env.example .env
chmod 600 .env
ステップ 2: すべてのプレースホルダーを置き換えます .env、 特に POSTGRES_PASSWORD、両方のデータベース URL、 AUTH_JWT_SECRET、 そして
TOKEN_ENCRYPTION_KEY。以下を使用して暗号化キーを生成します。
openssl rand -base64 32
ステップ 3: 外部から見える URL を設定します。デプロイメントの場合、 https://repovio.example.com、 使用:
PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
CORS_ORIGIN=https://repovio.example.com
NUXT_PUBLIC_API_BASE_URL=https://repovio.example.com/api/v1
OAUTH_CALLBACK_URL=https://repovio.example.com/api/v1/provider-accounts/oauth/callback
ステップ 4: リバース プロキシが同じホスト上で実行されている場合、コンテナ ポートをループバックにバインドします。
REPOVIO_API_PORT=127.0.0.1:3001
REPOVIO_WEB_PORT=127.0.0.1:3000
それ以外の場合は、ホスト ファイアウォールを使用してポート 3000 および 3001 へのアクセスを制限します。決して暴露しないでください PostgreSQL 容器。
ステップ 5: 設定する REPOVIO_VERSION で .env 正確にリリースされたイメージ ペアに設定し、スタックを開始します。
docker compose pull
docker compose up --detach --wait
その値を保持しておいてください .env
したがって、以降のすべての Compose コマンドは同じ API と Web バージョンを使用します。
ステップ 6: API 正常性エンドポイントをローカルで確認します。
curl --fail http://127.0.0.1:3001/api/health
ステップ 7: 一般に公開する Repovio URL を入力して、 初回実行の 1 回限りのセットアップ 最初のものを作成する
システム管理者。
リバースプロキシとTLS
パブリック Web オリジンをポート 3000 にプロキシし、API および Socket.IO パスをポート 3001 にプロキシします。たとえば、Caddy サイト ブロックは次のものを使用できます。
repovio.example.com {
reverse_proxy /api/* 127.0.0.1:3001
reverse_proxy /socket.io/* 127.0.0.1:3001
reverse_proxy /mcp 127.0.0.1:3001
reverse_proxy 127.0.0.1:3000
}
プロキシは、HTTP を HTTPS にリダイレクトし、ローカル ポリシーに従ってアップストリーム接続を検証し、パブリック ホスト名を保存する必要があります。設定する OAuth 同じ HTTPS コールバック URL が設定されているプロバイダー
OAUTH_CALLBACK_URL。
アップグレード中
以前のインストールの移行
フォローしてください ブランドのアップグレード
名前を変更したスタックを開始する前に。セット REPOVIO_POSTGRES_VOLUME
正確な既存のボリューム名に変更します。データベースの資格情報と暗号化キーを保存します。ブランド化のためにデータベースのコピーやリセットは必要ありません。
ステップ 1: イメージを変更する前に、データベースのバックアップを作成して確認します。
ステップ 2: 設定する REPOVIO_VERSION 正確なリリースバージョンに .env。
ステップ 3: リリースを引っ張って適用します。
docker compose pull
docker compose up --detach --wait
の migrate サービスは、API が開始される前に保留中の Prisma 移行を適用します。更新するたびに検査してください。
docker compose logs migrate
ステップ 4: 更新が完了したと判断する前に、正常性エンドポイントとプロキシが提供するダッシュボードを確認します。
データベースのバックアップ
展開ディレクトリからバックアップを実行します。これは、 PostgreSQL 資格情報を印刷したりコマンドラインに入力したりせずに、カスタム形式のダンプをホストに送信します。
mkdir -p backups
backup_file="backups/repovio-$(date +%F-%H%M%S).dump"
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -Fc "$POSTGRES_DB"' \
> "$backup_file"
pg_restore --list "$backup_file"
暗号化されたコピーをオフホストに保存し、別のシステムで定期的に復元をテストします。
データベースの復元
復元すると、現在のデータベース オブジェクトが置き換えられます。まず新しいバックアップを作成し、ダウンタイムをスケジュールします。
docker compose stop api web
docker compose exec -T postgres sh -c 'pg_restore -U "$POSTGRES_USER" --clean --if-exists --no-owner -d "$POSTGRES_DB"' \
< backups/repovio-YYYY-MM-DD-HHMMSS.dump
docker compose up --detach --wait
その後、確認してください docker compose logs migrate
そして API ヘルスエンドポイント。互換性のあるソフトウェアによって作成されたダンプを復元する Repovio スキーマ変更をロールバックするときのバージョン。
ロールバック
ステップ 1: アップグレードが失敗する直前に作成されたバックアップを保持します。
ステップ 2: 設定する REPOVIO_VERSION で .env 最後の正常なイメージバージョンに。
ステップ 3: 実行 docker compose pull そして docker compose up --detach --wait。
ステップ 4: 新しいリリースで互換性のないデータベースが移行された場合は、API と Web を停止し、互換性のあるバックアップを復元してから、
以前のイメージ バージョンを再度開始します。
docker compose down --volumes
を更新またはロールバック コマンドとして使用しないでください。指定された PostgreSQL ボリュームが削除されます。