數莓派 4怎麼樣?可能的玩法有哪些?

2022-06-29   大方老師單片機

原標題:數莓派 4怎麼樣?可能的玩法有哪些?

4怎麼樣?可能的玩法有哪些?

前兩天剛剛入職,最近幾天忙著租房搬家,忙活了幾天總算是住進了自己小屋裡,作為一個軟體工程師,怎麼可以沒有一台家用伺服器呢?方案有很多種,上至幾千元 NAS,下至淘汰的老電腦,但是舊電腦響聲大功耗高NAS動輒三四千的價格對我這個剛畢業的大學生來說著實有些困難,於是我將目光放到了另一個小玩意樹莓派。

我選擇樹莓派的原因也很簡單,第一便宜,第二可查閱的資料非常多,基本上你之後使用過程中的問題網絡上都有解決方案了,因此本文不會介紹怎麼使用樹莓派,怎麼燒錄系統,這些東西有太多人寫過了,我重複寫也沒什麼意思,因此這塊內容我就一筆帶過了,本文是我自己的家用伺服器方案,更多的是提供一個方向性的指導,如果你覺得我的文章對你有所幫助,歡迎點個關注支持一下哦~

什麼是樹莓派?

打開任何一個搜尋引擎在裡面輸入「樹莓派」三個字都會出現很多內容,其實樹莓派本質上就是一台小電腦,雖然外形只有信用卡大小,卻具有電腦的所有基本功能。和我們平常用的電腦不一樣的是,樹莓派自身是沒有螢幕、鍵盤、滑鼠這些東西的,但是它提供了網口USB口以及視頻輸出口(其實意思就是讓你自己配)。

當然了,樹莓派和主流電腦一個很大的區別就是他的晶片,和主流 x86桌面級電腦不同的是,樹莓派用的是低功耗 ARM晶片,因此在性能上和常規電腦還是有些差距的,不過隨著近年 ARM晶片的不斷發展,其性能已經和傳 x86處理器不相伯仲,甚至在某些方面遙遙領先,例如蘋果 M1晶片。好在在學校的這些年,有一些閒置的鍵盤、滑鼠和移動硬碟沒來得及出手,於是我便果斷的選擇了樹莓派作為我的家用伺服器。

樹莓派的選擇

打開寶搜索樹莓派,眼花繚亂的,那應該如何選擇呢?

其實很簡單,雖然樹莓派的型號眾多,但是細分下來也只有三類:

.Model B系列:旗艦版,接口全,性能強

.Model A系列:青春版,外形小,性能一般,配置和接口略有閹割

.Zero系列:迷你版,擁有超小身材,性能較弱

目前,樹莓派已經發展到了第四代了,如果資金不是非常緊張的,推薦購買樹莓 4B版,官網對他的介紹如下:

相較於前代,處理器性能大幅增強,並且最高支 8G內存,支 4K視頻輸出,同時使 USB- C供電,完全可以作為一個桌面級電腦使用了,用作家用伺服器綽綽有餘了。

作業系統選擇

說完了樹莓派的硬體,怎麼可以離開軟體呢?樹莓派相較於傳統電腦另一個好處就是可以自由選擇燒錄的作業系統,官方推薦的 Raspberry Pi OS,系統的燒錄網上的教程太多了,這裡我推薦直接使用官方提供的燒錄軟體Raspberry Pi Imager,從下面的圖中也可以看出來是一個非常容易上手的軟體了。

SD卡選 16G的即可,如果容量大一些也是可以的,讀寫速度自然也是越快越好了,這裡我燒錄的系統是官方推薦 Raspberry Pi OS,針對樹莓派進行了性能優化,由於是基 Debian開發的作業系統,經常使 Ubuntu的同學上手難度會稍微低一些。

當然了,你也可以選擇燒錄其他的作業系統,例 UbuntuManjaroAndroid等作業系統,甚至有人成功燒錄了最近新出 Windows11,連結在這裡,有興趣的小夥伴自行閱How to Install Windows 11 on a Raspberry Pi 4

家用樹莓派方案指北

說了樹莓派軟硬體的選擇後,終於可以進入本文的正題了。

樹莓派的玩法有很多,網上有很多控制機器人、外接燈泡控制開關等,說實話,這些玩法教育意義大於實用意義,畢竟家用也不會把燈泡接到樹莓派上,直接買個小米的智能燈泡控制體驗不比這個好嗎?

之所以一開始就捨棄使用舊電腦作為家用伺服器這一方案的一個原因就是功耗,網上有人對樹莓派的功耗進行過測試4B的功耗:空閒 2.7 W,負載時 6.4 W。按照家裡電 0.7元一度電的價格計算,一 365天每 24小時高負荷運行的電費也才6.4×24×365÷1000×0.7=39.2448

