Docker 部署指南
使用 Docker 部署 danmu_api,获得最稳定、功能完整的运行环境。无流量限制,支持配置热更新,适合 NAS 和长期运行的服务器。
服务跑通后,可以继续看 Docker 绑定域名、反代与 HTTPS。
目标
用 Docker 在服务器上跑起 danmu_api,改好 TOKEN 和 ADMIN_TOKEN,最后打开自带页面做自检和接口调试。
如果你是新手,推荐先看 1Panel 面板版:大部分操作都在网页面板里完成,不需要反复敲命令。 如果你熟悉 SSH 和 Linux 命令,也可以切到 命令行版。
选择部署方式
这一版适合不熟悉命令行的新手:先用命令安装好 1Panel,后面创建 danmu_api 容器、查看运行状态、检查 .env 文件,都在 1Panel 面板里操作。
不要直接用普通容器创建方式硬挂载
danmu_api 第一次启动会在 /app/config 里自动生成 .env。
如果直接在面板里创建容器并挂载宿主机目录,有些机器会遇到挂载目录权限问题,导致 .env 生成失败。
本教程用 容器 → 编排 部署,并在 Compose 里加上 user: "0:0",让容器第一次启动时可以正常写入挂载目录。
准备工作
先准备好这些信息:
- 服务器公网 IP
- 服务器 SSH 用户名,例如
root或ubuntu - SSH 密码
- SSH 端口;如果服务商没单独写,一般就是
22 - 一个可以访问服务器的浏览器
第 1 步:安装并打开 1Panel
如果服务器还没有安装 1Panel,先 SSH 登录服务器,然后按 1Panel 官方安装脚本安装。
curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
安装完成后,终端会显示 1Panel 的访问地址、用户名、密码等信息。用浏览器打开面板地址。
只在这里需要命令行
1Panel 本身安装在服务器上,所以第一次安装面板需要用 SSH 命令。安装完成后,下面部署 danmu_api 的步骤都在面板里完成。
第 2 步:登录 1Panel
打开 1Panel 登录页,输入用户名和密码,勾选协议后点 登录。

登录后会进入 1Panel 首页。后面所有操作都在这个网页面板里完成。
第 3 步:进入容器页面
在左侧菜单点击 容器。

进入容器模块后,顶部会看到 概览 / 容器 / 编排 / 镜像 / 网络 / 存储卷 等选项。
第 4 步:切到编排页面
点击上方的 编排。

这里用“编排”创建服务,而不是直接点“容器 → 创建”。这样后面维护、重启、修改配置都更清楚。
第 5 步:创建新编排
在编排列表右上角点击 创建。

如果列表里现在没有任何数据,是正常的,直接点 创建 即可。
第 6 步:填写编排名称和 Compose 内容
在刚才打开的创建页面里按下面填写:
- 来源:选择
编辑 - 文件夹:填写
danmu-api-panel - 中间的大编辑框:粘贴下面这段 Compose 内容
把下面内容完整复制进去:
services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
user: "0:0"
ports:
- "9321:9321"
volumes:
- /opt/1panel/apps/danmu-api/config:/app/config
- /opt/1panel/apps/danmu-api/cache:/app/.cache
restart: unless-stopped
重点确认这几行不要漏:
container_name: danmu-api:容器名固定为danmu-apiuser: "0:0":解决挂载目录里.env生成失败的权限坑"9321:9321":把服务暴露到服务器的9321端口/opt/1panel/apps/danmu-api/config:/app/config:配置文件目录,.env会生成在这里/opt/1panel/apps/danmu-api/cache:/app/.cache:缓存目录
填好后,点右下角 保存。

为什么不用 ./config
命令行版里可以写 ./config:/app/config,因为你知道当前目录在哪里。
面板版为了让新手少踩坑,直接写绝对路径 /opt/1panel/apps/danmu-api/config,后面在 1Panel 文件管理里也能一路点进去找到。
第 7 步:等待镜像拉取和容器启动
第一次保存后,1Panel 会拉取 logvar/danmu-api:latest 镜像并启动容器。这个过程可能需要等一会儿。
保存后先看页面里的任务日志:出现 Container danmu-api Started,就说明容器已经创建并启动成功。

同一页还能看到刚才填写的 Compose 内容。只要左侧日志已经显示 Started,就可以继续去检查 .env。

第 8 步:在文件管理里确认 .env 已生成
接下来确认最容易出问题的地方:.env 是否已经生成。
在左侧菜单点击 文件,进入文件管理。

按下面路径一层一层点进去:
- 进入
opt

- 进入
1panel

- 进入
apps

- 进入
danmu-api

- 进入
config,看到.env

