本文参与少数派 2017 年度征文活动。

就像某个似乎已经夭折的脱口秀节目所言,在我看来 2017 年的网络环境实在算不上是美好的一年。其中逃不掉的一环就是作为网络基础服务的迅雷也正在变得越来越难用。

2017 烂透了
2017 烂透了

尽管如今需要下载大文件的情形已经不如以往,但一些必须要下载的场景总归是逃不开的。且不谈身处国内大环境要做到影视剧、电影和音乐消费全正版有多不容易,更别说即使是在非版权内容场景下也会遇到大文件下载的情况。(iOS 固件、Windows 安装镜像、GOG 游戏,这些可都不是什么小东西。)

在这样的状况下,尽管我已经购买了 Internet Download Manager(简称 IDM),但却躲不过 ED2K、BitTorrent 这样的下载协议。(IDM 仅支持 HTTP、HTTPS 和 FTP 等协议。)也因此,在很长一段时间里我依然摆脱不了迅雷:刚开始,我使用迅雷极速版作为 IDM 无法下载时的备用方案;后来迅雷极速版不再更新,我便开始转向迅雷离线网页版,在网页端离线完成之后再用 IDM 将文件取回本地;而在 2017 年,迅雷离线网页版终于也开始无法正常工作了。

为了解决这个问题,有人买了群晖一举解决了下载和云存储两个问题,有人则是买了已经被大家遗忘在角落的 115。而我就不同了,没有钱买群晖和 115 的我给自己搭建了一台可以下载、可以在线播放的离线服务器。

因为涉及软件较多以及搭建操作需要一定 Linux 使用基础,本文并不打算详细介绍如何一步一步安装和配置各个组件、完成搭建。但我会交代清楚各功能所使用的软件和搭建的思路,并尽可能说明各环节的需注意事项,以供有相同需求者作为自行搭建的参考。

购置服务器

要搭建服务器,第一件事当然是准备机器,对于服务器的选择在这里有两个选项:使用手头的空闲机器在本地搭建,或者购买 VPS。

前者在少数派作者中已有类似的先例,而我也曾经尝试过用树莓派搭建作为 PT 挂机用的下载服务器使用,然而碍于树莓派的 I/O 性能瓶颈,最终还是作罢。也正是因此,我这次选择购买 VPS 用来搭建离线下载服务器。

当然,使用 VPS 的好处远不止如此:在国内到处都是 NAT 的网络环境下,即使在本地使用设备搭建成功也很难实现公网环境下的自由访问,更别提国内家用宽带普遍存在的上传带宽小水管问题。

在如今,购买一台 VPS 不算什么难事。如果你在付款方面遇到问题,可以参考我之前写过的《给普通大学生的境外支付指南》。但需要注意,绝大部分 VPS 服务商并不允许用户使用服务器下载侵权内容,使用这些机器下载盗版内容极有可能导致你收到服务商的投诉、警告和终止服务。如果你有此类需求,请查找已经明确声明无视 DMCA 投诉的服务商购买。

尽管我并不鼓励,但这样的服务商确实可以让你无所畏惧
尽管我并不鼓励,但这样的服务商确实可以让你无所畏惧

搭建下载服务器

既然是下载服务器,第一要务就是下载了。而迅雷的完蛋在这里也有体会,曾经你只需要安装迅雷远程下载服务端 Xware 就可以打遍天下无敌手。而在迅雷官方已经停止支持 Xware 的今天,为了支援所有常用的下载协议,你需要安装多个软件。

Aria2

Aria2 可以说是众多教程都会提及的标配了。这个最广为人知的 Linux 平台下载工具支持 HTTP、FTP、BitTorrent 和 Metalink。(不过我一般只会用来下 HTTP 就是了,因为 BitTorrent 有更好的选择。)按照文档编写完配置之后,在后台启动进程并使用自己喜爱的前端面板连接即可:

(虽然我觉得这两玩意儿都挺糟糕的……)

