部署Repovio
Repovio 的 Compose 堆栈启动 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:将.env中的REPOVIO_VERSION设置为精确发布的图像对,然后启动堆栈:
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 并填写 一次性首次运行设置 以创建第一个
系统管理员。
反向代理和 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_CALLBACK_URL
中设置的相同 HTTPS 回调 URL 配置 OAuth 提供程序。
升级
迁移早期安装
在启动重命名的堆栈之前,请按照 品牌升级 进行操作。将 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:将 .env 中的 REPOVIO_VERSION 设置为最后一个已知良好的镜像版本。
步骤 3:运行 docker compose pull 和 docker compose up --detach --wait。
步骤4:如果新版本迁移数据库不兼容,请停止API和Web,恢复兼容的备份,然后
再次启动之前的镜像版本。
切勿使用 docker compose down --volumes 作为更新或回滚命令:它会删除指定的 PostgreSQL 卷。