Skip to content

Sever deployment (后端部署)

写在前面

为了方便大多数人使用,插件后端在设计时尽量做到了简单并且即开即用,但是部署过程可能依然需要花费几分钟的时间,所以需要耐心往下看。(或者直接使用免费后端

后端项目

后端项目名为metatube-server

二进制文件发布于:

Docker镜像发布于:

由于 DockerHub 的下载限制,建议优先选择GitHub Container Registry下载镜像。

如何部署

metatube-server资源占用非常低,理论上任何内存>=128MB,硬盘>=2G的机器,都可以直接运行二进制程序或者docker容器。

直接部署(★☆☆)

  1. Releases下载最新后端程序。
  2. 使用如下任意模式命令运行后端:

  3. 内存模式:./metatube-server

  4. 数据库模式(推荐):./metatube-server -dsn metatube.db

Tips:

  • -v3后缀的版本理论上运行效率更高,但是需要新版的CPU支持。
  • Windows下可以直接双击运行,但是仍旧建议使用数据库模式持久化数据。
  • 默认端口为8080,若出现端口占用的情况,可以使用-port参数配置其他端口。
  • Linux下后台运行后端服务可以使用nohupsystemdDocker等。
  • Windwos下后台运行后端服务可以使用NSSM

Docker部署(★★☆)

请确保部署平台已有Docker环境,否则请先安装Docker

直接运行以下任意一条命令即可:

  • 内存模式:
docker run -d -p 8080:8080 --name metatube metatube/metatube-server:latest
  • 数据库模式(推荐):
docker run -d -p 8080:8080 -v $PWD/config:/config --name metatube metatube/metatube-server:latest -dsn /config/metatube.db

更新后端需要先运行以下命令再重新跑一遍上述命令,初次安装请跳过

docker stop metatube
docker rm metatube

Docker-Compose部署(★★☆)

请确保部署平台已有Docker、Docker-compose环境

mkdir metatube-sdk-go && cd metatube-sdk-go
curl -sL https://raw.githubusercontent.com/metatube-community/metatube-sdk-go/main/docker-compose.yml -o docker-compose.yml
docker-compose up -d

Raspberry Pi部署(★★☆)

都用树莓派了,跑个Docker应该不需要教程吧

Unraid部署(★★☆)

参考:Unraid 快速部署

Synology部署(★★☆)

参考:这篇教程

Heroku部署(★★☆)

‼️ Heroku不再免费,请转至其他部署方式(如:Koyeb)

优势:

  • 免费🆓、速度快⚡️、简单部署+搭建不超过三分钟⏱。
  • 不需要给后端配置代理,且使用美国IP,刮削限制少。
  • 自动支持HTTPS,可以避免如Emby下图片加载的问题。

参考:Heroku 一键部署

Koyeb部署(★★☆)

优势:

  • 永久免费🆓(只要不倒闭)。
  • 自动支持HTTPS。

参考:Koyeb 快速部署

Mogenius部署(★★☆)

优势:

  • 免费🆓。
  • 自动支持HTTPS。

参考:Mogenius 快速部署

参数配置

参数名 可选值 默认值 备注
PORT int<0-65535> 8080 监听端口号,按需修改
TOKEN string 访问密钥,按需配置,若部署在本地则没有配置的必要
DSN string 内存模式 数据库服务地址,按需配置,小白建议使用默认值
DB_MAX_IDLE_CONNS int 0 最大空闲数据库连接数,建议使用默认值
DB_MAX_OPEN_CONNS int 0 最大数据库连接数,建议使用默认值
DB_PREPARED_STMT bool false Prepared Statement,建议使用默认值
DB_AUTO_MIGRATE bool false 数据库表自动迁移,建议使用默认值
REQUEST_TIMEOUT string 1m 请求超时时长,默认一分钟

关于DSN

  • SQLite
    • 当传入的是文件名(如library.db)等字符串时,则会使用sqlite作为数据库引擎。
    • 默认使用file::memory:?cache=shared为参数的sqlite内存模式,但是数据非永久。
  • PostgresSQL
    • 如果传入的是^postgres(ql)?://开头的链接,则会使用postgres作为数据库引擎。

DSN 留空服务端则会默认使用sqlite内存模式,这当然是最简单的使用方式。但是如果关闭服务端,那么之前服务端爬取以及保存的所有数据也都会消失。(Jellyfin/Emby已经刮削的数据当然不会消失)

配置 DSN 在一定程度上可以加快刮削速度,提升使用体验,建议有一定动手能力的用户使用

关于DB_AUTO_MIGRATE

该选项会自动创建数据表,第一次使用时需要开启