LITTLEFOX

一个科研搬砖狗的WordPress尝试

aria2+AriaNG+Plex+Syncthing搭建自己的媒体中心

关于aria2+Plex的上一篇文章竟然有不少人看,不过那篇写得比较早,有很多需要更新的地方,本着懒得一处一处修改与时俱进的原则,我决定再水一篇。本篇基于Ubuntu 18.04,如果你需要CentOS6和7的教程,请参考上一篇。

本篇基于同样的服务器结构,即VPS-A(抗DMCA,作为下载服务器)+VPS-B(大硬盘,性能和网络较好,作为媒体服务器),通过Syncthing同步。

首先,请确保你的域名已经解析到对应IP。另外这里涉及到很多权限问题,因为每台VPS的用户配置不一样,如果报权限错误请自行解决,或者全部用root运行

需要开放的端口:

VPS-A:80(http),443(https),6800(aria2),8384(Syncthing)

VPS-B:80(http),443(https),8384(Syncthing),32400(Plex Media Server)

VPS-A:安装aria2

首先保证服务器已经打开6800端口,否则之后会出现连接服务端失败。

Ubuntu18.04软件源中包含aria2,直接安装即可:

$ sudo apt install aria2

添加aria2的配置文件,使用Toyo的版本,这里目录是/home/ubuntu/.aria2,你可以自行修改:

$ mkdir /home/ubuntu/.aria2
$ cd /home/ubuntu/.aria2
$ wget --no-check-certificate -N "https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/other/Aria2/aria2.conf"
$ wget --no-check-certificate -N "https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/other/Aria2/dht.dat"
$ touch aria2.session

之后需要编辑aria2.conf,修改以下部分,其中保存目录和rpc-token自定,证书目录不可更改,[domain]自行替换为你的域名:

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/var/www/[domain]

# 从会话文件中读取下载任务
input-file=/home/ubuntu/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/home/ubuntu/.aria2/aria2.session

# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=[rpc-token]

# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件(.pem/.crt)
rpc-certificate=/etc/ssl/caddy/acme/acme-v02.api.letsencrypt.org/sites/[domain]/[domain].crt
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件(.key)
rpc-private-key=/etc/ssl/caddy/acme/acme-v02.api.letsencrypt.org/sites/[domain]/[domain].key

至于证书为什么用这么一个奇葩的目录,因为这是Caddy默认的证书目录,我们可以直使用Let’s Encrypt的证书,从而避免自签证书不信任的问题。

然后修改/etc/systemd/system/aria2.service,让它读取这个配置,把ExecStart一行改为:

ExecStart=/usr/bin/aria2c --conf-path=/home/ubuntu/.aria2/aria2.conf --daemon

VPS-A:安装Caddy

Caddy的filemanager模块已经改名为filebrowser,filemanager已从caddy仓库移除,所以使用老命令会报错,这里使用Caddy官方的脚本:

$ curl https://getcaddy.com | bash -s personal http.filebrowser
$ curl https://getcaddy.com | bash -s personal 
$ sudo mkdir /etc/caddy && sudo mkdir /var/www && sudo mkdir /etc/ssl/caddy
$ sudo touch /etc/caddy/Caddyfile
$ sudo touch /etc/caddy/filebrowser.db
$ sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

官方的service文件保护掉了/etc/caddy和/var/www,需要修改一下,编辑/etc/systemd/system/caddy.service,在ReadWriteDirectories那里额外加入两行:

ReadWriteDirectories=/etc/caddy
ReadWriteDirectories=/var/www

下面建立虚拟主机,首先请建好对应目录,例如这里是/var/www/[domain],假设domain是下载页面,domain2是文件管理(非必须,你可以用终端管理),filebrowser插件已从caddy官方库移除,故删除了相关配置,需要安装请参看下一段。编辑/etc/caddy/Caddyfile:

https://[domain] {
 root /var/www/[domain]
 timeouts none
 gzip 
}

启动Caddy和aria2:

$ sudo systemctl daemon-reload && sudo systemctl enable caddy && sudo systemctl start caddy && sudo systemctl enable aria2 && sudo systemctl start aria2  

VPS-A:安装Filebrowser(可选)

