樹莓派搭建個人 NAS 下載機(實現離線下載功能)

weixin_33670713發表於2017-07-16

前言

什麼是樹莓派?

1121493-0d87f609e1fe697a.jpg
15000475503758.jpg

當然不是上圖的這個。

樹莓派(英語:Raspberry Pi),是一款基於Linux的單板機電腦。它由英國的樹莓派基金會所開發,目的是以低價硬體及自由軟體促進學校的基本電腦科學教育。

是下圖這個。

1121493-05fdbd5fb71f285c.jpg
15000476245744.jpg

樹莓派到目前為止有 A型,A+型,B型,B+型,B型 (第2代),B型 (第3代)。詳情的硬體規格參見

而是手上的這款應該屬於『B型 (第2代)』,已經放了多年了。一直在思考一個問題『我能用它來做得什麼呢?』

最近我決定拿它來搭建個 NAS 下載機。

安裝系統

格式化SD卡

1121493-2d3b8d2bdc95961d.jpg
14997746545028.jpg

注意一定要選擇 FAT 格式。

通過 df -h 我們可以檢視掛載的卷

1121493-d0a0554e2f55952c.jpg
14997748999370.jpg

/dev/disk1s1 就是我掛載的 SD 卡。

分割槽解除安裝

接下來通過 diskutil unmount 命令,解除安裝 SD 卡的分割槽。

1121493-2392eb01c4f3bdbb.jpg
14997751001738.jpg

確認裝置

通過 diskutil list 命令,確認裝置。

1121493-12621a3fd57dd1ae.jpg
14997752179418.jpg

寫入系統映象

這時需要先下載個系統映象。映象可以到樹莓派官網下載。 https://www.raspberrypi.org/downloads

1121493-e3370093b6832cfa.jpg
14997773262421.jpg

樹莓派官網提供了各種不同版本版系統。這裡我選擇了 NOOBS

下載完映象後,使用下面命令寫入系統映象

sudo dd bs=4m if=2017-06-21-raspbian-jessie-lite.img of=/dev/disk1

列印下面資訊,說明寫入系統映象成功

1121493-7e27c21ba6d834b6.jpg
14997771209704.jpg

這時,將 SD 卡,電源線和顯示器接到樹莓派上,就可以登入樹莓派的系統命令列了。
樹莓派預設使用者名稱為 pi,預設密碼是 raspberry

啟動 SSH 服務

樹莓派預設已經預裝的 SSH,只要啟動 SSH 服務就可以愉快的通過 SSH 登入了。

sudo service ssh start

更新 apt-get

使用以下命令,更新 apt-get

sudo apt-get update

安裝 zsh

為什麼要安裝 zsh 呢? 這不是必須的,這是個人喜好,這樣我才能愉快的使用命令列。
通過 apt-get 就可以輕鬆安裝

sudo apt-get install zsh

安裝 git

sudo apt-get install git

安裝 Oh My Zsh

當然這邊也不是必須的,個人喜好罷了。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安裝 docker

樹莓派在 jessie 這個版本就已經支援了 docker。目前我使用的版本就是這個版本。

1121493-b63d2fff2474150a.jpg
14997816201076.jpg

使用下面命令安裝 docker

curl -sSL https://get.docker.com | sh

安裝完後,通過下面命令,把 pi 這個賬號加入到 docker 群組

sudo usermod -aG docker pi

掛載行動硬碟

1121493-0ee14fd90e30748d.jpg
14997832023156.jpg

需要先把行動硬碟格式化成 ExFAT 的格式。

然後把行動硬碟插到樹莓派上。

通過 sudo fdisk -l 命令可以看到插到樹莓派的行動硬碟。

1121493-bdc4d5360fbbdc35.jpg
14997831050247.jpg

接著建立一個掛載磁碟使用的目錄

使用以下命令掛載磁碟

sudo mount -o uid=pi,gid=pi /dev/sda2 /home/pi/data

這條命令表示,需要把行動硬碟掛載到 /home/pi/data 目錄。

這時,你可能會看到以下錯誤提示

mount: unknown filesystem type 'exfat'

樹莓派預設不識別 exfat, 需要安裝 exfat-fuse 後再執行命令。

安裝 exfat-fuse

sudo apt-get install exfat-fuse

掛載完後,在 home/pi/data下 以下資料夾

aria2/.aria2
aria2/downloads

部署 Samba 共享檔案

這裡我選擇使用 Docker 來,部署 Samba(這也算是個人潔癖吧)。
Github 上有個 dperson/samba,是一個已經寫好的 Docker 專案。可惜他並沒有支援樹莓派的環境。我們先讓其支援樹莓派的環境。

通過 git 命令,將工程 clone 下來。