因此樹莓派適用於一些適 24小時在線的服務,我的服務有:

.離線下載Aria2qbittorrent

.米家HomeKit等智能家居中轉控制HomeAssistant

.區域網文件共享Samba

.Linux ServerDocker

. Dashboard中控面板Flutter Web

.……

接下來我將會按照順序逐一介紹。

連接樹莓連通性測試

想要使用樹莓派第一步肯定是連接上樹莓派,連接樹莓派的方式有很多種,直接接鍵盤、滑鼠、顯示器,或者通 SSH/VNC/FTP,無論用何種方式只要能連接上網絡即可。方便起見,建議先連接顯示器,然後開 SSH VNC服務。網絡上的教程很多很詳細,這裡不再贅述。

本節主要來介紹一個很關鍵但是很多文章都忽略的內容,即樹莓派與個人電腦間的網絡連通性測試

如果要實現諸如上述區域網共享文件、離線下載等功能,一個很重要的特點是工作電腦與樹莓派之間的傳輸速度要快,不然我離線下載完文件後傳到自己電腦上還要好久,那豈不是多此一舉嗎?

由於大多數教程中工作電腦與樹莓派的連接都是通 WI-FI而非網線的方式,因此在一開始就有必要針對二者的網絡傳輸速度做一個測試,這裡我推薦使用iPerf3,安裝和使用都很簡單。

我們需要在樹莓派上使 apt iPerf3,然後啟 iPerf3的服務。

# iPerf3

sudo apt install iperf3

# iPerf3服務iperf3 -p 3005 -s

·-p設置監聽的埠號,客戶端需要使用該埠與服務端進行通信。

·-s設置為服務模式運行。

然後在工作電腦上也安裝 iPerf3即可mac電腦直接執brew install iperf3即可安裝,然後我們只需執行下面的命令即可。

# Mac與樹莓派之間的網速(我的樹莓派內 ip192.168.31.189

iperf3 -c 192.168.31.189 -p 3005

我的測試結果如下圖所示:

換算一下,上傳下載大約能 7MB/s的速度,雖然速度不是很快,但是基本可以用。

PS:如果有小夥伴測試結束後發現連通速度有些慢,不妨檢查下你的樹莓派是否連接 5GHz Wi-Fi上。

確認連接速度可以正常使用後,我們便可以來安裝使用一個非常重要的工具Docker

使 Docker為樹莓派賦能

Docker的存在使得開發者可以快速搭建自己所需要的開發環境,只需指定好鏡像後即可快速生成所需要的容器環境。並且由於樹莓派使用的 ARM架構的晶片,很多常用軟體如果想要正常安裝使用需要自行編譯,這對於性能不夠強悍的樹莓派來說無疑是一種負擔,為了讓我們的精力聚焦在在實際的開發中,而不是糾纏著應用運行環境的問題上,這次我們使 Docker搭建所需要的開發環境,為樹莓派賦能。

Docker還不了解的小夥伴可以移步https://yeasy.gitbook.io/docker_practice/

在樹莓派上安 Docker、配置鏡像加速在上面的連結中都已給出,值得一提的是Docker的定位在於將容器內的環境搭建起來,但如果我們想將多個容器的運行方式和配置固定下來,應用於容器編排,則需要使 Docker Compose

舉個例子,我們有一個應用容器,需 mysql存儲數據 nginx作轉發,消息隊列作數據轉化,那在每次啟動前,需要將每個前置容器先啟動,再把應用容器跑起來,這本身就是一個重複的動作。而且在啟動時,還需要針對每個容器進行不同的配置,所以為了實現對多個容器的組合管理,例如規定容器啟動順序,規定好配置內容等行為Docker Compose便應運而生了。

Docker Compose的安裝方式有很多種,但由 ARM架構的限制,樹莓派上 Docker Compose建議使 pip安裝。

sudo pip3 install -U docker-compose

!!!一定 Python3版本 pip,所以建議直接使pip3

監管你 DockerPortainer

Portainer Docker的輕量級,跨平台和開源管 UI。你可以通 WebUI管理你 docker容器,鏡像,網絡和卷。他的安裝也很簡單,直接執行以下命令即可。

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

安裝完成後如下圖所示

監控面Pi Dashboard

Docker之後,我們便可以方便快速的進行各種軟體的安裝了。為了方便監控我們的樹莓派情況,首當其衝的便 Pi Dashboard

安裝很簡單,只需執行下面一行命令

sudo docker run -d --name docker-pi-dashboard -e 'LISTEN=1024' --net=host ecat/docker-pi-dashboard

啟動完畢後可以通過

sudo docker ps | grep docker-pi-dashboard

來確認我們的容器是否啟動成功,如果啟動成功,在瀏覽器中輸入<IP>:1024即可訪問 pi dashboard了。如下圖所示

