樹莓派 RaspBerry 3B+ 配置 aria2 遠端下載攻略
原文見:https://li-aaron.github.io/2019/01/aira2-on-raspberry/
1. 系統安裝
安裝好系統的可以略過。
這裡選擇的系統是chainsx提供的64位系統ubuntu-18.04-arm64。
這個系統相比官方的armhf系統優勢在於配置簡單,官方提供的ubuntu只預設支援RaspBerry 2,3B與3B+均需要根據官方的文件進行更改。
且此係統預設的apt源是清華的源,國內下載速度快。
SD卡燒錄工具:Win32DiskImager。
以下說明均按照ubuntu系統,centos系統目前還沒有嘗試過。
注:預設使用者名稱為ubuntu
2. Aria2安裝
sudo apt-get update
sudo apt-get install aria2
3. Aria2配置
3.1 Aria2配置檔案
建立配置檔案
mkdir -p ~/.config/aria2/
touch ~/.config/aria2/aria2.session
vim ~/.config/aria2/aria2.config
配置檔案中設定如下(注意不要中文註釋):
# set your own path
dir=[yourpath]
disk-cache=32M
file-allocation=trunc continue=true max-concurrent-downloads=10 max-connection-per-server=16 min-split-size=10M split=5 max-overall-download-limit=0 #max-download-limit=0 #max-overall-upload-limit=0 #max-upload-limit=0 disable-ipv6=false save-session=~/.config/aria2/aria2.session input-file=~/.config/aria2/aria2.session save-session-interval=60 enable-rpc=true rpc-allow-origin-all=true rpc-listen-all=true #rpc-secret=secret #event-poll=select #rpc-listen-port=6800 # for PT user please set to false enable-dht=true enable-dht6=true enable-peer-exchange=true # for increasing BT speed listen-port=51413 #follow-torrent=true #bt-max-peers=55 #dht-listen-port=6881-6999 #bt-enable-lpd=false #bt-request-peer-speed-limit=50K peer-id-prefix=-TR2770- user-agent=Transmission/2.77 seed-ratio=0 #force-save=false #bt-hash-check-seed=true bt-seed-unverified=true bt-save-metadata=true bt-tracker=udp://62.138.0.158:6969/announce,udp://87.233.192.220:6969/announce,udp://111.6.78.96:6969/announce,udp://90.179.64.91:1337/announce,udp://51.15.4.13:1337/announce,udp://151.80.120.113:2710/announce,udp://191.96.249.23:6969/announce,udp://35.187.36.248:1337/announce,udp://123.249.16.65:2710/announce,udp://210.244.71.25:6969/announce,udp://78.142.19.42:1337/announce,udp://173.254.219.72:6969/announce,udp://51.15.76.199:6969/announce,udp://51.15.40.114:80/announce,udp://91.212.150.191:3418/announce,udp://103.224.212.222:6969/announce,udp://5.79.83.194:6969/announce,udp://92.241.171.245:6969/announce,udp://5.79.209.57:6969/announce,udp://82.118.242.198:1337/announce
這裡避免使用root賬戶,如果使用了root賬戶或sudo命令,需要將~/.config/aria2/
目錄所有權更改為user,不然後續設定aria2自啟動時在此目錄下建立檔案會fail。
chown -R user:user ~/.config/aria2/
測試aria2是否成功啟動
aria2c --conf-path=~/.config/aria2/aria2.config
ps aux | grep aria2
若看到如下內容,則啟動成功。
root 7710 0.0 0.0 2704 640 pts/0 S+ 19:19 0:00 grep --color=auto aria2 ubuntu 21855 0.0 1.2 48600 11836 ? Ss 2018 1:02 /usr/bin/aria2c --conf-path=/home/ubuntu/.config/aria2/aria2.config
3.2 開機自啟動
建立systemctl service檔案
sudo vim /lib/systemd/system/aria2.service
User,conf-path下換成自己的username
[Unit]
Description=Aria2 Service
After=network.target [Service] User=ubuntu Type=forking ExecStart=/usr/bin/aria2c --conf-path=/home/ubuntu/.config/aria2/aria2.config [Install] WantedBy=default.target
過載服務並設定開機啟動
sudo systemctl daemon-reload
sudo systemctl enable aria2
sudo systemctl start aria2
sudo systemctl status aria2
看到如下文字證明啟動成功(記住TCP port,AiraNg配置以及公網埠對映需要)
● aria2.service - Aria2 Service
Loaded: loaded (/lib/systemd/system/aria2.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-12-29 08:24:20 CST; 4 days ago
Main PID: 21855 (aria2c)
CGroup: /system.slice/aria2.service
└─21855 /usr/bin/aria2c --conf-path=/home/ubuntu/.config/aria2/aria2.config
Dec 29 08:24:20 ubuntu systemd[1]: Started Aria2 Service.
Dec 29 08:24:20 ubuntu aria2c[21855]: 12/29 08:24:20 [NOTICE] IPv4 RPC: listening on TCP port 6800
Dec 29 08:24:20 ubuntu aria2c[21855]: 12/29 08:24:20 [NOTICE] IPv6 RPC: listening on TCP port 6800
Dec 29 08:25:21 ubuntu aria2c[21855]: 12/29 08:25:21 [NOTICE] Serialized session to '/home/ubuntu/.config/aria2/aria
4. AriaNg使用
aira2比較好的web管理介面當屬AriaNg。 有網頁版的AriaNg以及Windows桌面版的AriaNg-Native,推薦使用網頁版的,可以部署在RaspberryPi上。
4.1 將AriaNg部署在RaspberryPi上
配置Tomcat伺服器
首先需要一個web伺服器,這裡使用了Tomcat 7。(這裡純屬個人喜好,用Apache或Nginx看個人需要)
wget https://www-eu.apache.org/dist/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz
tar -xzvf apache-tomcat-7.0.92.tar.gz
mv apache-tomcat-7.0.92/ tomcat7
vim ./tomcat7/bin/catalina.sh
修改此啟動配置檔案,JAVA路徑新增預設java路徑,此配置中的java路徑為sudo apt-get install default-jre
安裝的預設路徑。
# JAVA_HOME Must point at your Java Development Kit installation.
# Required to run the with the "debug" argument.
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
# JAVA_OPTS (Optional) Java runtime options used when any command # is executed. # Include here and not in CATALINA_OPTS all options, that # should be used by Tomcat and also by the stop process, # the version command etc. # Most options should go into CATALINA_OPTS. JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:PermSize=600M -XX:MaxPermSize=600m -Dcom.sun.management.jmxremote"
修改伺服器檔案配置檔案:
vim ./tomcat7/conf/server.xml
將
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改為
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
即可使用預設http 80 埠
vim ./tomcat7/bin/start.sh
在瀏覽器中訪問http://your-ip/
即可開啟Apache Tomcat的預設webpage了。(如下圖)
配置Tomcat自啟動
vim /etc/rc.local
在檔案中新增
sudo /home/ubuntu/tomcat7/bin/startup.sh
配置AriaNg
wget https://github.com/mayswind/AriaNg/releases/download/1.0.0/AriaNg-1.0.0.zip
unzip AriaNg-1.0.0.zip -d aira-ng
sudo mv aira-ng ~/tomcat7/webapps/ROOT/
在瀏覽器中訪問http://your-ip/aira-ng
即可開啟AriaNg了。
4.2 本地使用AriaNg
網頁版
直接下載AriaNg,開啟index.html
在AiraNg Settings中,選擇RPC選項卡,將Aira2 RPC Address中IP地址和埠號修改為RaspberryPi的IP地址以及前面status中的埠號(預設6800)。
桌面版
直接下載AriaNg-Native,開啟,設定同上。
5. 公網埠對映
配置好Aria2以及AriaNg後,就可以將RaspberryPi對映到公網上來進行遠端下載了。配置公網的方式有以下幾種:
5.1 DMZ主機
DMZ主機是目前絕大多數路由器都會帶的功能,其功能就是實現將內網裝置直接暴露在公網之上。
移動光貓配置頁面(需要超級帳號):
TP-Link配置頁面:
5.2 埠對映
如果不想要把所有的埠都暴露在公網上(這樣做風險較大),可以只將其中的幾個埠對映到公網上。
這裡使用移動光貓的設定舉例:
這樣配置好訪問路由器的公網IP地址以及繫結的埠號就可以直接訪問到RaspberryPi的相應埠。
5.3 獲取公網IP地址
訪問RaspberryPi還需要獲取公網IP地址,而路由的公網IP地址有可能會變化。
可以訪問 https://www.ipchicken.com/ https://www.iplocation.net/find-ip-address 等網站獲取本機的IP地址 這裡提供一個(粗鄙)的Python獲取IP地址傳送郵件的指令碼(Python 3.6, 2.7上沒嘗試過)
import requests, re
import smtplib from email.header import Header from email.mime.text import MIMEText from email.utils import parseaddr, formataddr def _format_addr(s): name, addr = parseaddr(s) return formataddr((name, addr)) if __name__ == '__main__': # get webpage url = "https://www.ipchicken.com/" r = requests.get(url) # get IP address from webpage pattern = re.compile(r'((25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)') matchObj = pattern.search(r.text) IpAddress = matchObj.group(0) # send email # email (modify by yourself) from_addr = Your_email_address password = Your_password to_addr = ['Your_another_email_address'] smtp_server = 'your.smtp.server' smtp_port = 25 # message msg = MIMEText(''+IpAddress, 'plain', 'utf-8') msg['Subject'] = Header('RaspberryPi Ip Address', 'utf-8').encode() msg['From'] = _format_addr('RaspberryPi <%s>' % from_addr) msg['To'] = _format_addr('RaspberryPi Manager <%s>' % to_addr[0]) # send try: server = smtplib.SMTP(smtp_server, smtp_port) server.login(from_addr, password) server.sendmail(from_addr, to_addr, msg.as_string()) print("Send Email Success") except smtplib.SMTPException: print("Error: Unable to send Email") server.quit()
5.4 花生殼內網穿透
如果家中用的路由是二級路由,那麼恭喜,無論是DMZ主機還是埠對映都沒有用了。
二級路由就是說你是在內網的內網中,如果路由器的公網地址和從https://www.ipchicken.com/上獲取的IP地址不一樣就說明是二級路由。
這種也可以有個(不需要VPS的)方法解決,就是利用花生殼的內網穿透功能。目前這個功能需要6元錢。
花生殼官網上有詳細的說明,這裡就不贅述了。測試功能支援對映兩個埠,這裡需要將80和Aria2 RPC的埠(預設6800)映射出去即可。
花生殼會提供一個服務域名,這個域名就相當於公網IP地址。
6. 硬碟掛載(可選)
RaspberryPi雖然可以用SD卡擴充套件儲存,但空間畢竟小,若有舊桌上型電腦、筆記本硬碟可以套個硬碟盒接在RaspberryPi上。
3B+ USB口直接帶2.5的硬碟或SSD是不需要外接電源的,3.5的沒有測試過,但一般是需要的。
手動掛載的方法如下:
sudo fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000d2ae0
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 976769023 976766976 465.8G 7 HPFS/NTFS/exFAT
或
sudo blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="9FF3-2ADB" TYPE="vfat" PARTUUID="c2909e2d-01"
/dev/mmcblk0p2: UUID="a407e17a-e170-45d8-8fb7-dd34fe646ab9" TYPE="ext4" PARTUUID="c2909e2d-02"
/dev/mmcblk0: PTUUID="c2909e2d" PTTYPE="dos"
/dev/sda1: LABEL="New Volume" UUID="848CC9268CC91398" TYPE="ntfs" PARTUUID="000d2ae0-01"
從中可以獲取到硬碟的碟符/dev/sda1
# 根據自己的需求設定掛載目錄,這裡這麼設定是為了後續的SMB共享
sudo mkdir ~/share/disk1
sudo mount /dev/sda1 ~/share/disk1
如果需要重啟機器,則需要採用自動掛載的方式:
sudo vim /etc/fstab
加入如下一條
UUID=848CC9268CC91398 /home/ubuntu/share/disk1 ntfs defaults 0 3
執行如下命令驗證
sudo mount -a
7. SMB服務(可選)
單純的下載機是不夠的,不能總是去插拔硬碟,而通過SMB服務可以用終端裝置直接訪問到RaspberryPi。
需要建立一個samba帳號
sudo touch /etc/samba/smbpasswd
smbpasswd -a ubuntu
再輸入兩次密碼後即可建立賬戶
sudo vim /etc/samba/smb.conf
在檔案末尾加入如下資訊
[share]
path = /home/ubuntu/share
available = yes browseable = yes #public = yes writable = yes
修改讀寫許可權
sudo chown -R ubuntu:ubuntu /home/ubuntu/share
sudo chmod -R 777 /home/ubuntu/share
重啟samba服務
service smbd restart
即可進行連線測試(在執行視窗中輸入\\ip
即可訪問)
Reference
樹莓派3B+ 遠端下載伺服器(Aria2) 作者:寧靜致遠kioye
拋棄迅雷,Aria2 新手入門 作者:清順
ubuntu開機自動掛載新硬碟 作者:_iAm333