# Aria2
我的Raspi-4B安装了官方提供的Rasbian,刷入过程非常简单,下载解压dd三步搞定,可以参考Pi官网。Aria2下载器相信大家也都不陌生,直接使用apt安装即可(记得换源)。
sudo apt update && sudo apt install aria2
安装完毕之后依照惯例创建aria2的各项文件。
由于需要通过SFTP、SMB来管理下载的文件,我们设置aria2以低权限用户aria运行。
groupadd -r aria # 添加用户组aria
useradd -r -g aria -s /usr/sbin/nologin -c "Aria 2" aria # 添加用户aria
sudo mkdir -p /home/aria/aria2 # 创建工作目录
touch /home/aria/aria2/aria2.session # 创建aria2进度文件
touch /home/aria/aria2/aria2.log # 创建aria2日志文件
touch /home/aria/aria2/aria2.config # 创建aria2配置文件
chown aria:aria /home/aria/* # 将工作目录下的文件移交给aria用户
然后nano /home/aria/aria2/aria2.config
编辑配置文件。
配置示例
然后建立自启动sudo touch /etc/systemd/system/aria2.service
2021/02/21更新:修改aria2c二进制文件权限的方法似乎不能保证下载的文件可以由其他用户修改。我发现可以在service文件中使用
UMask=
来确保今后下载文件的权限为777。
# /etc/systemd/system/aria2.service
[Unit]
Description=Aria2 Service
After=network.target
[Service]
User=aria
Group=aria
UMask=0000
ExecStart=/usr/bin/aria2c --conf-path=/home/pi/.config/aria2/aria2.config
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
利用下面的systemctl命令来开启aria2的自启动:
sudo systemctl daemon-reload # 重新加载修改过的service文件
sudo systemctl enable aria2 # 开启自启动
sudo systemctl start aria2 # 启动服务
sudo systemctl status aria2 # 查看日志
Notes: 查看日志,如果出现问题,可以利用
sudo -u aria aria2c /home/aria/aria2/aria2.config
来进行调试。
Aria2到这里就配置好了。
# AriaNG
到GitHub下载Aria2的前端AriaNG。这时在图形界面的计算机上,可以打开刚才下载的index.html,尝试连接127.0.0.1:6800/jsonrpc
,来检查Aria2是否配置正确。
如果你想直接用树莓派架设管理界面,那么就要用到AriaNG一类的封装配合HTTP服务器。但我不建议这么做,因为运营商封禁HTTP/HTTPS端口导致配置尤其复杂,也导致难以获得域名证书,难以使用安全的HTTPS连接到树莓派;此外,无备案架设HTTP服务器也有被运营商关闭端口的风险。
# Caddy 2
首先使用wget
将AriaNG下载到树莓派。
wget https://github.com/mayswind/AriaNg/releases/download/1.2.1/AriaNg-1.2.1-AllInOne.zip # 下载AriaNG的示例
sudo apt install unzip
unzip AriaNg-1.2.1-AllInOne.zip # 解压
以下将使用/path/containing/arianghtml
代替解压的目录。
我们要用到的HTTP服务器Caddy已经更新到了2.0(撒花),因此这里我们也与时俱进一把。
# 依照官方指南安装Caddy
到GitHub下载
*linux_armv7*
版本的caddy,解压后利用sudo mv caddy /usr/bin
复制到/usr/bin。用
caddy version
来检验安装是否成功。添加用户组
caddy
。
groupadd --system caddy
- 创建一个名为caddy的用户,并为他指派工作目录。
useradd --system \
--gid caddy \
--create-home \
--home-dir /var/lib/caddy \
--shell /usr/sbin/nologin \
--comment "Caddy web server" \
caddy
- 下载caddy.service文件,利用
sudo mv caddy.service /etc/systemd/system/caddy.service
将其复制到目标目录。
# 啊哈你获得了一个三连!
sudo systemctl daemon-reload
sudo systemctl enable caddy
sudo systemctl start caddy
用以上的命令在后台常驻caddy。 其他一些有用的命令如下:
systemctl status caddy # 查看运行状态
journalctl -u caddy # 查看全部日志
sudo systemctl reload caddy # 重新加载Caddy配置文件
sudo systemctl stop caddy # 关停
- Caddy 2的运行可以通过Caddyfile配置文件或者API控制,我们这里使用比较简单的Caddyfile。官方给出的后台服务caddy.service调用的是
/etc/caddy/
下的Caddyfile。
sudo touch /etc/caddy/Caddyfile
sudo nano /etc/caddy/Caddyfile
编辑内容为如下:
Your.Raspberry.Pi.IP{
root * /path/containing/arianghtml
file_server
reverse_proxy /jsonrpc 127.0.0.1:6800
}
Your.Raspberry.Pi.IP
就是你的树莓派在家庭网络中的地址。/path/containing/arianghtml
就是你刚才解压index.html的目录。reverse_proxy /jsonrpc 127.0.0.1:6800
表示将aria2的端口反向代理到443端口,可以解决aria2没有证书,无法在https页面上使用的问题。
sudo systemctl reload caddy # 重新加载Caddyfile
此时打开浏览器访问https://Your.Raspberry.Pi.IP
,在AriaNG设置
填入Your.Raspberry.Pi.IP:443/jsonrpc
,就可以连接你的树莓派下载站了。
# 外网访问
外网访问我只在此简单叙述,需要实现请另外查阅其他资料。
# 解决方案一:公网IP+DDNS+域名
在你的路由器上配置DDNS,将动态的IP通过DNS服务转化为静态的地址。由于运营商会封闭家用网路的443和80端口,因此你需要将AriaNG架设在其他端口。
这里会遇到的问题是Caddy自动获取证书至少需要443端口畅通,这是做不到的,因此只能利用DNS Challenge配合Certbot手动获取证书。
需要提醒的是如果用Cloudflare,Raspberry Pi的Certbot插件还不支持Zone Key,只能使用CF的Global Key。
获取证书之后可以这样配置Caddyfile
Your.Raspberry.Pi.IP, Your.Domain:OtherPorts{
tls /path/to/fullchain.pem /path/to/privkey.pem
root * /path/containing/arianghtml
file_server
reverse_proxy /jsonrpc 127.0.0.1:6800
}
# 解决方案二: ZeroTier
利用ZeroTier组建虚拟局域网,便可以用Zerotier提供的IP地址访问树莓派,也可以在路由器安装,配置好后可以用家庭网络的IP访问树莓派,配置的过程非常容易。
# 其他解决方案
其他方案还有FRP、花生壳等,感兴趣可以自行研究。
# 总结
事实上现在也并不怎么下载东西,折腾仅仅是为了折腾。不过折腾也能乐在其中……