Skip to content

Docker 部署

Docker 适合长期稳定运行。新手优先选 1Panel 面板;已经装了宝塔的用户选 宝塔面板;熟悉 Linux 的用户选 命令行版。先跑通 http://服务器IP:9321/你的TOKEN,域名和 HTTPS 后面再配置。

准备工作

你需要准备:

  1. 一台能长期运行的服务器、NAS 或小主机。
  2. 服务器公网 IP 或局域网 IP。
  3. SSH 用户名和密码,例如 root / ubuntu
  4. SSH 端口;服务商没特别说明时一般是 22
  5. 后面要用的两个令牌:
    • TOKEN:播放器访问令牌。
    • ADMIN_TOKEN:系统配置令牌。

先选设备,再 SSH 登录服务器

按设备选工具。下面每一步都配真实截图。

常用工具:MobaXterm。

下载 MobaXterm:https://mobaxterm.mobatek.net/download.html

  1. 打开 MobaXterm,点 Session

    MobaXterm 点 Session

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

    MobaXterm 填写 SSH 信息

  3. 连接后输入服务器密码。

    MobaXterm 输入 SSH 密码

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

    MobaXterm SSH 连接成功

常用工具:Xshell。

下载 Xshell:https://www.xshell.com/zh/free-for-home-school/

  1. 打开 Xshell,点左上角 新建会话

    Xshell 新建会话

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

    Xshell 填写连接信息

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

    Xshell 填写用户名和密码

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

    Xshell SSH 连接成功

参考图文:Xshell 中文网《Xshell登录服务器的两种认证方式》。

常用工具:系统终端 / iTerm2。新手直接用系统终端。

  1. 打开 应用程序,进入 实用工具

    macOS 打开实用工具

  2. 找到 Terminal 并打开。

    macOS 打开 Terminal

  3. 输入 SSH 命令,按提示输入密码。

bash
ssh root@你的服务器IP

端口不是 22 时用:

bash
ssh -p 端口 root@你的服务器IP

macOS Terminal SSH 连接成功

看到 root@...# 这类命令行,就连接成功。

常用工具:Termius。

下载:

  1. 进入 Hosts,点右下角 +

    Termius Hosts 页面

  2. New host

    Termius 新建 Host

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

    Termius 填写 Host

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

    Termius 保存后回到 Hosts

  5. 第一次连接点 Continue 确认指纹,不是输入 yes

    Termius 主机指纹确认

  6. 进入黑色终端页,看到命令行就成功。

    Termius SSH 连接成功

选择部署路线

下面三条路线选一条。新手优先选 1Panel 面板;服务器已经装了宝塔就选 宝塔面板;已经熟悉命令行的用户可以选 命令行版

1Panel 面板(推荐):适合新手。先装 1Panel,后面创建容器、改配置、看日志都在网页里完成。

国内服务器建议先在 SSH 里执行换源脚本,按提示选择 阿里云源;国外服务器可以跳过。

bash
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

1. 安装 1Panel

如果服务器已经装好 1Panel,可以跳到下一步。

在 SSH 窗口里先执行这一条,确保 curl 可用:

bash
if ! command -v curl >/dev/null 2>&1; then apt update && apt install -y curl; fi

再执行 1Panel 官方安装脚本:

bash
bash -c "$(curl -sSL https://resource.1panel.pro/v2/quick_start.sh)"

执行 1Panel 官方安装脚本

安装过程按提示填:

  • 安装目录:新手直接回车用默认值。
  • 安装 Docker:没装过 Docker 就输入 y
  • 面板端口:用默认值即可,或改成自己记得住的端口。
  • 安全入口:设置一个不容易猜到的英文路径。
  • 用户名 / 密码:自己设置并保存好。

安装完成后,终端会输出面板地址、用户名和密码。

1Panel 安装完成后记录面板信息

以后忘了面板信息,SSH 登录服务器后执行:

bash
1pctl user-info

面板打不开时

先去云厂商安全组 / 防火墙放行 1Panel 面板端口。面板地址、用户名、密码不要发给别人。

2. 登录 1Panel

打开安装完成后输出的面板地址,输入用户名和密码登录。

