1329 字
7 分鐘
Immich + Syncthing + 舊 Pixel 無限 Google 相簿空間 製作地端雲端雙備份

以前 Google 為了推 Pixel 手機,都會推出買 Pixel 送無限 Google 相簿空間。一開始這個優惠是永久的,但隨著時間演進,Google 發現永久免費雲端服務根本是個錢坑,從 Pixel 6 開始取消了永久無限空間,改成一年限時免費,再之後可能是發現市占率夠高,就不送無限空間,改成送期間免費的 Google One 會員了。

不過,我以前買的 Pixel 3 還是有無限空間,雖然不像 Pixel 初代可以無損上傳,但是壓縮畫質對我來說也挺夠用了,而且我在自己家也有自架 immich 當相片備份,所以 Google Photos 就當第二備份、在家以外的地方也讀取也比較快。

alt text

過往我都是用 Syncthings 將各裝置中的照片或影片串流到 Pixel,再由 Pixel 統一上傳到 Google Photos 跟 immich,不過這樣每次新增新的裝置都要重新到 Pixel 那邊去設定,有點麻煩。

所以這次決定重新設定串流的架構,先用 immich 收集好備份的照片,再用 Syncthings 傳到 Pixel 備份到 Google Photos 備份。

Run Immich#

我是用 docker compose 把整個服務跑起來的。

不過因為之前我就已經架好 Immich Server 了,所以這裡就留 官方的安裝連結 給閱讀到這段話的人去自己裝囉。

文章的說明非常詳盡,很簡單就能架好。

Run Syncthing#

Syncthings 也是用 docker compose 去安裝就可以了,但是這裡有一些細節需要去處理。

我先貼出我的 docker compose,其中有幾項是依照自己環境去更改:

services:
syncthing:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing
hostname: immich-backup-server
environment:
- PUID=0 # 使用者 ID (通常是 1000)
- PGID=0 # 群組 ID (通常是 1000)
- TZ=Asia/Taipei
volumes:
# 設定檔存放位置 (存放在目前目錄下的 config 資料夾)
- .runtime//config:/config
# 掛載 Immich 的照片資料夾
- {IMMICH_UPLOAD_LOCATION}/library/admin:/data/immich_photos
ports:
- 8384:8384 # Web GUI
- 22000:22000/tcp # synchronization (TCP/UDP)
- 22000:22000/udp
- 21027:21027/udp # local device discovery
restart: unless-stopped

Immich Upload Location#

{IMMICH_UPLOAD_LOCATION} 應該不用說,請依照架設 immich 時設置的儲存位置去填 (.envUPLOAD_LOCATION)。

另外,library 底下第一層會存放各使用者的備份文件,而 admin 是登入的第一個帳號,其他使用者則是用 UUID 表示。如果要備份其他使用者的圖片的話,可以自己把 admin 改成其他路徑。

PUID/PGID#

PUID 和 PGID 是伺服器上擁有那些照片檔案的使用者跟群組 ID ,如果設錯的話會導致 Syncthing 要讀取檔案時,權限不對會被 deny。

所以這裡我們要確認 Syncthing 使用的 PUID 必須跟 Immich 寫入檔案時使用的 ID 一致。

我們可以利用以下指令來找 ID:

cd {IMMICH_UPLOAD_LOCATION} # 一樣填入自己 immich UPLOAD_LOCATION
ls -ns

會看到類似這樣的輸出:

4 drwxr-xr-x 3 1000 1000 4096 Nov 20 10:00 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxo
4 drwxr-xr-x 5 1000 1000 4096 Nov 20 10:00 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
4 drwxr-xr-x 4 1000 1000 4096 Nov 20 10:00 admin

我們要注意的是第四跟第五組數字,

  • 第 4 組數字是 UID (User ID) -> 這就是要填入 PUID 的值
  • 第 5 組數字是 GID (Group ID) -> 這就是要填入 PGID 的值

關閉 Syncthing 外網登入#

啟動容器後,進入 Syncthing 的管理網頁 (http://localhost:8384),進行以下設定:

  1. 點擊右上角的齒輪 Actions -> Settings
  2. 切換到 Connections 分頁
  3. 取消勾選以下三個項目:
    • Enable NAT Traversal :不需要,因為我們只在內網提供服務。
    • Global Discovery:這最重要,取消後就不會向 Syncthing 的公開伺服器廣播我們的位置。
    • Enable Relay:強制點對點傳輸,不繞經第三方伺服器。
  4. 保留勾選 唯一的一個項目:
    • Local Discovery:這是唯一需要留著的,讓兩台機器在同一個 WiFi/網段下能自動看見彼此。

![image.png](image.png)

設置 Immich - Pixel Syncthing 同步#

Pixel 下載 Syncthing,因為 Syncthing 官方的 Android App 停止維護了,我們這裡安裝社群維護的 fork,一樣可以在 Google Play 上找到。

將 Pixel 跟 Immich 配對。

設置備份資料夾,

為了避免以前的圖片重新上傳,我 prefer 以每年的資料夾去做上傳。

![image.png](image%201.png)

設置 Folder Type,讓 Pixel 那邊刪掉東西不會影響到 Immich 檔案

  • 發送端 (Server) Folder Type 設為 Send Only
  • 接收端 (Pixel) Folder Type 則設 Receive Only

![image.png](image%202.png)

後記#

這樣設定以後,如果我從其他裝置上傳圖片的話,只要安裝好 immich,甚至用網頁打開上傳也行。immich server 會把這些照片丟到 Pixel 做上傳,方便很多。

不過我也發現,如果 Pixel 裡面有存一些其他圖片,不想要一股腦兒的全部備份裝置裡面所有圖片的話, Google Photo 會以最末端的資料夾為單位,讓你選取要不要備份這個資料夾。對於使用這套系統建立的備份來說,等於是每天都有新的資料夾要加入白名單,超級不方便。

我自己是直接設成全部備份了,沒有這問題。不過如果要解決問題的話,Immich 有選項可以更改上傳路徑格式,可以把一年甚至無限時間的照片全部擠成一坨,可以參考官網文件 https://docs.immich.app/administration/storage-template/

Immich + Syncthing + 舊 Pixel 無限 Google 相簿空間 製作地端雲端雙備份
https://fuwari.vercel.app/posts/photobackup/
作者
JCxYIS
發佈於
2026-02-09
許可協議
CC BY-NC-SA 4.0