Skip to content

NAS / 家用网络部署

把 LogVar 弹幕 API 跑在家里的 NAS、软路由、小主机或长期在线电脑上。建议先在局域网里用 http://NAS内网IP:9321/你的TOKEN 跑通,再决定要不要做外网访问。

先选访问方式

  • 只在家里用:最简单,播放器和 NAS 在同一个局域网即可。
  • 出门也要访问,有公网 IPv4:用 DDNS + 路由器端口转发。
  • 没有公网 IPv4,但有 IPv6:用 IPv6 + DDNS,访问端也需要支持 IPv6。
  • 没有公网 IP,或不想开端口:用 Cloudflare Tunnel,不需要改路由器端口,但国内访问速度可能一般。

准备工作

你需要准备:

  1. 一台能运行 Docker 的 NAS / 小主机 / 家用服务器。
  2. NAS 的内网 IP,例如 192.168.1.20
  3. NAS 里能创建文件夹、上传或编辑 docker-compose.yml
  4. TOKEN:播放器访问令牌。
  5. ADMIN_TOKEN:系统配置令牌。

建议先在 NAS 文件管理器里创建项目目录:

text
danmu-api
├── docker-compose.yml
├── config
└── .cache

如果你的 NAS 文件管理器不显示 .cache 这种点开头目录,可以创建成 cache,再把 Compose 里的挂载路径一起改掉。

在 NAS 上部署

1. 创建项目文件夹

在 NAS 的文件管理器里,选择一个非系统盘位置创建项目文件夹,例如:

text
docker/danmu-api

然后在里面创建:

text
config
.cache

飞牛 fnOS 这类系统通常是在文件管理里先创建项目目录,再去 Docker 管理里选择这个目录创建项目。

飞牛文件管理里创建 Docker 项目文件夹示例

路径尽量用英文

项目目录、配置目录尽量用英文和短横线,例如 danmu-apiconfigcache。不要用空格和特殊符号,后面复制路径、写 Compose 时更不容易出错。

2. 准备 docker-compose.yml

在项目文件夹里创建或上传 docker-compose.yml,内容如下:

yaml
services:
  danmu-api:
    image: logvar/danmu-api:latest
    container_name: danmu-api
    ports:
      - "9321:9321"
    volumes:
      - ./config:/app/config
      - ./.cache:/app/.cache
    restart: unless-stopped

重点确认:

  • image: logvar/danmu-api:latest:使用官方 Docker 镜像。
  • "9321:9321":把容器里的 9321 端口映射到 NAS 的 9321 端口。
  • ./config:/app/config:把配置文件保存到 NAS 项目目录里的 config
  • ./.cache:/app/.cache:把缓存保存到 NAS 项目目录里的 .cache
  • restart: unless-stopped:NAS 重启后自动启动容器。

如果你的 NAS 面板不支持 ./config 这种相对路径,就把左侧改成项目目录的完整路径,例如:

yaml
volumes:
  - /volume1/docker/danmu-api/config:/app/config
  - /volume1/docker/danmu-api/.cache:/app/.cache

飞牛这类系统可以在文件夹详情里复制原始路径,再粘贴到 Compose 左侧。

在 NAS 文件管理中复制文件夹原始路径示例

3. 按你的 NAS 面板部署

下面选择你的设备类型即可,几种路线不要混着做。

飞牛 fnOS 适合走 Docker 管理 → 创建项目 / Compose 项目 这条路线。

1. 检查项目目录

打开 文件管理,创建 danmu-api 项目文件夹,并放好 docker-compose.yml。如果需要,也提前创建 config.cache 子文件夹。

2. 检查 Docker 镜像源

打开 Docker 管理。如果镜像拉取很慢,可以先到 镜像仓库 / 仓库设置 里检查镜像源。

飞牛 Docker 镜像仓库设置示例

3. 创建 Compose 项目

点击创建项目,项目名称可以填:

text
danmu-api

项目路径选择刚才创建的 danmu-api 文件夹,不要选里面的 config.cache

飞牛 Docker 创建项目示例

