关于我无意间发现可以白嫖Google Drive为PT挂种这件事

母上大人最近热衷追剧,于是我开始折腾起如何让手机/电视在线播放从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)——因此,这个解决方案大抵还是难逃沦为玩具的结局。

发表评论

%d 博主赞过: