Self-host compose stack and production stability fixes

这个提交包含在:
cryptocommuniums-afk
2026-03-14 22:25:19 +08:00
父节点 f5ad0449a8
当前提交 8df0f91db7
修改 19 个文件,包含 329 行新增54 行删除

查看文件

@@ -3,9 +3,13 @@
## Topology
- 宿主机 nginx负责 `te.hao.work` 的 TLS、反向代理与大文件上传入口
- `db` 容器MySQL 8,数据持久化到 `db-data`
- `migrate` 容器:一次性执行 Drizzle 迁移,成功后退出
- `app` 容器Node 应用,端口 `3000`
- `media` 容器Go 媒体服务,端口 `8081`
- `worker` 容器Go 媒体归档 worker,共享媒体卷
- `app-data` 卷:上传视频等本地文件存储
- `db-data`MySQL 数据目录
- `media-data` 卷:录制片段、会话状态、归档成片
## Required files
@@ -21,13 +25,20 @@ cp .env.example .env
docker compose up -d --build
```
建议在 `.env` 中至少设置:
- `JWT_SECRET`
- `MYSQL_PASSWORD`
- `MYSQL_ROOT_PASSWORD`
- `LLM_API_KEY`
## nginx
`deploy/nginx.te.hao.work.conf` 放到宿主机 nginx 站点目录,确认:
- `ssl_certificate`
- `ssl_certificate_key`
- `proxy_pass http://127.0.0.1:3000` 对应前端业务 API
- `proxy_pass http://127.0.0.1:3002` 对应前端业务 API`/uploads/*`
- `proxy_pass http://127.0.0.1:8081` 对应媒体服务
启用后重载 nginx
@@ -39,7 +50,7 @@ systemctl reload nginx
## Health checks
- `curl http://127.0.0.1:3000/api/trpc/auth.me`
- `curl http://127.0.0.1:3002/api/trpc/auth.me`
- `curl http://127.0.0.1:8081/media/health`
## Persistent data
@@ -51,6 +62,8 @@ systemctl reload nginx
- `public/sessions/<session_id>/recording.webm`
- `public/sessions/<session_id>/recording.mp4`
应用本地上传文件默认位于 Docker volume `app-data` 下的 `/data/app/storage`
## Rollback
1. 保留 `.env``media-data`