跳转到内容

完整配置示例

完整配置模板用于查字段、确认层级和准备自己的配置文件,不建议把所有默认值原样复制到生产环境。生产配置应只固定你明确负责的值,例如 secret、数据库、Redis、域名、反向代理、存储路径和已启用功能。

推荐流程:

  1. 从下面的“最小生产配置骨架”开始。
  2. 需要启用某个能力时,再从“全量配置模板”复制对应段落。
  3. 使用 synctv config validate 校验生产配置。
  4. 使用 synctv config show --output yaml 查看最终生效配置。这个命令会合并默认值、配置文件、环境变量和 CLI 覆盖,并自动打码 secret。

下面示例覆盖生产部署最常见的必填项。secret 建议用 _file 形式注入,不要直接写在 YAML 里。

server:
host: "0.0.0.0"
port: 8080
enable_reflection: false
cors_allowed_origins:
- "https://app.example.com"
trusted_proxies:
- "10.0.0.0/8"
data_dir: "/var/lib/synctv"
database:
url_file: "/run/secrets/database_url"
max_connections: 20
min_connections: 5
redis:
url_file: "/run/secrets/redis_url"
key_prefix: "synctv:"
jwt:
secret_file: "/run/secrets/jwt_secret"
security:
credential_encryption_key_file: "/run/secrets/credential_encryption_key"
opaque_server_setup_secret_file: "/run/secrets/opaque_server_setup_secret"
management:
enabled: true
transport: "unix"
enable_reflection: false
bootstrap:
create_root_user: true
root_username: "root"
root_email: "admin@example.com"
root_password_file: "/run/secrets/bootstrap_root_password"
logging:
level: "info"
format: "json"
metrics:
enabled: true
host: "0.0.0.0"
port: 9090
auth:
mode: "bearer_token"
bearer_token_file: "/run/secrets/metrics_bearer_token"

这个骨架没有启用集群、WebAuthn、OAuth2、SMTP、Provider、HLS 文件存储或 slice cache 文件后端。需要这些能力时再进入对应配置页补充。

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 和 server.cluster_secret 是否满足要求。
  • TCP management 是否配置了 management.auth_token
  • CORS origin、gRPC message size、WebAuthn origin 等字段是否合法。
  • 路径类配置是否能按预期解析。