前言

现在很多播放器都支持弹幕了,简单记录一下部署弹幕 API 过程。这里用的LogVar弹幕API这个项目。

使用 Vercel 部署

  • Vercel 无需服务器,只要有一个 Github 账号即可,Vercel 可以用 GitHub 账号登录,简单方便,没有额外成本。
  • 不要用原项目的一键部署按钮,具体部署方法可以参考这篇文章,这里详细说一下自动更新的问题。

自动更新

  • 由于 Vercel 更新,原来的方式已无法自动更新,需要添加一个Hook
    • 登录 Vercel,进入你的danmu-api项目,进入侧边栏Settings-Git,页面下拉找到Deploy Hooks,添加一个 hook,名字随便取,比如auto deploy danmu-api,记录下URL等下要用。
    • 进入你的 Github,进入你 fork 的danmu_api项目的settings,进入侧边栏的Webhooks,添加一个 webhook,将前面 Vercel 的 URL 填进去,其他保持默认即可。

优化(可选)

  • Vercel 被墙,如果要直连的话,请绑定自定义域名。
  • 进入 Vercel的danmu-api项目的Settings-Functions,将地区改成香港或者日本,或许可以提高访问速度。
  • 配置UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN可以记住手动选择的弹幕源,具体方式参考原项目README页面。

使用 docker compose 部署

  • 创建项目目录
1
2
mkdir -p ~/danmu_api
cd ~/danmu_api
  • 创建 docker-compose.yml
1
vim docker-compose.yml

写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
services:
danmu-api:
image: logvar/danmu-api:latest
labels:
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "9321:9321"
# 热更新支持:挂载 config/.env 文件,修改后容器会自动重新加载配置(无需重启容器)
volumes:
- ./config:/app/config # config目录下需要创建.env
- ./.cache:/app/.cache # 配置.cache目录,会将缓存实时保存在本地文件,无需配置 redis
restart: unless-stopped
  • 使用 watchtower 监控自动更新
1
2
3
mkdir -p ~/watchtower
cd ~/watchtower
vim docker-compose.yml

写入以下内容:

1
2
3
4
5
6
7
8
9
10
services:
watchtower:
image: nickfedor/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
command: --cleanup --interval 3600 --label-enable

这里我们用label打标签的方式来让 watchtower 监控需要自动跟新的项目,比之前在docker-compose.yml文件内写入容器名的方式更加灵活。

  • 启动容器
    在两个docker-compose.yml文件所在目录分别执行
1
docker compose up -d