本方案是由 openlist + emby + go-emby2openlist + danmu-api 组成的,openlist挂载网盘,emby作为媒体服务器,go-emby2openlist为openlist连接emby做302重定向,danmu-api是视频播放的弹幕,不看弹幕也可以不安装。
如何不看弹幕也可以使用openlist+飞牛影视更简单,使用strm刮削更快,但是首播需要多等几秒,类似方案有很多。今天主要是使用我使用的方案openlist + emby + go-emby2openlist + danmu-api
非专业人士,本篇文章仅作为自己后续维护使用
安装openlist
前期准备
首先打开飞牛的 “文件管理”,在我的文件下的 docker 文件夹下,创建一个名为 openlist 的文件夹。查看openlist文件夹权限,右键点击 openlist 文件夹 -> 属性 -> 权限,确保你的当前用户拥有读写权限。
部署 OpenList (使用 Docker Compose)
使用 Compose 部署的好处是方便后续维护,不用去点点选选复杂的 UI。
- 打开飞牛桌面的 “Docker” 应用。
- 点击左侧的 “Compose”,然后点击顶部的 “新增”。
- 项目名称:填
openlist。 - 存储位置:选择刚才创建的
/vol1/1000/docker/openlist文件夹。 - 代码框:将以下代码完整粘贴进去:
services:
openlist:
image: openlistteam/openlist:latest
container_name: openlist
ports:
- 5244:5244
volumes:
- /vol1/1000/docker/openlist:/opt/openlist/data # 注意修改为你的实际路径
environment:
- TZ=Asia/Shanghai
user: '0:0' # 【避坑必填】强制以root运行,避免fnOS下挂载网盘权限报错
restart: always
- 点击 “完成”,等待镜像拉取并启动。
获取初始密码
OpenList 初始密码是随机生成的,隐藏在日志里。
- 在 Docker 的 “容器” 列表中,找到
openlist。 - 点击它的 “日志” 图标。
- 在搜索框输入
password或者是往下翻,你会看到一行:Successfully created the initial administrator password: [一串随机字符] - 把它复制下来。
登录与配置
- 在浏览器输入:
http://飞牛IP:5244。 - 账号:
admin,密码:填入刚才在日志里复制的初始随机密码。 - 修改初始密码:登录后点击页面底部的 “管理”,进入 “设置” -> “后端”,修改 “管理员密码” 并保存(以后就不用去翻日志了)。
- 开启 WebDAV:在刚才的同一页面(“设置” -> “后端”),找到并确认开启 “WebDAV 用于播放”。
- 注:记录下你的 WebDAV 地址(通常是
http://飞牛IP:5244/dav)。这是后续让go-emby2openlist实现直连播放(不走 NAS 流量)的核心前提。
挂载网盘
OpenList 现在只是个“空壳”,需要挂载实际的网盘来作为存储空间。我主力使用的是天翼云盘(老号有 10T 空间)和移动云盘(个人与家庭云合并后有 53T 空间)。这两个网盘不开会员下载也不限速,且移动云盘 302 直连走的是定向流量,完全够用。
挂载注意事项
- WebDAV 策略:设置中务必选择 302 重定向(注:夸克网盘不支持 302)。
- 关闭签名:在添加存储时,“开启签名”选项千万不要勾选! 如果勾选了,Emby 在通过 302 重定向播放时会因为签名不匹配而直接报错。
具体的各项参数填写教程,请直接移步官方手册:OpenList 官方文档
挂载文件夹
最后一步把openlist挂载到飞牛本地文件夹,打开飞牛文件管理→远程挂载→挂载远程文件夹→选择WebDAV
域名:飞牛IP
端口:5244
选择:http
用户名:admin
密码:openlist密码
指定路径:/dav
挂载名:随便填
我的挂载路径为:/vol02/1000-1-9b6c27ee
我们把openlist挂载到飞牛文件管理,我们网盘已经变成了“本地硬盘”。现在我们安装 Emby。
安装emby
前期准备
首先还是打开飞牛的 “文件管理”,在我的文件下的 docker 文件夹下,创建一个名为 emby 的文件夹,在 emby 文件夹内再建一个子文件夹叫 config(用于存放海报墙数据)。
部署 Emby (使用 Docker Compose)
- 打开飞牛桌面的 “Docker” 应用。
- 点击左侧的 “Compose”,然后点击顶部的 “新增”。
- 项目名称:填
emby。 - 存储位置:选择刚才创建的
/vol1/1000/docker/emby文件夹。 - 代码框:复制以下代码
services:
emby:
image: emby/embyserver:latest
container_name: emby
network_mode: host # host 模式能让 Senplayer 在内网秒搜到服务器
environment:
- UID=1000
- GID=1000
- TZ=Asia/Shanghai
volumes:
- /vol1/1000/docker/emby/config:/config # 存海报和数据库
- /vol02/1000-1-9b6c27ee/Media:/media # 映射 OpenList 路径
restart: always
路径确认:确保第 12 行左边的路径和你飞牛文件管理里的真实路径完全一致,因为我的视频文件夹在Media下,所以我加了/Media。
初始化 Emby
部署成功后,在浏览器访问 http://飞牛IP:8096。
- 语言选择:选
Chinese Simplified。 - 创建管理员:账号密码自己设置。
- 添加媒体库:
- 点击“新媒体库”。
- 文件夹:点击那个
/media/openlist(就是我们刚才在 Compose 里映射出来的洞)。 - 元数据语言:选
Chinese,国家选People's Republic of China。 - 配置刮削器:
- 勾选
TheMovieDb。 - 重要:把“将媒体图像保存到媒体库文件夹”取消勾选(因为网盘文件夹通常是只读的,或者写入很慢,海报图存放在 NAS 本地的
/config里速度最快)。
刮削
- 刮削不出海报:这是因为国内无法直接访问 TMDB 的服务器。
- 解决:你可以在飞牛系统的
系统设置 -> 网络 -> Hosts里,手动添加 TMDB 的加速地址,或者在 Docker 里挂一个简单的 DNS 代理。 - 网盘文件不显示:如果你在 OpenList 里刚添加了文件,Emby 可能还没反应过来。
- 解决:在 Emby 媒体库点击“扫描媒体库文件”。
部署 go-emby2openlist
部署 go-emby2openlist 的逻辑是:它作为一个“中转站”,拦截本来发往 Emby(8096端口)的请求,处理成直链后再发给播放器。
现在网盘播放视频会消耗 NAS 的流量;部署 go-emby2openlist 后,播放视频时,视频流会直接从网盘服务器发给手机,秒开且不占 NAS 带宽。
创建配置文件夹
打开飞牛的 “文件管理” ,在我的文件下的 docker 文件夹下,创建一个名为 emby-direct 的文件夹,在 emby-direct 文件夹内再建一个子文件夹叫 config(。
部署 emby-direct (使用 Docker Compose)
- 打开飞牛桌面的 “Docker” -> “Compose” -> “新增”。
- 项目名称:
emby-direct - 存储位置:选择刚才建的
/vol1/1000/docker/emby-direct。 - 代码框:直接复制下面这段:
services:
emby-direct:
image: bpking/go-emby2openlist:latest
container_name: emby-direct
network_mode: host # 必须是 host,因为它要接管 8091 等端口
volumes:
# 将刚才建的 config 文件夹映射进去
- /vol1/1000/docker/emby-direct/config:/app/config
environment:
- TZ=Asia/Shanghai
restart: always
点击 “完成” 部署。
修改核心配置文件
部署成功后,容器会自动在你的 config 文件夹里生成一个 constant.js 文件。配置的核心”,我们需要去里面修改它。
- 回到“文件管理”,进入
docker/emby-direct/config,找到constant.js,右键选择“文本编辑”(或直接双击)。 - 重点修改以下几个参数(一定要细心):
| 配置项 | 修改内容建议 |
|---|---|
embyHost | http://127.0.0.1:8096(指向你本地的 Emby) |
embyApiKey | 填入你之前在 Emby 后台生成的那个长字符串 |
alistHost | http://127.0.0.1:5244(指向你本地的 OpenList) |
alistToken | 在 OpenList 管理后台 -> 设置 -> 后端 找到并复制 “令牌” |
embyMountPath | ["/media"](这是 Emby 容器里看到的路径) |
alistMountPath | [""](留空,表示直接去掉 /media 前缀,对齐 OpenList 路径) |
重启
改完 constant.js 并点击保存后:
- 回到飞牛 Docker 界面。
- 在“项目”里找到
emby-direct。 - 点击 “重启”。
在播放器(Senplayer/Yamby)里连接
- 服务器地址:不要填 8096,要填
http://你的NAS内网IP:8091(这是工具默认的转发端口)。 - 账号密码:填 Emby 的账号密码。
检查:
在 Senplayer 里点播放,飞牛桌面的 上传速度(流量监控) 几乎没跳动,但是视频秒开,那就是成功的,302 直连配置成功!
danmu-api
配置文件夹
- 打开 “文件管理”。
- 进入路径:
/vol1/1000/docker。 - 新建文件夹:
danmu-api。
部署 danmu-api (Docker Compose)
在飞牛 Docker -> Compose -> 新增,项目名:danmu-api。
services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
ports:
- 9321:9321
volumes:
# 将配置文件持久化到本地,防止更新镜像后配置丢失
- /vol1/1000/docker/danmu-api:/app/data
environment:
- TZ=Asia/Shanghai
# 【关键:安全】这是后台管理密码,部署后立刻修改
- ADMIN_TOKEN=admin123
# 【关键:匹配】填入 TMDB API Key
- TMDB_API_KEY=2a5d21d6xxxxxxxxxxxxxx
restart: always
后台进配置
部署成功后,进入“后台”设置:
- 访问地址:在浏览器输入
http://飞牛IP:9321/admin123(记得带上 Token)。 - 源配置 (最重要):点击顶部的 “源配置”。
- 找到
BILIBILI_COOKIE。 - 扫描登陆B站,获取B站COOKIE(这样能抓到全量弹幕)。
- 保存:点击页面最下方的 “保存配置”。
在 Senplayer/Yamby 里使用?
进去danmu-api在在上方找到:API端点: http://飞牛IP:9321/12345678 这就是我的需要的链接
- Senplayer (iOS/iPadOS):
- 在播放界面点击右下角的“设置”图标。
- 找到 “弹幕设置” -> “自定义弹幕API”。
- 地址:
http://飞牛IP:9321/12345678(外网建议带域名)。 - Yamby (Emby 客户端):
- 进入右上角设置 -> 实验性 -> 弹幕 -> Danmaku API(倒数第一个)。
- 添加和管理弹幕 -> 右上角 -> + 新建。
- url:
http://飞牛IP:9321/12345678
ddns-go
一般家宽没有ipv4但都有ipv6,建议配置ddns-go做解析,即使在外网也能访问,我用cf使用ddns-go解析ipv6,只有ipv6能访问,想要使用ipv4也能访问,可以使用 Cloudflare Tunnel,即使没有外网ip也能访问。
若后续改用 Cloudflare Tunnel,无需路由器端口转发,只需在飞牛 Docker 部署 cloudflared 容器,并在 CF 后台配置 Public Hostname 分别指向内网端口(如 8091 和 9321)即可。
评论 (0)