跳转到内容

Docker Compose 部署

仓库提供两个 Compose 文件:

文件用途特点
docker-compose.dev.yml本地开发从本地 Dockerfile 构建,内置开发 secret
docker-compose.yml预构建镜像部署使用 synctvorg/synctv:0.1.0,需要显式提供生产 secret

启动:

Terminal window
docker compose -f docker-compose.dev.yml up -d

这个文件会启动:

  • PostgreSQL 18
  • Redis 8
  • SyncTV 本地构建镜像

它内置了开发用:

  • JWT secret
  • cluster secret
  • credential encryption key
  • OPAQUE setup secret
  • root 密码

这些值只适合开发,不适合生产。

Compose 使用 volume 保存数据:

  • PostgreSQL 数据。
  • Redis 数据。
  • SyncTV /data 运行时目录。

/data 对应:

Terminal window
SYNCTV_DATA_DIR=/data

这个目录可能包含:

  • 管理 socket 相关运行时文件。
  • HLS 文件。
  • proxy slice cache 文件。
  • 其他运行时输出。

默认暴露:

宿主端口容器端口用途
80808080HTTP REST + gRPC + 健康检查
19351935RTMP
3478/udp3478/udpSTUN

如果宿主机端口冲突,可以修改 Compose ports。

Compose 使用:

http://localhost:8080/health/ready

如果健康检查失败,先看日志:

Terminal window
docker compose logs -f synctv

为什么生产 Compose 强制要求 secret?

Section titled “为什么生产 Compose 强制要求 secret?”

因为这些值如果自动用默认弱值,服务可能看起来能跑,但安全性不可接受。

我改了 SYNCTV_SECURITY_OPAQUE_SERVER_SETUP_SECRET 后用户不能登录?

Section titled “我改了 SYNCTV_SECURITY_OPAQUE_SERVER_SETUP_SECRET 后用户不能登录?”

这是预期风险。这个 secret 必须长期稳定。不要在每次部署时重新生成。

至少备份:

  • PostgreSQL volume。
  • 生产 secret。
  • 如果启用了持久化 slice cache 或 HLS 文件,也按需求备份 /data

Redis 通常是缓存和共享状态,但如果你依赖 token blacklist、OAuth2 state 等短期状态,重启影响也要考虑。