SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor · 已更新 2026-10-28

PhotoPrism 與 Immich 怎麼選?需求與備份比較

比較 PhotoPrism 與 Immich 的真實 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 而言,這通常是決定因素。

圖表Documented minimum memory, as of October 2026
此圖表背後的資料
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich 文件將 6 GB RAM 列為最低需求,建議使用 8 GB;文件也註明,只有在關閉 machine learning 的情況下,4 GB 的機器才可執行。PhotoPrism 文件則要求 3 GB 實體記憶體與 2 個 CPU 核心,並表示超過這項最低需求後,RAM 容量應與核心數量相符。

這項差距確實存在,原因在於 machine learning 容器。Immich 會在獨立的 immich-machine-learning 服務中執行模型,並將 CLIP(contrastive language image pretraining)與人臉偵測模型載入記憶體。在 2 GB 的主機上,kernel 會終止該容器。你會看到它以 code 137 結束;這代表程序收到 signal 9 終止,也是 Docker 顯示 out of memory kill 的方式。PhotoPrism 內建的模型使用 ONNX。其文件表示,這些模型通常能在各類硬體上良好執行。PhotoPrism 也針對記憶體不足提供明確的 fallback:在 1 GB 或更少記憶體的機器上,會停用 RAW 轉換與人臉辨識。不過,這不代表能保證穩定執行。低於其 3 GB 的最低需求時,專案警告可能發生不穩定與效能問題,因此應將最低需求視為最低門檻。

PhotoPrism 文件明確要求伺服器至少提供 4 GB swap。Immich 的需求頁面沒有提到 swap,但 swap 能讓小型主機上的 machine learning 容器保有更多緩衝空間。安裝任一套軟體前,都應先建立 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 現在應列印出顯示 4.0Gi 的 Swap: 行。如果列印出 0B,表示 swapon 失敗,通常是因為檔案系統不支援 fallocate,而 sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 是 fallback。容器的記憶體上限在此也很重要;在 Docker Compose 中設定記憶體限制可避免某個高記憶體需求的服務耗盡整台主機的資源。PhotoPrism 本身是例外:其文件建議不要為容器設定硬性記憶體限制,因為索引大型檔案時會短暫需要額外記憶體,限制可能造成非預期的重新啟動。

還有一項需求容易被忽略。Immich 的 Postgres 資料庫必須放在具備實際擁有者與權限的標準 Unix 檔案系統上,並使用本機儲存設備,絕不能放在網路共享上。PhotoPrism 也警告不要將資料庫檔案儲存在共享網路資料夾,並指出本機 SSD 儲存是最適合的位置。這兩套應用程式都不適合在資料庫位於已掛載的物件儲存時執行。

如何安裝各項服務

兩項服務的安裝方式都是使用供應商提供的 compose 檔案,再執行一個指令。請先設定 Docker Engine 與 Compose plugin,詳見我們的 VPS Docker Compose 指南。

Immich 在每次 release 中都會提供 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

開始前先編輯 .env。UPLOAD_LOCATION 是存放原始檔案的位置。DB_PASSWORD 已提供可運作的預設值,Immich 建議將其改為隨機密碼,但並非強制要求。Postgres 未對外公開,因此該密碼只用於本機驗證;不過設定隨機密碼不會增加任何成本。只能使用 A-Za-z0-9 中的字元,因為 Immich 文件指出,Docker 解析此值時,其他字元可能造成問題。接著啟動服務。

docker compose up -d
docker compose ps

Web 介面使用 2283 埠回應。透過該頁面註冊的第一個帳戶會成為管理員,因此請立即連線並完成註冊,不要讓未受保護的 instance 暴露在網際網路上。

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 使用 2342 埠回應,使用者為 admin。這兩個應用程式都不應直接對外公開。請在前方配置具備 TLS(傳輸層安全性)的反向代理,採用與使用 Docker、TLS 與備份自架 Nextcloud相同的架構;或將伺服器維持在私有網路中,透過 VPN 連線。如果該 VPS 最終還要承載相片以外的服務,也應對新增的每項服務採取相同限制,因為自架 RustDesk relay只需要讓自身的兩個埠可連線,不需要開放其他連接埠。

哪一個的手機 App 較好

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

Immich 提供 Android 和 iOS 的官方 App。這些 App 會在背景備份相機膠卷,因此新照片不必開啟任何程式,就能離開手機並完成備份。若要在家中以外的位置使用,Immich 文件列出 3 種方式:WireGuard 或 OpenVPN 等 VPN、Tailscale,或提供 HTTPS 的反向代理。反向代理可讓手機 App 連線,而不必在每支手機上安裝 VPN App。Immich 也警告,若未進行額外設定,絕對不要直接將 port 2283 轉送到網際網路。

PhotoPrism 沒有官方原生 App。它提供漸進式 Web App,可從瀏覽器加入主畫面;文件則將 WebDAV(web distributed authoring and versioning)列為從手機同步的方式。專案建議使用名為 PhotoSync 的第三方 App,透過 WebDAV 將其指向 /import/ 或 /originals/ 目錄。這種方式可正常運作,但實際執行同步工作的,是付費第三方 App;Immich 則能在自己的用戶端中完成相同工作。

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

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

