我的伺服器現在是一支手機 (★ 73 分)
作者原本以 Hetzner 的虛擬私人伺服器(VPS)承載個人網頁應用程式與遠端瀏覽器 Surf,但共享 CPU 在執行 Chrome 時效能不足,升級專用資源又不划算。考量記憶體價格上漲,他改用閒置的 CMF Phone 1:這支手機具備 8 核心 ARM 處理器、8 GB 記憶體、128 GB 快閃儲存、Wi‑Fi 6、5G 與內建電池備援。起初他嘗試刷入 postmarketOS,卻因 Wi‑Fi、硬體加速等驅動缺失而一度把手機刷成無法使用的狀態;恢復原廠 Nothing OS 後,他認定保留 Android 的硬體管理能力才是較實際的選擇。
手機目前以 Termux 作為主機環境,提供 OpenSSH、Caddy 網頁反向代理、runit 服務監管器與其他 Unix 工具;Android 負責硬體、電源、網路與開機流程。作者藉由 Tailscale(建立私人加密網狀網路的 VPN)讓手機取得固定私人位址,並以 Termux:Boot 和 runit 確保重開機後能依序恢復 VPN、常駐服務與健康檢查。他先用 PRoot 在未取得 root 權限的情況下模擬 Debian 檔案系統,但發現 Chrome 的檔案讀取、程式啟動與畫面串流受到額外轉譯負擔拖累;後來取得 root 權限後,改以 chroot 直接執行 Linux ARM64 應用程式,效能顯著改善。
所有服務均由 Ansible 自動化管理,應用程式映像依 OCI(Open Container Initiative,開放容器映像規格)雜湊值或校驗碼固定版本,部署失敗可回復至前一版;機密資料則由 Ansible Vault 加密保管,不直接留在手機上。對外網頁流量經 Cloudflare Tunnel 以手機主動建立的連線導入,不必在家用路由器開放多個連接埠;Surf 因需維持端對端 TLS(Transport Layer Security,傳輸層安全協定)身分驗證,則把其加密連線包入 WebSocket 穿越 Cloudflare。手機現承載 Surf 與桌面版 Chrome、個人收支追蹤、螢幕分享及其他小型服務,也有儀表板監看 CPU、記憶體、儲存空間、電池、溫度、連線狀態與服務日誌。作者提醒,這種架構不適合放置未備份的重要資料,chroot 也不是安全隔離機制;不過對少量個人服務而言,它兼具低耗電、安靜、可攜與電池備援等優勢。
Hacker News 討論最集中的疑慮是長期插電對鋰電池的影響與火災風險。作者表示該手機不具旁路充電(bypass charging,外部電力直接供應系統而非持續充電電池)能力,因此已把充電上限限制在 80%;留言者補充,即使充飽後供電多半會直接供給系統,電池在高電量與高溫下仍會老化,也有人建議採用定時插座或具電池保護模式的裝置。另有讀者指出,此方案的前提是手機可解鎖 bootloader 並取得 root 權限,許多 Android 手機做不到;若沒有 root,連接埠綁定與原生容器執行都會受限。部分人認為舊桌機仍是大多數家用伺服器需求下性價比更高的選項,但也肯定舊手機在體積、靜音、待機耗電與內建不斷電能力方面的特色。
👥 30 則討論、評論 💬
https://news.ycombinator.com/item?id=49226636