智能家HomeAssistant

智能家居是眼下最火的領域之一,小米、蘋果、華為等都在布局該領域,旗下的米家HomeKit等都已經提供了非常完善的服務,那麼我們為什麼要在樹莓派上搭建一套智能家居系統呢?

其實原因很簡單,雖然目前智能家居產品眾多,但是尚未有一種智能家居解決方案同時滿足設備種類多、交互體驗好、成本低廉的特性,為此很多情況我們都會選擇某一家的某一些產品,這就有可能會造成整個家裡出現小米的檯燈、華為的傳感器、蘋果的音箱等多種混亂的局面,然後你還要安裝多 App,這種體驗無疑是非常差的。

在計算機領域有一句名——所有兼容問題都可以通過加一層抽象解決,所有性能問題都可以通過去掉一層抽象解決。既然這樣,何不在這些智能家居平台基礎上再抽出一層,提供一個統一的控制入口?

答案自然是可以的,並且已經有人將方案開源出來了,這就是本節要介紹 HomeAssistant

無論是米家還 HomeKit都只能在各自的生態中使用,米家只有移動 AppHomeKit雖然覆蓋了平板、手機、電腦、手錶等,但也僅限蘋果生態。(網際網路發展了這麼多年,卻忘記了他最開始的形態,真不知道這是一種進步還是一種悲哀)

扯了這麼遠,回到正題HomeAssistant的安裝使用非常簡單,官網已經寫的非常詳細https://www.home-assistant.io/installation/raspberrypi#docker-compose

推薦使 Docker Compose安裝。

version:"3"services:homeassistant:container_name:homeassistantimage:"ghcr.io/home-assistant/raspberrypi4-homeassistant:stable"volumes:- /PATH_TO_YOUR_CONFIG:/config- /etc/localtime:/etc/localtime:rorestart:unless-stoppedprivileged:truenetwork_mode:host

指定 volumes的路徑後執行docker-compose up -d指令即可。

米家的接入

安裝好之後你的家庭應該是空的,如果想要綁定米家設備,可以接入米家 MIoT插件,文檔https://github.com/al-one/hass-xiaomi-miot/blob/master/README_zh.md

填寫好自己的小米帳號和密碼後,即可利用網頁 HomeAssistant中查看使用自己的米家設備,以此達到跨平台的目的。下圖是我自己配置的控制頁面

開放能REST API

如果只是提供了一個網頁用於控制,那麼本質上也就是在交互體驗上進行了優化,並不值得單獨開一小節HomeAssistant作為一個開源產品,最大的優勢在於提供了開放的能力,使每個用戶按照自己的想法去進行更改設置,我們完全可以根 HA提供 REST API針對自己的需求定製化。(例如製作一個屬於你自己的家庭樞紐,後面會提到)

HomeAssistant默認是不會開 REST API功能,你需要在configuration.yaml文件中配置一下api選項,如下圖所示

HomeAssistant可配置的選項還有很多,具體的可以參考文https://developers.home-assistant.io/

離線下Aria2

有些資源下載時間較長,不適合電腦長期掛機下載的,這時就可以將我們的樹莓派變成一個離線下載的伺服器。提到下載,不可不提的一個神器便 Aria2

Aria2是一款自由、跨平台命令行介面的下載管理器, wget這類下載器不同的是Aria2不僅支 BitTorrent,還能夠從各種來源多路檢索所請求的文件。包 HTTPHTTPSFTP BitTorrent協議。

對種子下載原理感興趣的同學可以閱讀我的這篇文章《人人都 LSP種子與文件下載的相愛相殺》

Raspbain系統默認已經安裝 Aria2,運 apt-cache show aria2即可查看安裝信息,因此我們要做的就是 Aria2找一個圖形化介面即可,使 Docker的一大好處就是可以直接去找別人已經打包好的鏡像文件,讓安裝使用變得十分易用。

只需執行下述命令即可啟動一 Aira2的圖形化介面了

docker run -d --name aria2-ui-pi -p 8888:80 -p 6800:6800 -v /data:/data --restart=always huangzulin/aria2-ui-pi

默認下載路徑是在容器內 /data文件夾,為了方便使用最好指定一 volume映射

區域網文件共Samba

現在,手機 Android/iOS,電腦 Win/Mac,除去蘋果生態,設備與設備之間的文件傳輸直至今日仍然是一個大問題。

Samba Linux UNIX系統上實 SMB協議的一個免費軟體SMBServer Messages Block,信息服務塊)是一種在區域網上共享文件和印表機的一種通信協議,它為區域網內的不同計算機之間提供文件及印表機等資源的共享服務。通過該協議,你可以快速方便的 Win Linux/Unix之間分享文件,而不是通 QQ在線傳文件。