cd samba
cp Dockerfile Dockerfile.arm
vi Dockerfile.arm

FROM debian:stretch 改為 FROM resin/rpi-raspbian

這樣就可以愉快的構建樹莓派版本的 Samba Docker 映象了。

使用以下命令構建映象

sudo docker build -f Dockerfile.arm -t dperson/samba  .

構建完映象後,接下來就是執行映象啟動共享服務

sudo docker run -it -p 139:139 -p 445:445 \
       -v  /home/pi/data/aria2/downloads:/downloads \
       -d --name="samba" dperson/samba \
       -u "pi;pi" \
       -s "downloads;/downloads;yes;no;no;all;pi"

這裡,共享了 downloads 目錄,並建立了 pi 使用者。詳細的引數說明請參見

部署 webui-aria2

aria2 是一個很牛逼的命令列下載工具,同時也能支援 RPC 模式。

  • 簡單來說就是有以下特性:
  • 支援多協議: HTTP / HTTPS,FTP,SFTP,BitTorrent和Metalink
  • 多執行緒連線:aria2 會自動從多個執行緒下載檔案,並充分利用你的頻寬;
  • 輕量:執行時不會佔用過多資源,根據官方介紹,記憶體佔用通常在 4MB~9MB,使用BitTorrent 協議,下行速度 2.8MB/s 時 CPU 佔用率約 6%;
  • 全功能 BitTorrent 客戶端,可以當BT客戶端使用,拋棄迅雷。
  • 支援 RPC 介面遠端控制

webui-aria2 則是 aria2 的 web 版。

首先用 git clone webui-aria2 的工程。

git clone https://github.com/ziahamza/webui-aria2.git

webui-aria2 官方已提供了能構建樹莓派版本的 Dockerfile,直接通過下面的命令構建映象。

cd webui-aria2
sudo docker build -f Dockerfile.arm -t yourname/webui-aria2 .

然後在目錄(/home/pi/data/aria2/.aria2)下建立檔案 session.txtaria2.logaria2.conf

aria2.conf 配置如下:

#使用者名稱
#rpc-user=user
#密碼
#rpc-passwd=passwd
#上面的認證方式不建議使用,建議使用下面的token方式
#設定加密的金鑰
#rpc-secret=token
#允許rpc
enable-rpc=true
#允許所有來源, web介面跨域許可權需要
rpc-allow-origin-all=true
#允許外部訪問,false的話只監聽本地埠
rpc-listen-all=true
#RPC埠, 僅當預設埠被佔用時修改
#rpc-listen-port=6800
#最大同時下載數(任務數), 路由建議值: 3
max-concurrent-downloads=5
#斷點續傳
continue=true
#同伺服器連線數
max-connection-per-server=5
#最小檔案分片大小, 下載執行緒數上限取決於能分出多少片, 對於小檔案重要
min-split-size=10M
#單檔案最大執行緒數, 路由建議值: 5
split=10
#下載速度限制
max-overall-download-limit=0
#單檔案速度限制
max-download-limit=0
#上傳速度限制
max-overall-upload-limit=0
#單檔案速度限制
max-upload-limit=0
#斷開速度過慢的連線
#lowest-speed-limit=0
#驗證用,需要1.16.1之後的release版本
#referer=*
#檔案儲存路徑, 預設為當前啟動位置
dir=/User/xxx/Downloads
#檔案快取, 使用內建的檔案快取, 如果你不相信Linux核心檔案快取和磁碟內建快取時使用, 需要1.16及以上版本
#disk-cache=0
#另一種Linux檔案快取方式, 使用前確保您使用的核心支援此選項, 需要1.15及以上版本(?)
#enable-mmap=true
#檔案預分配, 能有效降低檔案碎片, 提高磁碟效能. 缺點是預分配時間較長
#所需時間 none < falloc ? trunc << prealloc, falloc和trunc需要檔案系統和核心支援
file-allocation=prealloc

接下來通過下面?命令啟動 docker

sudo docker run --restart=always -d -v /home/pi/data/aria2:/data -p 6800:6800 -p 9100:8080 --name="webui-aria2" yourname/webui-aria2

⚠️注意你對映的磁碟路徑哦

最後你就可以通過 http://[樹莓派IP]:9100 訪問 Aria2 WebUI 了。

最後嘮叨點什麼

是的,目前像市面上的一些路由器都已經有了這些功能了。
但是如果你想在這個功能的基礎上在去擴充套件一些功能卻不是那麼容易的事。
這使用 aria2 做, aria2 是開源的。你可以更具自己的需求去擴充套件一些功能。
例如:實現自動下載電影,什麼的。

最最最後,歡迎討論、批評、指錯。

相關文章