如果你能看到 .env,说明挂载目录权限是正常的。
第 9 步:编辑 .env,只改 TOKEN 和 ADMIN_TOKEN
在 config 目录里点击 .env 的 编辑 或 更多 → 编辑。
先只改这两项:
建议这样处理:
TOKEN是普通访问口令,可以先保持默认的87654321,确认能打开后再改ADMIN_TOKEN是管理员口令,建议一定改成你自己的随机字符串- 如果
ADMIN_TOKEN前面有#,先删掉#,再保存
保存后会自动热更新。Docker/1Panel 部署不需要重新部署;如果你保存后访问还是旧配置,再回到 容器 页面重启 danmu-api 容器。
第 10 步:打开自检界面测试
不建议让新手手动在浏览器里拼很长的 API 测试地址。部署完成后,优先打开 danmu_api 自带页面做自检。
用普通 TOKEN 打开:
如果你还没改 TOKEN,默认就是:
能看到 LogVar弹幕API 页面、配置预览和接口调试入口,就说明服务已经能正常访问。

如果你已经配置了 ADMIN_TOKEN,也可以用管理员地址打开:
管理员地址能进入 系统配置,后面改环境变量主要用这个页面。

第 11 步:后续更新和维护
后续常用操作这样处理:
- 测试接口:打开
http://你的服务器IP:9321/你的TOKEN→ 点 接口调试,在页面里选择接口并发送测试 - 改环境变量:打开
http://你的服务器IP:9321/你的ADMIN_TOKEN→ 点 系统配置,在网页里修改并保存,支持热更新 - 重启服务:1Panel → 容器 → 找到
danmu-api→ 点重启 - 停止服务:1Panel → 容器 → 找到
danmu-api→ 点停止 - 查看日志:1Panel → 容器 → 找到
danmu-api→ 日志 - 更新镜像:1Panel → 容器 → 编排 → 找到
danmu-api-panel→ 重新拉取/重建
除了第一次确认
.env是否生成,以后一般不需要再回到 1Panel 文件管理里手动改.env。直接用ADMIN_TOKEN打开的系统配置页面修改即可。
第 12 步(可选):加 Watchtower 自动更新容器
如果你希望 danmu-api 镜像有更新时自动拉取并重启,可以再单独加一个 Watchtower 编排。
Watchtower 会通过 Docker Socket 管理容器,所以一定要保留
/var/run/docker.sock:/var/run/docker.sock这一行。最后的danmu-api表示只监控前面创建的danmu-api容器。
- 回到 容器 → 编排 页面,点击 创建。

- 进入创建页面后,准备填写新的 Watchtower 编排。

-
按下面填写:
-
来源:选择
编辑 - 文件夹:填写
watchtower-gx - 中间的大编辑框:粘贴下面这段 Compose 内容
services:
watchtower:
image: nickfedor/watchtower
container_name: watchtower-gx
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
command:
- --cleanup
- --interval
- "12600"
- danmu-api
说明:
--cleanup:更新完成后清理旧镜像--interval后面的"12600":检查间隔,单位是秒;如果想 30 分钟检查一次,改成"1800"danmu-api:只监控名为danmu-api的目标容器,不影响其他容器
填好后,点右下角 保存。

- 保存后等待任务完成。日志里出现创建成功,说明 Watchtower 编排已经创建。

- 回到编排列表,看到
watchtower-gx是 运行中 / 已启动,说明自动更新容器已经启动。

- 点
watchtower-gx的 日志,能看到类似Next scheduled run的下一次检查时间,就说明 Watchtower 已经正常工作。

面板版常见问题
1)浏览器打不开 9321
先检查这两个地方有没有放行 9321:
- 服务器自己的防火墙
- 云厂商安全组
如果你只在 1Panel 里确认容器运行,但外部浏览器打不开,通常就是安全组或防火墙没放行。
2)config 目录里没有 .env
大概率是挂载目录权限问题,检查 Compose 里有没有:
补上后重新保存编排,再回到文件管理里看 /opt/1panel/apps/danmu-api/config/.env。
3)端口被占用
如果 9321 已经被别的服务占用,可以把 Compose 里的左侧端口改掉:
改完后访问地址也要跟着变成:
准备工作
先把这 4 项准备好,后面会反复用到:
- 服务器公网 IP
- SSH 用户名,例如
root或ubuntu - SSH 密码
- SSH 端口;如果服务商没单独写,一般就是
22
第 1 步:如果你用 Windows,先打开 cmd
按这个顺序做:
- 按键盘上的 Win 键
- 输入
cmd - 点 命令提示符
如果你用的是 macOS 或 Linux,就打开系统自带的终端;后面的 SSH 命令同样可以照着执行。

