序
去年黑五买了一台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
, aria2
和 filerun
。
打开看,这几个地方注意改:
<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。
一条评论
“都是为了电影”