跳转到内容

完整配置示例

生产配置只固定你负责的值:secret、数据库、Redis、域名、反向代理、存储路径和已启用功能。不要把全量默认值整份复制到生产环境。

目标使用内容
Docker Compose 单机部署使用 Compose env,不写 synctv.yaml
裸机或 Kubernetes从最小生产配置开始
查字段层级查看全量配置模板
查当前二进制的最终配置运行 synctv config show --output yaml

快速开始 的生产 Compose 使用 .env.postgres.env.redis.env.synctv。最小需要确认:

.env.synctv
SYNCTV_BOOTSTRAP_ROOT_PASSWORD=replace-with-a-strong-password
# 前端和 API 不同 origin 时填写 JSON 数组。
SYNCTV_SERVER_CORS_ALLOWED_ORIGINS=["https://app.example.com"]
# init-compose-env.sh 会生成这些长期 secret。备份并复用同一组文件。
SYNCTV_JWT_SECRET=...
SYNCTV_SECURITY_OPAQUE_SERVER_SETUP_SECRET=...
SYNCTV_SECURITY_CREDENTIAL_ENCRYPTION_KEY=...

启动和验收:

Terminal window
docker compose config
docker compose up -d
curl -fsS http://localhost:8080/health/ready

裸机、Kubernetes 或自定义 secret file 使用下面的 YAML 模板。

databaseredis 都支持完整 URL,也支持拆分字段。生产环境通常优先使用 url_file,因为最少暴露凭据。

数据库 URL 形式:

database:
url_file: "/run/secrets/database_url"

数据库拆分形式:

database:
host: "postgres.example.com"
port: 5432
username: "synctv"
password_file: "/run/secrets/database_password"
name: "synctv"

Redis URL 形式:

redis:
url_file: "/run/secrets/redis_url"

Redis Sentinel 形式:

Sentinel 不能与 cluster.enabled=true 同时使用。集群部署请使用稳定单入口 Redis、托管 Redis 或平台保证连接语义的 Redis 服务。

redis:
deployment_mode: "sentinel"
sentinel_master_name: "mymaster"
sentinel_addresses:
- "redis://sentinel-0.redis:26379"
- "redis://sentinel-1.redis:26379"
- "redis://sentinel-2.redis:26379"
Terminal window
synctv config show --output yaml

指定配置文件:

Terminal window
synctv --config /etc/synctv/synctv.yaml config show --output yaml

输出 TOML:

Terminal window
synctv --config /etc/synctv/synctv.yaml config show --output toml

部署前运行:

Terminal window
synctv --config /etc/synctv/synctv.yaml config validate

检查内容:

  • 必要 secret 是否为空或仍为默认值。
  • cluster.enabled=true 时 Redis 和 cluster.secret 是否满足要求。
  • TCP management 是否配置了 management.auth_token
  • CORS origin、gRPC message size、WebAuthn origin 等字段是否合法。
  • 路径类配置能否解析。