樹莓派 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源是清華的源,國內下載速度快。html

SD卡燒錄工具:Win32DiskImager
如下說明均按照ubuntu系統,centos系統目前尚未嘗試過。java

注:默認用戶名爲ubuntupython

2. Aria2安裝

sudo apt-get update
sudo apt-get install aria2

3. Aria2配置

3.1 Aria2配置文件

建立配置文件git

mkdir -p ~/.config/aria2/
touch ~/.config/aria2/aria2.session
vim ~/.config/aria2/aria2.config

配置文件中設置以下(注意不要中文註釋):github

# 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。web

chown -R user:user ~/.config/aria2/

測試aria2是否成功啓動apache

aria2c --conf-path=~/.config/aria2/aria2.config
ps aux | grep aria2

若看到以下內容,則啓動成功。ubuntu

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文件vim

sudo vim /lib/systemd/system/aria2.service

User,conf-path下換成本身的usernamecentos

[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

相關文章
相關標籤/搜索