「Immich」是一款開源的自架雲端相簿服務,提供網頁及手機APP,協助整理照片。
對不想依賴商業相簿服務的人來說,Immich十分適合部署到NAS或私人伺服器,用於備份與整理照片,使用起來體驗不輸「Google相簿」這類商業相簿服務,可做為Google相簿替代品。
以下是Immich的圖示。開發者alextran1502說很喜歡日本文化,Immich的圖示即修改自日本戰國時期的織田家家徽,他還景仰吉川英治《新書太閤記》中豐臣秀吉的精神。
2024年, Immich專案加入FUTO組織,由全職開發者負責軟體開發。
本文讓Ivon介紹Immich的安裝與使用方式。
1. Immich特色功能#
優點#
就上傳照片而言,Immich可以手動拖到網頁上傳,或是讓Immich掃描電腦現有資料夾自動新增。
Ivon用下來,覺得Immich功能做得很像Google相簿,繼承Google相簿簡單的特色,該有的功能都有:讀取Exif、公開共享相簿、回憶集錦(歷史上的今天)、臉部辨識、定時備份。
網頁界面的操作邏輯很像Google相簿,拖動右邊的軸線檢視照片時間軸
點選照片後查看相機、地點資訊
上傳照片後,Immich會自動掃描人臉
以及將照片繪製在世界地圖上。
AI會識別照片中的物件,讓使用者可以用關鍵字搜尋。有趣的是Immich允許您自選AI物件辨識背後用的模型,硬體夠強的可以用大模型得到更精準的結果。
Immich還會挑選過去的照片,在照片列表最上方顯示回憶集錦(歷史上的今天)
Immich強項在於提供手機APP,可以當一般的相簿APP使用。
主界面手機和伺服器的照片會顯示在一塊,並用「雲朵」圖示標示哪些圖片尚未上傳。
當然,用來分別檢視手機資料夾的照片也是可以的。
Immich的APP方便備份照片到伺服器,可選擇定時背景排程備份,支援RAW檔和原況照片。
支援只備份特定手機資料夾(相簿),而非把DCIM資料夾的照片都傳上去。
Immich光這點就比類似產品 PhotoPrism有誠意多了,後者竟然到現在還在叫使用者認命用PWA網頁程式。
Immich支援單一伺服器、多用戶登入。
缺點#
Immich標籤系統不若PhotoPrism明瞭,雖然Immich可以用「顏色」、「物件」標籤下去搜尋照片,但是他不會像PhotoPrism把掃描到的標籤列成一個完整清單,標籤也沒辦法自己新增。
此外,Immich開發者開發好幾年了,Github收穫了幾萬顆星,還無法保證軟體絕對穩定。Immich幾乎每週推出一個新版本,Github首頁到現在仍寫著:「不要把Immich當作唯一的照片備份方案!」相較之下PhotoPrism採取穩定發表版本的模式,還把一些功能弄成付費版。
Immich跑AI辨識的時候比PhotoPrism吃資源,CPU常常跑到100%;PhotoPrism在資源調度方面比較穩定。
2. 安裝Immich#
撰文當下的Immich版本:v1.97.0
2.1. 設定伺服器端#
硬體需求部份,Immich官方建議CPU至少2核心、RAM至少4GB。
官方文件有提到Docker、Kubernetes、Unraid的裝法。
其中Docker-compose是最簡單的方式。
於系統安裝 Docker
建立存放資料的目錄。
mkdir immich-app
cd immich-app
- 取得官方範本。此docker-compose內含Immich所需的各項服務,包含反向代理。
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
Immich的變數都寫在
.env
裡面了,官方建議把TYPESENSE_API_KEY
改成隨機產生的數字,或者維持預設。啟動容器服務
docker compose up -d
用瀏覽器開啟
http://localhost:2283
存取Immich網頁界面,一開始要用電子郵件註冊管理員帳號。在上傳照片之後,你可以點選右上角Administration → Jobs頁面,將所有選項都設定為Active,開始掃描分類照片。
如果你覺得圖片辨識不夠精準的話,那麼請在Administration → Machine Learning Settings → Smart Search → Clip Model,改用較大的多語言模型
immich-app/nllb-clip-large-siglip__v1
。
停止Immich全部容器服務的指令:
cd immich-app
docker compose down
更新容器的指令:
docker compose pull
2.2. 設定外部網路存取Immich#
Immich只要有電腦網頁就可以用,手機推薦用APP存取。
不過若是要從外面的網路連線到Immich伺服器怎麼辦呢?我會使用
內網穿透軟體。設定好內網穿透後,你就可以用http://電腦IP:2283
存取遠端Immich伺服器了。
2.3. 適時關閉吃資源的服務#
影像辨識和影片轉檔是Immich最吃資源的服務,如果用不到可以將其關閉。
關閉影像辨識:Administration → Settings → Machine Learning Settings,將Enabled取消打勾。
影片轉檔的用意是讓影片能在網頁更快載入,但是影片太多會轉檔很久。如果要關閉:Administration → Settings → Video Transcoding Settings → TRANSCODE POLICY,選取Dont't transcode any videos.
3. 上傳照片至Immich,手機備份#
照片「上傳」就是說,使用者必須將照片整理,「上傳」到Immich的資料庫。
也就是說,日後照片是直接上傳照片到Immich的資料庫,不做任何資料夾分類,照片只有Immich能讀取。
此方法適合手機備份照片。
如果你不喜歡這麼做,那麼請參考下一節「自動掃描資料夾新增照片」。
開啟後登入Immich伺服器帳號
點選右上角雲朵上傳圖示,點選Backup Album,選取要備份的資料夾。預設是手機全部照片(Recent)。Android的話可以個別設定要備份的資料夾。
接著下面有二個備份方式,Foreground Backup是一開啟APP便自動上傳,Background service是自動在背景備份。
一切設定好後,點選Start Backup。
目前Immich的備份邏輯:Immich備份後會自動計算校驗值,標記已經上傳的照片,這樣就不會重複上傳了。
照片上傳後,本機照片不會刪除。如果要保留伺服器照片,只刪除本機照片的話,你要手動用其他APP刪本機照片。
如果在Immich APP裡面按刪除,則該照片會從伺服器和本機一併刪除。
另外,只有選取備份的手機資料夾,才會跟伺服器的照片一起顯示在時間軸上。
4. 自動掃描資料夾新增照片,免上傳#
這是Immich 1.79.1之後才加入的功能,稱作「Libraries」,Immich預設的Library是UPLOAD,不能刪除。使用者可以新增多個Library,直接掃描現有的硬碟資料夾,讓Immich讀取並彩現在網頁(不會對照片做任何變更),這樣就不用重新上傳照片了。
- 首先,停止Immich服務
cd immich-app
sudo docker compose down
- 編輯
docker-compose.yml
,加入照片所在資料夾的路徑,使其成為Docker volume。
例如我有/run/media/user/TOSHIBA1TB/DCIM
這個照片資料夾,就要在immich-server:
和immich-microservices:
下面的volumes
區塊分別新增唯讀volume:
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /run/media/user/TOSHIBA1TB/DCIM:/run/media/user/TOSHIBA1TB/DCIM:ro
immich-microservices:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /run/media/user/TOSHIBA1TB/DCIM:/run/media/user/TOSHIBA1TB/DCIM:ro
- 啟動容器服務
sudo docker compose up -d
回到網頁界面,點選右上角Administration → Users,新增External Path,加入資料夾路徑
點選右上角大頭貼 → Account Settings → Libraries,新增Library,並加入資料夾路徑
點選Scan開始掃描照片
在右上角Administration → Jobs頁面,可以看照片掃描分類的進度。
5. 將Google相簿的照片搬家至Immich#
這裡我提供二種搬家方法。
嚴格來說,你沒辦法「線上」搬移Google相簿的照片到Immich,你必須先將Google相簿的照片下載到電腦,才能搬移至Immich。
如果你想把Google相簿跟Immich照片分開處理 → 使用Library方法
如果你把Google相簿跟Immich照片融合在一起 → 使用Immich CLI上傳
Library方法#
自動掃描Google相簿資料夾新增照片。
使用 GoogleTakeoutHelper整理下載照片,將其變成一個資料夾
參考上面 #4 的步驟,把Google相簿所在照片的資料夾變成Library,再讓Immich掃描。
Immich CLI上傳#
根據 官方文件,Immich有提供命令列工具Immich CLI,用於批次上傳照片到伺服器。適用本機有大量照片的場合,例如剛從Google相簿下載回來的照片。
使用 GoogleTakeoutHelper整理下載照片。
到Immich網頁界面 → 右上角大頭貼 → Account Settings → API Keys,產生新金鑰
使用Docker跑Immich CLI。依序輸入Google相簿所在資料夾路徑、金鑰、Immich伺服器位址,便可以上傳整個資料夾的照片檔案到Immich了。
sudo docker run -it --rm -v "/Google相簿所在資料夾/:/import" ghcr.io/immich-app/immich-cli:latest upload --recursive --key "你的金鑰" --server http://192.168.1.216:2283/api