1Panel 登录页

3. 进入容器编排

左侧菜单点击 容器

进入容器页面

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

切到编排

点击右上角 创建

创建编排

4. 填写 Compose

创建页面按下面填写:

  • 来源:选择 编辑
  • 文件夹:填写 danmu-api-panel
  • 中间编辑框:粘贴下面的 Compose 内容。
yaml
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 会生成在这里。

填好后点 保存

填写 Compose 并保存

5. 等待容器启动

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

容器启动成功

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

编排运行中

6. 确认 .env 已生成

进入 1Panel 左侧 文件,按路径进入:

text
/opt/1panel/apps/danmu-api/config

对应点击顺序是:opt1panelappsdanmu-apiconfig

进入文件管理

进入 opt

进入 1panel

进入 apps

进入 danmu-api

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

确认 .env 已生成

没看到 .env 怎么办

回到 容器 → 编排,编辑刚才的编排,确认 Compose 里有:

yaml
user: "0:0"

补上后重新保存 / 重建,再回文件管理检查。

7. 修改 TOKENADMIN_TOKEN

config 目录里编辑 .env

先只处理这两项:

text
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌

建议:

  • TOKEN 可以先保持默认 87654321,确认能打开后再改。
  • ADMIN_TOKEN 建议改成自己的随机字符串。
  • 如果 ADMIN_TOKEN 行前面有 #,先删掉 # 再保存。

Docker / 1Panel 部署通常支持热更新。保存后如果页面还是旧配置,再回 容器 页面重启 danmu-api

8. 打开自检页面

用普通 TOKEN 打开:

text
http://你的服务器IP:9321/你的TOKEN

如果没改过 TOKEN,默认打开:

text
http://你的服务器IP:9321/87654321

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

TOKEN 自检界面

如果已经设置 ADMIN_TOKEN,系统配置地址是:

text
http://你的服务器IP:9321/你的ADMIN_TOKEN

能进入 系统配置,说明管理员令牌可用。

ADMIN_TOKEN 系统配置界面

9. 可选:添加 Watchtower 自动更新

主服务已经能访问后,再加 Watchtower。回到 容器 → 编排,点击 创建

1Panel Watchtower 编排列表

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

1Panel 创建 Watchtower 编排

粘贴下面内容后点 保存

yaml
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

1Panel 填写 Watchtower Compose

等待任务开始执行。

1Panel Watchtower 任务开始

看到 watchtower-gx 运行中即可。

1Panel Watchtower 运行中

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

1Panel Watchtower 日志

10. 常用维护操作

后续常用入口:

  • 测试接口:打开 http://你的服务器IP:9321/你的TOKEN接口调试
  • 改环境变量:打开 http://你的服务器IP:9321/你的ADMIN_TOKEN系统配置
  • 重启服务:1Panel → 容器 → 找到 danmu-api → 重启。
  • 查看日志:1Panel → 容器 → 找到 danmu-api → 日志。
  • 更新镜像:1Panel → 容器 → 编排 → 找到 danmu-api-panel → 重新拉取 / 重建。

宝塔面板:适合习惯宝塔的用户。先装宝塔,再用宝塔 Docker 编排部署 LogVar。

国内服务器建议先在 SSH 里执行换源脚本,按提示选择 阿里云源;国外服务器可以跳过。

bash
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

1. 安装宝塔面板

如果服务器已经装好宝塔,可以跳到下一步。

在 SSH 窗口里先设置安装脚本地址:

bash
url=https://download.bt.cn/install/install_panel.sh

再下载安装脚本:

bash
if [ -f /usr/bin/curl ]; then curl -sSO $url; else wget -O install_panel.sh $url; fi

最后执行安装:

bash
bash install_panel.sh ed8484bec

执行宝塔官方安装脚本

安装过程如果问你是否安装到 /www 目录,输入 y 回车。等到终端输出外网面板地址、用户名和密码,就说明安装完成。

宝塔安装完成后记录登录地址

以后忘了面板地址或账号密码,SSH 登录服务器后执行:

bash
bt default

面板打不开时

先去云厂商安全组 / 防火墙放行宝塔面板端口。宝塔是服务器管理面板,登录地址、账号、密码不要发给别人。

