首页 / Docker 自托管
Docker 自托管
拓扑
| 服务 | 镜像 | 端口(宿主) | 说明 |
|---|---|---|---|
| console | GHCR 不可变 digest(见 下载与校验) | 127.0.0.1:48500→4730 | 主控制台 + 多用户 API + cchain + RAG 编排 |
| postgres | pgvector/pgvector(manifest digest 钉死) | 不发布 | mu 库(pgvector 扩展),数据卷 pgdata |
| bge-m3 | GHCR sidecar digest | 不发布 | RAG 嵌入服务(可选) |
| webhook-ingress | node:22-alpine + webhook-proxy.js | 127.0.0.1:48590→8080 | webhook-only 入口:仅放行 webhook 与 health |
compose 全部服务
restart: unless-stopped;仅 console 与 webhook-ingress 发布端口且默认绑定回环;
postgres/sidecar 仅内部网络可达。卷与数据
pgdata— 数据库全部业务数据(唯一状态权威)evidence— 审查证据包(只读回放)model-cache— bge-m3 模型文件(可选)keystore— cchain 运行绑定密钥(可选;权限 0600 语义由镜像内保证)
备份/恢复 = 备份/恢复 pgdata 卷或定期 pg_dump(见
升级与回滚)。
webhook 入口(对外)
GitHub App 的 webhook URL 应指向你的公网入口(TLS 反代)→ 转发到
127.0.0.1:48590(webhook-ingress),路径
/api/mu/github/webhook。该入口只放行 webhook 与 health 两个路径,
其余一律 404——管理面(48500)不要直接暴露公网。
cchain 信任链(可选)
三项配置齐全后 cchain=READY,任一缺失即 BLOCKED(fail-closed,控制台如实显示):
MERGEPILOT_MODEL_CACHE_DIR— 模型文件目录(挂载卷)MERGEPILOT_PROVIDER_ATTEST_URL— 供应商证明静态端点(自建 nginx 即可)MERGEPILOT_RUN_BINDING_KEYSTORE— 运行绑定密钥(经 rotate API 轮换)
健康与巡检
docker compose --env-file .env ps
curl -s http://127.0.0.1:48500/api/health | jq
node preflight.mjs --live
/api/health 的 version 字段是运行版本的唯一真源。