架設自己的 NAS 伺服器,自組 TrueNAS Core 紀錄

架設自己的 NAS 伺服器,自組 TrueNAS Core 紀錄

回顧系列

前言

對於有玩攝影的我來說,照片備份一直是我在思考的事情,以往不外乎都是外接硬碟或是雲端備份。

這兩者優缺點也很明顯,硬碟備份安全但佔空間,而且有故障風險;雲端上傳速度較慢,而且容量多時就必須收費,未來如果要轉移下來也是問題。

不過俗話說,雞蛋不能放在同個籃子裡,確實本來就沒有最完美的備份方式,只有最適合自己的。

而自從各家雲端方案開始收費後,NAS 的討論聲浪也逐年提高,網路上也越來越多關於 NAS 的討論跟分享。而同時我也發現 NAS 可能是個相當不錯的解決方案,尤其 Raid 機制相當吸引我,於是決定著手來搞一台。

原先是先考慮一般市售方案的,畢竟我當時連 NAS 怎麼運作的都不太清楚,然而看了一下網購平台的價格馬上就被勸退了,小小一台動輒上千上萬元,對我來說已經不算能買來玩看看的價格區間了。

然而我看到幹話系 Youtuber - Huan 的這部 DIY NAS 影片才知道,原來是可以用一般電腦起一個 NAS 服務的。正好當時我也相當熱衷在電腦硬體組裝,家裡還有不少網路上搜集來的二手零件,就索性嘗試來自組一台,如果 NAS 真的能滿足我的需求,日後再買市售產品也行。

第一台自組NAS

NAS 所需的硬體性能要求並不高,如果單純跑檔案管理,就算是十年前的硬體也足夠負荷,靠著家裡所剩的二手零件,再到 PTT 和蝦皮東湊西湊,很快就組出了一台拿來跑 NAS 的主機。

第一台自組NAS

系統規格

CPU : Intel i5 3470
MB : ASRock H61M VG3
Memory : Transcend DDR3 4Gx2

主要零件跟 SSD 是朋友家中的舊電腦汰換給我的,硬碟部分則是先拿家裡之前汰換下的舊硬碟 3 顆。而電源、機殼、CPU 風扇則是從 PTT 上跟鄉民買來的,總共只花費 NTD 1500 整。

雖然花費頗低,不過遇到的問題還蠻多的…

像是機殼部分,應該是專門為了 NAS 且最大化利用空間而設計,機殼前方可以直接將硬碟抽出,相當方便。

機殼前方設計

但也因為這樣,CPU 的散熱空間幾乎被閹割的毫無人性,常規的 CPU 風扇是完全裝不了

CPU 散熱空間

還好賣家願意將他當時組裝這個機殼使用的 U1 規格風扇送給了我,不然可能就得從對岸撈回來了。

CPU 風扇

機殼沒有預留 SATA SSD 的位置,所以我只好用膠帶把 SATA SSD 黏在機殼上…

膠帶黏 SSD

然後機殼是 ITX 規格,但其實我手上並沒有 ITX 的主板,我的替代品是 ASRock H61M VG3,這張主板雖然是 M-ATX 規格,但只有 17x19 公分,只比標準 ITX 主板的 17x17 長了 2 公分而已。

所以我有個大膽的想法…

被硬塞進去的主機板...

好巧不巧的還真的能夠硬塞進 ITX 的機殼…不愧是華擎,難怪被稱作妖板廠…

不過畢竟是 M-ATX 主板,螺絲開孔還是會和 ITX 主板有些不同,所以會沒辦法完全將主板鎖在機殼上,而且後方擋板的 IO 也無法正常和機殼開口對齊,所以我選擇不上擋版跟螺絲,這樣才不會影響到 IO 的使用。

NAS 後方 IO

但很快的我發現到一個問題,這樣的做法會導致有時候無法開機,後來發現可能是接點接觸到機殼短路了,於是就在下方又墊一個塑膠袋絕緣…

被硬塞進去的主機板...

嘛…反正先能正常運作就好,之後穩定使用後再來慢慢升級。

作業系統我選擇使用 TrueNAS Core,因為免費且操作簡單,網路上很容易找到教學,只要跟著影片設定,能設定好 SMB 共享,就算是完成一個基本用途的 NAS 了。

TrueNAS Core 主畫面

從外網連回 NAS

靠 SMB 共享一段時間後,自然就會想到一個問題:

我能不能在外面,透過手機或筆電連回家裡的 NAS 呢?

方法其實還真不少,但因為最重要的會需要調整到路由器,所以需要可以自行調整家裡的網路配置。

另外最好先有基本的網路相關知識,而且否則會像我一樣不停碰壁,搞得家裡 WiFi 連不上是家常便飯。

擁有固定 IP

IP 就像是網路上的地址一樣,如果要連回家裡的設備,就必須得先知道設備在網路上對外的 IP 位址。

