1. Immich 介紹:Google Photos 的最佳開源替代

在尋找 Google Photos 的替代方案時,Immich 無疑是近年來最強大的選手。它提供了極為相似的使用者體驗,包括:

  • 流暢的手機 App (iOS/Android)
  • 自動備份
  • 人臉辨識與地圖檢視
  • 高效能的網頁介面

最重要的是,它是 Self-hosted 的,這意味著你的照片完全掌握在自己手中,不再受制於雲端硬碟的容量限制。

2. iCloud Photo Downloader 介紹:從 iCloud 把照片「救」回來

雖然 Immich 很棒,但我們的手機 (iPhone) 還是被 iCloud 綁架。為了把 iCloud 上的照片無縫同步到我們的 NAS 或 Server 上,我們需要 iCloudpd

我們採用 Docker 方式部署,這裡推薦使用 boredazfcuk/icloudpd 這個映像檔,它封裝得很好,支援自動化排程與 2FA 處理。

Docker Compose 範例

services:
  icloudpd:
    image: boredazfcuk/icloudpd
    container_name: icloudpd
    environment:
      - TZ=Asia/Taipei
      - user=your_apple_id@email.com
      - user_id=1000
      - group_id=1000
      - download_path=/data/photos
    volumes:
      - ./config:/config
      - /path/to/your/photos:/data/photos
    restart: unless-stopped

3. 整合:打造自動化流水線

整體的整合邏輯如下:

  1. 來源:iPhone 拍照 -> 上傳 iCloud。
  2. 中介:iCloudpd (Docker) 定時執行,將 iCloud 照片下載到 Server 的 /data/photos 目錄。
  3. 終點:Immich 設定 External Library (外部圖庫),掛載 /data/photos (唯讀模式)。

這樣做的好處是,iCloudpd 負責「搬運」,Immich 負責「展示」。即使 Immich 資料庫掛了,你的原始照片依然安好地躺在硬碟裡。

4. 除錯與常見問題

在整合過程中,最常遇到的問題通常與驗證有關:

  • 2FA 驗證過期:iCloud 的 Cookie 大約每 30 天會過期。當 Docker Log 出現驗證錯誤時,需要進入容器重新驗證:
    docker exec -it icloudpd sync-icloud.sh --Initialise
    
  • 檔案權限:確保 iCloudpd 下載的檔案 (PUID/PGID) 與 Immich 讀取的權限一致,否則 Immich 會掃描不到照片。
  • 重複檔案:iCloudpd 支援 .heic.jpg,建議保留原始檔,讓 Immich 處理轉檔展示,避免佔用雙倍空間。

5. 成果:完美的混合雲備份

完成設定後,我們達成了一個完美的混合雲架構:

  • 前端:繼續享受 iPhone 拍照與 iCloud 的便利。
  • 後端:自動化將照片「落地」到私有雲,不再擔心 iCloud 空間爆滿。
  • 體驗:在 Immich 上享受極速的照片瀏覽與 AI 搜尋功能。

這套組合拳,徹底解決了照片備份的焦慮。