2. 登录宝塔面板

打开宝塔面板地址,输入账号和密码,点击 登录

宝塔登录页

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

宝塔初始化推荐配置

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

宝塔首页

3. 进入 Docker

左侧点击 Docker

进入 Docker

顶部点击 容器编排

进入容器编排

点击左上角 添加容器编排

添加容器编排

4. 填写 Compose

在弹窗里填写:

  • 编排名称danmu-api-panel
  • 来源:选择 编辑
  • compose 内容:清空默认内容,粘贴下面这段
yaml
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 会生成在这里。

填好后先看一遍,确认和截图一致。

填写 Compose

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

提交编排

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

宝塔编排运行中

如果没有运行成功,先看当前编排里的 编排日志,常见原因是镜像拉取失败、端口 9321 被占用、或 Compose 内容缩进不对。

5. 确认 .env 已生成

左侧点击 文件。宝塔默认会进入 /www/wwwroot,这里能看到 danmu-api 目录。

文件管理 wwwroot

点击 danmu-api

进入 danmu-api 目录

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

看到 .env

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

显示 .env 编辑入口

点击 编辑,先处理这两项:

text
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌

建议:

  • TOKEN 可以先保持默认 87654321,确认能打开后再改。
  • ADMIN_TOKEN 建议改成自己的随机字符串。
  • 如果 ADMIN_TOKEN 行前面有 #,先删掉 # 再保存。

编辑 .env

保存后如果页面还是旧配置,回到 Docker → 容器编排,选中 danmu-api-panel,点 重启

6. 打开自检页面

用普通 TOKEN 打开:

text
http://你的服务器IP:9321/你的TOKEN

如果没改过 TOKEN,默认打开:

text
http://你的服务器IP:9321/87654321

能看到 LogVar 弹幕 API 的配置预览页面,就说明服务已经部署成功。

LogVar 自检页面

7. 可选:添加 Watchtower 自动更新

主服务已经能访问后,再回到 Docker → 容器编排

宝塔 Watchtower 编排列表

点击 添加容器编排

宝塔添加 Watchtower 编排

在弹窗里填写:

  • 编排名称watchtower-gx
  • 来源:选择 编辑
  • compose 内容:粘贴下面内容
yaml
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 Compose

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

宝塔 Watchtower 运行中

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

宝塔 Watchtower 日志

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. 确认系统

先执行这条,看一下系统版本:

bash
cat /etc/os-release | head

确认服务器系统

2. 国内服务器先换源

国外服务器可以跳过这一步。

先执行换源脚本:

bash
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

执行换源脚本

按提示选择 阿里云源

选择阿里云源

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

备份软件源提示

等待软件源更新。

软件源更新中

看到完成提示后继续。

软件源更换完成

3. 安装 Docker

国内服务器推荐继续用 linuxmirrors 的 Docker 脚本,按提示选 阿里云 Docker CE 源毫秒镜像

先执行安装脚本:

bash
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

执行 Docker 安装脚本

等待安装完成。

Docker 安装中

安装完成后,分别执行下面 3 条命令检查:

bash
docker --version
bash
docker compose version
bash
systemctl is-active docker

验证 Docker 和 Compose

4. 创建 Compose 文件

先建目录:

bash
mkdir -p /opt/danmu-api/config /opt/danmu-api/cache

再进入目录:

bash
cd /opt/danmu-api

然后创建 compose.yaml,这一段请一次性粘贴完整:

bash
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

创建 Compose 文件

"9321:9321" 表示服务器本机 9321 端口转发到容器 9321 端口。NAT 服务器也这样写,浏览器访问时再用服务商给你的外部端口

5. 启动服务

先回到项目目录:

bash
cd /opt/danmu-api

再启动容器:

bash
docker compose -f compose.yaml up -d

拉取镜像

看到 Container danmu-api Started 就是启动成功。

容器启动成功

6. 检查服务

先看容器状态:

bash
cd /opt/danmu-api
bash
docker compose -f compose.yaml ps

再检查本机 HTTP:

bash
curl -sS -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1:9321/87654321

本机检查 HTTP 200