能從外網連回最重要的設定就是需要有一組固定 IP,直接找電信公司通常就能解決,如果申請的是中華電信,到網頁上選擇HiNet非固定制固定IP申請的選項就可以做設定。

中華電信網站

但如果你使用的是動態 IP,而且可能是使用社區網路或在外租房等原因無法更改為固定 IP,可以選擇使用路由器上的 DDNS。

TPLink 路由器的 DDNS 設定

路由器會配一組 Domain 給你,當路由器的 IP 變動時,也會更新 Domain 對應的 IP,這樣一來就能找到你的目前對外的 IP。

如果連 DDNS 都無法使用,甚至家中沒有 WiFi 也不打算申辦,那我建議放棄。畢竟 NAS 本身就是需要門檻的東西,不然就算搞起來了,使用體驗也不會好。

實現內網穿透

可以透過 IP 連到家中後,接下來就是要讓外部連自己的 IP 時,可以連結到內部對應的服務或設備。

我嘗試過的做法有三種:

  1. 設定 DMZ
    在路由器設定 DMZ 是最簡單暴力的方式,馬上就能透過 IP 從外面訪問到家裡的 NAS。但 DMZ 的做法是直接將指定 IP 的設備暴露出去,相當不安全,也極度不推薦這樣做,更何況是 NAS 這種存放個人資料的機器。

  2. 使用 Port Forwarding
    比起 DMZ,Port Forwarding 只將指定的 port 對外,其他的 port 仍然能受到路由器的防火牆保護,相對來說會比 DMZ 安全一點,也是比較通用的做法。

  3. 使用 VPN
    VPN 大概是最安全的方式,設置方法相當多樣,甚至連大多路由器都可以直接設置 VPN 連線,一般狀況下最為推薦。

最後我選擇使用 VPN,雖然在手機上使用 VPN 還是有點不方便,但我在外網使用的狀況並不多,設置 VPN 比較算是多一個保險,萬一需要時再直接連回家裡的 NAS 取資料。

應用程式服務

NAS 連外網雖然沒什麼問題,但 iPhone 操作上,要連結 SMB 實在有點麻煩。

雖然 iPhone 內建的檔案 APP 就能直接連線到伺服器,並使用 SMB 傳輸,但圖檔不會有縮圖顯示外,而且有時候連線到伺服器還會有 Bug,無法看到 NAS 中的檔案,實在不是很理想…

iPhone 檔案 APP 介面

這邊我想到的是,能不能夠建立一個應用程式讓 SMB 的操作變得更容易,這讓我想到在 Docker 上安裝過的 NextCloud

Jail Plugin

TrueNAS Core 內有個和 Linux 系統上的 Docker 差不多概念的東西叫做 Jail,不過 Jail Plugins 中提供的應用程式相當少,但能使用 NextCloud 就已經符合我的需求。

TrueNAS Core Jail介面

和 Docker Volume 功能一樣,可以透過 Mount Points 功能選擇要使用的 Dataset,這樣就可以透過 NextCloud 來操作我想使用的 Dataset,然後 NextCloud 也有自己的 APP,透過手機操作方便不少,完全解決了我的問題。

Mounted 功能

設置 Jail Plugins 的 NextCloud 可以參考這部影片 - How to turn TrueNAS into cloud storage with NextCloud,這是我所找到最詳細的教學之一,包含設置 NextCloud 取得 SSL 憑證,相當實用。

虛擬機

如果覺得 Jail 不夠用,TrueNAS Core 中也可以安裝虛擬機,只要安裝 Linux 系統,能夠使用各種 Docker 應用程式。

安裝虛擬機也很簡單,下載映像檔之後一步步設定就可以啟動了,以下是我的配置:

虛擬機配置

因為考慮到本身會玩的容器不多,硬體效能也有限,效能上給得相當保守。

詳細安裝或教學可以參考對岸 B 站司波圖的教學,我覺得相當易懂。

不過嘗試在虛擬機中安裝過 NextCloud 後,我發現 Jail Plugins 比較省效能一點…

所以最後的配置是在 Jail 中 Plugins 處理 NextCloud ,而虛擬機就跑點想玩的容器和 Web Server。

結語

建立了自己的 NAS 後,最直接感受到的是可以在筆電跟桌機之間快速傳遞檔案,而且相當有成就感XD

不過相對要架設的成本也不少,特別是自組還要花時間學習,而且後續還要考慮維護跟故障的問題。除非家裡有舊電腦零件,而且對於 DIY 也相當有興趣,那倒是可以考慮組來玩看看。

但如果不是對 NAS 效能或功能有硬需求,我個人還是會建議考慮市售 NAS 方案或是其他備份方式為優先,畢竟是要存放重要資料的,優先考慮方便性跟安全性還是最好的,而且 NAS 的 Raid 備份也不是萬能解,依舊會建議搭配其他備份方案一併使用比較好。