常用环境变量
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_CONFIG_PATH |
配置文件路径 |
SYNCTV_DATA_DIR |
data_dir |
SYNCTV_SERVER_HOST |
server.host |
SYNCTV_SERVER_PORT |
server.port |
SYNCTV_SERVER_WEB_UI_DIRECTORY |
server.web_ui_directory |
SYNCTV_HEALTH_ENABLED |
health.enabled |
SYNCTV_HEALTH_HOST |
health.host |
SYNCTV_HEALTH_PORT |
health.port |
SYNCTV_SERVER_ENABLE_REFLECTION |
server.enable_reflection |
SYNCTV_SERVER_CORS_ALLOWED_ORIGINS |
server.cors_allowed_origins |
SYNCTV_SERVER_TRUSTED_PROXIES |
server.trusted_proxies |
SYNCTV_SERVER_ADVERTISE_HOST |
server.advertise_host |
SYNCTV_SERVER_SHUTDOWN_DRAIN_TIMEOUT_SECONDS |
server.shutdown_drain_timeout_seconds |
SYNCTV_SERVER_GRPC_MAX_MESSAGE_SIZE_BYTES |
server.grpc_max_message_size_bytes |
SYNCTV_SERVER_GRPC_COMPRESSION_ENABLED |
server.grpc_compression_enabled |
SYNCTV_TIME_TIMEZONE |
time.timezone |
SYNCTV_TIME_CLOCK_SYNC_ENABLED |
time.clock_sync.enabled |
SYNCTV_TIME_CLOCK_SYNC_PROVIDER_TYPE |
time.clock_sync.provider.type |
SYNCTV_TIME_CLOCK_SYNC_PROVIDER_SERVERS |
time.clock_sync.provider.servers |
SYNCTV_TIME_CLOCK_SYNC_PROVIDER_INTERVAL_SECONDS |
time.clock_sync.provider.interval_seconds |
SYNCTV_TIME_CLOCK_SYNC_PROVIDER_TIMEOUT_MILLIS |
time.clock_sync.provider.timeout_millis |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_PUBLIC_IDS_SQIDS_ALPHABET |
public_ids.sqids.alphabet |
SYNCTV_PUBLIC_IDS_SQIDS_MIN_LENGTH |
public_ids.sqids.min_length |
初始化 root 用户
Section titled “初始化 root 用户”| 环境变量 | 对应配置 |
|---|---|
SYNCTV_BOOTSTRAP_CREATE_ROOT_USER |
bootstrap.create_root_user |
SYNCTV_BOOTSTRAP_ROOT_USERNAME |
bootstrap.root_username |
SYNCTV_BOOTSTRAP_ROOT_PASSWORD |
bootstrap.root_password |
SYNCTV_BOOTSTRAP_ROOT_PASSWORD_FILE |
bootstrap.root_password 文件 |
数据库和 Redis
Section titled “数据库和 Redis”| 环境变量 | 对应配置 |
|---|---|
SYNCTV_DATABASE_URL |
database.url |
SYNCTV_DATABASE_URL_FILE |
database.url 文件 |
SYNCTV_DATABASE_HOST |
database.host |
SYNCTV_DATABASE_PORT |
database.port |
SYNCTV_DATABASE_USERNAME |
database.username |
SYNCTV_DATABASE_PASSWORD |
database.password |
SYNCTV_DATABASE_PASSWORD_FILE |
database.password 文件 |
SYNCTV_DATABASE_NAME |
database.name |
SYNCTV_DATABASE_MAX_CONNECTIONS |
database.max_connections |
SYNCTV_DATABASE_MIN_CONNECTIONS |
database.min_connections |
SYNCTV_DATABASE_CONNECT_TIMEOUT_SECONDS |
database.connect_timeout_seconds |
SYNCTV_DATABASE_IDLE_TIMEOUT_SECONDS |
database.idle_timeout_seconds |
SYNCTV_DATABASE_MAX_LIFETIME_SECONDS |
database.max_lifetime_seconds |
SYNCTV_REDIS_URL |
redis.url |
SYNCTV_REDIS_URL_FILE |
redis.url 文件 |
SYNCTV_REDIS_HOST |
redis.host |
SYNCTV_REDIS_PORT |
redis.port |
SYNCTV_REDIS_USERNAME |
redis.username |
SYNCTV_REDIS_PASSWORD |
redis.password |
SYNCTV_REDIS_PASSWORD_FILE |
redis.password 文件 |
SYNCTV_REDIS_DATABASE |
redis.database |
SYNCTV_REDIS_CONNECT_TIMEOUT_SECONDS |
redis.connect_timeout_seconds |
SYNCTV_REDIS_RESPONSE_TIMEOUT_SECONDS |
redis.response_timeout_seconds |
SYNCTV_REDIS_PIPELINE_BUFFER_SIZE |
redis.pipeline_buffer_size |
SYNCTV_REDIS_KEY_PREFIX |
redis.key_prefix |
SYNCTV_REDIS_DEPLOYMENT_MODE |
redis.deployment_mode |
SYNCTV_REDIS_SENTINEL_MASTER_NAME |
redis.sentinel_master_name |
SYNCTV_REDIS_SENTINEL_ADDRESSES |
redis.sentinel_addresses |
独立 Media Provider Server
Section titled “独立 Media Provider Server”这些变量由 media-provider-server 二进制读取,不经过主 SyncTV 配置加载器。
| 环境变量 | 含义 |
|---|---|
PROVIDER_AUTH_SECRET |
必填,用于 x-provider-secret gRPC metadata 的共享密钥 |
PROVIDER_LISTEN_ADDR |
Provider gRPC 监听地址,默认 [::]:50051 |
PROVIDER_GRPC_COMPRESSION_ENABLED |
是否允许 provider server 协商 gzip 压缩,默认 true |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_JWT_SECRET |
jwt.secret |
SYNCTV_JWT_SECRET_FILE |
jwt.secret 文件 |
SYNCTV_SECURITY_CREDENTIAL_ENCRYPTION_KEY |
security.credential_encryption_key |
SYNCTV_SECURITY_CREDENTIAL_ENCRYPTION_KEY_FILE |
security.credential_encryption_key 文件 |
SYNCTV_SECURITY_TOTP_ENCRYPTION_KEY |
security.totp_encryption_key |
SYNCTV_SECURITY_TOTP_ENCRYPTION_KEY_FILE |
security.totp_encryption_key 文件 |
SYNCTV_SECURITY_EMAIL_OUTBOX_ENCRYPTION_KEY |
security.email_outbox_encryption_key |
SYNCTV_SECURITY_EMAIL_OUTBOX_ENCRYPTION_KEY_FILE |
security.email_outbox_encryption_key 文件 |
SYNCTV_SECURITY_OPAQUE_SERVER_SETUP_SECRET |
security.opaque_server_setup_secret |
SYNCTV_SECURITY_OPAQUE_SERVER_SETUP_SECRET_FILE |
security.opaque_server_setup_secret 文件 |
SYNCTV_SECURITY_PROXY_SIGNING_KEY |
security.proxy_signing_key |
SYNCTV_SECURITY_PROXY_SIGNING_KEY_FILE |
security.proxy_signing_key 文件 |
SYNCTV_SECURITY_MEDIA_SWARM_SIGNING_KEY |
security.media_swarm_signing_key |
SYNCTV_SECURITY_MEDIA_SWARM_SIGNING_KEY_FILE |
security.media_swarm_signing_key 文件 |
SYNCTV_SECURITY_PROVIDER_SESSION_ENCRYPTION_KEY |
security.provider_session_encryption_key |
SYNCTV_SECURITY_PROVIDER_SESSION_ENCRYPTION_KEY_FILE |
security.provider_session_encryption_key 文件 |
SYNCTV_SECURITY_LOGIN_DISCOVERY_KEY |
security.login_discovery_key |
SYNCTV_SECURITY_LOGIN_DISCOVERY_KEY_FILE |
security.login_discovery_key 文件 |
SYNCTV_SECURITY_WEBAUTHN_ENUMERATION_KEY |
security.webauthn_enumeration_key |
SYNCTV_SECURITY_WEBAUTHN_ENUMERATION_KEY_FILE |
security.webauthn_enumeration_key 文件 |
SYNCTV_SECURITY_SSRF_ENABLED |
security.ssrf.enabled |
SYNCTV_SECURITY_SSRF_ALLOW_PRIVATE_NETWORK_TARGETS |
security.ssrf.allow_private_network_targets |
SYNCTV_SECURITY_SSRF_ALLOWED_HOSTS |
security.ssrf.allowed_hosts |
SYNCTV_SECURITY_SSRF_ALLOWED_IP_RANGES |
security.ssrf.allowed_ip_ranges |
SYNCTV_JWT_ACCESS_TOKEN_DURATION_HOURS |
jwt.access_token_duration_hours |
SYNCTV_JWT_REFRESH_TOKEN_DURATION_DAYS |
jwt.refresh_token_duration_days |
SYNCTV_JWT_GUEST_TOKEN_DURATION_HOURS |
jwt.guest_token_duration_hours |
SYNCTV_JWT_CLOCK_SKEW_LEEWAY_SECS |
jwt.clock_skew_leeway_secs |
SYNCTV_PASSWORD_COMPLEXITY_MIN_LENGTH |
password_complexity.min_length |
SYNCTV_PASSWORD_COMPLEXITY_REQUIRE_UPPERCASE |
password_complexity.require_uppercase |
SYNCTV_PASSWORD_COMPLEXITY_REQUIRE_LOWERCASE |
password_complexity.require_lowercase |
SYNCTV_PASSWORD_COMPLEXITY_REQUIRE_DIGIT |
password_complexity.require_digit |
SYNCTV_PASSWORD_COMPLEXITY_REQUIRE_SPECIAL |
password_complexity.require_special |
SYNCTV_PASSWORD_COMPLEXITY_MAX_REPEATED_CHARS |
password_complexity.max_repeated_chars |
SYNCTV_PASSWORD_COMPLEXITY_ZXCVBN_ENABLED |
password_complexity.zxcvbn_enabled |
SYNCTV_PASSWORD_COMPLEXITY_ZXCVBN_MIN_SCORE |
password_complexity.zxcvbn_min_score |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_LOGGING_LEVEL |
logging.level |
SYNCTV_LOGGING_FORMAT |
logging.format |
SYNCTV_LOGGING_OUTPUT |
logging.output |
SYNCTV_LOGGING_COLOR |
logging.color |
SYNCTV_LOGGING_OUTPUT_PATH |
logging.output.path |
SYNCTV_LOGGING_OUTPUT_ROTATION_STRATEGY |
logging.output.rotation.strategy |
SYNCTV_LOGGING_OUTPUT_ROTATION_MAX_FILES |
logging.output.rotation.max_files |
SYNCTV_SERVER_LOGGING_LEVEL |
server.logging.level |
SYNCTV_SERVER_LOGGING_FORMAT |
server.logging.format |
SYNCTV_SERVER_LOGGING_OUTPUT |
server.logging.output |
SYNCTV_SERVER_LOGGING_COLOR |
server.logging.color |
SYNCTV_SERVER_LOGGING_OUTPUT_PATH |
server.logging.output.path |
SYNCTV_SERVER_LOGGING_OUTPUT_ROTATION_STRATEGY |
server.logging.output.rotation.strategy |
SYNCTV_SERVER_LOGGING_OUTPUT_ROTATION_MAX_FILES |
server.logging.output.rotation.max_files |
SYNCTV_HEALTH_LOGGING_LEVEL |
health.logging.level |
SYNCTV_HEALTH_LOGGING_FORMAT |
health.logging.format |
SYNCTV_HEALTH_LOGGING_OUTPUT |
health.logging.output |
SYNCTV_HEALTH_LOGGING_COLOR |
health.logging.color |
SYNCTV_HEALTH_LOGGING_OUTPUT_PATH |
health.logging.output.path |
SYNCTV_HEALTH_LOGGING_OUTPUT_ROTATION_STRATEGY |
health.logging.output.rotation.strategy |
SYNCTV_HEALTH_LOGGING_OUTPUT_ROTATION_MAX_FILES |
health.logging.output.rotation.max_files |
SYNCTV_METRICS_LOGGING_LEVEL |
metrics.logging.level |
SYNCTV_METRICS_LOGGING_FORMAT |
metrics.logging.format |
SYNCTV_METRICS_LOGGING_OUTPUT |
metrics.logging.output |
SYNCTV_METRICS_LOGGING_COLOR |
metrics.logging.color |
SYNCTV_METRICS_LOGGING_OUTPUT_PATH |
metrics.logging.output.path |
SYNCTV_METRICS_LOGGING_OUTPUT_ROTATION_STRATEGY |
metrics.logging.output.rotation.strategy |
SYNCTV_METRICS_LOGGING_OUTPUT_ROTATION_MAX_FILES |
metrics.logging.output.rotation.max_files |
SYNCTV_CLUSTER_LOGGING_LEVEL |
cluster.logging.level |
SYNCTV_CLUSTER_LOGGING_FORMAT |
cluster.logging.format |
SYNCTV_CLUSTER_LOGGING_OUTPUT |
cluster.logging.output |
SYNCTV_CLUSTER_LOGGING_COLOR |
cluster.logging.color |
SYNCTV_CLUSTER_LOGGING_OUTPUT_PATH |
cluster.logging.output.path |
SYNCTV_CLUSTER_LOGGING_OUTPUT_ROTATION_STRATEGY |
cluster.logging.output.rotation.strategy |
SYNCTV_CLUSTER_LOGGING_OUTPUT_ROTATION_MAX_FILES |
cluster.logging.output.rotation.max_files |
SYNCTV_MANAGEMENT_LOGGING_LEVEL |
management.logging.level |
SYNCTV_MANAGEMENT_LOGGING_FORMAT |
management.logging.format |
SYNCTV_MANAGEMENT_LOGGING_OUTPUT |
management.logging.output |
SYNCTV_MANAGEMENT_LOGGING_COLOR |
management.logging.color |
SYNCTV_MANAGEMENT_LOGGING_OUTPUT_PATH |
management.logging.output.path |
SYNCTV_MANAGEMENT_LOGGING_OUTPUT_ROTATION_STRATEGY |
management.logging.output.rotation.strategy |
SYNCTV_MANAGEMENT_LOGGING_OUTPUT_ROTATION_MAX_FILES |
management.logging.output.rotation.max_files |
SYNCTV_LIVESTREAM_LOGGING_LEVEL |
livestream.logging.level |
SYNCTV_LIVESTREAM_LOGGING_FORMAT |
livestream.logging.format |
SYNCTV_LIVESTREAM_LOGGING_OUTPUT |
livestream.logging.output |
SYNCTV_LIVESTREAM_LOGGING_COLOR |
livestream.logging.color |
SYNCTV_LIVESTREAM_LOGGING_OUTPUT_PATH |
livestream.logging.output.path |
SYNCTV_LIVESTREAM_LOGGING_OUTPUT_ROTATION_STRATEGY |
livestream.logging.output.rotation.strategy |
SYNCTV_LIVESTREAM_LOGGING_OUTPUT_ROTATION_MAX_FILES |
livestream.logging.output.rotation.max_files |
SYNCTV_WEBRTC_LOGGING_LEVEL |
webrtc.logging.level |
SYNCTV_WEBRTC_LOGGING_FORMAT |
webrtc.logging.format |
SYNCTV_WEBRTC_LOGGING_OUTPUT |
webrtc.logging.output |
SYNCTV_WEBRTC_LOGGING_COLOR |
webrtc.logging.color |
SYNCTV_WEBRTC_LOGGING_OUTPUT_PATH |
webrtc.logging.output.path |
SYNCTV_WEBRTC_LOGGING_OUTPUT_ROTATION_STRATEGY |
webrtc.logging.output.rotation.strategy |
SYNCTV_WEBRTC_LOGGING_OUTPUT_ROTATION_MAX_FILES |
webrtc.logging.output.rotation.max_files |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_MANAGEMENT_ENABLED |
management.enabled |
SYNCTV_MANAGEMENT_TRANSPORT |
management.transport |
SYNCTV_MANAGEMENT_PORT |
management.port |
SYNCTV_MANAGEMENT_UNIX_SOCKET_PATH |
management.unix_socket_path |
SYNCTV_MANAGEMENT_AUTH_TOKEN |
management.auth_token |
SYNCTV_MANAGEMENT_AUTH_TOKEN_FILE |
management.auth_token 文件 |
SYNCTV_MANAGEMENT_ENABLE_REFLECTION |
management.enable_reflection |
Metrics
Section titled “Metrics”| 环境变量 | 对应配置 |
|---|---|
SYNCTV_METRICS_ENABLED |
metrics.enabled |
SYNCTV_METRICS_HOST |
metrics.host |
SYNCTV_METRICS_PORT |
metrics.port |
SYNCTV_METRICS_TLS_ENABLED |
metrics.tls.enabled |
SYNCTV_METRICS_TLS_CERT_PATH |
metrics.tls.cert_path |
SYNCTV_METRICS_TLS_KEY_PATH |
metrics.tls.key_path |
SYNCTV_METRICS_AUTH_MODE |
metrics.auth.mode |
SYNCTV_METRICS_AUTH_BEARER_TOKEN |
metrics.auth.bearer_token |
SYNCTV_METRICS_AUTH_BEARER_TOKEN_FILE |
metrics.auth.bearer_token 文件 |
SYNCTV_METRICS_AUTH_BASIC_USERNAME |
metrics.auth.basic_username |
SYNCTV_METRICS_AUTH_BASIC_PASSWORD |
metrics.auth.basic_password |
SYNCTV_METRICS_AUTH_BASIC_PASSWORD_FILE |
metrics.auth.basic_password 文件 |
SYNCTV_METRICS_AUTH_KUBERNETES_AUDIENCE |
metrics.auth.kubernetes.audience |
SYNCTV_METRICS_AUTH_KUBERNETES_AUTHENTICATION_CACHE_TTL_SECONDS |
metrics.auth.kubernetes.authentication_cache_ttl_seconds |
SYNCTV_METRICS_AUTH_KUBERNETES_AUTHORIZATION_CACHE_TTL_SECONDS |
metrics.auth.kubernetes.authorization_cache_ttl_seconds |
WebRTC 和 WebAuthn
Section titled “WebRTC 和 WebAuthn”| 环境变量 | 对应配置 |
|---|---|
SYNCTV_WEBRTC_MODE |
webrtc.mode |
SYNCTV_WEBRTC_ENABLE_BUILTIN_STUN |
webrtc.enable_builtin_stun |
SYNCTV_WEBRTC_STUN_PORT |
webrtc.stun_port |
SYNCTV_WEBRTC_STUN_HOST |
webrtc.stun_host |
SYNCTV_WEBRTC_STUN_EXTERNAL_ADDR |
webrtc.stun_external_addr |
SYNCTV_WEBRTC_FILTER_PRIVATE_ICE_CANDIDATES |
webrtc.filter_private_ice_candidates |
SYNCTV_WEBAUTHN_ENABLED |
webauthn.enabled |
SYNCTV_WEBAUTHN_RP_ID |
webauthn.rp_id |
SYNCTV_WEBAUTHN_RP_ORIGIN |
webauthn.rp_origin |
SYNCTV_WEBAUTHN_RP_NAME |
webauthn.rp_name |
SYNCTV_WEBAUTHN_ALLOWED_ORIGINS |
webauthn.allowed_origins |
SYNCTV_WEBAUTHN_APPLE_APP_IDS |
webauthn.apple_app_ids |
SYNCTV_WEBAUTHN_ANDROID_APPS |
webauthn.android_apps |
SYNCTV_WEBAUTHN_ALLOW_SUBDOMAINS |
webauthn.allow_subdomains |
SYNCTV_WEBAUTHN_ALLOW_ANY_PORT |
webauthn.allow_any_port |
SYNCTV_WEBAUTHN_TIMEOUT_SECONDS |
webauthn.timeout_seconds |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_CACHE_L1_CAPACITY |
cache.l1_capacity |
SYNCTV_CACHE_L1_TTL_SECONDS |
cache.l1_ttl_seconds |
SYNCTV_CACHE_L2_TTL_SECONDS |
cache.l2_ttl_seconds |
SYNCTV_CACHE_USERNAME_CACHE_CAPACITY |
cache.username_cache_capacity |
SYNCTV_CACHE_USERNAME_CACHE_TTL_SECONDS |
cache.username_cache_ttl_seconds |
SYNCTV_PROXY_SLICE_CACHE_ENABLED |
proxy_slice_cache.enabled |
SYNCTV_PROXY_SLICE_CACHE_SLICE_SIZE_BYTES |
proxy_slice_cache.slice_size_bytes |
SYNCTV_PROXY_SLICE_CACHE_MAX_CACHE_SIZE_BYTES |
proxy_slice_cache.max_cache_size_bytes |
SYNCTV_PROXY_SLICE_CACHE_SEGMENT_TTL_SECONDS |
proxy_slice_cache.segment_ttl_seconds |
SYNCTV_PROXY_SLICE_CACHE_STALE_MAX_AGE_SECONDS |
proxy_slice_cache.stale_max_age_seconds |
SYNCTV_PROXY_SLICE_CACHE_STALE_WHILE_REVALIDATE |
proxy_slice_cache.stale_while_revalidate |
SYNCTV_PROXY_SLICE_CACHE_FILE_BACKEND_ENABLED |
proxy_slice_cache.file_backend_enabled |
SYNCTV_PROXY_SLICE_CACHE_FILE_CACHE_DIR |
proxy_slice_cache.file_cache_dir |
SYNCTV_PROXY_SLICE_CACHE_EVICTION_INTERVAL_SECONDS |
proxy_slice_cache.eviction_interval_seconds |
SYNCTV_PROXY_SLICE_CACHE_WATERMARK_RATIO |
proxy_slice_cache.watermark_ratio |
OAuth2 和 Provider
Section titled “OAuth2 和 Provider”| 环境变量 | 对应配置 |
|---|---|
SYNCTV_MEDIA_PROVIDERS_ALIST_REQUEST_TIMEOUT_SECONDS |
media_providers.alist.request_timeout_seconds |
SYNCTV_MEDIA_PROVIDERS_ALIST_CONNECT_TIMEOUT_SECONDS |
media_providers.alist.connect_timeout_seconds |
SYNCTV_MEDIA_PROVIDERS_BILIBILI_REQUEST_TIMEOUT_SECONDS |
media_providers.bilibili.request_timeout_seconds |
SYNCTV_MEDIA_PROVIDERS_BILIBILI_CONNECT_TIMEOUT_SECONDS |
media_providers.bilibili.connect_timeout_seconds |
SYNCTV_MEDIA_PROVIDERS_EMBY_REQUEST_TIMEOUT_SECONDS |
media_providers.emby.request_timeout_seconds |
SYNCTV_MEDIA_PROVIDERS_EMBY_CONNECT_TIMEOUT_SECONDS |
media_providers.emby.connect_timeout_seconds |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_LIVESTREAM_RTMP_PORT |
livestream.rtmp_port |
SYNCTV_LIVESTREAM_PUBLIC_RTMP_HOST |
livestream.public_rtmp_host |
SYNCTV_LIVESTREAM_GOP_CACHE_SIZE |
livestream.gop_cache_size |
SYNCTV_LIVESTREAM_STREAM_TIMEOUT_SECONDS |
livestream.stream_timeout_seconds |
SYNCTV_LIVESTREAM_CLEANUP_CHECK_INTERVAL_SECONDS |
livestream.cleanup_check_interval_seconds |
SYNCTV_LIVESTREAM_PULL_MAX_RETRIES |
livestream.pull_max_retries |
SYNCTV_LIVESTREAM_PULL_INITIAL_BACKOFF_MS |
livestream.pull_initial_backoff_ms |
SYNCTV_LIVESTREAM_PULL_MAX_BACKOFF_MS |
livestream.pull_max_backoff_ms |
SYNCTV_LIVESTREAM_MAX_FLV_TAG_SIZE_BYTES |
livestream.max_flv_tag_size_bytes |
SYNCTV_LIVESTREAM_GOP_CACHE_MAX_MEMORY_MB |
livestream.gop_cache_max_memory_mb |
SYNCTV_LIVESTREAM_HLS_STORAGE_TYPE |
livestream.hls_storage.type |
SYNCTV_LIVESTREAM_HLS_STORAGE_MEMORY_MAX_MB |
livestream.hls_storage.memory_max_mb |
SYNCTV_LIVESTREAM_HLS_STORAGE_PATH |
livestream.hls_storage.path |
SYNCTV_LIVESTREAM_HLS_STORAGE_ENDPOINT |
livestream.hls_storage.endpoint |
SYNCTV_LIVESTREAM_HLS_STORAGE_ACCESS_KEY_ID |
livestream.hls_storage.access_key_id |
SYNCTV_LIVESTREAM_HLS_STORAGE_ACCESS_KEY_ID_FILE |
livestream.hls_storage.access_key_id 文件 |
SYNCTV_LIVESTREAM_HLS_STORAGE_SECRET_ACCESS_KEY |
livestream.hls_storage.secret_access_key |
SYNCTV_LIVESTREAM_HLS_STORAGE_SECRET_ACCESS_KEY_FILE |
livestream.hls_storage.secret_access_key 文件 |
SYNCTV_LIVESTREAM_HLS_STORAGE_BUCKET |
livestream.hls_storage.bucket |
SYNCTV_LIVESTREAM_HLS_STORAGE_REGION |
livestream.hls_storage.region |
SYNCTV_LIVESTREAM_HLS_STORAGE_BASE_PATH |
livestream.hls_storage.base_path |
SYNCTV_LIVESTREAM_FLV_MAX_CONNECTION_DURATION_SECONDS |
livestream.flv_max_connection_duration_seconds |
SYNCTV_LIVESTREAM_FLV_WRITE_TIMEOUT_SECONDS |
livestream.flv_write_timeout_seconds |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_FILE_STORAGE_DEFAULT_BACKEND |
file_storage.default_backend |
SYNCTV_FILE_STORAGE_CHAT_ATTACHMENTS_BACKEND |
file_storage.chat_attachments_backend |
SYNCTV_FILE_STORAGE_USER_AVATARS_BACKEND |
file_storage.user_avatars_backend |
SYNCTV_FILE_STORAGE_MEDIA_COVERS_BACKEND |
file_storage.media_covers_backend |
SYNCTV_FILE_STORAGE_ROOM_COVERS_BACKEND |
file_storage.room_covers_backend |
SYNCTV_FILE_STORAGE_PLAYLIST_COVERS_BACKEND |
file_storage.playlist_covers_backend |
SYNCTV_FILE_STORAGE_UNREFERENCED_OBJECT_RETENTION_SECONDS |
file_storage.unreferenced_object_retention_seconds |
SYNCTV_FILE_STORAGE_BACKENDS |
file_storage.backends JSON object |
SYNCTV_FILE_UPLOAD_TOKEN_SECRET |
file_storage.upload_token_secret |
SYNCTV_FILE_UPLOAD_TOKEN_SECRET_FILE |
file_storage.upload_token_secret 文件 |
示例:关闭文件存储
SYNCTV_FILE_STORAGE_DEFAULT_BACKEND=disabledSYNCTV_FILE_STORAGE_UNREFERENCED_OBJECT_RETENTION_SECONDS=86400SYNCTV_FILE_STORAGE_BACKENDS='{}'示例:使用 PostgreSQL 存储文件
SYNCTV_FILE_STORAGE_DEFAULT_BACKEND=databaseSYNCTV_FILE_STORAGE_CHAT_ATTACHMENTS_BACKEND=databaseSYNCTV_FILE_STORAGE_USER_AVATARS_BACKEND=databaseSYNCTV_FILE_STORAGE_MEDIA_COVERS_BACKEND=databaseSYNCTV_FILE_STORAGE_ROOM_COVERS_BACKEND=databaseSYNCTV_FILE_STORAGE_PLAYLIST_COVERS_BACKEND=databaseSYNCTV_FILE_STORAGE_UNREFERENCED_OBJECT_RETENTION_SECONDS=86400SYNCTV_FILE_UPLOAD_TOKEN_SECRET_FILE=/run/secrets/file_upload_token_secretSYNCTV_FILE_STORAGE_BACKENDS='{"database":{"type":"database","compression":"zstd","compression_min_size_bytes":4096,"compression_min_savings_percent":10}}'示例:使用 S3-compatible 对象存储
SYNCTV_FILE_STORAGE_DEFAULT_BACKEND=s3_publicSYNCTV_FILE_STORAGE_CHAT_ATTACHMENTS_BACKEND=s3_publicSYNCTV_FILE_STORAGE_USER_AVATARS_BACKEND=s3_publicSYNCTV_FILE_STORAGE_MEDIA_COVERS_BACKEND=s3_publicSYNCTV_FILE_STORAGE_ROOM_COVERS_BACKEND=s3_publicSYNCTV_FILE_STORAGE_PLAYLIST_COVERS_BACKEND=s3_publicSYNCTV_FILE_STORAGE_UNREFERENCED_OBJECT_RETENTION_SECONDS=86400SYNCTV_FILE_UPLOAD_TOKEN_SECRET_FILE=/run/secrets/file_upload_token_secretSYNCTV_FILE_STORAGE_BACKENDS='{"s3_public":{"type":"s3","endpoint":"https://s3.example.com","access_key_id":"access-key","secret_access_key":"secret-key","bucket":"synctv-files","region":"auto","base_path":"files/","public_base_url":"https://cdn.example.com/files","upload_expires_seconds":900}}'| 环境变量 | 对应配置 |
|---|---|
SYNCTV_CLUSTER_ENABLED |
cluster.enabled |
SYNCTV_CLUSTER_HOST |
cluster.host |
SYNCTV_CLUSTER_PORT |
cluster.port |
SYNCTV_CLUSTER_ADVERTISE_HOST |
cluster.advertise_host |
SYNCTV_CLUSTER_ADVERTISE_PORT |
cluster.advertise_port |
SYNCTV_CLUSTER_SECRET |
cluster.secret |
SYNCTV_CLUSTER_SECRET_FILE |
cluster.secret 文件 |
SYNCTV_CLUSTER_CRITICAL_CHANNEL_CAPACITY |
cluster.critical_channel_capacity |
SYNCTV_CLUSTER_PUBLISH_CHANNEL_CAPACITY |
cluster.publish_channel_capacity |
SYNCTV_CLUSTER_DISCOVERY_MODE |
cluster.discovery_mode |
SYNCTV_CLUSTER_LEADER_ELECTION_MODE |
cluster.leader_election_mode |
SYNCTV_CLUSTER_PEERS |
cluster.peers |
SYNCTV_CLUSTER_CATCHUP_WINDOW_SECS |
cluster.catchup_window_secs |
SYNCTV_CLUSTER_STREAM_MAX_LENGTH |
cluster.stream_max_length |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_BUFFER_SIZES_WEBSOCKET_OUTBOUND |
buffer_sizes.websocket_outbound |
SYNCTV_BUFFER_SIZES_AUDIT_BUFFER |
buffer_sizes.audit_buffer |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_MESSAGING_RATE_LIMITS_CHAT_PER_SECOND |
messaging_rate_limits.chat_per_second |
SYNCTV_MESSAGING_RATE_LIMITS_WINDOW_SECONDS |
messaging_rate_limits.window_seconds |
SYNCTV_CONNECTION_LIMITS_MAX_PER_USER |
connection_limits.max_per_user |
SYNCTV_CONNECTION_LIMITS_MAX_PER_ROOM |
connection_limits.max_per_room |
SYNCTV_CONNECTION_LIMITS_MAX_TOTAL |
connection_limits.max_total |
SYNCTV_CONNECTION_LIMITS_IDLE_TIMEOUT_SECONDS |
connection_limits.idle_timeout_seconds |
SYNCTV_CONNECTION_LIMITS_MAX_DURATION_SECONDS |
connection_limits.max_duration_seconds |
SYNCTV_CONNECTION_LIMITS_WS_MESSAGE_RATE_LIMIT_PER_SECOND |
connection_limits.ws_message_rate_limit_per_second |
| 环境变量 | 对应配置 |
|---|---|
SYNCTV_REQUEST_RATE_LIMITS_AUTH_MAX_REQUESTS |
request_rate_limits.auth_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_AUTH_WINDOW_SECONDS |
request_rate_limits.auth_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_WRITE_MAX_REQUESTS |
request_rate_limits.write_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_WRITE_WINDOW_SECONDS |
request_rate_limits.write_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_READ_MAX_REQUESTS |
request_rate_limits.read_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_READ_WINDOW_SECONDS |
request_rate_limits.read_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_MEDIA_MAX_REQUESTS |
request_rate_limits.media_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_MEDIA_WINDOW_SECONDS |
request_rate_limits.media_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_ADMIN_MAX_REQUESTS |
request_rate_limits.admin_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_ADMIN_WINDOW_SECONDS |
request_rate_limits.admin_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_SCOPES |
request_rate_limits.scopes |
SYNCTV_REQUEST_RATE_LIMITS_STREAMING_MAX_REQUESTS |
request_rate_limits.streaming_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_STREAMING_WINDOW_SECONDS |
request_rate_limits.streaming_window_seconds |
SYNCTV_REQUEST_RATE_LIMITS_WEBSOCKET_MAX_REQUESTS |
request_rate_limits.websocket_max_requests |
SYNCTV_REQUEST_RATE_LIMITS_WEBSOCKET_WINDOW_SECONDS |
request_rate_limits.websocket_window_seconds |
CLI 专用变量
Section titled “CLI 专用变量”这些变量由 synctv 管理 CLI 读取,不属于服务端静态配置文件字段。config validate --strict 不会把它们当作未知 SYNCTV_ 配置变量报错。
| 环境变量 | 含义 |
|---|---|
SYNCTV_MANAGEMENT_ENDPOINT |
管理 CLI 连接的 management endpoint,例如 unix:///var/lib/synctv/run/synctv.sock 或 http://127.0.0.1:50052 |