Skip to content

Configuration Index

This page is the configuration coverage index. Use it to confirm whether a YAML field is documented and to find the detailed page for that field.

Defaults in this page are source-level defaults. synctv config show --output yaml prints the effective configuration after defaults, config file, environment variables, CLI overrides, path resolution, and timezone fallback are applied. OAuth2 provider instances are runtime settings; see Runtime Settings. Remote media provider instances are persisted through the management API/CLI and are not static config-file fields.

The full YAML template is kept on a dedicated page so this index stays scannable:

  • Full Configuration Example: minimal production skeleton, full YAML template covering all static fields, and URL/split configuration examples.
  • synctv config show --output yaml: prints the current binary’s complete effective configuration with secrets redacted.
FieldTypeDefaultDetails
serverobjectsee belowServer Listener and Runtime Paths
timeobjectsee belowServer Listener and Runtime Paths
public_idsobjectsee belowPublic IDs
securityobjectsee belowSecurity and Secrets
data_dirstring pathplatform-specificServer Listener and Runtime Paths
metricsobjectsee belowMetrics Monitoring
managementobjectsee belowServer Listener and Runtime Paths
databaseobjectsee belowDatabase and Redis
redisobjectsee belowDatabase and Redis
jwtobjectsee belowSecurity and Secrets
loggingobjectsee belowServer Listener and Runtime Paths
livestreamobjectsee belowLivestream Configuration
webauthnobjectsee belowWebAuthn and Passkeys
emailobjectsee belowEmail and OAuth2
media_providersobjectsee belowMedia Providers
webrtcobjectsee belowWebRTC Configuration
connection_limitsobjectsee belowRate Limits and Connection Limits
bootstrapobjectsee belowBootstrap Root User
clusterobjectsee belowCluster Configuration
password_complexityobjectsee belowSecurity and Secrets
buffer_sizesobjectsee belowInternal Buffers
cacheobjectsee belowCache and Proxy Slice Cache
messaging_rate_limitsobjectsee belowRate Limits and Connection Limits
http_rate_limitsobjectsee belowRate Limits and Connection Limits
grpc_rate_limitsobjectsee belowRate Limits and Connection Limits
FieldType / valuesDefaultMeaning
server.hostIP/listen address0.0.0.0Main API listen address
server.portport8080HTTP REST, public gRPC, and health-check port
server.enable_reflectionbooleantrueEnable public gRPC reflection
server.trusted_proxiesstring array[]Trusted reverse proxy IPs/CIDRs
server.cors_allowed_originsstring array[]Frontend origins allowed by startup CORS
server.cluster_secretsecret string""Authentication secret for internal cluster gRPC
server.advertise_hoststring""Address other nodes use to reach this node
server.shutdown_drain_timeout_secondsseconds30Graceful shutdown drain timeout
server.grpc_max_message_size_bytesbytes16777216Maximum gRPC message size
FieldType / valuesDefaultMeaning
time.timezoneIANA timezone""Timezone for human-readable formatting and local datetime parsing
public_ids.sqidsobject or nullnullEnable sqids public IDs when configured
public_ids.sqids.alphabetstring or nullnullsqids alphabet
public_ids.sqids.min_lengthinteger12Minimum sqids length
security.credential_encryption_key64-character hex secret""Provider credential encryption key
security.opaque_server_setup_secretsecret string""Stable OPAQUE server setup secret
FieldType / valuesDefaultMeaning
metrics.enabledbooleanfalseStart the dedicated metrics listener
metrics.hostIP/listen address0.0.0.0Metrics listen address
metrics.portport9090Metrics listen port
metrics.tls.enabledbooleanfalseEnable TLS on the metrics listener
metrics.tls.cert_pathfile path""Metrics TLS certificate
metrics.tls.key_pathfile path""Metrics TLS private key
metrics.auth.modebearer_token, basic, or kubernetesbearer_tokenMetrics authentication mode
metrics.auth.bearer_tokensecret string""Bearer token for bearer-token mode
metrics.auth.basic_usernamestring""Basic-auth username
metrics.auth.basic_passwordsecret string""Basic-auth password
metrics.auth.kubernetes.audiencestring""Kubernetes TokenReview audience
metrics.auth.kubernetes.authentication_cache_ttl_secondsseconds60TokenReview result cache TTL
metrics.auth.kubernetes.authorization_cache_ttl_secondsseconds60SubjectAccessReview result cache TTL
FieldType / valuesDefaultMeaning
management.enabledbooleantrueEnable the management endpoint
management.transportunix or tcpunix on Unix, tcp elsewhereManagement endpoint transport
management.portport50052TCP management port
management.unix_socket_pathfile pathplatform-specificUnix socket path
management.auth_tokensecret string""TCP management bearer token
management.enable_reflectionbooleanfalseManagement gRPC reflection
FieldType / valuesDefaultMeaning
database.urlPostgreSQL URLpostgresql://synctv:synctv@localhost:5432/synctvComplete database connection URL
database.hoststring""Database host for split configuration
database.portport0Database port for split configuration
database.usernamestring""Database username
database.passwordsecret string""Database password
database.namestring""Database name
database.max_connectionsinteger20Maximum pool connections
database.min_connectionsinteger5Minimum idle pool connections
database.connect_timeout_secondsseconds10Connection timeout
database.idle_timeout_secondsseconds600Idle connection timeout
database.max_lifetime_secondsseconds1800Maximum connection lifetime
FieldType / valuesDefaultMeaning
redis.urlRedis URL""Complete Redis connection URL
redis.hoststring""Redis host for split configuration
redis.portport0Redis port for split configuration
redis.usernamestring""Redis username
redis.passwordsecret string""Redis password
redis.databaseinteger0Redis database index
redis.connect_timeout_secondsseconds5Redis connection timeout
redis.key_prefixstringsynctv:Redis key prefix
redis.deployment_modestandalone or sentinelstandaloneRedis deployment mode
redis.sentinel_master_namestring or nullnullSentinel master name
redis.sentinel_addressesstring array[]Sentinel node addresses
FieldType / valuesDefaultMeaning
jwt.secretsecret stringchange-me-in-productionToken signing secret
jwt.access_token_duration_hourshours1Access-token lifetime
jwt.refresh_token_duration_daysdays30Refresh-token lifetime
jwt.guest_token_duration_hourshours4Guest-token lifetime
jwt.clock_skew_leeway_secsseconds60Token timestamp skew allowance
logging.levelerror, warn, info, debug, or traceinfoLog level
logging.formatpretty or jsonprettyLog format
logging.filtertracing filter string or nullnullAdvanced module-level log filter
logging.backtracebooleanfalseEmit backtraces
logging.file_pathfile path or nullnullLog file path
FieldType / valuesDefaultMeaning
livestream.rtmp_portport1935RTMP ingest port
livestream.public_rtmp_hoststring""Public RTMP host returned to publishers
livestream.gop_cache_sizeinteger2Number of GOPs cached per stream
livestream.stream_timeout_secondsseconds300Pull-stream idle timeout
livestream.cleanup_check_interval_secondsseconds60Cleanup check interval
livestream.pull_max_retriesinteger10Maximum pull-stream retries
livestream.pull_initial_backoff_msmilliseconds1000Initial pull retry backoff
livestream.pull_max_backoff_msmilliseconds30000Maximum pull retry backoff
livestream.max_flv_tag_size_bytesbytes10485760Maximum accepted FLV tag size
livestream.gop_cache_max_memory_mbMB100GOP cache memory limit
livestream.hls_memory_max_mbMB0In-memory HLS storage limit; 0 uses the built-in default
livestream.hls_storage_backendmemory, file, or ossmemoryHLS segment storage backend
livestream.hls_shared_storagebooleanfalseWhether the file backend path is a multi-replica shared filesystem
livestream.hls_storage_pathpath""HLS file path for the file backend
livestream.hls_oss.endpointstring""S3/OSS endpoint for the oss backend; required when oss is enabled
livestream.hls_oss.access_key_idsecret string""Access key ID for the oss backend; required when oss is enabled
livestream.hls_oss.secret_access_keysecret string""Secret access key for the oss backend; required when oss is enabled
livestream.hls_oss.bucketstring""Bucket for the oss backend; required when oss is enabled
livestream.hls_oss.regionstring or nullnullRegion for the oss backend
livestream.hls_oss.base_pathstringhls/Object key prefix inside the bucket
livestream.flv_max_connection_duration_secondsseconds86400Maximum HTTP-FLV connection duration
livestream.flv_write_timeout_secondsseconds30HTTP-FLV write timeout
FieldType / valuesDefaultMeaning
webauthn.enabledbooleanfalseEnable passkey endpoints
webauthn.rp_iddomain""WebAuthn relying-party ID
webauthn.rp_originorigin""Primary WebAuthn origin
webauthn.rp_namestringSyncTVAuthenticator display name
webauthn.allowed_originsorigin array[]Additional accepted origins
webauthn.allow_subdomainsbooleanfalseAllow subdomains of configured origins
webauthn.allow_any_portbooleanfalseIgnore origin ports
webauthn.timeout_secondsseconds300Challenge timeout
email.smtp_hoststring""SMTP host
email.smtp_portport587SMTP port
email.smtp_usernamestring""SMTP username
email.smtp_passwordsecret string""SMTP password
email.from_emailemail address""Sender email address
email.from_namestringSyncTVSender display name
email.use_tlsbooleantrueUse TLS for SMTP
FieldType / valuesDefaultMeaning
media_providers.alist.request_timeout_secondsseconds30Local Alist provider request timeout
media_providers.alist.connect_timeout_secondsseconds10Local Alist provider connection timeout
media_providers.bilibili.request_timeout_secondsseconds30Local Bilibili provider request timeout
media_providers.bilibili.connect_timeout_secondsseconds10Local Bilibili provider connection timeout
media_providers.emby.request_timeout_secondsseconds30Local Emby/Jellyfin provider request timeout
media_providers.emby.connect_timeout_secondsseconds10Local Emby/Jellyfin provider connection timeout
webrtc.modesignaling_only or peer_to_peerpeer_to_peerWebRTC operating mode
webrtc.enable_builtin_stunbooleantrueEnable built-in STUN
webrtc.stun_portport3478STUN port
webrtc.stun_hostIP/listen address0.0.0.0STUN listen address
webrtc.stun_external_addrstring""STUN external address announced to clients
webrtc.filter_private_ice_candidatesbooleantrueFilter private ICE candidates
FieldType / valuesDefaultMeaning
connection_limits.max_per_userinteger5Maximum connections per user
connection_limits.max_per_roominteger200Maximum connections per room
connection_limits.max_totalinteger10000Maximum service-wide connections
connection_limits.idle_timeout_secondsseconds300Idle connection timeout
connection_limits.max_duration_secondsseconds86400Maximum connection lifetime
connection_limits.ws_message_rate_limit_per_secondper-second count50WebSocket message rate per connection
bootstrap.create_root_userbooleanfalseCreate the initial root user automatically
bootstrap.root_usernamestringrootInitial root username
bootstrap.root_emailemail or empty""Initial root email
bootstrap.root_passwordsecret string""Initial root password
cluster.enabledbooleanfalseEnable cluster mode
cluster.critical_channel_capacityinteger1000High-priority cluster event queue capacity
cluster.publish_channel_capacityinteger10000Normal cluster publish queue capacity
cluster.discovery_moderedis, static, or k8s_dnsredisNode discovery mode
cluster.leader_election_moderedis or k8s_leaseredisLeader election mode
cluster.peersstring array[]Static peer addresses
cluster.catchup_window_secsseconds300Redis Stream catch-up replay window
cluster.stream_max_lengthinteger10000Approximate Redis Stream maximum length

