SSD Nodes Learn 8GB 記憶體 — 每年 $66
指南 Matt Connor作者: Matt Connor · 已更新 2026-08-01

PhotoPrism 與 Immich 怎麼選?RAM、手機與備份比較

比較 PhotoPrism 與 Immich 的實際差異:Immich 最低 {{q:ram_floor:min_ram_gb}} GB RAM、手機自動備份與地圖功能,以及 VPS 上兩者所需的確切備份指令。

PhotoPrism 與 Immich:簡短答案

PhotoPrism 與 Immich 的選擇,取決於兩者解決的是不同問題,而不是同一產品的兩個版本。Immich 可取代 Google Photos:手機應用程式會自動備份相機膠卷,而產生的時間軸對於不再使用手機圖庫的人來說相當熟悉。PhotoPrism 則用於整理既有的相片圖庫:它會為磁碟上的檔案資料夾建立索引、讀取其中繼資料、將相片標示在地圖上,並讓檔案維持原來的位置。

如果問題是「我的手機已滿,而且我不想再使用 Google Photos」,請選擇 Immich。如果問題是「磁碟上有 400 GB 的相片,但我找不到任何內容」,請選擇 PhotoPrism。兩者都是開放原始碼軟體,都能在一般 VPS 上以 Docker 容器執行,也都能為圖庫建立索引並進行搜尋,而不會將任何資料傳送給第三方。

這項理念差異,以及它為何決定一切

Immich 負責管理檔案。您將它指向上傳位置,手機應用程式或網頁上傳工具會將原始檔案傳入,接著 Immich 會使用自己的命名方式,將檔案儲存在自己的路徑下。資料庫會保存相簿、人臉和搜尋資訊的真實狀態。這種設計讓手機使用體驗良好,因為伺服器隨時掌握每個資產的完整狀態。

PhotoPrism 讀取檔案。您掛載一個已由自己管理的 originals 資料夾,PhotoPrism 會在其中建立索引。目錄樹仍由您管理。即使您明天移除 PhotoPrism,照片仍會以相同檔名留在相同資料夾中,而 PhotoPrism 也會在照片旁寫入描述其分析結果的 sidecar YAML 檔案。

這項單一差異解釋了其餘大部分差異。Immich 能提供完善的行動裝置支援,因為它控制資料匯入流程。PhotoPrism 能提供完善的圖庫整理功能,因為它不會干擾您現有的結構。對於照片儲存在手機中的家庭而言,Immich 是較好的選擇。對於圖庫儲存在磁碟上的封存環境而言,PhotoPrism 是較好的選擇。

硬體需求:Immich 的要求較高

文件列出的記憶體最低需求差距很大,而在小型 VPS 上,這通常是決定因素。

ChartDocumented memory requirement, as of July 2026
The data behind this chart
[
  {
    "label": "Immich",
    "min_ram_gb": 6,
    "recommended_ram_gb": 8
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3,
    "recommended_ram_gb": 4
  }
]

Immich 文件列出 6 GB RAM 為最低需求,建議使用 8 GB;文件也註明,只有在停用機器學習時,4 GB 的機器才能執行。PhotoPrism 文件則要求 3 GB 實體記憶體與 2 個 CPU 核心,並表示 RAM 容量應與核心數相符。

這項差距確實存在,原因在於機器學習容器。Immich 會在獨立的 immich-machine-learning 服務中執行模型,並將 CLIP(對比式語言影像預訓練)與臉部偵測模型載入記憶體。在 2 GB 的主機上,核心會終止該容器;你會看到它以代碼 137 結束,這是 Docker 顯示記憶體不足終止的方式。PhotoPrism 的 TensorFlow 模型較小,資源不足時會降低功能而不是終止:在記憶體為 1 GB 以下的機器上,它會停用 RAW 轉換與 TensorFlow,而不是當機。

兩個專案都要求使用 swap。PhotoPrism 文件明確要求伺服器至少提供 4 GB swap。請在安裝任一套軟體前先新增 swap。

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h 現在應輸出一行 Swap:,並顯示 4.0Gi。如果輸出 0B,表示 swapon 失敗,通常是因為檔案系統不支援 fallocate;此時 sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 會作為替代方案。容器的記憶體上限在此也很重要,而在 Docker Compose 中設定記憶體限制可以防止單一高耗用服務拖垮整台主機。