4. 等待启动

等待镜像拉取和项目启动。看到项目和容器是运行中 / 绿色状态,就说明容器已经启动。

飞牛 Docker 项目运行成功示例

群晖 DSM 7.2 以后,Docker 通常叫 Container Manager。核心是创建一个 Project / 项目,让它读取 docker-compose.yml

1. 创建目录

打开 File Station,在 docker 共享文件夹下创建:

text
danmu-api

然后把 docker-compose.yml 放入这个目录。

2. 创建项目

打开 Container Manager,找到 项目 / Project,点击 创建

项目名称填:

text
danmu-api

路径选择刚才的 docker/danmu-api,使用已有的 docker-compose.yml 创建项目。

3. 等待运行

等项目状态变成运行中,再继续修改 .env 和自检。

如果群晖界面没有项目 / Project

老版本 DSM 可能没有图形化 Compose 项目入口。可以看 Docker 部署指南 的命令行版,或者使用 Dockge / Portainer 这类通用 Compose 面板。

威联通 QNAP 一般用 Container Station。Compose 项目通常在 应用程序 里创建或上传。

1. 创建项目目录

打开 NAS 文件管理,创建项目目录,例如:

text
/share/Container/danmu-api/

目录结构可以类似这样:

威联通项目目录结构示例

2. 上传 Compose

docker-compose.yml 放进项目目录。打开 Container Station,进入 应用程序,创建应用,上传或选择 docker-compose.yml

威联通上传 docker-compose.yml 示例

3. 等待容器运行

等待应用创建完成。回到容器列表,看到 danmu-api 容器已经运行即可。

威联通容器运行成功示例

访问成功后,页面效果类似下面这种 Web 服务打开状态。

威联通通过端口访问 Web 服务示例

绿联 / 极空间 / 其它国产 NAS 的界面不同,但思路基本一样:找 Docker / 容器 / Compose / 堆栈 / 项目 / 自定义应用 这些入口。

通用步骤:

  1. 在文件管理里创建 danmu-api 项目文件夹。
  2. docker-compose.yml 放进去。
  3. 打开 Docker 管理界面。
  4. 找到 Compose / 堆栈 / 项目 / 自定义应用
  5. 新建项目,选择项目目录或粘贴 Compose 内容。
  6. 部署后确认容器状态是运行中。

如果面板没有 Compose 功能,可以先安装 DockgePortainer,再用它们管理 Compose。

Unraid 用户可以用两种方式:

  • 已经装了 Docker Compose Manager:直接创建 Compose 项目,粘贴本页的 docker-compose.yml
  • 不用 Compose:在 Docker 页面手动添加容器,把 Compose 参数转成 Unraid 表单。

手动添加时,参数对应关系是:

  • Repository / 镜像:logvar/danmu-api:latest
  • Name / 容器名:danmu-api
  • Port:主机 9321 → 容器 9321
  • Path:/mnt/user/appdata/danmu-api/config/app/config
  • Path:/mnt/user/appdata/danmu-api/cache/app/.cache
  • Restart Policy:除非手动停止,否则自动重启

4. 确认 .env 已生成

容器第一次启动后,会在 config 目录里生成 .env

找到这个文件,至少改这两项:

text
TOKEN=你的播放器访问令牌
ADMIN_TOKEN=你的系统配置令牌

保存后重启 danmu-api 容器。

TOKEN 和 ADMIN_TOKEN 不要一样

TOKEN 是普通访问令牌,播放器里一般填它。ADMIN_TOKEN 是系统配置令牌,不要发给别人,也不要填到播放器里。

如果没有生成 .env

通常是挂载目录写错或没有写入权限。先确认 config 是文件夹,不是文件;如果仍不生成,可以在 Compose 的 danmu-api 服务下加一行 user: "0:0" 后重新部署。

5. 局域网自检

在家里的电脑或手机浏览器打开:

text
http://NAS内网IP:9321/你的TOKEN

例如:

text
http://192.168.1.20:9321/my-token

能看到 LogVar 弹幕 API 页面、配置预览和接口调试入口,就说明 NAS 内网访问已经跑通。

