# 洛星瓷多用户直播组件服务配置。 # # 使用方式:复制为 config.toml 后填写所有 replace-with-* 项。这个文件 # 包含首次迁移所需的 CookieCloud、bootstrap proof 和旧 OBS 令牌,请不要 # 提交或公开分享。多用户运行数据在初始化后保存在 PostgreSQL 中。 # Docker Compose 会将它以只读方式挂载到容器的 /app/config.toml。 # 旧单用户配置兼容段:room_id 只在数据库没有任何账户时,绑定给首次 # 创建的 system_admin,并且此后不可修改。后续账号的 room_id 由系统 # 管理员创建邀请码时指定,不读取此字段。 # 实际 Bilibili Cookie 不直接写在配置中,而是通过 CookieCloud 获取。 [connection] room_id = "123456" # 替换为首个系统管理员的真实直播间 ID;不能以 0 开头。 # cookies = "SESSDATA=..." # 不需要;由 CookieCloud 托管。 # HTTP、WebSocket 及静态前端监听地址。host 网络模式下只绑定 # 127.0.0.1,让同机 Nginx 代理,不要将应用端口直接暴露到公网。 [server] bind_address = "127.0.0.1" port = 9719 # 多用户数据库。保存账户、邀请码、TOTP 注册状态、会话、恢复码摘要、 # 加密 CookieCloud 凭据、直播源、组件/设置、OBS token 摘要和审计日志。 # 数据库账号必须能执行项目迁移;租户表会启用 RLS。 [database] url = "postgresql://streamutils:replace-with-database-password@127.0.0.1:5432/streamutils?sslmode=disable" # 旧单用户配置兼容段:只在首次 system_admin 初始化时导入到该账户, # 随后 Key 和密码会使用 security.data_encryption_key 加密存入 PostgreSQL。 # 受邀用户在自己的 /control 页面填写各自的 CookieCloud;不同账户不会 # 共用凭据。迁移完成后修改此段不会覆盖数据库中的凭据。 # key 是 CookieCloud 同步 UUID;password 是同步密码。 [cookiecloud] host = "http://127.0.0.1:8088" key = "replace-with-cookiecloud-uuid" password = "replace-with-cookiecloud-password" # password 是一次性 bootstrap proof,只能在数据库尚无账户时授权创建 # 第一个 system_admin。它不会成为账户密码,也不能用于日常登录。 # 所有账户都是 passwordless:以后使用 username + TOTP(或恢复码)登录。 # session_secret 是旧配置兼容字段,目前仍为必填;填写了下方独立的数据 # 加密密钥后,它不用于签发数据库会话。两个值都应使用独立随机内容。 [admin] password = "replace-with-a-one-time-bootstrap-secret" session_secret = "replace-with-at-least-32-random-characters" # 多用户身份安全配置。用 `openssl rand -base64 32` 生成独立的 32 字节 # Base64 密钥。它使用 XChaCha20-Poly1305 加密 TOTP Secret 和各用户的 # CookieCloud Key/密码;遗失或更换后无法恢复已有密文,请安全备份。 [security] data_encryption_key = "replace-with-32-random-bytes-in-base64" # TOTP 验证器中显示的 issuer;上线后不建议随意更改。 totp_issuer = "danmaku.luoxingci.com" # 登录会话、二维码绑定流程和普通邀请码的默认有效期。 session_ttl_hours = 12 registration_ttl_minutes = 15 invitation_ttl_hours = 72 # 公开站点必须由 Nginx/可信反代提供 HTTPS,并保持此项为 true。 # 只有本机、无敏感数据的纯 HTTP 调试才能临时设为 false。 secure_cookies = true # 用户只能配置此白名单中的 CookieCloud 基础地址,防止任意服务端 # 请求。必须包含上方 cookiecloud.host;可填多个管理员批准的实例。 cookiecloud_allowed_hosts = ["http://127.0.0.1:8088"] # 旧 OBS token 兼容段:只导入首个 system_admin 的默认弹幕组件一次。 # 新组件通过控制台生成独立、可撤销且只存摘要的 token,地址格式为: # /obs/#token= # 没有需要迁移的旧 OBS 浏览器源时可设为空字符串。 [obs] access_token = "replace-with-a-long-random-obs-token" # 各活动直播源的 Bilibili 礼物目录缓存。启动时立即加载,之后按此 # 间隔刷新;失败时保留上一次成功结果。刷新间隔最小 60 秒。 [gifts] refresh_interval_seconds = 600 request_timeout_seconds = 10 # 各用户 Bilibili 直播间表情目录缓存。接口使用该用户加密保存的 # CookieCloud/SESSDATA;消息自带图片始终优先,目录仅补齐缺失地址。 [emoticons] refresh_interval_seconds = 600 request_timeout_seconds = 10 # 旧弹幕姬初始设置兼容段:只在首次 system_admin 初始化时,作为其默认 # danmaku_overlay 的旧数据迁移/回退值。其他受邀用户使用组件内建默认值; # 所有用户之后都在 /control 按组件修改,PostgreSQL 设置始终优先。 # 迁移后修改这里不会覆盖任何已有组件。价格单位为千分之一元,因此 # 10000 = 10 元、100000 = 100 元。 [overlay] # 主题 ID。当前仅内置 jade-scroll;未来主题会继续使用稳定 ID,避免改名 # 影响已经保存到 PostgreSQL 的组件设置。 theme_id = "jade-scroll" # 全局字号百分比,可在管理控制台中实时调整;允许范围 50-300。 font_scale = 140 max_visible = 5 collapse_after_seconds = 12 # 新弹幕卷轴从中心向两侧展开的时长,单位毫秒;允许范围 200-5000。 unfold_duration_ms = 1000 motion_intensity = 70 # 每张消息卡片的闪光粒子数量;0 可关闭粒子,允许范围 0-12。 particle_count = 8 # 粒子动画速度百分比;100 为标准速度,允许范围 25-300。 particle_speed = 100 low_performance_mode = false high_value_threshold = 10000 featured_value_threshold = 100000 # 首个旧组件迁移时显示的事件类别;之后在 /control 中按组件修改。 [overlay.events] danmaku = true enter = true gift = true superchat = true guard = true like = false share = false # 默认记录本服务生命周期信息,并保持依赖库仅输出警告。 # libilibili 的凭据 Debug 已脱敏,但仍不要记录 Cookie 或原始认证载荷。 [logging] filter = "lxc_stream_server=info,libilibili=warn,tokio_postgres=warn"