還有一項需求常被忽略。Immich 的 Postgres 資料庫必須位於具備實際擁有者與權限的標準 Unix 檔案系統上,並使用本機儲存設備,絕不能放在網路共用上。PhotoPrism 對其資料庫檔案也有相同要求。這兩個應用程式都不適合將資料庫放在已掛載的物件儲存區上。

如何安裝每一項

這兩種安裝方式都需要使用供應商提供的 compose 檔案,再執行一個命令。請先設定 Docker Engine 和 Compose 外掛,如 我們的 Docker Compose VPS 指南所述。

Immich 會在每個版本發行時提供 compose 檔案和環境檔案範例。

sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml 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

開始前先編輯 .envUPLOAD_LOCATION 是儲存原始檔案的位置;DB_PASSWORD 必須使用 A-Za-z0-9 中的字元變更預設值,因為特殊字元會造成連線字串失效。完成後啟動服務。

docker compose up -d
docker compose ps

Web 介面會在連接埠 2283 上提供服務。第一個透過該頁面註冊的帳戶會成為管理員,因此請立即連線並完成註冊,不要讓未受保護的執行個體持續暴露在網際網路上。

PhotoPrism 提供一個已包含 MariaDB 的 compose 檔案。

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

首次啟動前,開啟 compose.yaml 並變更 PHOTOPRISM_ADMIN_PASSWORD。文件明確說明:應用程式會使用該檔案中的初始密碼啟動,密碼長度至少為 8 個字元,且絕不可在公開伺服器上使用預設值。同時將 originals volume 設定為存放相片的資料夾。

docker compose up -d
docker compose logs -f photoprism

PhotoPrism 會以使用者 admin 在連接埠 2342 上提供服務。這兩個應用程式都不應直接暴露在網際網路上。請在前方設定具備 TLS(傳輸層安全性)的反向 proxy,採用與 使用 Docker、TLS 和備份自行託管 Nextcloud 相同的架構。

哪一個的手機 App 較好

這是兩個專案差異最大的地方,也是大多數人最後選擇 Immich 的原因。

Immich 提供 Android 和 iOS 的官方 App。這些 App 會在背景備份相機膠卷,因此新照片無須開啟任何 App 就能離開手機。此 App 需要 HTTPS 端點,因此如果打算在外出時使用,反向 Proxy 並非可有可無。

PhotoPrism 沒有官方原生 App。它提供 Progressive Web App,可從瀏覽器新增至主畫面;文件則將 WebDAV(web distributed authoring and versioning)列為從手機同步的方法。專案建議使用名為 PhotoSync 的第三方 App,透過 WebDAV 指向 /import//originals/ 目錄。這種方式可行,但需要付費的第三方 App 來執行 Immich 在自有用戶端中便能完成的工作。

如果需求是為多位家庭成員自動備份手機內容,答案就很明確:Immich。

機器學習實際上能提供什麼

Immich 使用 CLIP 對相片庫執行語意搜尋,因此像「雪地中的紅色自行車」這類查詢,可以找到從未有人加上標籤的相片。它也會執行臉部偵測、分群和重複項目偵測。在 CPU 上為大型匯入內容建立索引時,背景作業可能會執行數小時。這是正常情況,不需要 GPU (graphics processing unit)。

PhotoPrism 使用 TensorFlow 將影像分類為標籤、偵測臉部並將其分組為人物,也會讀取位置中繼資料以建立地點地圖。地圖是使用者持續使用 PhotoPrism 的主要功能:按照拍攝地點建立索引,讓使用者能以截然不同的方式瀏覽二十年的相片。免費的 Community 版本包含臉部辨識功能。付費的 Essentials 和 Plus 會員方案會增加更豐富的地圖圖層、更多使用者角色及使用者管理介面等功能;截至 2026 年 7 月,每月費用從數歐元起。

Immich 完全免費,沒有付費方案。PhotoPrism 的核心功能免費,另提供選用的付費附加功能。

備份決定資料是否能保留

沒有備份的相片伺服器只要發生一次磁碟故障,整個家庭的相片就可能全部遺失。這兩個應用程式都需要備份兩類資料:資料庫和檔案。