安裝過程也十分簡單,你可以選 apt安裝也可以選 docker直接安裝,網上的教程非常多,詳情可參在樹莓派上配 Samba服務教程

打造屬於你自己的家庭樞紐

無論 HomeAssistant Aria2,這些都是別人寫好的東西,如果你想讓樹莓派更加定製化,你可以按照自己的想法去邊寫一些小程序(這也就是為什麼之前要提一下開 HomeAssistant REST API)。

如果想要讓自己的程序運行在樹莓派上,大致有以下幾條路可以走

為了打造一個屬於自己的家庭樞紐,我的想法是在一塊可以觸摸的螢幕上控制自己家的智能家居設備(借 HomeAssistant),直觀地查看天氣(和風天氣),追蹤快遞行程(爬蟲)、時鐘、紀念/倒數/照片牆等,因此這是一個完整的網頁,我選擇的技術棧 SpringBoot + Flutter Web + Nginx,然後使 Docker打包成一個鏡像啟動整個服務。

部分頁面如下

我在做的就 Java相關的工作,後端選 SpringBoot無可厚非,之所以選 Flutter Web而不是傳統 Vue React,一方面是因 Flutter的聲明 UI寫起來確實比傳 Web頁面編寫更舒服,效率更高,另一方面九是因為 Flutter寫的網頁可以無縫轉換成 Android/iOS/PC/Linux/macOS這些平台上的原 App,有助於後期針對多個平台的覆蓋(當然更多還是因為我已經 Vue React忘的差不多)

目前這個網頁比較簡陋,還有很多我想做的功能沒來得及做上去,但後續我準備持續更新這個代碼,後續如果在家裡運行效果還不錯的話,甚至有想開源出去的想法,不過這就是後話了。

隨時隨地訪內網穿透

玩了這麼多東西,有沒有發現一個最大的問題?

沒錯,就是這些所有的東西必須要求你的電腦和樹莓派處在同一個網絡里,即區域網環境里。雖然我一開始的使用場景就是在家裡使用,但如果我在公司突然想看一部美劇了,但是用公司電腦下載視頻顯然是不現實的,如果這時候我可以在外網直接訪問家裡樹莓派的離線下載服務,那麼下班回家後豈不就可以看到自己想看的電影了嗎?

所以,最好的方式就是聯繫你的寬頻運營商,並申請一個公 IP,這樣你就可以通過這個公 IP訪問到你的樹莓派了。

據我所知,目前只有電信的部分地區會給公 IP,大多數運營商是不會提供公 IP的,而且申請流程很麻煩,所以為了可以隨時隨地的從外網訪問家裡伺服器的文件或其他服務,我們可以為樹莓派做一個「內網穿透」

「計算機領域的大多數問題都可以通過增加一層來解決」,所謂內網穿透,無非是在內部網絡和網際網路之間增加一個中轉伺服器,這個中轉伺服器負責接收你的請求並轉發到內部伺服器,也即「代理」

當然了,內網穿透的原理肯定不會這麼簡單,這裡只是通俗的解釋一下,如果之後有機會來詳細說下。所以為了實現內網穿透,我們需要有一台可以公網訪問的伺服器作為中轉橋樑,這時我突然想到我畢業前買的學生機還沒到期呢,現在剛好在吃灰,拿它來做中轉豈不是最好的?

內網穿透伺服器的選擇有很多FRP是用的最多的,但我這裡選擇的nps,原因也很簡單,頁面好看,交互簡單,性能夠用。

nps是一款輕量級、高性能、功能強大的內網穿透代理伺服器。目前支 tcpudp流量轉發,可支持 tcpudp上層協議(訪問內網網站、本地支付接口調試ssh訪問、遠程桌面,內 dns解析等),此外還支持內 http代理、內 socks5代理p2p等,並帶有功能強大 web管理端。

我們只需要在雲主機上安裝好服務端,並按照後台提示在樹莓派上安裝好客戶端,簡單設置自己要轉發的埠即可實現內網穿透。

官方文檔https://ehang-io.github.io/nps/#/?id=nps

最後

擁有一台樹莓派最大的好處就是可以充分發揮你的靈感與創意,如果你有想法、有能力、有時間,不妨讓樹莓派成為你實現想法的載體。

最後扯一點文章之外的,工作之後的時間果然少了很多,這篇文章從開始寫到現在完成差不多花了一個星期,阿里的工作強度的確很大,每天下班到家多半也 10點之後的事情了,能留出來碼字的時間實在有限,難得周末有空,把近期搬家搗鼓自己家的想法寫下來,也算是自己新階段的開始。這段時間閱讀了很多內部的優秀文檔,也希望自己未來的文章可以像內網的大神們一樣更專業,新的征程加油!

以上就是本文的全部內容了,如果覺得還不錯的話,不妨給我一個點贊關注支持一下哦