我的 Raspberry Pi 3 伺服器設定

前言

這台 Raspberry Pi 3 在 2016 年跟 MOLi 團購買的,Pi 3 主機+機殼+電源約 $2,000,至今(2023)也用了 7 年左右,每天 24 小時不停機,仍頭好壯壯。

這幾天又發生 SD 卡壞軌導致無法開機,上次壞軌是 2019 左右,算了一下時間也差不多了,於是花了 \$150 買了 64G SD 卡(上次 $150 買到 32G,科技真的在進步啊~~),重新燒錄 Raspberry Pi OS Lite 即救活囉~

/img/pi3_2023

我用它來做什麼?

一開始用它來架設 web Server、mail server、VPN server、CCTV server 等等,雖然只有 1G RAM,歸功於 Linux 非常省資源,這是綽綽有餘的,唯有 disk IO 稍微慢了點。

ARM 架構晶片好處是非常省電!Pi 3 大約功耗 5w 而已,一年頂多 45 度電,但大多數時候主機都是閒置的,因此會更省電。由於瓦數低,不太會發熱也就不需要風扇,進塵量比日本製壓縮機還要少哦!

最近剛好重灌,附上我安裝的 packages:

sudo apt install nginx python3 python3-pip fail2ban vim htop docker.io podman openssh-server tmux git wget curl binutils gcc less gdb strace netcat socat dnsutils pppoeconf

相關設定

網路

要架設 Server,固定 IP 位址算是必須的,當然也可以玩 DDNS,但就太麻煩。

中華電信的非固定制光纖有送一組固定 IP 位址,免費的當然得蹭一下。

透過 pppoeconf 即可在 Raspi 上設定撥號連線,非常方便!

安全

效能考量,沒有安裝任何防毒、IPS、IDS 等,只有用 fail2ban 稍微擋一下,再來就是祈禱了。

[DEFAULT]
ignoreip = 127.0.0.1/8

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
# backend = systemd
maxretry = 5
findtime = 600
bantime  = 1200

[dovecot]
enabled = true
filter   = dovecot
maxretry = 5 # 登入失敗幾次封鎖
bantime  = 3600 # 封鎖的時間,單位:秒,3600=1小時

網頁伺服器

考慮到 Pi 效能不好,我直接用 Nginx,速度快、反向代理設定方便。

至於 TLS 連線則是 Certbot,免費的加減用。

動態網頁我有用 Laravel、Node.js 等,資料庫有 MariaDB、MongoDB。

VPN Server

有時在外面用免費 Wi-Fi 難免怕怕的,WireGuard 連回家裡比較放心。

CCTV Server

家裡的監視器主機有附遠端監控 App,但是 App 被發現有資安問題

找了一下開源的 RTSP to Web 方案,看到了 ke-rtsp,用了幾年沒什麼問題。

不過如果監視器離線了,ke-rtsp 會出錯,因此寫了個腳本放 crontab 定期去執行。

echo >/dev/tcp/localhost/8000  || (cd /var/www/cctv/ke-rtsp/sample/ && forever index.js)

Mail Server

之前自己用 Postfix + dovecot,UI 用 Roundcube,不過自己維護太累了,最後選擇寄生 Gmail

後記

以上這些服務都跑在 1G RAM 裡面,實在是讓 13 億人都驚呆了!

為什麼不跑 Container

也是可以,但就 ARM 的 image 還不是很流行,加上 RAM、Disk IO 等等考量,當初就沒有考慮了。

不過最近應該會重新嘗試看看,自從 Apple Silicon 推出後,ARM 生態有稍微好一點。

自己架有什麼好處

  1. 省錢
  2. 學習網管能力(正取交大資工丁組 + AWS 正職)

comments powered by Disqus