Aria2
说到下载服务器,大家的首选一定是 Aria2,然而 Aria2 的服务配置还是要费一番心思的。Arch 的 AUR 里有 aria2 的 systemd service 文件,然而这个文件并不能拿过来无脑用,而且会往 journald 里输出大量的垃圾,所以我直接把它的标准输出堵住了⋯⋯ 这是我的 service 文件:
[Unit] Description=Aria2 Service After=network.target [Service] ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf StandardOutput=null User=aria2 Group=aria2 [Install] WantedBy=default.target
接着创建 aria2 用户
# useradd -r -s /usr/bin/nologin aria2
Aria2 的配置文件 /etc/aria2/aria2.conf
continue daemon=false dir=/mnt/downloads file-allocation=none log-level=notice console-log-level=notice max-connection-per-server=4 max-concurrent-downloads=8 max-overall-download-limit=0 min-split-size=5M enable-http-pipelining=true save-session=/etc/aria2/session.lock input-file=/etc/aria2/session.lock download-result=hide enable-rpc=true rpc-listen-all=true rpc-listen-port=9003 rpc-secret=<some password> rpc-allow-origin-all # BT bt-seed-unverified max-overall-upload-limit=1M max-upload-limit=512K seed-ratio=2.0 seed-time=60 bt-force-encryption=true bt-max-peers=200 dht-file-path=/etc/aria2/dht.dat dht-file-path6=/etc/aria2/dht6.dat
注意我把 session 文件和 DHT 文件都放在了 /etc/aria2
里,因为 aria2 这个用户没有家目录。这里有个很奇怪的坑,就是如果你把 /etc/aria2
这个目录和里面的东西都设为 aria2 所有,然后启动 aria2 服务的话,它依然会说无法打开 session 文件和 DHT 文件。我试了半天,最后发现要手动生成这几个文件。
# touch /etc/aria2/{dht.dat,dht6.dat,session.lock} # chown -R /etc/aria2
Aria2 的默认下载目录设在了 /mnt/downloads
,这个地方用 samba 挂载了家里群辉上的一个目录。我的 /etc/fstab
里有
//nity.local/Stuff/Downloads /mnt/downloads cifs credentials=/etc/samba/credentials/stuff,noperm 0 0
接下来是 web 界面。我随便
找了一个似乎很流行的,是一个单网页 + JavaScript 界面,界面逻辑完全运
行在浏览器里。原则上我不需要在服务器里 host 这个网页,但是考虑到我的懒
癌,决定还是搞个 apache 来 host,这样需要用的时候就不需要在电脑里找这
个网页放在哪了。我给这个页面单开了一个 vhost,配置单独写在 /etc/httpd/conf/extra/httpd-vhost-aria2.conf
里,
<VirtualHost *:9004> ServerAdmin my@email.com DocumentRoot "/srv/aria2-webui" ServerName adenine.local:9004 ServerAlias adenine.local:9004 ErrorLog "/var/log/httpd/aria2-webui-error_log" CustomLog "/var/log/httpd/aria2-webui-access_log" common <Directory "/srv/aria2-webui"> Require all granted </Directory> </VirtualHost>
在 apache 的主配置文件里更改端口,并引用这个配置,
# Change 80 to 9004 Listen 9004 # ... # Custom vhosts Include conf/extra/httpd-vhost-aria2.conf
最后 git clone 那个 web 界面的 repo,把里面 doc 目录的内容扔到
/srv/aria2-webui
里,就算完工了。
Transmission
Aria2 的 BT 下载其实并不是很符合我的使用习惯,比如在筛选文件的时候看不 到文件大小⋯⋯ 所以我决定再开一个 Transmission 的 web UI,专门用来下 BT。 Aria2 就留给别的协议吧。
由于自带 web UI 和 http 服务器,Transmission 的配置比 Aria2 简单很多。
只需要安装 transmission-cli
即可。安装好以后开启服务,web UI 会挂在
9091 端口。但是如果这时去访问 web UI,它会报错,原因是它默认假设你会在
localhost 访问。这时停止 transmission 服务,编辑
/var/lib/transmission/.config/transmission-daemon/settings.json
这个
文件,把 rpc-whitelist-enabled
改为 false,并把 rpc-host-whitelist
改为 adenine.local
,顺便把端口改为 9005。再次启动服务,就会发现一切
正常了。注意改 Transmission 配置之前必须先停止服务,不然配置文件会重置。
最后,
# systemctl enable aria2 httpd transmission