Docker 部署
Docker 适合长期稳定运行。新手优先选 1Panel 面板;已经装了宝塔的用户选 宝塔面板;熟悉 Linux 的用户选 命令行版。先跑通 http://服务器IP:9321/你的TOKEN,域名和 HTTPS 后面再配置。
准备工作
你需要准备:
- 一台能长期运行的服务器、NAS 或小主机。
- 服务器公网 IP 或局域网 IP。
- SSH 用户名和密码,例如
root/ubuntu。 - SSH 端口;服务商没特别说明时一般是
22。 - 后面要用的两个令牌:
TOKEN:播放器访问令牌。ADMIN_TOKEN:系统配置令牌。
先选设备,再 SSH 登录服务器
按设备选工具。下面每一步都配真实截图。
常用工具:MobaXterm。
下载 MobaXterm:https://mobaxterm.mobatek.net/download.html。
打开 MobaXterm,点 Session。

选 SSH,填服务器 IP、用户名和端口。

连接后输入服务器密码。

看到远程命令行,就连接成功。

常用工具:Xshell。
下载 Xshell:https://www.xshell.com/zh/free-for-home-school/。
打开 Xshell,点左上角 新建会话。

协议选 SSH,填服务器 IP 和端口。

进入 用户身份验证,填用户名和密码后点 连接。

看到远程命令行,就连接成功。

参考图文:Xshell 中文网《Xshell登录服务器的两种认证方式》。
常用工具:系统终端 / iTerm2。新手直接用系统终端。
打开 应用程序,进入 实用工具。

找到 Terminal 并打开。

输入 SSH 命令,按提示输入密码。
ssh root@你的服务器IP端口不是 22 时用:
ssh -p 端口 root@你的服务器IP
看到 root@...# 这类命令行,就连接成功。
常用工具:Termius。
下载:
- iPhone / iPad:https://apps.apple.com/us/app/termius-modern-ssh-client/id549039908
- Android:https://play.google.com/store/apps/details?id=com.server.auditor.ssh.client
进入 Hosts,点右下角 +。

选 New host。

填服务器 IP、端口、用户名和密码后保存。

回到 Hosts,点刚保存的服务器。

第一次连接点 Continue 确认指纹,不是输入
yes。
进入黑色终端页,看到命令行就成功。

