母上大人最近热衷追剧,于是我开始折腾起如何让手机/电视在线播放从PT站下载的视频。
经过粗略的调查,发现可以通过windows自带的SMB服务来在局域网间共享文件。借助ES文件浏览器,安卓端能够播放存储在PC端的视频。然而,这也意味着我的笔记本电脑需要时刻开机并连上家里的局域网——对于常年背井离乡的苦逼大学生而言,这几乎是不可能的。
一种更靠谱的解决方案是继续压榨我租的那台的VPS,让它直接下载来自PT站的种子并作为文件服务器提供在线播放功能。无奈它早已负荷累累,只剩下了不到2GB的剩余磁盘空间。猛然间发现我的VPS上挂载了Google Drive,那么能否利用这部分空间呢?答案是可以的。
原料
一台丐版VPS(Vultr月租3.5刀, 1vCPU, 512MB, 10GB SSD, 450GB Bandwidth)
一个谷歌账号(免费版的Google Drive有15 GB存储空间)
环境
Ubuntu 18.04.6 LTS
LNMP 1.6
工具
Transmission:作为PT下载器
Transmission Web Control:为Transmission WebUI提供更多功能
Rclone:用于云盘同步
Nginx:用于域名解析并作为文件服务器
Google Drive:用于存储下载后的数据
搭建
用Rclone挂载Google Drive到VPS上
略
(感谢上个时间桩的lazybird为我完成了这一步,尽管他没有告诉我这是咋做的 我忘了
不妨设挂载的目录为/rclone/google
。在该目录下新建文件夹shared_web_file
作为Transmission的下载目录。
用Nginx搭建http文件服务器
配置文件的关键部分如下所示(假设文件服务器的目标域名为file.lazybirds.top):
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8;
server
{
listen 80;
listen [::]:80;
server_name file.lazybirds.top ;
...
return 301 https://$server_name$request_uri;
}
server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name file.lazybirds.top ;
...
root /rclone/google/shared_web_file;
# ssl
...
location / {
}
}
在重启nginx后,在浏览器中打开file.lazybirds.top
(记得替换成你自己的域名),可以看到文件服务器已经正常运行。网页上显示的正是/rclone/google/shared_web_file
目录的内容。
安装Transmission作为PT下载器
# 安装
sudo apt install transmission-daemon
# 启动
sudo service transmission-daemon start
# 停止
sudo service transmission-daemon stop
Transmission的配置文件为/var/lib/transmission-daemon/info/settings.json
。需要额外注意以下几项内容:
- download-dir: 下载后的存储位置,将其设置成
/rclone/google/shared_web_file
- incomplete-dir: 下载过程中的临时位置,保留默认值
/var/lib/transmission-daemon/downloads
- rpc-whitelist-enabled / rpc-host-whitelist-enabled: 将其设置成false
- rpc-username / rpc-password: 设置登陆所需的用户名和密码;密码经设置后会自动加密
- rpc-port: WebUI的端口号,默认为9091
注意配置Transmission时需确保该服务以停止。配置后启动Transmission服务以生效修改。
在经过上述操作后,访问https://<ip地址>:9091
即可进入下载器的WebUI界面。
原装的WebUI比较丑且难用,可以考虑换成Transmission Web Control。
# 安装Transmission Web Control
# 参见https://github.com/ronggang/transmission-web-control/wiki/Linux-Installation-CN
wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh
chmod +x install-tr-control-cn.sh
bash install-tr-control-cn.sh
# 随后根据提示操作即可
用Nginx解析域名反代9091端口并提供SSL加密(可选)
配置文件的关键部分如下所示(假设Transmission Web Control的目标域名为twc.lazybirds.top):
server
{
listen 80;
listen [::]:80;
server_name twc.lazybirds.top ;
return 301 https://$server_name$request_uri;
}
server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name twc.lazybirds.top ;
# ssl
...
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass_header X-Transmission-Session-Id;
proxy_pass http://127.0.0.1:9091;
}
}
使用
访问PT站获取PT种子文件。访问twc.lazybirds.top进入下载器Web界面,上传种子并下载视频到Google Drive。访问file.lazybirds.top在线播放下载的视频。
后记
可能由于VPS在国外的缘故,网络质量不太好,实测刚播放时有些小卡,但也问题不大。
在配置的过程中其实还遇到了一个坑,详见Help Error: Illegal seek – Transmission (transmissionbt.com)。据说因为Rclone不支持PT下载器的所有文件操作,所以如果直接下载种子到Google Drive会报错(Illegal Seek)。这也是为什么我们需要先将视频下载到临时位置的原因——但这意味着下载的视频大小无法突破剩余磁盘空间的上限(尽管其占用的空间可以随后搬运至Google Drive)——因此,这个解决方案大抵还是难逃沦为玩具的结局。