Aria2+Filerun实现BT中转站

去年黑五买了一台Hosthatch的3T存储大盘鸡,今年续费的时候感觉$84一年还是有点吃不消。故看了今年黑五的活动,买了台伦敦的小盘鸡,$22/yr,500GB硬盘,每月2TB流量。

Filerun是一款轻量级的文件管理程序。界面简洁,但功能完备,还支持多用户管理。可以看作是一套轻量的网盘(相比Nextcloud)。

Aria2是一款强大的下载器,支持通过几乎任何协议的下载链接。我使用了这个版本的Aria2,因其进行了不少优化,作者称之为的Aria2-pro

现有的轮子

最近一段时间用docker多了之后,发现docker真是个好东西,搭建服务从未如此轻松过。

以前发现了一个repo,就是用docker打了个比较完备的包,可以直接用。

wahyd4/aria2-ariang-x-docker-compose

但问题是,我对其原理还是没那么理解,要在其基础上加点东西比较麻烦。

更要命的是,我在通过他给的域名接口,填了我自己的域名,通过Let’s Encrypt申请证书的时候,由于套了Cloudflare的原因(疑似),没有申请成功。且在短时间内发送了大量请求,导致返回了429错误(Too Many Requests)。

查了lets encrypt的文档后,发现每小时只有5次请求机会,所以我得干等1h……

所以,我还不如自己写一个docker-compose的配置文件,正好练练手。

此外,SSL证书使用的是cloudflare的origin certificate,不能直接用,得配合cloudflare的CDN。

造轮子

可能这不叫造轮子,叫组装轮子。

参考了前几天搭建ctfd的时候的compose file以及nignx的配置文件,以及这个Aria2-pro的镜像。

repo地址放这:garyh4/fileVault

安装

准备工作

  • 一个能正常解析的域名
  • Cloudflare 账号
  • 一台大盘鸡
  • 安装好 docker 和 docker-compose

下载代码

$ git clone https://github.com/GaryH4/fileVault
$ cd fileVault
$ mkdir ssl

SSL配置

为了安全,我默认只开了SSL,且nginx只监听443端口,并且使用了cloudflare的源站证书,然后把网站改成了Full(strict)模式。这样,CF在和我的服务器通信的时候只会去走HTTPS通道。

假设你已经从cloudflare搞到了origin server的公私钥,保存为了foo.cer(公钥/证书)和foo.key(私钥)。那么,接下来把这两个文件放到刚才创建的ssl目录里去。

然后我们需要生成一个diffie-hellman密钥交换的时候用的东西,存作dhparam.pem,也放在ssl文件夹下。这样是进一步增强网站的安全性。

$ openssl dhparam -out ./ssl/dhparam.pem 2048

nginx配置

接下来,我们需要改一下conf/nginx/http.conf这个文件。这是给nginx来创建虚拟主机用的,其反向代理了airang, aria2filerun

打开看,这几个地方注意改:

  • <server_ip> 改成你的服务器地址,原因后面说,你也可以看英文注释
  • <your_doamin> 改成你的域名,比如 www.example.com

– 这里反代aria2的时候为什么直接用服务器地址呢?为什么别的服务器只需要用docker容器的名字?

– 因为docker的网络默认是bridge模式,相当于是有了一层NAT,而我的服务器因为是支持ipv4/ipv6双栈网络,故aria2直接使用了host网络模式,直接使用宿主机的网卡及其地址,没有NAT。虽然也可以用bridge模式,但要配一个ipv6地址给容器,操作比较复杂。

– 而此时nginx是作为docker容器的存在,如果用127.0.0.1,则nginx访问到的是它自己那个容器,而非我们的vps。

– docker容器之间可以使用容器的名字来互相访问,类似mDNS

compose前的准备

现在我们打开docker-compose.yml文件,进行一些参数的修改

主要是这个RPC_SECRET,这是Aria2的远程调用的密码。建议弄个长点的。

鉴于国外服务器基本上都有ipv6支持,所以我默认是开启的。如果实在没有v6地址,理论上设置IPV6_MODE=false就行了。NAT可有可无,如果要启用,就把下面的network_mode改成传统的bridge,并取消掉端口映射的注释。毕竟是要下bt的,6888这个端口还是得映射出来。

其他地方你看得懂就可以改。

开始安装!

-什么?都这么久了还没真正开始安装?

-对,前面都是配置准备工作。主程序一旦就位,读取到正确的配置后即可正常工作了。

接下来,就是docker的魔力了,你只需要一条命令即可装好所有的组件。

$ docker-compose up -d

后面的-d意思是让容器都在后台运行。

接下来等就是了。

安装完成后

如果你想查看日志,可以用这条命令

$ docker-compose logs -f --tail="100"

后面的-f是指持续更新输出的内容,--tail指自底部显示的行数,避免一次刷几万行log出来……刷了几分钟还不见底。这里我写100是显示底部的100行。

Filerun配置

Filerun默认的超级用户是superuser, 密码也是superuser

安装完成之后通过访问https://你的域名来进入Filerun页面。登录之后马上右上角设置改superuser的密码。

之后创建一个普通用户foo,用来存文件。不建议直接使用superuser。

千万不要直接改superuser的用户名!

否则你会无法登录,准备重新安装吧。

然后设置普通用户foo的主目录。我这里偷懒,直接把aria2的下载目录设置成了我的用户主目录

– 这里直接从根目录开始写?

– 是的,这是filerun容器里的路径。从fileVault/data/filerun-userfiles映射而来。

downloads文件夹是从fileVault/data/aria2-downloads映射来的

Filerun差不多就配好了,接下来你可以退出superuser账号,用你新建的foo用户登录。

AriaNG的配置

访问https://你的域名/ariang/来配置

Ariang其实是一个纯前端页面,其控制的Aria2主机可以有很多,各种指令是从你的浏览器发出,ariang只作指导发送指令的用途。RPC配置信息存在浏览器的本地缓存里,而不是服务器里。

理论上,你甚至可以在你的电脑上开一个ariang服务,控制远程的Aria2。

Aria2 RPC地址那的最后一栏,因为我做了nginx反代,故/aria2/路径指向的是server_ip:6800。当我们通过https方式访问ariang的时候,RPC地址必须也是使用了SSL加密的,故不能降级到http来连接http://server_ip:6800/jsonrpc

Done!

完成了!添加一个文件开始下载吧!

之后从Filerun的页面里通过https的方式下载到本地。

后记

搭好了新的bt中转站,又可以愉快地从各种bt/pt站下电影看了?

毕竟地处伦敦,相比国内,能连到更多欧美的bt用户。

实测用校园网的时候,因为到Cloudflare走的ipv6,且原站在英国,故CF的加速节点在新加坡,单线程https下载基本上可以跑到80Mbps。




一条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注