看到容器是 Up,并且返回 HTTP 200,说明服务器本机已经跑通。

7. 编辑 config/.env

容器第一次启动后,一般会在 config 目录下自动生成 .env 文件。先回到部署目录:

bash
cd /opt/danmu-api

看一下 .env 是否已经生成:

bash
ls -la config

确认 config/.env 已生成

再进入 config 目录:

bash
cd /opt/danmu-api/config

nano 打开配置文件:

bash
nano .env

在文件里至少确认有下面两行。如果已经有这两行,就改原来的;如果没有,就移动到文件末尾新增:

text
TOKEN=87654321
ADMIN_TOKEN=改成你自己的管理员令牌

nano 编辑 TOKEN 和 ADMIN_TOKEN

保存方法:

  1. Ctrl + O 写入文件。
  2. 看到 File Name to Write: .env 后按回车。
  3. Ctrl + X 退出 nano。

nano 保存并退出

建议:

  • TOKEN 可以先保持默认 87654321,确认能打开后再改。
  • ADMIN_TOKEN 请改成自己的随机字符串,不要照抄“改成你自己的管理员令牌”。
  • 如果 ADMIN_TOKEN 行前面有 #,先删掉 # 再保存。

保存后通常会自动生效;如果页面还是旧配置,执行下面命令重启一次:

bash
docker compose -f compose.yaml restart danmu-api

8. 打开前端页面

普通服务器打开:

text
http://服务器IP:9321/87654321

NAT 服务器打开服务商给你的外部端口,例如:

text
http://服务器IP:外部端口/87654321

能看到 LogVar 弹幕 API 页面,就部署成功。

LogVar 弹幕 API 页面打开成功

如果刚才设置了 ADMIN_TOKEN,系统配置地址是:

text
http://服务器IP:9321/你的ADMIN_TOKEN

以后要改环境变量,优先打开这个地址进入 系统配置,在前端修改并保存,不必每次都进服务器手动编辑 .env

ADMIN_TOKEN 系统配置界面

9. 可能遇到的坑

  • 公网打不开,但本机 HTTP 200:检查 NAT 转发 / 安全组,外部端口要转到服务器内网 9321
  • 镜像拉取慢:国内服务器用上面的 Docker 脚本,并选择毫秒镜像。
  • 端口被占用:把左侧端口改掉,例如 19321:9321,访问也改成 http://服务器IP:19321/你的TOKEN
  • .env 没生成:确认 Compose 里保留 user: "0:0",然后重启容器。

10. 可选:添加 Watchtower 自动更新

主服务已经能访问后,再添加 Watchtower。

先建目录:

bash
mkdir -p /opt/danmu-api-watchtower
bash
cd /opt/danmu-api-watchtower

再创建 compose.yaml,这一段请一次性粘贴完整:

bash
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

最后启动并查看状态:

bash
docker compose -f compose.yaml up -d
bash
docker compose -f compose.yaml ps

看到 watchtower-gx 运行中,说明自动检查更新正常。

命令行 Watchtower 启动与日志

手动更新

不使用 Watchtower 时,可以手动更新。仍然一条一条执行:

bash
cd /opt/danmu-api
bash
docker compose -f compose.yaml pull
bash
docker compose -f compose.yaml up -d
bash
docker compose -f compose.yaml ps

常见问题

浏览器打不开 9321

先检查两个地方:

  1. 云厂商安全组 / 防火墙是否放行 9321
  2. 服务器系统防火墙是否放行 9321

如果服务器使用 UFW,可以执行:

bash
sudo ufw allow 9321/tcp

config 目录里没有 .env

1Panel 面板优先检查 Compose 里是否保留:

yaml
user: "0:0"

命令行版先确认容器已经启动过:

bash
cd /opt/danmu-api
bash
docker compose ps

端口被占用

把左侧端口改成其他端口,例如:

yaml
ports:
  - "19321:9321"

访问地址也要改成:

text
http://你的服务器IP:19321/你的TOKEN

docker compose 提示找不到命令

说明 Docker Compose 插件没有装好。回到“安装 Docker 和 Compose”步骤,重新选择一组安装方式执行。

下一步

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