Docker 部署
目标:用 Docker Compose 在 VPS 上跑起 huangxd-/danmu_api,改好 TOKEN 和 ADMIN_TOKEN;需要时再加 Watchtower。
命令已拆成单条,按顺序执行即可。
第 1 步:先用 SSH 登录 VPS
Section titled “第 1 步:先用 SSH 登录 VPS”在自己电脑上打开终端,先连接服务器。
如果 SSH 端口就是默认的 22,直接执行:
ssh root@你的服务器IP如果服务商给的是其他端口,就执行:
ssh -p 端口 root@你的服务器IP第一次连接时,终端通常会询问是否继续,输入 yes,再回车。
如果当前服务器不是 root 用户,就把上面的 root 换成服务商给你的用户名,例如 ubuntu。

第 2 步:先装 Docker 和 Docker Compose
Section titled “第 2 步:先装 Docker 和 Docker Compose”先按你的机器情况选 1 种安装方式:
- 官方网络正常、想最省事:用 Docker 官方脚本
- 国内 VPS 拉取慢:用 LinuxMirrors 的 Docker 脚本
- 机器刚装好,想顺手换系统源再装 Docker:用 OCSS 脚本
官方网络正常时,用这个
Section titled “官方网络正常时,用这个”- 先装 Docker:
curl -fsSL https://get.docker.com | sudo bash- 再装
nano:
sudo apt install -y nano国内 VPS 拉取慢时,用这个
Section titled “国内 VPS 拉取慢时,用这个”- 先装 Docker:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)- 再装
nano:
sudo apt install -y nano想先换源再装 Docker 时,用这个
Section titled “想先换源再装 Docker 时,用这个”- 先跑脚本:
bash <(curl -sSL https://cdn.jsdelivr.net/gh/Master08s/ocss@latest/main.sh)- 再装
nano:
sudo apt install -y nano装好后再按顺序确认:
- 先看 Docker:
docker --version- 再看 Docker Compose:
docker compose version能正常看到版本号,就继续下一步。
第 3 步:创建部署目录
Section titled “第 3 步:创建部署目录”后面统一在这个目录里操作:
- 先创建目录:
mkdir -p ~/danmu-api- 再进入目录:
cd ~/danmu-api- 最后确认当前目录:
pwd第 4 步:创建 docker-compose.yml
Section titled “第 4 步:创建 docker-compose.yml”还在 ~/danmu-api 目录里,先打开文件:
- 先回到部署目录:
cd ~/danmu-api- 再打开文件:
nano 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 只负责主服务。
后面的 Watchtower 单独放到另一个目录里,更适合长期维护;这样启动时也能直接用 docker compose up -d。

第 5 步:第一次启动,自动生成 config/.env
Section titled “第 5 步:第一次启动,自动生成 config/.env”按顺序执行:
- 先启动服务:
docker compose up -d- 再看容器状态:
docker compose ps- 最后确认
config目录里已经出现.env:
ls -la config这一步完成后,宿主机的 ~/danmu-api/config/.env 会自动出现。
如果已经看到 .env,就继续下一步。

config 目录里已经出现 .env。第 6 步:打开 config/.env,只改这两项
Section titled “第 6 步:打开 config/.env,只改这两项”按顺序执行:
- 先回到部署目录:
cd ~/danmu-api- 再打开配置文件:
nano config/.env先确认这两项:
TOKEN=***ADMIN_TOKEN=***建议这样处理:
TOKEN先保持87654321- 把
ADMIN_TOKEN改成自己的值 - 如果
ADMIN_TOKEN这一行前面带#,先把#删除再保存
保存顺序:
-
Ctrl + O - 回车
-
Ctrl + X
正常保存后,一般不用重启。
当前这条 Docker 部署线支持热更新,改完 config/.env 后通常会自动生效。
如果你保存后发现页面还是旧值,或者管理员页面没有按预期变化,再按顺序手动重启一次就行,不用纠结是不是热更新没生效:
- 先重启主服务:
docker compose restart danmu-api- 再确认容器状态:
docker compose ps第 7 步:后面改变量,直接进前端 系统配置
Section titled “第 7 步:后面改变量,直接进前端 系统配置”http://你的服务器IP:9321/你的ADMIN_TOKEN
系统配置 改就行。Docker 这条线大多数配置支持热更新。第 8 步:直接用浏览器测试
Section titled “第 8 步:直接用浏览器测试”先打开普通页面:
http://你的服务器IP:9321/87654321再测搜索接口:
http://你的服务器IP:9321/api/v2/search/anime?keyword=凡人修仙传再打开管理员页面:
http://你的服务器IP:9321/你的ADMIN_TOKEN这 3 个地址都能正常打开,就说明部署已经跑通。

第 9 步:需要自动更新的话,再单独加 Watchtower
Section titled “第 9 步:需要自动更新的话,再单独加 Watchtower”如果你想让镜像后面自动检查更新,就单独给 Watchtower 准备一个目录:
- 先创建目录:
mkdir -p ~/danmu-api-watchtower- 再进入目录:
cd ~/danmu-api-watchtower- 最后打开配置文件:
nano docker-compose.yml把下面这段内容原样粘贴进去:
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粘贴完以后同样按这个顺序保存:
-
Ctrl + O - 回车
-
Ctrl + X
然后按顺序启动它:
- 先回到 Watchtower 目录:
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还保留着
这几个值可以按需要改
Section titled “这几个值可以按需要改”“12600”:检查间隔,单位是秒;这里就是每 12600 秒检查一次danmu-api:要监控的容器名,要和主服务里的container_name保持一致TZ=Asia/Shanghai:日志和时间按上海时区显示—cleanup:更新后顺手清掉旧镜像
正常情况下,会看到 Watchtower 已经启动,并显示下一次检查时间。

如果你只想监控这一个容器,也可以把 Watchtower 放到同一个 yml
Section titled “如果你只想监控这一个容器,也可以把 Watchtower 放到同一个 yml”上游文档也提供了把 watchtower 和 danmu-api 写在同一个 Compose 文件里的示例。
如果这台机器就跑这一个容器,也可以直接改成下面这样:
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
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第 10 步:以后想手动更新
Section titled “第 10 步:以后想手动更新”需要手动更新时,按顺序执行:
- 先回到主服务目录:
cd ~/danmu-api- 再拉最新镜像:
docker compose pull- 最后重新启动:
docker compose up -d第 11 步:最常见的 3 个问题
Section titled “第 11 步:最常见的 3 个问题”1)浏览器打不开
Section titled “1)浏览器打不开”先检查这两个地方有没有放行 9321:
- 服务器自己的防火墙
- 云厂商安全组
如果当前机器用的是 UFW,可以先执行:
sudo ufw allow 9321/tcp2)docker compose 提示找不到命令
Section titled “2)docker compose 提示找不到命令”说明 Docker Compose 插件没有装好,回到第 2 步重新执行你选的那组安装命令即可。
3)Watchtower 没启动
Section titled “3)Watchtower 没启动”如果你是单独目录部署的,就按这个顺序检查:
~/danmu-api-watchtower/docker-compose.yml里是不是写的image: nickfedor/watchtower/var/run/docker.sock:/var/run/docker.sock有没有保留- 日志里有没有正常看到下一次检查时间
这页做完后,下一步看哪里
Section titled “这页做完后,下一步看哪里”参考来源:huangxd-/danmu_api README、LinuxMirrors Docker 脚本、Master08s / OCSS 社区脚本、Docker 官方安装文档、Server World 的 SSH 截图,以及 社区 Watchtower Compose 教程 中公开截图。
纠错与建议
这一步有问题?
可以直接提交纠错或建议。我会按页面和步骤整理处理。
教程反馈