Stage A — 本地 mac docker 部署
跑通后再上 YOUR_SERVER_IP,详见
docs/PLAN.md。
前置
- Docker Desktop ≥ 4.30(含 docker compose v2)
- 本机 8090 / 8100 端口未被占用:
lsof -nP -iTCP:8090 -sTCP:LISTEN - git ≥ 2.30
一键启动
# 1) Plane v1.3.0 源码已随包附带于 deploy/local/src/
# (如缺失,可运行 bash deploy/local/pull-plane.sh 从 GitHub 拉取)
# 2) cp .env.template .env first ← 必做,否则 docker 起不来
cp deploy/local/.env.template deploy/local/.env
chmod 600 deploy/local/.env
# 用编辑器把所有 CHANGEME_* 替换成强密码 / 真实 API key
$EDITOR deploy/local/.env
# 3) 启动 (使用 Plane v1.3.0 community self-host compose)
cd deploy/local
docker compose \
-f src/deployments/cli/community/docker-compose.yml \
-f docker-compose.override.yml \
--env-file .env \
up -d
# 4) 健康检查
bash ../../qa/verify-local.sh
完成后访问:
- Plane Web → http://localhost:8090
- AI Agent → http://localhost:8100/healthz
首次登录后必做
- 打开
http://localhost:8090/god-mode - General → Telemetry → off(关 Plausible 默认上报)
- 设置 admin 邮箱/密码
停止 / 重启 / 清理
cd deploy/local
# 停止(保留数据卷)
docker compose -f src/deployments/cli/community/docker-compose.yml -f docker-compose.override.yml down
# 重启
docker compose -f src/deployments/cli/community/docker-compose.yml -f docker-compose.override.yml up -d
# 完全清理(含数据卷,不可逆)
docker compose -f src/deployments/cli/community/docker-compose.yml -f docker-compose.override.yml down -v
Troubleshoot
| 症状 | 检查 |
|---|---|
cp .env.template .env first:未 cp 就启动会报变量未定义 |
确认 deploy/local/.env 存在且权限 600 |
| 8090 端口被占 | lsof -nP -iTCP:8090 -sTCP:LISTEN 改 override.yml 里的 8090:80 |
:latest 镜像告警 |
docker compose images 应全是 v1.3.0(除 db/redis/minio) |
| AI healthz 失败 | docker compose logs plane-ai 检查 GPTPROTO_API_KEY 是否注入 |
| 启动后页面 502 | 等 30s — migrator 容器需先跑完数据库迁移 |
| 数据卷迁移 | docker compose ps 看到 plane-db 后 docker volume ls | grep plane |
红线
.env永不入 git(.gitignore已忽略)- 镜像 tag 锁死
v1.3.0,禁用:latest - Postgres / Redis / MinIO 不暴露 host 端口
- 真实
GPTPROTO_API_KEY只在本地.env,不写明文进任何提交