把之前的文章 RaspberryPi Project - MagicMirror Function 用我的gx10做控制
這台 Raspberry Pi 3(1GB RAM、29GB SD 卡)在機架裡只有一項工作:當 Magic Mirror 2 的鏡面時鐘。而控制這台 Pi 3 的「大腦」是遠端的 ASUS Ascent GX10——兩台機器靠 Tailscale 建立一條加密的專有網路,無論在哪個物理位置都能直接對話。
一、Pi 3 的資源盤點
硬體規格
| 項目 | 值 |
|---|---|
| CPU | BCM2837 quadri-core(4 核 aarch64) |
| RAM | 1GB(現用 527MB / 剩 378MB 可用) |
| 磁碟 | SD 卡 29GB,已用 20GB(70%) |
| 溫 | 64.5°C(mirror 滿載下屬正常) |
| 顯示 | HDMI → 類比鏡面(lightdm + X11) |
| 網路 | Wi-Fi(區網)+ Tailscale(100.123.106.93) |
資源使用現狀
Mem: 1.9G total, 527Mi used, 378Mi available
SD: 20G / 29G (70%)
temp: 64.5°C
1GB RAM 跑 Magic Mirror 2(Node + Electron + X 桌面)已經用到 55%——沒有餘裕再加大模型或瀏覽器多 tab。這台的定位是「只做一件事:時鐘 + 天氣 + 行事曆 + 新聞」,不適合當 LLM 或 Docker 主機。
二、Magic Mirror 2 的資源使用(鏡面程式)
mm2 在 1GB 機子上跑起來不輕——Node 後端 + Electron 前置 + 9 個 module(clock、weather、calendar、newsfeed、compliments、GoogleAssistant、iFrame、alert、updatenotification)吃掉了 527MB。
優化建議(如想省):
1. 把 updatenotification 關掉(每小時拉 git 檢查,吃 CPU)
2. weather 更新間隔改 30 分鐘(預設 15)
3. newsfeed 關掉或改 30 分鐘
4. 關 X 桌面用 start_x11=false(不需要的話)
三、GX10 側的資源(對比)
| 項目 | GX10 |
|---|---|
| CPU | 20 核 ARM |
| RAM | 121GB(統一記憶體) |
| GPU | NVIDIA GB10(1 PFLOP AI) |
| 角色 | 大腦(地端 LLM、監控、AI 決策) |
Pi 3 是終端顯示器 + 輕量觸角;GX10 是中央處理 + 決策。兩者分工明確,互不干擾。
四、Tailscale 外網溝通的建置
為什麼選 Tailscale 而不是 VPN/Port Forward
| 方案 | 問題 |
|---|---|
| Port Forward | 需路由器開埠、動態 IP、攻擊面大 |
| 自建 VPN | 需一台常開的中繼機 |
| Tailscale | 零配置、端到端加密、IP 固定(100.x)、任何網路可連 ✅ |
雙端 Tailnet 位址
GX10 : 100.69.83.97 (linux, 帳號 atstest666666)
Pi3 : 100.123.106.93 (linux, 帳號 atstest666666)
連線實測(區網 vs Tailnet)
| 路徑 | 延遲 | 用途 |
|---|---|---|
| GX10 ↔ Pi3 區網(192.168.1.25 ↔ .236) | 2-4ms | 日常本地控制 |
| GX10 ↔ Pi3 Tailnet(100.x) | 88-323ms | 出差/外網也能操控 |
外網路徑走 WireGuard 加密 + DERP 中繼(Pi 3 和 GX10 同時連到 Tailscale 的 DERP relay),雖然比區網慢 30 倍,但免設防火牆、免開埠、免動態 DNS——出差時一樣能 ssh pi@100.123.106.93 操作鏡面。
五、外網溝通的三種典型場景
場景 A:遠端 SSH 改鏡面
# 在出差酒店的筆電 / 手機 Termux — 只要同一 Tailscale 帳號
ssh pi@100.123.106.93
# 改 config.js、清日誌、重啟 mm2
pm2 restart mm2
場景 B:GX10 自動下達(今天的實作)
GX10 上的 AI(gemma4:e4b) → Tailnet HTTP → Pi3 mm2 網頁/模組
mm2 有 http://127.0.0.1:8080,GX10 可用 http://100.123.106.93:8080 遠端觸發 mm2 的 action(要開埠到 0.0.0.0 才有用;建議只開區網,重要操作走 SSH)。
場景 C:檔案交換(備份/圖檔)
# Pi3 → GX10
scp pi@100.123.106.93:/home/pi/20261003.tar.gz ~/backups/
# GX10 → Pi3(推圖給鏡面用)
scp photos.jpg pi@100.123.106.93:/home/pi/MagicMirror/assets/
六、安全模型
| 層 | 保護 |
|---|---|
| 傳輸 | WireGuard 端到端加密(AES-256) |
| 身份 | Tailscale 帳號 + 裝置金鑰 |
| 來源限制 | 同一 Tailnet 才能看到 100.x,外部網路完全看不到這台 Pi |
| SSH | 雙重金鑰(本機 key + 遠端 key)免密碼 |
| 防火牆 | SD 卡上的 ufw 可選開;因為 100.x 已在 WireGuard 保護下,ufw 不必太嚴 |
重點:Pi 3 的公網 IP 可以是 0(完全 NAT 後面),外部掃埠根本掃不到 100.x——這是 Tailscale 最大的優勢。
七、實戰:今天完成的完整鏈路
[出差手機/家用筆電]
↓ (Tailscale, WireGuard)
Pi 3 (100.123.106.93)
↓ SSH + 備份 tar
[出差中的 GX10, 100.69.83.97]
↓ (同一 Tailnet 或區網)
鏡面(時鐘/天氣/行事曆)
今天實際發生過的:
– 17:04 區網 Wi-Fi 斷線 → Tailscale 路徑不受影響
– 18:00 備份 Pi3 鏡面 216MB → Tailscale scp 拉回 GX10
– 22:00 遠端 SSH 改 mm2(更新嘗試、中止、還原、重啟)— 全程 100.123.106.93,不用區網
八、結語
Pi 3 只有 1GB RAM,是最弱的一台;透過 Tailscale 跟 GX10 聯手,卻能從任何地方被控制、被備份、被遠端維護——弱機器也能當強終端。Tailscale 在這裡的核心價值不是「快」,而是「免配置 + 加密 + 固定位址」這三件事組合起來的無腦可達性。
一句話:區網是日常,Tailnet 是出差/急難,同一條 SSH 命令、同一份備份檔案、同一個遠端鏡面——不用記 IP 切換、不用開任何埠。
沒有留言:
張貼留言