只在家里用

如果播放器、电视盒子、电脑和 NAS 都在同一个家里网络,直接用局域网地址即可:

text
http://NAS内网IP:9321/你的TOKEN

建议做两件事:

  1. 在路由器里给 NAS 固定内网 IP,避免以后地址变掉。
  2. 在播放器里填写固定后的地址。

怎么确认 NAS 内网 IP

常见位置:NAS 控制面板的网络信息、路由器后台的已连接设备列表、NAS 桌面右上角系统信息。常见格式是 192.168.x.x10.x.x.x172.16.x.x

出门也要访问

先跑通局域网,再折腾外网

先确认在家里能打开 http://NAS内网IP:9321/你的TOKEN。局域网都打不开时,DDNS、端口转发、IPv6、Cloudflare Tunnel 都不会解决问题。

先按你的网络条件选方案:

  • 有公网 IPv4:优先用 DDNS + 路由器端口转发,速度通常最好。
  • 只有公网 IPv6:用 IPv6 + DDNS,但访问端也要支持 IPv6。
  • 没有公网 IP / 不想开端口:用 Cloudflare Tunnel。

适合:家里宽带有公网 IPv4,愿意进路由器后台设置端口转发。

1. 判断是不是公网 IPv4

  1. 打开路由器后台,找到 WAN IP / 互联网 IP
  2. 用浏览器搜索“我的 IP”。
  3. 对比两个 IP。

如果两个 IP 一样,通常就是公网 IPv4。 如果路由器 WAN IP 是下面这些开头,一般不是公网 IPv4:

text
10.x.x.x
100.64.x.x ~ 100.127.x.x
172.16.x.x ~ 172.31.x.x
192.168.x.x

2. 固定 NAS 内网 IP

在路由器里找到 DHCP 静态租约 / 地址保留 / 固定 IP,把 NAS 固定成一个地址,例如:

text
192.168.1.20

3. 配置端口转发

在路由器后台找到 端口转发 / 虚拟服务器 / NAT 转发,添加一条规则。

小米路由器一般是在 高级设置 → 端口转发 → 添加规则

路由器端口转发入口示例

华为路由器常见入口是 更多功能 → 安全设置 → NAT 服务 → 端口映射

华为路由器 NAT 服务入口示例

新建规则时,把外部访问的端口转发到 NAS 的 9321 端口:

text
外部端口:9321
内部 IP:NAS内网IP,例如 192.168.1.20
内部端口:9321
协议:TCP

小米路由器的规则填写示例:

路由器端口转发规则填写示例

华为路由器的规则填写示例:

华为路由器端口映射规则填写示例

然后切到手机流量测试:

text
http://家里公网IP:9321/你的TOKEN

4. 配置 DDNS

家庭公网 IP 可能会变化,所以建议配置 DDNS,把变化的 IP 绑定到固定域名。

常见做法:

  • 路由器自带 DDNS
  • NAS 自带 DDNS
  • Docker 部署 ddns-go
  • Lucky 这类工具统一做 DDNS 和反向代理

配置成功后,访问地址变成:

text
http://你的DDNS域名:9321/你的TOKEN

长期公开访问建议走 HTTPS

直接开放 9321 适合先测试。长期公开使用时,建议给域名加反向代理和 HTTPS。家用网络可以用 Nginx Proxy Manager、Lucky、Caddy 或 Cloudflare Tunnel;VPS / 1Panel 路线可参考 Docker 绑定域名、反代与 HTTPS

适合:没有公网 IPv4,但家里和访问端都有 IPv6。

步骤:

  1. 在光猫或路由器里启用 IPv6。
  2. 在 NAS 网络信息里确认拿到了公网 IPv6。
  3. 在路由器或 NAS 防火墙里允许外部访问 9321/tcp
  4. 给你的域名添加 AAAA 记录,指向 NAS 的 IPv6。
  5. 用支持 IPv6 的网络测试访问:
text
http://你的域名:9321/你的TOKEN

如果直接用 IPv6 地址访问,格式要加方括号:

text
http://[你的IPv6地址]:9321/你的TOKEN

IPv6 不是所有地方都能访问

有些公司网络、酒店 Wi-Fi、部分手机网络没有 IPv6。家里有 IPv6 不代表你在外面一定能访问。如果希望任何网络都能打开,Cloudflare Tunnel 通常更省心。

适合:没有公网 IPv4、不想改路由器端口,或者希望用 HTTPS 域名访问。

你需要:

  • 一个自己的域名
  • 域名已经托管到 Cloudflare
  • NAS 能运行 Docker 容器

1. 创建 Tunnel

进入 Cloudflare Zero Trust,找到 Networks / Tunnels,点击创建 Tunnel。选择 cloudflared,Cloudflare 会给你一条 Docker 启动命令。重点是复制里面的 token。

Cloudflare Tunnel 复制 cloudflared 启动命令示例

2. 在 NAS 上运行 cloudflared

在 NAS 的 Docker 面板里搜索并下载:

text
cloudflare/cloudflared:latest

创建容器时建议:

  • 自动重启:开启
  • 网络模式:优先用 Host
  • 命令填写:
text
tunnel --no-autoupdate run --token 你复制的token

群晖 Container Manager 里的 cloudflared 容器配置示例:

NAS 上创建 cloudflared 容器示例

回到 Cloudflare,如果 Tunnel 状态变成 Healthy,说明 NAS 已经连上 Cloudflare。

3. 添加 Public Hostname

在 Tunnel 里添加一个 Public Hostname,例如:

text
danmu.你的域名

Service 这样填:

text
Type: HTTP
URL: http://NAS内网IP:9321

如果 cloudflared 和 danmu-api 在同一台 NAS 上,并且使用 Host 网络,也可以尝试:

text
http://localhost:9321

Cloudflare Tunnel Public Hostname 配置示例

保存后打开:

text
https://danmu.你的域名/你的TOKEN

能打开页面后,再去跑 部署后自检

Cloudflare Tunnel 的取舍

优点是不需要公网 IP、不需要路由器端口转发、自动有 HTTPS。缺点是国内访问速度可能一般,不适合追求极限速度的场景。

常见问题

NAS 内网 IP 能打开,手机流量打不开

说明局域网部署没问题,外网入口没配置好。按你的情况检查:

  • 公网 IPv4:检查端口转发、DDNS、运营商是否封端口。
  • IPv6:检查访问端是否支持 IPv6、NAS 防火墙是否放行。
  • Cloudflare Tunnel:检查 Tunnel 是否 Healthy、Public Hostname 的 URL 是否填对。

容器运行了,但 9321 打不开

先检查:

  • Compose 里有没有 "9321:9321"
  • NAS 防火墙有没有拦截 9321
  • 容器日志有没有报错。
  • config/.env 是否生成成功。
  • 访问地址里是否带了正确的 TOKEN

config 目录里没有 .env

通常是挂载目录写错或没有写入权限。

处理:

  1. 确认 Compose 里有:
yaml
volumes:
  - ./config:/app/config
  1. 如果相对路径不生效,改成 NAS 里的完整路径。
  2. 确认 config 是文件夹,不是文件。
  3. 删除失败容器后重新部署。
  4. 仍不生成时,在 danmu-api 服务下加 user: "0:0" 再重建。

访问显示 Unauthorized

说明地址里的令牌不对。普通页面用 TOKEN,系统配置页面用 ADMIN_TOKEN

普通页面:

text
http://NAS内网IP:9321/你的TOKEN

系统配置页面:

text
http://NAS内网IP:9321/你的ADMIN_TOKEN

不知道播放器里填什么地址

先按访问范围选:

  • 只在家里用:http://NAS内网IP:9321/你的TOKEN
  • DDNS + 端口转发:http://你的域名:9321/你的TOKEN
  • Cloudflare Tunnel:https://danmu.你的域名/你的TOKEN

然后继续看 播放器接入

做完后继续看

本项目仅供个人学习与交流,请勿在国内媒体平台宣传。