Skip to main content

colosseum-deployment

Deploy, update, roll back, and operate Colosseum (Next.js AI Arena) on a cloud server via Docker Compose + SQLite + Caddy, or on Vercel as a fallback. USE FOR: deploy colosseum, update production, rollback, backup, restore, server maintenance, production smoke, docker compose deploy, caddy config. DO NOT USE FOR: local development setup (use ops/dev/README.md), code-level feature implementation, LLM provider configuration.

跳到安装

来源信息

仓库
Piaoxuemoli/Colosseum
最近来源活动
2026年9月9日 14:29
检测到的 SKILL.md 语言
中文
星标
1
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
colosseum-deployment
description
Deploy, update, roll back, and operate Colosseum (Next.js AI Arena) on a cloud server via Docker Compose + SQLite + Caddy, or on Vercel as a fallback. USE FOR: deploy colosseum, update production, rollback, backup, restore, server maintenance, production smoke, docker compose deploy, caddy config. DO NOT USE FOR: local development setup (use ops/dev/README.md), code-level feature implementation, LLM provider configuration.
license
MIT
metadata
{"author":"Colosseum Team","version":"1.0.0"}
# Colosseum 部署与运维 Skill 本 Skill 覆盖 Colosseum 的两条部署路径: > **2026-09-09 起的标准发版入口**:`npm run release`(一键:门禁→打包→上传→远程部署→健康门禁→失败自动回滚);回滚 `npm run release:rollback`。链路与 CI/CD 规划见 `docs/deploy/release-pipeline.md`;服务器侧脚本 `ops/deploy/remote-deploy.sh`。本 Skill 余下内容为底层细节与运维手册,适用于首次部署与排查。 1. **主路径**:云服务器 + Docker Compose + SQLite + Redis + Caddy(推荐,当前生产环境)。 2. **备用路径**:Vercel + Supabase + Upstash(无自有服务器时的 fallback)。 本地开发环境见 `ops/dev/README.md`。 --- ## 前置条件 ### 云服务器主路径 - 一台可公网访问的 Linux 服务器(当前生产:`43.156.230.108`)。 - 服务器已安装 Docker CE ≥ 24 与 `docker compose` 插件。 - 本地持有 SSH 私钥(如 `ops/private/puke.pem`),**不得提交到 Git**。 - 服务器防火墙/安全组放行 `:80`(以及 `:443` 如果后续启用 HTTPS)。 - 一个强随机的 `MATCH_TOKEN_SECRET`(建议 `openssl rand -base64 48`)。 ### Vercel Fallback - Vercel 账号并连接 GitHub 仓库。 - Supabase Postgres 项目(取 pooler 连接串)。 - Upstash Redis 项目(取 REST URL / Token)。 --- ## 主路径:云服务器 Docker Compose ### 1. 首次部署 1. **同步代码到服务器** ```bash ssh -i ops/private/puke.pem -o StrictHostKeyChecking=no root@<host> 'mkdir -p /opt/colosseum' rsync -e "ssh -i ops/private/puke.pem -o StrictHostKeyChecking=no" -az --delete \ --exclude node_modules --exclude .next --exclude .next-build --exclude .git \ --exclude old --exclude ops/private --exclude .env \ ./ root@<host>:/opt/colosseum/ ``` > 无 rsync 时也可在服务器 `git clone` / `git pull`。 2. **配置生产环境变量** ```bash ssh -i ops/private/puke.pem root@<host> cd /opt/colosseum/ops/deploy cp .env.example .env # 编辑 .env,至少填写: # BASE_URL=http://<host> # MATCH_TOKEN_SECRET=<random-32-bytes> # SYSTEM_MODERATOR_BASE_URL / SYSTEM_MODERATOR_MODEL ``` 3. **启动栈** ```bash docker compose up -d --build docker compose logs -f nextjs # 等待 migrate 完成并出现 listening ``` 4. **验证** ```bash curl http://<host>/api/health # 应返回 {"ok":true,"db":"ok","redis":"ok"} ``` 5. **启用自动备份 cron** ```bash sudo install -m 644 /opt/colosseum/ops/deploy/cron.d/colosseum-backup /etc/cron.d/colosseum-backup sudo systemctl restart cron /opt/colosseum/scripts/backup.sh # 手动跑一次确认 ``` ### 2. 日常更新 ```bash # 方式 A:rsync(推荐,本地改动未 push 时) rsync ... ./ root@<host>:/opt/colosseum/ # 方式 B:服务器直接 git pull ssh -i ops/private/puke.pem root@<host> ' cd /opt/colosseum && git pull --ff-only && cd ops/deploy && docker compose build nextjs && docker compose up -d nextjs && docker compose logs --tail 50 nextjs ' ``` ### 3. 回滚 ```bash ssh -i ops/private/puke.pem root@<host> cd /opt/colosseum git log --oneline -10 git checkout <sha-or-tag> cd ops/deploy docker compose up -d --build nextjs ``` ### 4. 备份与恢复 - **自动备份**:每日 03:07 执行 `scripts/backup.sh`,输出 `/var/backups/colosseum/arena-YYYY-MM-DD-HHMM.db.gz`,保留 14 天。 - **手动备份**:直接运行 `/opt/colosseum/scripts/backup.sh`。 - **恢复**: ```bash docker compose stop nextjs gunzip -c /var/backups/colosseum/arena-xxx.db.gz > /tmp/arena.db docker cp /tmp/arena.db colosseum-nextjs-1:/data/arena.db docker compose start nextjs ``` ### 5. 常用运维命令 ```bash docker compose ps docker compose logs -f nextjs docker compose logs --tail 100 caddy docker exec -it colosseum-nextjs-1 sqlite3 /data/arena.db docker exec -it colosseum-redis-1 redis-cli docker compose restart nextjs ``` ### 6. 故障排查速查 | 症状 | 检查点 | |---|---| | `:80` 超时 | `docker compose ps` + 云安全组 | | Lobby 空白/SSR 500 | `docker compose logs nextjs` | | SSE 不推送 | `docker compose logs caddy` + Caddyfile `@sse` 路径 | | 迁移失败 | `docker compose logs nextjs \| grep drizzle` + `/data/arena.db` 权限 | | OOM | 升级机型或 compose 中加 `mem_limit` | --- ## 备用路径:Vercel Fallback 当主服务器不可用时使用。详细步骤见 `docs/deploy/vercel.md`,摘要如下: 1. `npx vercel link` 2. 在 Vercel Dashboard 按 `.env.vercel.example` 填入环境变量(`DATABASE_URL`、`UPSTASH_REDIS_REST_URL`、`UPSTASH_REDIS_REST_TOKEN`、`MATCH_TOKEN_SECRET`、`BASE_URL`)。 3. `npx vercel --prod` 4. 迁移数据库:`DATABASE_URL='<supabase-pooler-url>' DB_DRIVER=pg npx drizzle-kit migrate` 5. 后续 `main` 分支 push 自动部署。 > 注意:Upstash REST 免费套餐无原生 pub/sub,SSE 会有约 800ms 轮询延迟。 --- ## 开发环境 本地开发使用 Postgres + Redis 容器,Next.js 在本机运行: ```bash npm run infra:up # 启动 postgres + redis npm run dev # 启动 Next.js(另一个终端) ``` 详见 `ops/dev/README.md` 与根目录 `docker-compose.yml`。 --- ## 安全约束 1. **API Key 不落盘**:LLM API key 只存在于浏览器 localStorage 与 Redis match keyring(2h TTL)。 2. **敏感文件不入库**:`.env`、`ops/private/`、SSH key 必须加入 `.gitignore`。 3. **强随机密钥**:`MATCH_TOKEN_SECRET` 至少 32 字节随机。 4. **防火墙最小开放**:仅 `:80` / `:443`,SSH 建议限 IP。 --- ## 相关文件 - 生产部署手册:`ops/deploy/README.md` - Vercel fallback:`docs/deploy/vercel.md` - 开发环境:`ops/dev/README.md` - 生产 Compose:`ops/deploy/docker-compose.yml` - 生产 Dockerfile:`ops/deploy/Dockerfile` - Caddy 配置:`ops/deploy/Caddyfile` - 备份脚本:`scripts/backup.sh` ## 项目结构说明 源码集中在 `src/`,部署流水线集中在 `ops/`: ``` . ├── src/ │ ├── app/ # Next.js App Router(页面 + API routes) │ ├── frontend/ # 前端组件与 store │ ├── backend/ # orchestrator / agent / a2a-core / auth / match │ ├── platform/ # db / redis / llm / telemetry / core / engine / memory │ └── games/ # poker / werewolf 自治包 ├── ops/ # Docker Compose、Caddy、备份 cron、开发环境 ├── scripts/backup.sh # SQLite 备份脚本 └── ... ``` 生产镜像构建时,`ops/deploy/Dockerfile` 会将 `src/platform/db/` 与 `src/platform/env.ts` 复制到 runner 阶段以支持 drizzle-kit migrate。
在 GitHub 查看