← Back to home

用 AI Agent 自架 Immich 相簿

手機一年比一年會拍,同樣一張照片卻一年比一年重,Google 相簿的免費空間遲早撐不住。記錄一次用自然語言完成的自架過程:設定、佈署、維運三道關卡,以及人的角色如何從執行者變成驗收者。

#AI#Immich#自架#維運#備份#Tailscale

手機照片一直用 Google 相簿管理,但免費空間有上限。而這個上限特別容易被撞破,因為手機每年都在進步——感光元件變大、開始拍 4K、開始拍 HDR、開始存 Live Photo。

照片沒有變多,是每一張都變重了。

選項只剩兩個:開始付月費,或者搬到自己的機器上。但要搬得動,替代品不能只是「能存檔案」——你已經習慣的那些功能,少一項就會回頭。

這也是選 Immich 的原因。它是開源的自架相簿,日常會用到的功能都有:人臉辨識自動分群、直接打字搜尋照片內容(打「海邊的夕陽」就找得到,不需要事先貼標籤)、手機專屬 App 拍完自動上傳,還有時間軸、相簿與地圖。

其中自動上傳和文字搜尋是關鍵:少了自動上傳,你會忘記備份;少了搜尋,幾萬張照片等於找不到。

功能對得上之後,剩下的問題只有一個——你有辦法把它架起來、而且讓它一直活著嗎?

成果

完成後的狀態
項目結果
功能完整人臉辨識、文字搜尋、自動上傳、時間軸、相簿、地圖,使用習慣不必重學
資訊安全整套服務只活在 Tailscale 私人網路裡,公開網際網路一個 port 都不開。實測從外部連 2283 / 443 / 80 / 22 全部進不來,雲端防火牆與主機防火牆兩層都擋
全自動維運每天自動備份到另一個國家的機器,並且真的還原一次來驗證。失敗立刻寄 email;即使服務一切正常,每週也主動寄一封運作概況
全自然語言從選型到維運機制都是討論出來的,不必自己查文件、寫設定檔、手刻腳本,也不必反覆試錯

實際互動只是幾次對話,每次十幾分鐘。

第一關:設定

設定與選型
以前:自己來現在:與 Agent 協作
得自己讀懂安裝文件,而文件預設你什麼都懂 用討論的:說出你的機器條件和你在意的事
底層知識缺一不可:Linux 操作、Docker、網路 Agent 讀文件、必要時直接讀原始碼查證
看懂文件裡幾十個設定項的意思,才寫得出設定檔 設定檔連同「為什麼這樣設」一起產出
還要自己把外部函式庫、相依服務一個個搞定 不確定的地方當場實測,不靠猜
光是「看懂要設什麼」,就足以卡住一個週末 量測成本從一個下午降到幾分鐘,所以它真的會被做

第二關:佈署

佈署
以前:自己來現在:與 Agent 協作
算硬碟夠不夠、記憶體會不會爆 容量、記憶體、連線路徑,一次盤點完
內網怎麼連、外網怎麼連,各設一次 設定變成可重跑的腳本,跑幾次結果都一樣
網域、反向代理、HTTPS 憑證,還要記得續期 寫下的是意圖,不是操作步驟
設定散在機器各處,沒進版控 修好一個問題之後,順手讓它不能再發生
三個月後重建,憑記憶再走一次,然後漏兩件事 重建機器=重跑腳本

第三關:維運

這一關的賭注跟前兩關不一樣。

設定錯了,重設一次;佈署錯了,重跑一次。備份錯了,照片就真的沒了。

這些是十幾年的家庭照片——孩子的成長、每一趟旅行、每一個生日,沒有第二份。從一家有專職維運團隊的公司搬到自己的機器上,你就接管了它們的存亡。

維運
以前:自己來現在:與 Agent 協作
跑起來就不管了 備份自動跑,不需要任何人記得
沒有測試,沒有量測,沒有備份 驗收條件是真的還原得回來,不是指令沒報錯
就算有備份,也是靠人記得去做——久了就忘了 誤刪有反悔期,事件留下日誌
出事那天才手忙腳亂 另一台機器獨立盯著,正常時安靜,異常才主動通知
而且備份可能早就失敗了,你完全不知道 每週一封運作概況,讓「沒消息」也是有根據的

我與 AI 討論後的作法是:

備份 → 上傳 → 從異地拉回來 → 還原進拋棄式資料庫 → 拉起拋棄式應用程式 → 用真實憑證打認證端點與統計端點 → 全部通過才算成功 → 拋棄式資料庫、應用程式整組銷毀。

人的角色換了位置

以前你身上有兩個角色:規劃者和執行者。而執行佔掉九成的時間和精神——查資料、試指令、卡住、再查、再試。很多自架專案不是敗在想不出來,是敗在還沒做完就沒力了。

現在這兩個角色變成:討論者和驗收者。

角色轉換
階段以前現在
想清楚要什麼自己規劃,受限於自己懂多少多輪討論,邊聊邊把選項和代價攤開
實作自己動手,最耗時間的一段交給 Agent,過程中隨時修正方向
確認真的能用常常省略——因為已經沒力了你的主戰場:要求證據,不接受結論

人的角色沒有變輕,是往前後兩端移動了。

前端是把需求和約束講清楚——你家的實際頻寬、這支手機是不是主力機、能不能接受只有一份異地備份,這些不在任何文件裡,卻會改變技術決定。

後端是驗收,而這一段不能省。Agent 也會語氣完整地說錯話,這次過程裡就有幾次是被追問證據才翻案的。其中一次最有代表性:手機 App 按下分享就卡住,Agent 推測是某項伺服器設定沒填,設好之後請我重試。但打開詳細日誌才看清楚,按下分享的那一刻,手機一個請求都沒有發給伺服器——照片在本機相簿裡,App 直接把檔案交給系統分享選單,伺服器的工作到那裡就結束了。真正的原因是接收端的 App 不吃 HEIC 格式,跟伺服器毫無關係。

那項設定確實該填、分享連結確實壞著,修它是對的。但它不是這個症狀的原因。「我修了東西」和「我解決了問題」是兩件事。

以往要專注一整個週末的事,現在一小時內就能走完一輪。

真正的改變不只是快。是值得做的事情變多了——查證、量測、寫專用工具、把理由記下來,這些以前因為太貴而被跳過的步驟,現在只是一次對話的成本。

尤其是維運:它從「有空再說」變成建置時就順手做完的一部分。

而這正是最重要的地方。以前自架服務最常見的結局,不是架不起來,是架起來之後沒人管,然後在某個你沒注意的時刻壞掉。Agent 沒有幫你逃掉那個責任,但它讓你有力氣在一開始就把防線建好。

回頭看開頭那四項成果,最難的其實是「全自動維運」。它不炫,做完也沒有人會誇你,而它是唯一一項失敗時你會失去十幾年東西的。以前這種事永遠排在「有空再說」;現在它只是那次對話裡的其中一段。

本文由 Claude Opus 5 high協作撰寫