Transmission

前文说「BitTorrent 有更好的选择」,Transmission 便是了。相比 Aria2,Transmission 有着更多 PT 站点的支持和更完备的 BitTorrent 功能,用户只需在服务器端安装并配置 transmission-daemon 即可。

不过相比功能十分不堪的 Transmission 内置 Web 控制面板,我更推荐你使用第三方的 transmission-web-control 来获得更加完整的 Transmission 功能界面。

相比之下原版面板可以说是功能相当少了
相比之下原版面板可以说是功能相当少了

当然,你也可以参考作者此前记录的安装流程进行 Transmission 配置。

aMule

剩下的 ED2K 就通过跨平台电骡客户端 aMule 解决。尽管 aMule 的 Web 面板并不好用,但我也没有找到什么更好的办法。安装 amule-daemon 之后,修改配置开启 Web 控制台。

同样,对于 aMule 你也可以参考作者此前的安装流程进行设置。

搭建网页服务器

安装和配置完各种下载服务之后,接下来还需要一个基于网页的目录浏览和文件下载界面,我选择 h5ai 这个小东西。

null

首先安装和配置自己惯用的网页服务器,Nginx 或者 Apache 都可。(考虑到后面还需要搭建反向代理,我更推荐你使用 Nginx。)设置一个目录同时作为前文下载服务的保存目录和这里的网页文档目录(当然,也别忘记处理好权限问题),并根据 h5ai 页面的安装说明完成 h5ai 的设置。

当然,我还建议你在网页服务器这边设置一下 HTTP 的访问密码,以免站点被除你以外的其他人访问到。安装完成后,你就可以通过网页端查看已下载目录的文件并取回本地了。

搭建串流服务器

解决了以上基本需求,剩下的就是串流。通过串流,我们期望实现像迅雷离线一样直接在网页端播放已经下载到服务器的视频资源。幸运的是,Plex 这个商业软件正是面向这种需求。

Plex 让你在各个平台串流你的服务器视频
Plex 让你在各个平台串流你的服务器视频

按照文档设置好软件源并安装 plexmediaserver 包,这不算困难。不过安装完成后,服务端的初始设置必须在服务端本地完成,作为 VPS 我们几乎不大可能在服务器端安装图形界面并访问网页,所以可以通过建立 SSH 隧道来实现。(我惯用的 Xshell 便可以在连接「属性」-「隧道」中很轻松地建立。)

成功访问后按照网页上的提示一步一步设置完成 Plex 服务端、将下载目录添加至媒体库,设置完成后断开连接,直接在本地访问 Plex 即可对此前设置的目录中的文件进行串流了。

而且 Plex 支援了几乎所有平台,无论是你的 iOS 设备、Android 设备还是 PC 或 Mac。

设置一个友好的域名

到前文为止,所有功能都已经设置完毕。不过每个软件输出 Web 介面的端口号是不是让你感到无所适从难以记忆呢?通过设置域名和反向代理,你可以将前文中所有这些乱七八糟的端口转换成简单易记的域名使用。

鉴于这里的服务基本只涉及到自用,我非常推荐你在 Freenom 获取一个免费的域名来使用,获取域名后在面板添加多个子域的 A 记录(考虑到前文的服务数量,应该是五个),指向你 VPS 的 IP 地址。

在这里搜索免费域名就可以
在这里搜索免费域名就可以

接着在前文安装的 Nginx 或者 Apache 网页服务器中对前文的几个本地端口设置反向代理即可。

总结

这样一套折腾下来,一个离线服务器该有的功能便都实现了。尽管相比迅雷离线服务器动辄几百几千 TB 甚至 PB 的空间,VPS 的硬盘大小可说小得可怜,不过迅雷的空间正常又能用到多少呢?至少我购买的 100 GB 的 VPS 空间算是够用的。

剩下的唯一那点不如意,大概就是已经被迅雷压榨得奄奄一息的 eMule 和 BitTorrent 公网了。