3344 字
17 分钟

Docker 部署御坂网络弹幕服务 Misaka Danmu Server

什么是御坂网络弹幕服务#

御坂网络弹幕服务(Misaka Danmu Server)是一个功能强大的自托管弹幕聚合与管理服务,兼容 dandanplay API 规范。它能够从多个视频平台实时获取弹幕数据,为你的私人媒体库(如 Emby、Jellyfin、Plex)提供弹幕支持。

l429609201
/
misaka_danmu_server
Waiting for api.github.com...
00K
0K
0K
Waiting...

核心功能#

  • 智能匹配:通过文件名或元数据(TMDB、TVDB 等)自动匹配媒体内容
  • Web 管理界面:提供直观的 UI 用于搜索/导入弹幕、管理媒体源、创建 API Token、配置搜索优先级
  • 弹幕源管理:支持从资源仓库安装或上传离线弹幕源包,具备备份/恢复功能
  • 元数据整合:整合 TMDB、TVDB、Bangumi、豆瓣、IMDb 等多个元数据源
  • 自动化支持:支持 Sonarr、Radarr、Emby 的 Webhook 通知,实现弹幕自动导入
  • 多播放器兼容:支持 SenPlayer、Infuse、小幻、yamby、eplayerx 等播放器

与 danmu_api 对比#

如果你只需要轻量级的弹幕服务,可以参考我之前写的 danmu_api 部署教程。两者的主要区别如下:

功能danmu_apimisaka_danmu_server
基本弹幕抓取
dandanplay API 兼容
Web 管理界面
媒体库/元数据匹配✅ TMDB/TVDB/Bangumi/豆瓣/IMDb
Webhook 自动化✅ Sonarr/Radarr/Emby
弹幕源管理有限✅ 完整的源管理系统
Token 授权体系简单✅ 完整权限控制
部署复杂度简单(无需数据库)中等(需要 MySQL)
适用场景个人轻量使用完整媒体库管理

准备工作#

服务器要求#

  • 内存:建议 2GB 以上
  • 磁盘:建议 20GB 以上
  • 网络:建议使用中国大陆 IP,海外 IP 可能因网络或版权限制导致部分弹幕源不可用

安装 Docker#

如果还没有安装 Docker,执行以下命令:

如果你使用dokploy,也可以使用官方模版,我已经提交了PR,等待合并。

https://github.com/Dokploy/templates/pull/624#issuecomment-3686872830

Terminal window
curl -fsSL https://get.docker.com | sh

Docker Compose 部署#

创建项目目录#

Terminal window
mkdir -p ~/misaka-danmu && cd ~/misaka-danmu

创建 docker-compose.yml#

Terminal window
vim docker-compose.yml

粘贴以下配置:

version: "3.8"
services:
mysql:
image: mysql:8.1.0-oracle
container_name: danmu-mysql
restart: unless-stopped
environment:
# !!! 重要:请务必替换为您的强密码 !!!
MYSQL_ROOT_PASSWORD: "your_strong_root_password" #数据库root密码
MYSQL_DATABASE: "danmuapi" #数据库名称
MYSQL_USER: "danmuapi" #数据库用户名
MYSQL_PASSWORD: "your_strong_user_password" #数据库密码
TZ: "Asia/Shanghai"
volumes:
- ./db-data:/var/lib/mysql
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
- '--binlog_expire_logs_seconds=259200' # 自动清理超过3天的binlog日志
- '--default-authentication-plugin=mysql_native_password' # 使用传统密码认证方式
healthcheck:
# 使用mysqladmin ping命令进行健康检查,通过环境变量引用密码
test: ["CMD-SHELL", "mysqladmin ping -u$${MYSQL_USER} -p$${MYSQL_PASSWORD}"]
interval: 5s
timeout: 3s
retries: 5
start_period: 30s
networks:
- misaka-net
danmu-app:
image: l429609201/misaka_danmu_server:latest
container_name: misaka-danmu-server
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
# 设置运行容器的用户和组ID,以匹配您宿主机的用户,避免挂载卷的权限问题。
- PUID=1000
- PGID=1000
- UMASK=0022
- TZ=Asia/Shanghai
# --- 数据库连接配置 ---
- DANMUAPI_DATABASE__TYPE=mysql # 数据库类型
- DANMUAPI_DATABASE__HOST=mysql # 使用服务名
- DANMUAPI_DATABASE__PORT=3306 # 端口号
- DANMUAPI_DATABASE__NAME=danmuapi # 数据库名称
# !!! 重要:请使用上面mysql容器相同的用户名和密码 !!!
- DANMUAPI_DATABASE__USER=danmuapi #数据库用户名
- DANMUAPI_DATABASE__PASSWORD=your_strong_user_password #数据库密码
# --- 初始管理员配置 ---
- DANMUAPI_ADMIN__INITIAL_USER=admin
volumes:
- ./config:/app/config
ports:
- "7768:7768"
depends_on:
- danmu-mysql
networks:
- misaka-net
networks:
misaka-net:
driver: bridge

