洛星瓷直播弹幕姬
运行前复制带注释的 config.toml.example 为 config.toml,填入 CookieCloud、设置数据库和访问密钥,然后执行:
cp config.toml.example config.toml
docker compose up --build -d
应用配置遵循 blivedm_rs 的 TOML/--config 形式;Compose 会以只读方式将 config.toml 挂载到容器并传入 --config /app/config.toml。配置段及字段说明直接写在 config.toml.example 的注释中。
应用容器使用 host 网络并监听 9719。它通过 [database].url 连接 PostgreSQL,仅用于持久化 OBS 弹幕姬设置。应用会自动创建所需表;[connection].room_id、CookieCloud Key/UUID 与密码均为必填配置。
服务端已迁移为 Rust/Axum,并使用 blivedm_rs 发布的 blivedm crate 建立 Bilibili 认证弹幕连接;不再使用 Node 服务端或 @laplace.live/ws。为确保 UID、礼物价格和上游事件 ID 不会被库的简化消息结构丢弃,项目在 vendor/blivedm 固定了一个仅保留原始 JSON 的小补丁。应用从 CookieCloud 获取 Bilibili Cookie(必须包含 SESSDATA),用于获取认证 UID、直播间网关与 WebSocket 鉴权包。
OBS 弹幕姬
镜像会在构建阶段编译 apps/overlay,最终由 Rust/Axum 同域托管:
/obs?token=你的_OBS_访问令牌:透明背景的 OBS 浏览器源。它没有固定画布,按浏览器源的实际宽高自动在窄侧栏、常规卡片和低高度模式之间切换。/control:管理员控制台。使用admin.password登录后可改标题、字号、事件类别、最大条数、自动收缩、卷轴展开时长、动效、每卡粒子数量与速度、低性能模式和礼物高亮阈值;保存会实时广播给已打开的 OBS 源。
控制台的“复制 OBS 地址”会生成含只读令牌的完整地址。该令牌仅能订阅 /ws,不能访问管理或写入接口。常用 OBS 浏览器源尺寸可从 360×600、440×760 或 600×1080 开始;可按实际版面自由拖拽缩放,不会出现 1920×1080 的固定画布留白。
每张消息卡片都会从六套花纹组合中稳定选取一套,轮换使用对称花枝、横向自然藤纹和雏菊花簇,并改变上下、左右、镜像、配色与局部背景;连续的新卡会主动避开相同款式,礼物连击更新则保持原样式不跳动。透明消息墙本身不铺设全局装饰背景。粒子数量与速度可在控制台调整;窄尺寸会自动减少粒子,低性能模式会关闭动态粒子。花边 SVG 已本地打包,来源和公版/CC0 许可记录在 apps/overlay/public/assets/NOTICE.md,OBS 运行时不会访问素材站点。
后端会在启动时、之后每十分钟调用 Bilibili 的无需 Cookie 礼物面板接口缓存礼物图片、GIF、币种和价格。目录刷新失败时保留上一次成功缓存;缺失目录条目会安全降级为直播事件自带的名称与价格。
直播弹幕中的普通混排表情和整条大表情会作为安全的文字/图片分段通过 WebSocket 推送。消息自带的图片地址优先;服务还会使用 CookieCloud 的 SESSDATA 刷新直播间表情目录,在消息只提供表情唯一标识时补齐图片。图片加载失败时前端会退回原始表情文字。
刷新间隔和请求超时可通过 [gifts] 调整。[overlay] 与 [overlay.events] 是某个直播间第一次运行时的展示默认值;在 /control 保存后,数据库中的设置优先,因此更新 TOML 不会覆盖管理员已经调好的 OBS 样式。若希望重新采用 TOML 默认值,可删除该房间在 overlay_settings 表中的记录后重启。