filebrowser组件已经从Caddy官方库移除,现在只能独立安装,如果你没有在web管理文件的需求,可以不装,这里使用官方脚本:

$ curl -fsSL https://filebrowser.xyz/get.sh | bash

运行的命令是(只包含常用参数,更多请参看官方文档

$ filebrowser -r <path> -a <ip> -d <database_path>

使用nohup或者systemd让它保持后台,默认监听的是8080端口,如果要https,用Caddy反代一下这个端口就行,这里不细讲了。

VPS-A:安装AriaNG

为什么不用YAAW呢?因为AriaNG好看。当然AriaNG不支持aria2老版的user/password模式,如果需要请使用YAAW。另外你也可以使用别人已经搭建好的面板,例如aria2c,不过我倾向于自己搭一个,反正也不复杂。

AriaNG目前更到了1.0.1版,并且出了单文件版AllInOne:

$ cd /var/www/[domain]
$ wget https://github.com/mayswind/AriaNg/releases/download/1.0.1/AriaNg-1.0.1-AllInOne.zip
$ unzip AriaNg-1.0.1-AllInOne.zip

然后重启一下Caddy就可以访问面板了,按照上面的配置会自动全程https,记得设置rpc-token,否则无法连接后端的,正常访问的页面是这个样子的:

《aria2+AriaNG+Plex+Syncthing搭建自己的媒体中心》

VPS-A&B:安装Syncthing

Syncthing也已经出到了1.0.1,可以直接去官网下载安装,或者添加官方源使用apt安装,这里使用稳定源:

$ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
$ echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
$ sudo apt update
$ sudo apt install syncthing

首先启动一次,让它建立配置文件,下面的[user]改成你希望使用的用户:

$ sudo systemctl enable syncthing@[user]
$ sudo systemctl start syncthing@[user]

然后编辑~/.config/syncthing/config.xml,把 <address>127.0.0.1:8384</address> 改成 <address>0.0.0.0:8384</address>,这样才可以通过外网访问,之后重启Syncthing,应该就能在IP:8384访问到Syncthing面板了。

至于https,Syncthing的设置里可以使用自签证书,不过浏览器会报错,需要加白名单,要么可以使用Caddy反代,配置如下:

https://[domain] {
    gzip
    proxy / localhost:8384
    basicauth / [user] [passwd]
}

这里使用的basicauth来阻止未授权的访问,如果启用此选项,请不要在Syncthing的设置里启用密码,否则会报错。

剩下在网页面板配置即可,Syncthing现在已经可以自动监控修改或者定时扫描(自动监控在下载过程中会如何处理我未测试),并且0.14.50版本加入了仅发送和仅接收选项,可以实现单向同步,那么即使VPS-A的硬盘不大也没关系了,同步完成之后删除文件即可。

VPS-B:安装Plex Media Server

请根据自己设备的类型到官网自行下载安装PMS软件包,不赘述。

之后使用隧道连接ssh,source为localhost:12345,destination为localhost:32400,浏览器打开http://localhost:12345/web,登陆Plex账号,认领服务器,新版PMS已经配置好远程访问,认领以后就可以用plex.tv访问了,效果如下(老图,新版外观有微小不同,不过基本是一回事啦):

《aria2+AriaNG+Plex+Syncthing搭建自己的媒体中心》

PMS已实现自动扫描(需要改一下设置),最终的效果:在AriaNG添加下载任务,下载完成自动同步到VPS-B,PMS自动扫描并匹配信息,在Plex客户端或者网页端直接观看。

点赞
  1. 木木 mumu说道:

    可以下载完自动同步到群晖里面吗

    1. Fox说道:

      应该可以的,我没有用过群晖不太了解,如果群晖能安装syncthing之类的工具,或者可以挂载为webdav都能同步,不过你都有群晖了,直接用群晖挂机下载就好了啊?

  2. James说道:

    我在家里搞了个树莓派,然后上面弄了个 qbittorrent-nox,下好了直接 sftp 连上去看。

    1. Fox说道:

      这个办法比较简单,不过用sftp大概有两个缺点,一是协议本身速度慢,二是整理不方便,其实完全可以在树莓派上跑Plex的,本地串流的速度非常快

发表评论(评论内容可能需要审核,无需重复发表)