我使用的是云数据库,我也可以给个参考。#

version: "3.8"
services:
danmu-app:
image: l429609201/misaka_danmu_server:latest
container_name: misaka-danmu-server
restart: unless-stopped
network_mode: "host"
environment:
- PUID=1000
- PGID=1000
- UMASK=0022
- TZ=Asia/Shanghai
- DANMUAPI_DATABASE__TYPE=mysql
- DANMUAPI_DATABASE__HOST=10.8.0.118
- DANMUAPI_DATABASE__PORT=3306
- DANMUAPI_DATABASE__NAME=misaka
- DANMUAPI_DATABASE__USER=misaka
- DANMUAPI_DATABASE__PASSWORD=PASSWORD
- DANMUAPI_ADMIN__INITIAL_USER=admin
volumes:
- ./config:/app/config

image-20251224105747680

启动服务#

Terminal window
docker compose up -d

查看启动日志:

Terminal window
docker compose logs -f danmu

首次启动会显示初始管理员密码,请记录下来:

[INFO] Initial admin password: xxxxxx

image-20251224104228633

初始配置#

访问 Web 管理界面#

浏览器访问 http://你的服务器IP:7768

使用管理员账户登录:

  • 用户名:admin(或你配置的 DANMUAPI_ADMIN__INITIAL_USER
  • 密码:启动日志中显示的初始密码

弹幕源配置#

  1. 进入 系统设置 > 弹幕源管理
  2. 点击 从仓库安装 获取最新的弹幕源
  3. 根据需要启用或禁用特定源
  4. 可以调整源的优先级

Token 管理#

为了让播放器访问弹幕 API,你需要创建 Token:

  1. 进入 系统设置 > Token 管理
  2. 点击 新建 Token
  3. 填写备注(如 “SenPlayer”)并保存
  4. 复制生成的 Token 用于播放器配置

播放器配置#

SenPlayer#

  1. 打开 SenPlayer,进入 设置 > 弹幕设置 > 自定义弹幕 API
  2. 填入 API 地址:http://你的服务器IP:7768/{Token}
    • {Token} 替换为你在管理界面生成的 Token
  3. 播放视频时,点击 弹幕按钮 > 搜索弹幕
  4. 选择你的弹幕 API,等待搜索完成后选择对应剧集

Infuse#

  1. 进入 设置 > 元数据 > 弹幕
  2. 选择 自定义
  3. 填入 API 地址:http://你的服务器IP:7768/{Token}

小幻播放器#

小幻需要在 API 地址后面加上 /api/v2

http://你的服务器IP:7768/{Token}/api/v2

Yamby (Android)#

  1. 打开 Yamby,进入弹幕设置
  2. 选择自定义弹幕 API
  3. 填入 API 地址:http://你的服务器IP:7768/api/v1/{Token}
  4. 仅支持手动搜索弹幕

Hills (Android/Windows)#

功能最全面的播放器之一:

  1. 进入设置 > 弹幕 > 自定义 API
  2. 填入 API 地址:http://你的服务器IP:7768/api/v1/{Token}
  3. 支持自动匹配和手动搜索

Afusekt (Android/Android TV)#

支持双平台:

  1. 进入设置 > 弹幕设置
  2. 选择自定义弹幕服务器
  3. 填入 API 地址:http://你的服务器IP:7768/api/v1/{Token}

dd-danmaku (浏览器插件)#

适用于网页播放器:

  1. 安装浏览器插件
  2. 在插件设置中配置 API 地址
  3. 访问视频网站时自动加载弹幕

API 路径兼容性#

服务已对路由进行特殊处理,以下格式都能正确响应:

  • http://IP:7768/api/v1/{Token}
  • http://IP:7768/api/v1/{Token}/api/v2
  • http://IP:7768/{Token}
  • http://IP:7768/{Token}/api/v2

这确保了与各种播放器的兼容性。

高级配置#

Webhook 自动化#

御坂弹幕服务支持通过 Webhook 接收媒体服务器通知,自动获取弹幕。

Emby Webhook#

  1. 在 Emby 中安装 Webhook 插件
  2. 配置 Webhook URL:http://你的服务器IP:7768/webhook/emby
  3. 选择需要触发的事件(如新增媒体)

Sonarr/Radarr Webhook#

  1. 进入 Sonarr/Radarr 的 设置 > 连接
  2. 添加 Webhook 连接
  3. URL:http://你的服务器IP:7768/webhook/sonarr/webhook/radarr
  4. 选择触发事件(如下载完成)

Webhook 详细配置#

Jellyfin Webhook#

  1. 在 Jellyfin 中安装 Webhook 插件
  2. 进入 控制台 > 插件 > Webhook
  3. 添加 Generic Destination
  4. 配置 Webhook URL:http://你的服务器IP:7768/api/webhook/jellyfin?api_key=你的API密钥
  5. 仅勾选 Item Added 事件
  6. 启用 Send All Properties

Plex Webhook(通过 Tautulli)#

Plex 原生 Webhook 需要 Plex Pass 订阅,且无法处理批量导入。推荐使用免费的 Tautulli:

  1. 安装 Tautulli
  2. 进入 设置 > 通知代理 > 添加 Webhook
  3. 配置 Webhook URL:http://你的服务器IP:7768/api/webhook/plex?api_key=你的API密钥
  4. 触发器选择 Recently Added
  5. 配置 JSON 数据模板(参考官方文档)

媒体库获取#

媒体库获取功能支持从多种来源读取媒体条目信息,用于自动化弹幕导入流程。

image-20251224104803458

image-20251224104853888

媒体服务器集成#

支持从 Emby、Jellyfin、Plex 等媒体服务器读取媒体库:

  1. 进入 设置 > 媒体获取
  2. 选择媒体服务器类型
  3. 填写服务器地址和 API Key
  4. 点击 测试连接 验证配置
  5. 保存后即可从媒体服务器同步条目

本地目录扫描#

支持扫描本地文件夹识别媒体文件:

  1. 配置本地目录路径
  2. 系统会根据文件名和目录结构识别媒体
  3. 支持递归扫描子目录

推荐的目录结构:

媒体库/
├── 电影/
│ ├── 电影名 (2024)/
│ │ └── 电影名 (2024).mkv
│ └── ...
└── 电视剧/
├── 剧名/
│ ├── Season 01/
│ │ ├── 剧名 S01E01.mkv
│ │ └── 剧名 S01E02.mkv
│ └── Season 02/
│ └── ...
└── ...

本地弹幕文件扫描#

支持检测并导入现有的 .xml 弹幕文件:

  1. 配置弹幕文件目录
  2. 系统会扫描并识别 dandanplay 格式的 XML 文件
  3. 自动关联到对应的媒体条目

弹幕文件命名规范:

  • 电影:电影名 (年份).xml
  • 剧集:剧名 S01E01.xml剧名 第1季第1集.xml

元数据源配置#

系统设置 > 元数据配置 中可以配置各个元数据源:

TMDB(推荐,必选)#

  1. 访问 TMDB 注册账号
  2. 进入 设置 > API > 申请开发者权限
  3. 获取 API v3 密钥
  4. 在弹幕服务的 搜索设置 中填入 API Key

TVDB#

  1. 访问 TVDB 注册账号
  2. 进入 Dashboard 生成 API Key
  3. 在弹幕服务中配置

Bangumi(动画推荐)#

支持两种认证方式:

  • Access Token:简单方式,适合个人使用
  • OAuth 认证:适合多用户场景

豆瓣#

豆瓣使用网页抓取方式,无需官方 API。可选配置 Cookie 以提高稳定性。

IMDb#

无需认证,支持第三方 API 和 HTML 解析两种方式。

优先级建议#

根据你的媒体库类型调整优先级:

  • 通用:TMDB > TVDB > Bangumi > 豆瓣 > IMDb
  • 动画为主:Bangumi > TMDB > TVDB
  • 华语内容:豆瓣 > TMDB > IMDb

AI 功能配置#

御坂弹幕服务支持使用 AI 增强匹配能力,包括智能匹配、季度映射、别名验证等功能。

支持的 AI 提供商#

提供商推荐度说明
DeepSeek⭐⭐⭐⭐⭐性价比最高的国产大模型,响应快
SiliconFlow⭐⭐⭐⭐支持多种开源模型,国内访问友好
OpenAI⭐⭐⭐效果好,但国内需要代理
Google Gemini⭐⭐⭐效果好,但国内需要代理

配置步骤#

  1. 进入 设置 > AI 辅助增强
  2. 选择 AI 提供商
  3. 填写 API Key
  4. 设置 Base URL(通常使用默认值)
  5. 选择模型名称
  6. 点击 测试连接 验证配置

费用参考:DeepSeek 输入 ¥1/百万tokens,输出 ¥2/百万tokens。由于每次调用消耗的 tokens 很少,通常每月费用不超过几元。

Telegram 机器人#

可以通过 Telegram Bot 远程管理弹幕服务,支持搜索导入、库管理、任务监控等功能。

balge
/
misaka-danmuku-bot
Waiting for api.github.com...
00K
0K
0K
Waiting...

要求:弹幕库版本 > v2.0.4

详细配置请参考项目文档。

弹幕源管理#

在线仓库安装#

  1. 进入 系统设置 > 弹幕源管理
  2. 配置资源仓库地址(支持 GitHub 或 CDN 加速)
https://github.com/l429609201/Misaka-Scraper-Resources
  1. 点击 从仓库安装
  2. 系统会自动备份当前源、下载最新文件、安装并重载

image-20251224104720890

离线包安装#

如果无法访问在线仓库:

  1. Releases 页面 下载对应平台的离线包
  2. 在 Web UI 中上传离线包
  3. 系统会自动安装并重载

备份与恢复#

  • 自动备份:更新时系统会自动备份当前源
  • 手动备份:在源管理页面点击备份按钮
  • 恢复:选择备份文件进行恢复

弹幕库管理#

条目管理#

弹幕库 页面可以:

  • 查看、编辑、删除条目
  • 按标题搜索
  • 按类型筛选(电影、电视剧、动画等)

每个条目包含:

  • 基础信息(标题、年份等)
  • 别名列表
  • 多个弹幕来源(B站、爱奇艺等)

手动创建条目#

对于不在弹幕源中的作品,可以手动创建条目:

  1. 点击 新建条目
  2. 填写作品信息
  3. 可以导入本地 XML 弹幕文件

XML 弹幕导入#

支持导入 dandanplay 格式的弹幕文件:

  • 单文件导入:选择单个 XML 文件
  • 批量导入:选择多个 XML 文件

TMDB 自动增强#

启用后,系统会通过 TMDB 定时任务自动为条目添加别名,提升播放器匹配成功率。

弹幕 API 功能配置#

Token 高级设置#

创建 Token 时可以配置:

  • 有效期:Token 的过期时间
  • 每日调用限制:防止滥用

弹幕输出设置#

  • 采样限制:建议设置 3000-5000(桌面端),移动端可以更低
  • 随机颜色:为弹幕随机分配颜色
  • 黑名单过滤:支持关键词和正则表达式

存储路径自定义#

可以使用变量自定义弹幕存储路径:

  • ${title} - 作品标题
  • ${season} - 季度
  • ${episode} - 集数
  • ${episodeId} - 集数 ID

自动回退选项#

  • 匹配回退:本地无结果时自动从源获取
  • 搜索回退:主源无结果时尝试备用源
  • 顺序回退:主源无有效分集时尝试其他源
  • 预下载:后台自动下载下一集弹幕

指令系统#

在搜索界面可以使用特殊指令(不区分大小写):

指令说明
@查看可用指令列表
@QLHC清除缓存
@SXDM刷新弹幕(多步选择)
@CXLK检查限流状态
@CXRW查询任务状态

过滤配置#

条目标题过滤#

在搜索结果页面,可以通过关键词过滤条目:

  • 支持部分匹配
  • 不区分大小写
  • 支持中英文混合

分集名过滤#

在条目详情页,可以过滤分集列表:

  • S01第一季 - 筛选季度
  • E05第5集 - 筛选集数
  • 特别篇OVA - 筛选特殊内容

更新服务#

Terminal window
cd ~/misaka-danmu
docker compose pull
docker compose up -d

注意事项#

网络环境#

  • 建议使用中国大陆 IP 部署,海外服务器可能因网络限制导致部分弹幕源无法正常工作
  • 如果使用海外服务器,可能需要配置代理

合理使用#

项目作者在文档中明确指出:

所有弹幕数据均来自第三方公开 API 或网站,请合理使用,避免滥用导致 IP 被封禁。

版权声明#

御坂弹幕服务仅提供弹幕数据的聚合、存储和 API 访问功能,不生产、修改、存储或分发视频内容本身。用户需自行承担使用责任。

参考资料#

Docker 部署御坂网络弹幕服务 Misaka Danmu Server
https://catcat.blog/2025/12/misaka-danmu-server-deploy/
作者
猫猫博客
发布于
2025-12-24
许可协议
CC BY-NC-SA 4.0