Immich 使用 CLIP 對相片庫進行語意搜尋,因此像「雪中的紅色自行車」這類查詢,也能找到從未有人加上標籤的相片。它也能進行人臉偵測、分群及重複項目偵測。在 CPU 上為大型匯入內容建立索引,會在背景執行數小時,這是正常現象,不需要 GPU(圖形處理器)。

PhotoPrism 使用內建的 ONNX 模型將影像分類為標籤,使用 ONNX 人臉模型偵測人臉並分組為人物,也會讀取位置中繼資料來建立地點地圖。若需要標籤與說明文字,可以在其設定資料夾中的 vision.yml 檔案改用 Ollama 或 OpenAI。地圖是使用者持續使用的主要功能:依拍攝地點建立索引,為瀏覽二十年相片提供截然不同的方式。相同概念也適用於其他媒體收藏,而 Halcyon 為 Jellyfin 提供的 90 年代錄影帶店前端就是影片版本,依貨架而非清單瀏覽。免費的 Community 版本已包含人臉辨識。付費的 Essentials 與 Plus 會員方案會加入更豐富的地圖圖層、更多使用者角色及使用者管理介面等額外功能;截至 2026 年 10 月,價格從每月幾歐元起,按年計費。

Immich 沒有任何付費牆功能,專案也表示未來不會加入。它提供選購的一次性產品金鑰;依 Immich 於 2024 年 7 月公布的價格,單一使用者為 $25,整台伺服器為 $100。不過購買金鑰不會解鎖任何功能;即使從未付費,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。存放不可取代資料的資料夾是 upload、library 和 profile。thumbs 和 encoded-video 資料夾可重新產生,但需要耗費數小時的 CPU 運算時間。單獨備份資料庫無法還原任何內容,因為資料庫只包含中繼資料。

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

docker compose exec photoprism photoprism backup -i -f

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

無論選擇哪一種,都應排程將這些備份傳送到伺服器之外,使用 加密且去重的 restic 備份儲存至遠端儲存空間。與媒體庫位於同一磁碟上的備份不算備份。請讓工作在失敗時發出通知,因為 3 月悄悄停止執行的備份,在真正需要時看起來與昨晚才執行的備份完全相同;而 自行託管的 ntfy 伺服器 會在當晚將失敗通知推送到手機。

應該選哪一個

如果照片主要來自手機、需要讓不只一個人備份相機膠卷,且伺服器可提供 6 GB 以上的 RAM,請使用 Immich。它是最接近可自行託管的 Google Photos 方案,重點在於行動裝置體驗。我們的 Immich 逐步安裝指南詳細說明記憶體不足終止程序的問題與升級時常見的陷阱。

如果磁碟上已經有照片封存資料、重視地圖與中繼資料及保留自己的資料夾結構,或 VPS 只有 4 GB RAM,且希望使用可正常運作而非持續交換的圖庫,請使用 PhotoPrism。它是較適合整理照片的工具,對硬體需求較低。

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

FAQ

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

不建議讓兩者雙向共用。PhotoPrism 會索引 originals 資料夾,且除非以唯讀模式執行,否則也會寫入該資料夾;Immich 則預期管理其上傳位置中的內容。你可以將 PhotoPrism 指向 Immich 的 library 資料夾唯讀副本,以便瀏覽,但不要讓兩個應用程式管理相同檔案,因為 Immich 的儲存範本可能會在 PhotoPrism 索引期間移動或重新命名資產。

Immich 是否穩定到足以保存我的相片唯一副本?

任何自架應用程式都不應保存任何資料的唯一副本。Immich 目前遵循語意化版本控制,並表示重大變更僅限於 major releases,因此請將 IMMICH_VERSION 固定在 major version tag,例如 v3,閱讀 release notes,然後使用 docker compose pull && docker compose up -d 升級。不支援降級,即使是在相同 minor version 內也不支援,因此每次升級前都應先建立資料庫傾印。將原始檔案備份到伺服器外部,風險就能維持在較低程度。

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

通常是因為使用過多記憶體而被終止。執行 docker compose ps --all,因為沒有該 flag 時,看不到已停止的 container,並查看 machine learning service 是否以 code 137 結束。這表示該程序是由 signal 9 終止;通常原因是 kernel 的 out of memory killer,但並非唯一原因,因此請使用 sudo dmesg | grep -i 'out of memory' 確認。你可以增加 swap,或在 4 GB 機器上完全停用 machine learning。對 container 設定記憶體限制不會對其進行節流:達到限制時它仍會被終止,但可避免耗盡伺服器其餘服務的記憶體。停用 machine learning 後,smart search 和 face recognition 將無法運作,但 Immich 的其餘功能仍可正常執行。

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

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

相較於相片庫大小,應預留多少磁碟空間?

在原始檔案大小之上,為任一應用程式額外預留 10% 到 20%。這可容納產生的縮圖與轉碼後的影片預覽。200 GB 的相片集大約需要 220 到 240 GB,這只包含相片庫本身,此外還要預留資料庫與成長空間。如果你也在相同 volume 上保存完整的本機備份副本,原始檔案與該副本在計入其他項目之前至少需要 400 GB,因此建議預留約 450 GB,或將副本放在不同的 volume 上。

這篇文章對您有幫助嗎?