1. 程式人生 > >樹莓派搭建個人伺服器

樹莓派搭建個人伺服器

前言

上一篇樹莓派也跑Docker和.NET Core有對樹莓派做簡單的介紹。包括系統的燒錄、基本的設定、docker的安裝、.net core的執行等。有人問我是不是一定要跑docker,答案肯定是否定的。我之所以用docker,完全是因為它的便利(帶環境)、對系統無汙染和方便系統資源的檢視和控制。本篇文章繼續分享下我對樹莓派的使用。

docker安裝

  • https://www.cnblogs.com/zhaopei/p/raspberrypi-docker-netcore.html#autoid-6-0

mysql安裝

我說在樹莓派上跑mysql你還不信。

docker run --restart=always \
-p 3306:3306 \
--name mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysqlpassword \
-d hypriot/rpi-mysql:5.5
--restart=always                   #容器自啟動
3306                               #資料庫埠
-v $PWD/conf:/etc/mysql/conf.d     #配置檔案掛載路徑
MYSQL_ROOT_PASSWORD=mysqlpassword  #資料庫密碼

redis安裝

docker run --name redis \
-p 6379:6379 \
-v $PWD/data/redis:/data \
-d arm32v7/redis:3.2.10 redis-server --appendonly yes

gogs安裝

有了.net core、mysql和redis,如果再能跑一個git伺服器那不就吊炸天了。是的,樹莓派安裝gogs毫無壓力。有了自己的程式碼管理伺服器,再也不會因為GitHub訪問慢而煩惱了,也不會因為某Git的廣告而不爽了。

docker run --name=gogs -p 122:22 \
-p 1080:3000 \
-v /var/gogs:/data gogs/gogs-rpi

其中1080是瀏覽器訪問埠,你也可以對映到80。122是ssh提交程式碼的埠。
注意:gogs需要依賴於mysql,第一次啟動會引導你填入資料庫相關資訊。後面如果重啟了樹莓派,記得先啟動mysql,再啟動gogs,不然不能正常訪問。

內外穿透

上面有了應用,有了資料庫,還有了程式碼管理伺服器,可我們樹莓派總歸是在一個區域網內。離開了這個網路上面說的那些功能好像就沒什麼用了。那我們有沒有辦法讓我們的樹莓派變成真正的伺服器呢,答案是肯定的。我相信大家剛接觸程式設計的時候,都幻想過自己寫的網站能直接給別人訪問。那個時候應該大多折騰過花生殼什麼的,那就是個內網穿透的技術。只是別人提供了免費的伺服器中轉了下,速度也是慢得感人。

今天我們來自己利用frp軟體實現內外穿透,當然還是需要伺服器的 (沒有伺服器的同學,可以先借朋友的玩玩)

下載地址(各平臺的都有):https://github.com/fatedier/frp/releases
因為我們是樹莓派,可以下載最新版 frp_0.29.0_linux_arm.tar.gz(裝客戶端)和 frp_0.29.0_windows_amd64.zip(windows伺服器)或者frp_0.29.0_linux_amd64.tar.gz(linux伺服器)

首先把frp_0.29.0_linux_amd64.tar.gz上傳到伺服器,解壓,跳轉到目錄裡,編輯frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
auto_token = token

然後執行./frps執行,啟動服務端監聽。

把frp_0.29.0_linux_arm.tar.gz上傳到樹莓派,解壓,跳轉到目錄裡,編輯frpc.ini

[common]
server_addr = 伺服器ip
server_port = 7000
auto_token = token

[git]
type = tcp
local_ip = 127.0.0.1
local_port = 122
remote_port = 8000

[web]
type = tcp
local_ip = 127.0.0.1
local_port = 1080
remote_port = 8001

然後執行啟動./frpc

然後就可以外網訪問了,www.伺服器ip:8001 就可以訪問git伺服器了。
注意:如果是雲伺服器記得把對應的8000、7000、8001埠加入到安全組裡面,不然會被攔截掉。

frp的詳細用法請參考:https://www.cnblogs.com/sanduzxcvbnm/category/1171545.html

其他安裝

#安裝nginx
docker run -d -p 80:80 --name nginx arm32v7/nginx:1.16

#dokcer儀表盤管理
docker run -d -p 9000:9000 --restart=always  -v /var/run/docker.sock:/var/run/docker.sock  --name prtainer-test portainer/portainer:arm

#一些其它樹莓派的docker應用
https://hub.docker.com/u/arm32v7/
https://hub.docker.com/u/hypriot?page=1
https://cloud.docker.com/u/bennyzhao/repository/docker/bennyzhao/quartzui

樹莓派還能做什麼

可以做物聯網資料的邊緣計算啊,如裝置的資料採集、監控預警、資料分析等等。再買點感測器做個簡陋版“小愛同學”也不是很難,甚至遙控汽車玩具什麼的,能想的到的也沒什麼是做不到的。

資源消耗截圖


24小時不關機,零噪音,一直開心的執行著。

結束

推薦一個開源物聯網元件:https://github.com/zhaopeiym/IoTClient,demo下載