暫停自架 Immich:一次家庭相片系統的技術妥協

暫停自架 Immich:一次家庭相片系統的技術妥協

有些專案不是失敗,而是走到一半,突然看清楚它真正要付出的成本。

這次我原本想做的是一套家庭用的自架相片系統:家人只要安裝 Immich App,輸入一個 HTTPS 網址,登入帳號,就能像使用 Google Photos 一樣備份、瀏覽、分享照片和影片。照片和影片本體則放在家裡的 NAS 上,由我自己掌控資料。

聽起來很理想。也確實很有吸引力。

但最後,我決定暫停這個專案。

原本的架構

最初的想法是:

家人的手機或平板
  -> HTTPS
公開網域
  -> VPS 反向代理
  -> WireGuard 私有通道
  -> 家裡的 Synology NAS
  -> Immich / PostgreSQL / Redis / Machine Learning / 相片影片儲存

這個架構的核心目標是避開 Cloudflare Tunnel 或 Cloudflare Proxy 對大型上傳檔案的限制。Immich 的使用場景很容易遇到大檔案,尤其是手機影片,幾百 MB 很常見,1GB 到 2GB 也不稀奇。

所以如果要讓家人真的能穩定上傳影片,就不能只是把 Immich 放在 Cloudflare Tunnel 後面了事。比較合理的方式,是用一臺位於亞洲、延遲較低的 VPS 當公開入口,再透過 WireGuard 連回家裡 NAS。

我也已經在 NAS 上把 Immich 跑起來了。Docker Compose 堆疊包含:

Immich Server
PostgreSQL
Redis / Valkey
Immich Machine Learning

服務本身是正常的,API ping 也能回應。換句話說,技術上不是做不到。

真正的問題不是「能不能做」,而是「值不值得做」。

遇到的第一個現實:影片不是照片

如果只是相片備份,很多自架方案都還算輕鬆。照片檔案通常不大,縮圖和瀏覽體驗也比較容易處理。

但影片完全是另一回事。

我的使用情境裡,影片常常是 1GB 或 2GB。這代表每一次上傳都會經過:

手機 -> VPS -> 家裡 NAS

而每一次播放,又可能變成:

家裡 NAS -> VPS -> 手機

也就是說,VPS 不只是「反向代理」這麼輕巧而已。它雖然不負責儲存影片,也不負責跑 Immich 的資料庫和機器學習,但它會承擔大量流量轉送。

如果家人上傳 100 支 2GB 影片,光上傳轉送就可能接近 200GB。若上傳後又常常播放原始影片,流量還會再增加。

這時候 VPS 方案就不能只看 CPU 和 RAM,而是要看:

每月流量額度
亞洲節點穩定性
與臺灣之間的延遲
大檔上傳時的連線穩定度
反向代理 timeout 和 body size 設定

為了比較穩,我一度傾向選東京節點、2 vCPU / 4GB RAM 等級的 VPS。這樣做比較可靠,但費用也會上來。

第二個現實:它沒有比 Google Photos 便宜多少

一開始做自架相片系統,很自然會有一個念頭:這樣是不是可以省下雲端訂閱費?

但仔細算之後,答案變得不那麼漂亮。

如果只考慮 Immich 的公開入口,一臺穩定的亞洲 VPS 可能就接近每月數百元臺幣。若選比較舒服的規格,價格甚至可能接近 Google Photos / Google One 5TB 方案。

而 Google Photos 的 5TB 對我來說,其實用不完。

這點非常關鍵。

如果我已經快用滿 5TB,甚至未來會往 10TB、20TB 前進,那自架 Immich 的意義會變得很強。因為長期容量成本會慢慢偏向自有硬體。

但如果 5TB 其實用不完,那 Google Photos 的訂閱費買到的不只是空間,還包含:

穩定的手機備份
成熟的 App 體驗
家人幾乎不用學習
相片搜尋
分享相簿
跨裝置同步
平臺級可靠性
不用自己維護 HTTPS、DNS、VPN、反向代理
不用擔心 NAS 或 VPS 哪天出問題

這些東西如果全部自己做,帳單上不一定會出現,但它們都是真實成本。

尤其是時間成本。

第三個現實:家用服務的維護壓力

自己用的系統壞掉,我可以慢慢修。

家人用的系統壞掉,感受就完全不同。

如果 Immich 變成家庭主力照片備份系統,那它就不只是我的興趣專案,而是一個需要穩定運作的家庭基礎設施。這意味著我需要處理:

VPS 安全更新
WireGuard 連線狀態
DNS 設定
HTTPS 憑證
反向代理設定
Immich 版本升級
PostgreSQL 備份
NAS 硬碟健康
外部備份
大檔上傳失敗
家人手機 App 問題

這些事情每一項都不難,但全部加起來,就是另一種生活負擔。

我很喜歡自架,也喜歡資料自主。但這次的問題不是「我會不會」,而是「我要不要讓自己成為家庭照片系統的維運人員」。

答案逐漸變得清楚:目前不值得。

最後的決定

最後我做了一個妥協:

Google Photos 繼續當家庭日常主系統。
Immich 留在 NAS 上,作為私人備份、實驗和未來選項。
暫時不購買 VPS。
暫停公開 Immich 給家人使用的計畫。

這不是放棄 Immich,而是重新定義它的位置。

Immich 仍然很有價值。它可以作為第二份備份,可以讓我保留一份在自己硬體上的相片資料,也可以讓我觀察自架相片系統未來是否更成熟。

但現階段,它不需要承擔「取代 Google Photos」這個任務。

這個決定讓整個系統變簡單很多。

不用買 VPS。

不用急著設定 WireGuard。

不用處理大檔反向代理。

不用讓家人切換工具。

不用讓一個興趣專案變成每天都要背著的責任。

這次學到的事

這次最大的收穫,不是學會怎麼部署 Immich。那些技術細節其實都有解法。

真正的收穫是:技術方案不能只問「能不能做」,也要問「做完之後誰來照顧」。

自架服務很迷人,因為它帶來掌控感。資料在自己手上,架構由自己決定,不必完全依賴大平臺。這些都是真的。

但平臺服務也不是只是在賣儲存空間。它賣的是穩定、維護、家人不用理解背後發生什麼,以及出了問題時不用由我半夜起來修。

所以這次的妥協不是技術上的退讓,而是生活上的取捨。

如果未來資料量真的超過 5TB,或者 Google Photos 的價格變得不合理,或者 Immich 的外部存取和行動端體驗更成熟,我可以重新啟動這個計畫。那時候 NAS 上已經有基礎,架構也想過一輪,並不是從零開始。

但現在,最好的決定是暫停。

有時候,一個專案最成熟的結尾,不是部署成功,而是承認它暫時不該上線。

留言