樹莓派搭建個人 NAS 下載機(實現離線下載功能)
前言
什麼是樹莓派?
當然不是上圖的這個。
樹莓派(英語:Raspberry Pi),是一款基於Linux的單板機電腦。它由英國的樹莓派基金會所開發,目的是以低價硬體及自由軟體促進學校的基本電腦科學教育。
是下圖這個。
樹莓派到目前為止有 A型,A+型,B型,B+型,B型 (第2代),B型 (第3代)。詳情的硬體規格參見。
而是手上的這款應該屬於『B型 (第2代)』,已經放了多年了。一直在思考一個問題『我能用它來做得什麼呢?』
最近我決定拿它來搭建個 NAS 下載機。
安裝系統
格式化SD卡
注意一定要選擇 FAT 格式。
通過 df -h
我們可以檢視掛載的卷
/dev/disk1s1
就是我掛載的 SD 卡。
分割槽解除安裝
接下來通過 diskutil unmount
命令,解除安裝 SD 卡的分割槽。
確認裝置
通過 diskutil list
命令,確認裝置。
寫入系統映象
這時需要先下載個系統映象。映象可以到樹莓派官網下載。 https://www.raspberrypi.org/downloads
樹莓派官網提供了各種不同版本版系統。這裡我選擇了
NOOBS
。
下載完映象後,使用下面命令寫入系統映象
sudo dd bs=4m if=2017-06-21-raspbian-jessie-lite.img of=/dev/disk1
列印下面資訊,說明寫入系統映象成功
這時,將 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。目前我使用的版本就是這個版本。
使用下面命令安裝 docker
curl -sSL https://get.docker.com | sh
安裝完後,通過下面命令,把 pi
這個賬號加入到 docker 群組
sudo usermod -aG docker pi
掛載行動硬碟
需要先把行動硬碟格式化成
ExFAT
的格式。
然後把行動硬碟插到樹莓派上。
通過 sudo fdisk -l
命令可以看到插到樹莓派的行動硬碟。
接著建立一個掛載磁碟使用的目錄
使用以下命令掛載磁碟
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.txt
,aria2.log
,aria2.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
了。
最後嘮叨點什麼
- 如果對於 Docker 不熟悉的可以看看 Docker — 從入門到實踐,也歡迎閱讀我之前寫的 初探Docker
- 為什麼要用樹莓派做個離線下載機?
是的,目前像市面上的一些路由器都已經有了這些功能了。
但是如果你想在這個功能的基礎上在去擴充套件一些功能卻不是那麼容易的事。
這使用 aria2 做, aria2 是開源的。你可以更具自己的需求去擴充套件一些功能。
例如:實現自動下載電影,什麼的。
最最最後,歡迎討論、批評、指錯。
相關文章
- 樹莓派搭建下載機樹莓派
- 樹莓派aria2下載器配置樹莓派
- 樹莓派自建 NAS 雲盤之——樹莓派搭建網路儲存盤樹莓派
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- servlet實現下載功能Servlet
- 樹莓派 - 實戰篇 [基於 websocket 實現手機遠端控制樹莓派小車]樹莓派Web
- 樹莓派實戰:微信機器人(itchat實現)樹莓派機器人
- android 離線下載Android
- 樹莓派的連線樹莓派
- 鴻蒙 移植 樹莓派(下)修改原始碼鴻蒙樹莓派原始碼
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 樹莓派版的家用NAS伺服器樹莓派伺服器
- 「玩轉樹莓派」樹莓派 3B+ 配置無線WiFi樹莓派WiFi
- Flutter下實現WebView攔截載入離線資源FlutterWebView
- 樹莓派實用RED5搭建流媒體伺服器實現點播功能樹莓派伺服器
- 樹莓派:開機使用樹莓派
- Flutter 實現檔案下載功能Flutter
- Java實現檔案下載功能Java
- Django 實現下載檔案功能Django
- 樹莓派搭建FTP伺服器樹莓派FTP伺服器
- 樹莓派搭建私人伺服器樹莓派伺服器
- 5、樹莓派3 Model B ——— 樹莓派PWM控制直流電機速度樹莓派
- 計算機實驗室之樹莓派計算機樹莓派
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 樹莓派自建 NAS 雲盤之——雲盤構建樹莓派
- 把你的樹莓派打造成一個NAS樹莓派
- 樹莓派配置無線網路卡樹莓派
- 使用樹莓派搭建Ubuntu伺服器樹莓派Ubuntu伺服器
- 用樹莓派搭建svn伺服器樹莓派伺服器
- 利用樹莓派和閒置硬碟,搭建起家中的個人網盤樹莓派硬碟
- Mac 下使用 Aria2 實現迅雷離線和百度雲下載Mac
- 樹莓派使用樹莓派
- 黑客通過樹莓派裝置攻入 NASA 網路黑客樹莓派
- 【.NET 與樹莓派】控制舵機樹莓派
- 從零做樹莓派挖掘機樹莓派
- 樹莓派無線網路卡配置指北樹莓派
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 使用樹莓派搭建區域網監控樹莓派