前言#
這將會是一個持續系列的主題文章,你將會從最基礎的家庭 homelab 搭建開始循序漸進到一些進階的系統、網路、服務層面的學習。我盡可能以新人的角色描述簡單易懂的語言,系列文章會涉及家庭網路、路由器、Linux、數據儲存、NAS、服務化等等,如果你在過程中又遇到任何問題,歡迎給我留言。
搭建 homelab 起因#
homelab: a laboratory of (usually slightly outdated) awesome in the domicile
從語言直譯來看可以說是家庭 homelab,把這個事情延展到網路及服務上面那就可以幹很多有意思的事情,比如:
- NAS 存儲:資源下載、存放任何的數據(照片、小姐姐、學習資料、代碼等)
- 影視庫:從最簡單的網路共享文件夾到可以托管影視管理、播放、轉碼為一體的 Jellyfin、Plex 服務
- 網路管理:設備限流、流量審計、防火牆策略
- 應用開發:做一些 side projects 需要開發環境、緩存、數據儲存等
- DevOps:ansible、salt、k8s 來操作維護多個伺服器、VM 或者是 lxc
如果您恰好是一名軟體應用開發者,homelab 是最佳的擴展你的技能的很好實驗田,學習網路拓撲、Linux 系統、安全管理等。對於大部分人來說或許多多少少都會聽說過 NAS 伺服器,其實他也是 homelab 的實踐應用之一。
不要被它的名字嚇到,本質上它就是在一個操作系統上面跑一堆上面提到和沒提到的服務而已。
自建考慮的點#
無論上面提到的點有多麼吸引你想要組件自己的家庭 homelab,您還要慎重考慮是否真的需要,畢竟真的整一套也會投入很大的精力和一些資金,千萬不要沒有需求創造需求。
本系列的內容會優先考慮使用開源、免費的解決方案,如果真的無法滿足會分享一些商業的解決方案。
商業成品方案#
商業成品主要是售賣軟體服務來提供類網路管理、數據儲存等的解決方案,市面上主流的主要是:
- 群暉: 搭配硬體售賣,各方面都非常令人滿意的軟體系統,對小白非常友好
- 威聯通: 搭配硬體售賣的軟體,價格比群暉有優勢,軟體系統相對群暉要遜色不少
- UnRaid: 一款商業的 NAS 系統,但提供快速擴容、Docker 和 VM 管理
- UniFi OS: 主要是 Dream Machine 搭載的系統,整體下來價格非常昂貴
通常情況下商業成品是一站式的解決方案,採購的話費用也會比自建要投入更多的資金,這個就不再 homelab 的考慮範圍,這裡就一筆帶過。
開源 & 免費方案#
自建 homelab 必然會從硬體、軟體下手,準備好了再決定網路拓撲結構。
硬體篩選#
國內和國外的硬體環境有非常大的不同,國內有很多的洋垃圾、魔改硬體的討論,比如您可能聽說過的 E3/E5 神教、垃圾佬之類的名詞。若你是這個領域的行家恭喜你會省不少錢;若你不是也不用沮喪踏踏實實的花錢買數據安全,切記也不要盲目入手垃圾佬的硬體,撿垃圾有風險,有些硬體會被超的很高這樣的性價比也會很低而不值得入手。
最關鍵的幾個部分:CPU、內存、主板、網路和硬碟。
- CPU 和內存很好理解,CPU 核心數量、內存容量越多越能造,如果對於影視播放有要求就需要 CPU 有好的核心支持。
- 主板對網口數量、擴展槽會有依賴,網口數量和硬碟數量支持不多就要靠擴展槽來湊。
- 網路狀況至關重要,WiFi 6 傳輸速度還是不如千兆有線,評估下自己家裡貓和路由器最低要求千兆網路,有線也盡量是 CAT5e/CAT6 規格
- NAS 應用場景對硬碟容量和規格要求比較高,SSD 不是強需求,如果不差錢全上 SSD 也不是不行。
這裡每一個展開聊都是非常大的話題,我可能會整理一些外部資源供您去補充這方面的知識。市面上也有一些成品硬體的解決方案,您也可以考慮:
- 英特爾 NUC:小巧的機型並不代表他的性能很弱,最新 12 代的 NUC 從各方面都是很好的選擇
- 聯想 ThinkCentre 系列:比 NUC 稍微大點,這個系列體系非常的龐大且悠久,也有不少價格合適的二手和改裝件,但會折騰一些
- 惠普 MicroServer Gen 系列:Gen8/Gen10 都是目前主流的 homelab 解決方案,正統伺服器規格和特性。(我有一台 Gen 8 正在服役)
- 各種開發板:比如樹莓派從 3B 開始它也能做一些 homelab 的應用場景,國內外資料豐富,配件眾多。唯一的缺點受新冠影響它的價格在國內居高不下,可以考慮一些其他成熟的開發板。
- 各種礦渣主機:區塊鏈盛行的挖礦行業充斥著很多挖礦主機,比如星際蝸牛、綠盤、蜜獾超存等,有些硬體參數還不錯到手之後需要調節或改下靜音風扇就可用。
最簡單的版本就是可以找一個可以長期運行的不再使用的筆記本電腦、桌面電腦就能起步(功耗太高的話就真的算了)
軟體部署方案#
硬體準備完備之後,我們來考慮搭配哪種軟體部署方案,通常會被劃分為三大類:
- 傳統部署(Traditional Deployment)
- 虛擬化部署(Virutalization Deployment)
- 容器化部署(Containerd Deployment)
通常在硬體性能還算不錯情況下都不會採用傳統部署的方案,單主機的優先級:容器化 > 虛擬化 > 傳統部署,機器性能不錯且有技術興趣度的優先級:虛擬化 > 容器化 > 傳統部署。
傳統部署#
傳統部署通常是在 Bare-metal 機器上面進行的,因此我把它倆劃為等號,它使用硬體主機安裝操作系統如 Window、macOS 和 *nix (Unix/Linux) 後直接安裝和部署服務,聽起來沒什麼特別的,市面上也會有很多的運維工具用於解決安裝系統、配置環境、後期維護、數據備份的工作,比如 Salt、Ansible、Puppet 等有一定的學習成本,沒法做到開箱即用, 100% 發揮硬體機能也會是一個問題。
虛擬化部署#
- ESXi: VMware 公司開發的硬體虛擬化解決方案,介面簡單易用,自身功能較強,付費使用
- Proxomx: 基於 Debian 開發企業級虛擬化系統,支持硬體直通,可擴展集群,上手難度略高,簡稱 PVE
基於開源解決方案實在沒有太多可選性,PVE 是市面上最成熟、社區活躍也很高的方案,就算遇到奇奇怪怪的問題善用搜索引擎代替上都可以解決。
容器化部署#
- Docker: 現代容器化的開山鼻祖,自己比較作引發了大叛逃就有了下面兩個解決方案
- Containerd: 始於 Docker 母公司,壯大在 CNCF 基金會,提供 nerdctl 代替 docker CLI
- Podman: Red Hat 公司領導的兼容 Docker 的解決方案
一句話總結沒看懂就用 docker 就行。
基礎系統#
如果選擇傳統部署隨便用一個你熟悉且滿足你需求的操作系統即可
應用服務#
定好軟硬體的基礎後您需要面對非常龐大的應用服務來擴展和豐富 homelab
初階方案#
軟路由#
- openwrt: 國內最近今年非常主流的解決方案,國內有個 immortalwrt 分支版本
- 梅林: 華碩開源的路由器固件,同樣國內有個 koolcenter 改版
- dd-wrt: 在流行刷路由器初期的懵懂的固件,受限於硬體支持度和更新頻率漸行漸遠,當時支持多 wan 的 tomato
網關#
- nginx: 老牌傳統網關,用於托管或反向代理網站服務
- caddy v2: 現代化設計的 HTTP/2 且支持 Let’s encrypt 的網關
DNS#
- dnsmasq: 一切的基礎,用於配置 DNS 和 DHCP 服務
- pi-hole: 主打保護隱私和過濾廣告的路由系統,常用海外用戶
- adguard home: 專注保護隱私和過濾廣告全網廣告攔截的服務,提供用戶友善的 UI 界面
- smartDNS: 加速 DNS 解析分流的 DNS 服務
- mosdns: 集 smartDNS 和 adguard home 優點並存的 DNS 服務但配置麻煩
防火牆#
NAS#
- OpenMediaValut: 硬體依賴低門檻的綜合性 NAS 系統
服務部署#
- portainer: 簡單容易上手的容器化部署解決方案
影音#
- Jellyfin: 影視劇、電影等媒體播放服務,支持片源資料搜刮和看過數據同步服務
應用#
- Bitwarden: 開源且完全可代替 1 Password 的全平台密碼生成管理服務,推薦使用開發者用 Rust 重寫的 vaultwarden
- ZoneMinder: 開源多路攝像頭 & 錄影管理服務
更多的應用可以關注我的自建服務集合
高級進階#
下面介紹的也僅限於我個人能力範圍內目前想到的點,能力有限也請手下留情。
網關#
- traefik: 一款開源的反向代理與負載均衡綜合性工具
NAS#
- TrueNAS: 國外做數據儲存的首選,基於 ZFS 文件系統內存大小決定磁碟容量的上限,前身叫 FreeNAS
服務部署#
- Kubernetes: 現代容器化編排系統,所謂的雲 YAML 工程師終極工具 😆
小結#
homelab 玩法的可能性是無限的,不要把想像力局限在這幾年國內流行的所謂 AIO Boom:使用 pve 部署一切,更甚者用 openwrt + docker 部署各自服務出現問題先不說,真遇到伺服器宕機一波全帶走。
另外不要太過於計較伺服器的功耗情況,只要不是電耗子 35W 還是 65W 沒省多少電費,下面是一個正面例子,雖然用的是 X99-T8D + E5 2696V3*2 + 金河田 6100 雙路電源,但開發者主要用於適合自己場景的使用,那就不是浪費。
最後的忠告,國內各自資訊諮詢站的 OpenWrt,NAS 文章看看就行,別太認真。有那時間不如多看看官方文檔,官方社區討論