password_complexity, buffer_sizes, and cache

Section titled “password_complexity, buffer_sizes, and cache”
FieldType / valuesDefaultMeaning
password_complexity.min_lengthinteger8Minimum password length
password_complexity.require_uppercasebooleantrueRequire uppercase letters
password_complexity.require_lowercasebooleantrueRequire lowercase letters
password_complexity.require_digitbooleantrueRequire digits
password_complexity.require_specialbooleanfalseRequire special characters
password_complexity.max_repeated_charsinteger3Maximum repeated consecutive characters; 0 disables this check
buffer_sizes.websocket_outboundinteger256Per-connection WebSocket outbound queue size
buffer_sizes.audit_bufferinteger10000Audit event buffer capacity
cache.l1_capacityinteger500L1 in-memory cache capacity
cache.l1_ttl_secondsseconds300L1 in-memory cache TTL
cache.l2_ttl_secondsseconds300Redis L2 cache TTL
cache.username_cache_capacityinteger1000Username cache capacity
cache.username_cache_ttl_secondsseconds3600Username cache TTL
cache.permission_cache_capacityinteger1000Permission cache capacity
cache.permission_cache_ttl_secondsseconds300Permission cache TTL
cache.proxy_slice_cache_enabledbooleantrueEnable proxy slice cache at startup
cache.proxy_slice_file_backend_enabledbooleanfalseEnable file backend for proxy slice cache
cache.proxy_slice_file_cache_dirpath""Proxy slice cache file directory
FieldType / valuesDefaultMeaning
messaging_rate_limits.chat_per_secondinteger10Maximum chat messages per window
messaging_rate_limits.danmaku_per_secondinteger3Maximum danmaku messages per window
messaging_rate_limits.window_secondsseconds1Chat/danmaku rate-limit window
FieldType / valuesDefaultMeaning
http_rate_limits.auth_max_requestsinteger5Maximum HTTP auth requests per window
http_rate_limits.auth_window_secondsseconds60HTTP auth rate-limit window
http_rate_limits.write_max_requestsinteger30Maximum HTTP write requests per window
http_rate_limits.write_window_secondsseconds60HTTP write rate-limit window
http_rate_limits.read_max_requestsinteger100Maximum HTTP read requests per window
http_rate_limits.read_window_secondsseconds60HTTP read rate-limit window
http_rate_limits.media_max_requestsinteger20Maximum HTTP media requests per window
http_rate_limits.media_window_secondsseconds60HTTP media rate-limit window
http_rate_limits.admin_max_requestsinteger30Maximum HTTP admin requests per window
http_rate_limits.admin_window_secondsseconds60HTTP admin rate-limit window
http_rate_limits.streaming_max_requestsinteger200Maximum HTTP streaming requests per window
http_rate_limits.streaming_window_secondsseconds60HTTP streaming rate-limit window
http_rate_limits.websocket_max_requestsinteger10Maximum WebSocket connection attempts per window
http_rate_limits.websocket_window_secondsseconds60WebSocket connection rate-limit window
FieldType / valuesDefaultMeaning
grpc_rate_limits.auth_max_requestsinteger5Maximum gRPC auth requests per window
grpc_rate_limits.auth_window_secondsseconds60gRPC auth rate-limit window
grpc_rate_limits.email_max_requestsinteger5Maximum gRPC email requests per window
grpc_rate_limits.email_window_secondsseconds60gRPC email rate-limit window
grpc_rate_limits.media_max_requestsinteger20Maximum gRPC media requests per window
grpc_rate_limits.media_window_secondsseconds60gRPC media rate-limit window
grpc_rate_limits.write_max_requestsinteger30Maximum gRPC write requests per window
grpc_rate_limits.write_window_secondsseconds60gRPC write rate-limit window
grpc_rate_limits.admin_max_requestsinteger30Maximum gRPC admin requests per window
grpc_rate_limits.admin_window_secondsseconds60gRPC admin rate-limit window
grpc_rate_limits.read_max_requestsinteger100Maximum gRPC read requests per window
grpc_rate_limits.read_window_secondsseconds60gRPC read rate-limit window