选择部署路线
下面三条路线选一条。新手优先选 1Panel 面板;服务器已经装了宝塔就选 宝塔面板;已经熟悉命令行的用户可以选 命令行版。
1Panel 面板(推荐):适合新手。先装 1Panel,后面创建容器、改配置、看日志都在网页里完成。
国内服务器建议先在 SSH 里执行换源脚本,按提示选择 阿里云源;国外服务器可以跳过。
bash <(curl -sSL https://linuxmirrors.cn/main.sh)1. 安装 1Panel
如果服务器已经装好 1Panel,可以跳到下一步。
在 SSH 窗口里先执行这一条,确保 curl 可用:
if ! command -v curl >/dev/null 2>&1; then apt update && apt install -y curl; fi再执行 1Panel 官方安装脚本:
bash -c "$(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)"安装过程按提示填:
- 安装目录:新手直接回车用默认值。
- 安装 Docker:没装过 Docker 就输入
y。 - 面板端口:用默认值即可,或改成自己记得住的端口。
- 安全入口:设置一个不容易猜到的英文路径。
- 用户名 / 密码:自己设置并保存好。
安装完成后,终端会输出面板地址、用户名和密码。
以后忘了面板信息,SSH 登录服务器后执行:
1pctl user-info面板打不开时
先去云厂商安全组 / 防火墙放行 1Panel 面板端口。面板地址、用户名、密码不要发给别人。
2. 登录 1Panel
打开安装完成后输出的面板地址,输入用户名和密码登录。

3. 进入容器编排
左侧菜单点击 容器。

进入容器模块后,切到顶部的 编排。

点击右上角 创建。

4. 填写 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重点确认:
user: "0:0"不要删,用来避免.env生成失败的权限问题。"9321:9321"表示服务使用服务器的9321端口。/opt/1panel/apps/danmu-api/config是配置目录,.env会生成在这里。
填好后点 保存。

5. 等待容器启动
第一次保存会拉取镜像并启动容器。任务日志里看到 Container danmu-api Started,说明容器已经启动。

编排页面里能看到服务运行中,也可以继续下一步。

6. 确认 .env 已生成
进入 1Panel 左侧 文件,按路径进入:
/opt/1panel/apps/danmu-api/config对应点击顺序是:opt → 1panel → apps → danmu-api → config。





进入 config 后,能看到 .env 就说明挂载和权限正常。

没看到 .env 怎么办
回到 容器 → 编排,编辑刚才的编排,确认 Compose 里有:
user: "0:0"补上后重新保存 / 重建,再回文件管理检查。
7. 修改 TOKEN 和 ADMIN_TOKEN
在 config 目录里编辑 .env。
先只处理这两项:
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌建议:
TOKEN可以先保持默认87654321,确认能打开后再改。ADMIN_TOKEN建议改成自己的随机字符串。- 如果
ADMIN_TOKEN行前面有#,先删掉#再保存。
Docker / 1Panel 部署通常支持热更新。保存后如果页面还是旧配置,再回 容器 页面重启 danmu-api。
8. 打开自检页面
用普通 TOKEN 打开:
http://你的服务器IP:9321/你的TOKEN如果没改过 TOKEN,默认打开:
http://你的服务器IP:9321/87654321能看到 LogVar 弹幕 API 页面、配置预览和接口调试入口,就说明服务已经能访问。

如果已经设置 ADMIN_TOKEN,系统配置地址是:
http://你的服务器IP:9321/你的ADMIN_TOKEN能进入 系统配置,说明管理员令牌可用。

9. 可选:添加 Watchtower 自动更新
主服务已经能访问后,再加 Watchtower。回到 容器 → 编排,点击 创建。

来源选 编辑,文件夹填 watchtower-gx。

粘贴下面内容后点 保存:
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
等待任务开始执行。

看到 watchtower-gx 运行中即可。

查看日志里有 Update session completed,说明自动检查更新正常。

10. 常用维护操作
后续常用入口:
- 测试接口:打开
http://你的服务器IP:9321/你的TOKEN→ 接口调试。 - 改环境变量:打开
http://你的服务器IP:9321/你的ADMIN_TOKEN→ 系统配置。 - 重启服务:1Panel → 容器 → 找到
danmu-api→ 重启。 - 查看日志:1Panel → 容器 → 找到
danmu-api→ 日志。 - 更新镜像:1Panel → 容器 → 编排 → 找到
danmu-api-panel→ 重新拉取 / 重建。
宝塔面板:适合习惯宝塔的用户。先装宝塔,再用宝塔 Docker 编排部署 LogVar。
国内服务器建议先在 SSH 里执行换源脚本,按提示选择 阿里云源;国外服务器可以跳过。
bash <(curl -sSL https://linuxmirrors.cn/main.sh)1. 安装宝塔面板
如果服务器已经装好宝塔,可以跳到下一步。
在 SSH 窗口里先设置安装脚本地址:
url=https://download.bt.cn/install/install_panel.sh再下载安装脚本:
if [ -f /usr/bin/curl ]; then curl -sSO $url; else wget -O install_panel.sh $url; fi最后执行安装:
bash install_panel.sh ed8484bec安装过程如果问你是否安装到 /www 目录,输入 y 回车。等到终端输出外网面板地址、用户名和密码,就说明安装完成。
以后忘了面板地址或账号密码,SSH 登录服务器后执行:
bt default面板打不开时
先去云厂商安全组 / 防火墙放行宝塔面板端口。宝塔是服务器管理面板,登录地址、账号、密码不要发给别人。
2. 登录宝塔面板
打开宝塔面板地址,输入账号和密码,点击 登录。

如果登录后弹出初始化推荐配置,先点右上角关闭,不需要安装 LNMP / LAMP 套件。

回到首页后,确认左侧菜单里有 Docker。

3. 进入 Docker
左侧点击 Docker。

顶部点击 容器编排。

点击左上角 添加容器编排。

4. 填写 Compose
在弹窗里填写:
- 编排名称:
danmu-api-panel - 来源:选择
编辑 - compose 内容:清空默认内容,粘贴下面这段
services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
user: "0:0"
ports:
- "9321:9321"
volumes:
- /www/wwwroot/danmu-api/config:/app/config
- /www/wwwroot/danmu-api/cache:/app/.cache
restart: unless-stopped重点确认:
user: "0:0"不要删,用来避免.env生成失败的权限问题。"9321:9321"表示服务使用服务器的9321端口。/www/wwwroot/danmu-api/config是配置目录,.env会生成在这里。
填好后先看一遍,确认和截图一致。

点击 确定,等待创建日志跑完。

回到 容器编排 页面,看到 danmu-api-panel 和 danmu-api 都是 运行中,说明服务已经启动。

如果没有运行成功,先看当前编排里的 编排日志,常见原因是镜像拉取失败、端口 9321 被占用、或 Compose 内容缩进不对。
5. 确认 .env 已生成
左侧点击 文件。宝塔默认会进入 /www/wwwroot,这里能看到 danmu-api 目录。

点击 danmu-api。

点击 config,看到 .env 文件就说明挂载和权限正常。

鼠标移到 .env 这一行,右侧会出现 编辑。

点击 编辑,先处理这两项:
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌建议:
TOKEN可以先保持默认87654321,确认能打开后再改。ADMIN_TOKEN建议改成自己的随机字符串。- 如果
ADMIN_TOKEN行前面有#,先删掉#再保存。

保存后如果页面还是旧配置,回到 Docker → 容器编排,选中 danmu-api-panel,点 重启。
6. 打开自检页面
用普通 TOKEN 打开:
http://你的服务器IP:9321/你的TOKEN如果没改过 TOKEN,默认打开:
http://你的服务器IP:9321/87654321能看到 LogVar 弹幕 API 的配置预览页面,就说明服务已经部署成功。

7. 可选:添加 Watchtower 自动更新
主服务已经能访问后,再回到 Docker → 容器编排。

点击 添加容器编排。

在弹窗里填写:
- 编排名称:
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填好后点 确定。

回到编排列表,看到 watchtower-gx 运行中即可。

点容器右侧 日志,看到 Update session completed,说明自动检查更新正常。

8. 常用维护操作
后续常用入口:
- 测试接口:打开
http://你的服务器IP:9321/你的TOKEN→ 接口调试。 - 改环境变量:宝塔 → 文件 →
/www/wwwroot/danmu-api/config/.env。 - 重启服务:宝塔 → Docker → 容器编排 →
danmu-api-panel→ 重启。 - 查看日志:宝塔 → Docker → 容器编排 →
danmu-api-panel→ 编排日志。 - 更新镜像:宝塔 → Docker → 容器编排 →
danmu-api-panel→ 更新镜像 或 重建。
命令行版:下面的命令都拆开写了,建议一条一条执行,不要整段一起复制。国内服务器先换源,再装 Docker;国外服务器可以直接从第 3 步开始。
1. 确认系统
先执行这条,看一下系统版本:
cat /etc/os-release | head
2. 国内服务器先换源
国外服务器可以跳过这一步。
先执行换源脚本:
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
按提示选择 阿里云源。

提示是否备份原软件源时,直接按提示选即可。

等待软件源更新。

看到完成提示后继续。

3. 安装 Docker
国内服务器推荐继续用 linuxmirrors 的 Docker 脚本,按提示选 阿里云 Docker CE 源 和 毫秒镜像。
先执行安装脚本:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
等待安装完成。

安装完成后,分别执行下面 3 条命令检查:
docker --versiondocker compose versionsystemctl is-active docker
4. 创建 Compose 文件
先建目录:
mkdir -p /opt/danmu-api/config /opt/danmu-api/cache再进入目录:
cd /opt/danmu-api然后创建 compose.yaml,这一段请一次性粘贴完整:
cat > compose.yaml <<'EOF'
services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
user: "0:0"
ports:
- "9321:9321"
volumes:
- /opt/danmu-api/config:/app/config
- /opt/danmu-api/cache:/app/.cache
restart: unless-stopped
EOF
"9321:9321" 表示服务器本机 9321 端口转发到容器 9321 端口。NAT 服务器也这样写,浏览器访问时再用服务商给你的外部端口。
5. 启动服务
先回到项目目录:
cd /opt/danmu-api再启动容器:
docker compose -f compose.yaml up -d
看到 Container danmu-api Started 就是启动成功。

6. 检查服务
先看容器状态:
cd /opt/danmu-apidocker compose -f compose.yaml ps再检查本机 HTTP:
curl -sS -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1:9321/87654321
看到容器是 Up,并且返回 HTTP 200,说明服务器本机已经跑通。
7. 编辑 config/.env
容器第一次启动后,一般会在 config 目录下自动生成 .env 文件。先回到部署目录:
cd /opt/danmu-api看一下 .env 是否已经生成:
ls -la config再进入 config 目录:
cd /opt/danmu-api/config用 nano 打开配置文件:
nano .env在文件里至少确认有下面两行。如果已经有这两行,就改原来的;如果没有,就移动到文件末尾新增:
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌
保存方法:
- 按
Ctrl + O写入文件。 - 看到
File Name to Write: .env后按回车。 - 按
Ctrl + X退出 nano。

建议:
TOKEN可以先保持默认87654321,确认能打开后再改。ADMIN_TOKEN请改成自己的随机字符串,不要照抄“改成你自己的管理员令牌”。- 如果
ADMIN_TOKEN行前面有#,先删掉#再保存。
保存后通常会自动生效;如果页面还是旧配置,执行下面命令重启一次:
docker compose -f compose.yaml restart danmu-api8. 打开前端页面
普通服务器打开:
http://服务器IP:9321/87654321NAT 服务器打开服务商给你的外部端口,例如:
http://服务器IP:外部端口/87654321能看到 LogVar 弹幕 API 页面,就部署成功。

如果刚才设置了 ADMIN_TOKEN,系统配置地址是:
http://服务器IP:9321/你的ADMIN_TOKEN以后要改环境变量,优先打开这个地址进入 系统配置,在前端修改并保存,不必每次都进服务器手动编辑 .env。

9. 可能遇到的坑
- 公网打不开,但本机
HTTP 200:检查 NAT 转发 / 安全组,外部端口要转到服务器内网9321。 - 镜像拉取慢:国内服务器用上面的 Docker 脚本,并选择毫秒镜像。
- 端口被占用:把左侧端口改掉,例如
19321:9321,访问也改成http://服务器IP:19321/你的TOKEN。 .env没生成:确认 Compose 里保留user: "0:0",然后重启容器。
10. 可选:添加 Watchtower 自动更新
主服务已经能访问后,再添加 Watchtower。
先建目录:
mkdir -p /opt/danmu-api-watchtowercd /opt/danmu-api-watchtower再创建 compose.yaml,这一段请一次性粘贴完整:
cat > compose.yaml <<'EOF'
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
EOF最后启动并查看状态:
docker compose -f compose.yaml up -ddocker compose -f compose.yaml ps看到 watchtower-gx 运行中,说明自动检查更新正常。

手动更新
不使用 Watchtower 时,可以手动更新。仍然一条一条执行:
cd /opt/danmu-apidocker compose -f compose.yaml pulldocker compose -f compose.yaml up -ddocker compose -f compose.yaml ps常见问题
浏览器打不开 9321
先检查两个地方:
- 云厂商安全组 / 防火墙是否放行
9321。 - 服务器系统防火墙是否放行
9321。
如果服务器使用 UFW,可以执行:
sudo ufw allow 9321/tcpconfig 目录里没有 .env
1Panel 面板优先检查 Compose 里是否保留:
user: "0:0"命令行版先确认容器已经启动过:
cd /opt/danmu-apidocker compose ps端口被占用
把左侧端口改成其他端口,例如:
ports:
- "19321:9321"访问地址也要改成:
http://你的服务器IP:19321/你的TOKENdocker compose 提示找不到命令
说明 Docker Compose 插件没有装好。回到“安装 Docker 和 Compose”步骤,重新选择一组安装方式执行。