先把 cmd 打开,后面的 SSH 命令就在这个窗口里执行。
第 2 步:在终端里先用 SSH 登录 VPS
如果 SSH 端口就是默认的 22,执行:
如果服务商给的是其他端口,就执行:
替换说明:
root换成服务商给你的 SSH 用户名(可能是ubuntu)你的服务器IP换成服务器公网 IP端口换成服务商给你的 SSH 端口
首次连接提示
第一次连接时,终端通常会询问是否继续,输入 yes,再回车。
如果后面要求输入密码,窗口里通常不会显示星号,也不会回显字符;直接输入密码,再回车就行,这是正常现象。
登录成功后,命令行前面会变成类似 root@你的服务器:~# 这种 Linux 提示符;看到这种变化,再继续下一步。

先在本机终端里连上 VPS;看到服务器终端提示后,再继续安装 Docker。
第 3 步:先装 Docker 和 Docker Compose
下面 3 组安装方式只选 1 组,不要 3 组都执行。 每次只复制当前这一条,等终端重新回到提示符,再继续下一条。
方案 A:官方网络正常时
先装 Docker:
再装 nano:
方案 B:国内 VPS 拉取慢时
先装 Docker:
再装 nano:
方案 C:想先换源再装 Docker 时
先跑脚本:
再装 nano:
装好后按顺序确认:
能正常看到版本号,再继续下一步。
第 4 步:创建部署目录
后面统一在这个目录里操作,按顺序执行:
后面所有 Docker 命令都默认在
~/danmu-api里执行。
第 5 步:创建 docker-compose.yml
先回到部署目录:
再打开文件:
把下面这段内容原样粘贴进去:
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
粘贴完以后保存:Ctrl + O → 回车 → Ctrl + X
这份 Compose 只负责主服务。先把服务跑起来;自动更新和域名反代都放到后面单独做。
第 6 步:第一次启动
先启动服务:
再看容器状态:
只要状态是 Up,就继续下一步。
第一次启动时,先看
docker compose ps。只要容器已经起来,就继续去改config/.env。
第 7 步:打开 config/.env,只改这两项
第一次启动完成后,宿主机的 ~/danmu-api/config/.env 一般会自动生成。
现在直接打开它:
先确认这两项:
建议这样处理:
TOKEN先保持87654321- 把
ADMIN_TOKEN改成自己的值 - 如果
ADMIN_TOKEN这一行前面带#,先把#删除再保存
保存顺序:Ctrl + O → 回车 → Ctrl + X
重点只看这两项:TOKEN 和 ADMIN_TOKEN。这一步不用自己手搓一份新的
.env。
第 8 步:打开自检界面测试
不需要手动拼很长的 API 搜索地址。容器启动后,优先打开 danmu_api 自带页面做自检。
用普通 TOKEN 打开:
如果 TOKEN 还是默认值,就打开:
能看到 LogVar弹幕API 页面、配置预览和接口调试入口,就说明服务已经能正常访问。需要测试接口时,在这个页面点击 接口调试,选择接口后发送测试。
如果你已经配置了 ADMIN_TOKEN,管理员地址是:
后续改环境变量不用再进服务器改 .env,直接用这个管理员地址进入 系统配置,在网页里修改并保存即可。Docker/Node 部署支持热更新,通常不用重启容器。
第 9 步(可选):需要自动更新的话,再单独加 Watchtower
先创建 Watchtower 目录:
再打开配置文件:
把下面这段内容原样粘贴进去:
services:
watchtower:
image: nickfedor/watchtower
container_name: watchtower-gx
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
command:
- --cleanup
- --interval
- "12600"
- danmu-api
保存后再按顺序启动:
cd ~/danmu-api-watchtower
docker compose up -d
docker compose ps
docker compose logs --tail=30 watchtower
这里虽然 Watchtower 放在另一个目录里,但它监控的还是前面主服务目录里启动出来的 danmu-api 容器。只要下面两项没改错,就能正常监控:
container_name还是danmu-api/var/run/docker.sock:/var/run/docker.sock还保留着
看到
docker compose ps里容器已经起来,再看日志里有没有下一次检查时间;有的话就说明 Watchtower 已经正常工作。
手动更新
常见问题
浏览器打不开
先检查这两个地方有没有放行 9321:
- 服务器自己的防火墙
- 云厂商安全组
如果当前机器用的是 UFW,可以先执行:
docker compose 提示找不到命令
说明 Docker Compose 插件没有装好,回到第 3 步重新执行你选的那组安装命令即可。
Watchtower 没启动
如果是单独目录部署的,就按这个顺序检查:
~/danmu-api-watchtower/docker-compose.yml里是不是写的image: nickfedor/watchtower/var/run/docker.sock:/var/run/docker.sock有没有保留- 日志里有没有正常看到下一次检查时间
一键安装脚本
社区提供的一键安装脚本:
bash <(curl -fsSL https://raw.githubusercontent.com/dukiii1928/danmu-install/refs/heads/main/install.sh)
下一步
- 播放器接入 — 服务跑通后继续看播放器接入
- 绑定域名和反代与 HTTPS — 想把 IP 地址换成自己的域名并开启 HTTPS
- 环境变量详解 — 如果后面还想继续改更多变量