對 Immich 而言,請從 Postgres 容器傾印資料庫,並複製上傳位置。

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

接著備份 UPLOAD_LOCATION。存放不可取代資料的資料夾是 uploadlibraryprofilethumbsencoded-video 資料夾可以重新產生,但需要耗費數小時的 CPU 時間。單獨備份資料庫傾印無法還原任何內容,因為其中只有中繼資料。

對 PhotoPrism 而言,索引有專用命令。

docker compose exec photoprism photoprism backup -i -f

這會在 storage/backup/ 下寫入 SQL 傾印。接著複製 originals 資料夾和 storage 資料夾。由於 PhotoPrism 也會寫入描述各張相片的 sidecar YAML 檔案,因此即使索引遺失,也能只根據檔案重新建立索引。對於計畫保存數十年的相片封存資料,這是實際的優勢。

無論選擇哪個應用程式,都應依排程將備份傳送到伺服器之外,使用 加密、去重的 restic 備份傳送至遠端儲存空間。與相片庫位於同一個磁碟上的備份不是真正的備份。

應執行哪一個

如果相片位於手機上、需要讓多個人備份相機膠卷,且伺服器可提供 6 GB 以上的 RAM,請執行 Immich。它是最接近可自行代管之 Google Photos 的方案,而行動裝置體驗正是其重點。我們的Immich 逐步安裝指南詳細說明記憶體終止程序與升級陷阱。

如果磁碟上已有相片封存檔、重視地圖與中繼資料及保留自己的資料夾結構,或 VPS 只有 4 GB RAM 且希望使用正常運作的媒體庫,而不是頻繁交換的媒體庫,請執行 PhotoPrism。它是較佳的整理工具,對小型硬體的負擔也較低。

同時執行兩者也很合理。Immich 負責每日匯入手機相片;每年再將要保留的相片整理至封存檔,交由 PhotoPrism 建立索引。兩者不會衝突,因為 PhotoPrism 讀取資料夾,而 Immich 使用自己的資料。

FAQ

PhotoPrism 和 Immich 可以共用相同的相片資料夾嗎?

不建議讓兩者雙向安全地共用。PhotoPrism 會讀取 originals 資料夾,並在影像旁寫入 YAML sidecar 檔案;Immich 則預期由自己管理上傳位置的內容。您可以將 Immich 的 library 資料夾唯讀副本提供給 PhotoPrism 瀏覽,但不要讓兩個應用程式管理相同檔案,因為 Immich 在建立索引時,可能會依據 storage template 移動或重新命名 PhotoPrism 正在使用的資產。

Immich 穩定到可以保存我的相片唯一副本嗎?

任何 self-hosted 應用程式都不應保存任何資料的唯一副本。Immich 經常發布包含破壞性變更的版本,粗心的 docker compose pull 可能導致資料庫無法啟動。因此請固定版本,並在升級前閱讀 release notes。將原始檔案備份到伺服器以外的位置,風險就能維持在較低程度。

為什麼 Immich machine learning container 持續重新啟動?

因為它使用過多記憶體而遭到終止。執行 docker compose ps,並尋找 machine learning service 是否以代碼 137 結束;這表示遭到 kernel out of memory killer 終止。您可以增加 swap,或為 container 設定記憶體限制,讓它受到節流而不是遭到終止;也可以在 4 GB 機器上完全停用 machine learning。停用後搜尋將無法運作,但 Immich 的其他功能仍可正常執行。

PhotoPrism 需要 MariaDB,還是使用 SQLite 即可?

SQLite 可以運作,對個人相片庫而言也足夠;但 PhotoPrism 使用 SQLite 時會將自己限制為 4 個 worker。文件建議改用 MariaDB,因為它更能處理高並行量。專案發布的 compose file 已包含 MariaDB,因此建議的做法也是預設設定。

應在相片庫大小之外預留多少磁碟空間?

在原始檔案大小之外,為任一應用程式額外預留 10 到 20%。這可容納產生的縮圖和轉碼後的影片預覽。200 GB 的相片庫大約需要 300 GB 的 volume,才能為資料庫、本機備份副本和日後成長保留空間。