SSD Nodes Learn メモリ 8GB — 年額 $66
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-01

PhotoPrismとImmichの違いは?用途別の選び方

PhotoPrismとImmichを、実際のRAM最低要件、スマホアプリ、地図表示、VPSで必要な正確なバックアップコマンドまで比較します。

PhotoPrism と Immich の比較: 簡単な結論

PhotoPrism と Immich の比較は、同じ製品の2つのバージョンから選ぶことではありません。異なる用途に対応する2つの製品から選ぶことです。Immich は Google Photos の代替です。スマートフォンアプリがカメラロールを自動的にバックアップし、表示されるタイムラインも、スマートフォンのギャラリーから移行する人には使い慣れたものです。PhotoPrism は、すでに所有している写真ライブラリを整理します。ディスク上のファイルがあるフォルダーをインデックス化し、メタデータを読み取り、地図上に表示します。ファイルは元の場所にそのまま残します。

「スマートフォンの容量が一杯で、Google Photos から移行したい」ことが問題なら、Immich を選びます。「ドライブに 400 GB の写真があり、その中から何も見つけられない」ことが問題なら、PhotoPrism を選びます。どちらもオープンソースで、通常の VPS 上で Docker コンテナとして実行できます。また、どちらも第三者に何も送信せずに、ライブラリのインデックス化と検索を行います。

設計思想の違いが、なぜすべてを決めるのか

Immichはファイルを管理します。アップロード先を指定すると、スマートフォンアプリまたはWebアップローダーからオリジナルが送信され、Immichが独自のパスと命名規則で保存します。アルバム、顔、検索に関する正確な情報はデータベースに保持されます。この設計により、サーバーが各アセットの完全な状態を常に把握できるため、スマートフォンでの操作性が優れています。

PhotoPrismはファイルを読み取ります。すでに管理しているoriginalsフォルダーをマウントし、PhotoPrismがその上にインデックスを作成します。ディレクトリツリーはそのまま維持されます。明日PhotoPrismを削除しても、写真は同じフォルダーに同じ名前で残り、PhotoPrismが学習した内容を記述したサイドカーYAMLファイルが写真の隣に作成されます。

この1つの違いが、その他の多くの違いを説明します。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、推奨として 8 GB の RAM を示しています。また、4 GB のマシンで実行するには機械学習を無効にする必要があると説明しています。PhotoPrism は 3 GB の物理メモリと 2 個の CPU コアを要件として示し、RAM 容量はコア数に合わせる必要があるとしています。

この差は実際のもので、機械学習コンテナが原因です。Immich はモデルを独立した immich-machine-learning サービスで実行し、CLIP(contrastive language image pretraining)と顔検出モデルをメモリに読み込みます。2 GB のサーバーではカーネルがこのコンテナを強制終了します。Docker では、メモリ不足による終了としてコード 137 が表示されます。PhotoPrism の TensorFlow モデルはより小さく、停止する代わりに機能を縮小します。1 GB 以下のマシンでは、クラッシュさせずに RAW 変換と TensorFlow を無効にします。

どちらのプロジェクトも swap を必要とします。PhotoPrism のドキュメントでは、サーバーに少なくとも 4 GB の 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 と表示された場合は、通常、ファイルシステムが fallocate をサポートしていないため swapon に失敗しており、sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 がフォールバックとして使用されています。ここではコンテナのメモリ上限も重要です。Docker Compose でメモリ制限を設定することで、1 つの負荷の高いサービスがサーバー全体を停止させるのを防げます。

もう 1 つ、見落とされやすい要件があります。Immich の Postgres データベースは、実際の所有者情報と権限を扱える通常の Unix ファイルシステム上に置き、ローカルストレージを使用する必要があります。ネットワーク共有には絶対に置かないでください。PhotoPrism もデータベースファイルについて同じ要件を示しています。どちらのアプリも、マウントしたオブジェクトストア上にデータベースを置いて安全に実行することはできません。

それぞれのインストール方法

どちらも、ベンダーが提供する compose ファイルと1つのコマンドでインストールできます。まず Docker Engine と Compose plugin をセットアップしてください。手順はVPS上のDocker Composeに関するガイドで説明しています。

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

起動する前に .env を編集してください。UPLOAD_LOCATION はオリジナルの保存先です。DB_PASSWORD は、A-Za-z0-9 の文字だけを使ってデフォルト値から変更する必要があります。特殊文字を使うと接続文字列が壊れます。その後、起動します。

docker compose up -d
docker compose ps

Webインターフェースはポート 2283 で応答します。このページから最初に登録したアカウントが管理者になります。そのため、インターネット上でインスタンスを公開したままにせず、すぐにアクセスして登録してください。

PhotoPrism には、MariaDB をあらかじめ含む compose ファイルが1つ用意されています。

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

最初に起動する前に compose.yaml を開き、PHOTOPRISM_ADMIN_PASSWORD を変更してください。ドキュメントには明確に記載されています。このアプリケーションは、そのファイルに設定された初期パスワードで起動します。最小長は 8 文字です。公開サーバーではデフォルト値を絶対に使用しないでください。同時に、originals ボリュームを写真が保存されているフォルダーに設定します。

docker compose up -d
docker compose logs -f photoprism

PhotoPrism は、ユーザー admin とともにポート 2342 で応答します。どちらのアプリケーションも直接公開しないでください。TLS(トランスポート層セキュリティ)を使用する reverse proxy を前段に配置します。これは、Docker、TLS、バックアップを使用したセルフホスト型Nextcloudと同じ構成です。

どちらのスマートフォンアプリが優れているか

ここが2つのプロジェクトで最も大きく異なる点です。多くの人が最終的に Immich を選ぶ理由でもあります。

Immich は Android と iOS 向けの公式アプリを提供しています。カメラロールのバックグラウンドバックアップに対応しているため、新しい写真はアプリを開かなくてもスマートフォンから転送されます。アプリでは HTTPS エンドポイントが必要です。そのため、自宅外から使用する場合、リバースプロキシは必須です。

PhotoPrism には公式のネイティブアプリがありません。ブラウザーからホーム画面に追加するプログレッシブウェブアプリを提供しています。また、スマートフォンから同期する方法として WebDAV(Web Distributed Authoring and Versioning)を案内しています。この用途では、/import/ または /originals/ ディレクトリを WebDAV 経由で指定する、PhotoSync というサードパーティーアプリを推奨しています。利用できますが、Immich では自社クライアント内で実行される処理を、有料のサードパーティーアプリが担います。

複数の家族メンバーに対するスマートフォンの自動バックアップが要件なら、結論は明確です。Immich です。

機械学習で実際にできること

Immich は CLIP を使用してライブラリ内を意味検索します。そのため、「雪の中の赤い自転車」のようなクエリで、誰もタグを付けていない写真を見つけられます。また、顔検出、顔のクラスタリング、重複検出も実行します。CPU で大量のインポートをインデックス化すると、バックグラウンドで数時間かかります。これは正常な動作であり、GPU(graphics processing unit)は必要ありません。

PhotoPrism は TensorFlow で画像を分類してラベルを付け、顔を検出して人物ごとにグループ化します。また、位置情報メタデータを読み取り、場所の地図を作成します。地図機能は、ユーザーが使い続ける主な理由です。撮影場所でインデックス化されたライブラリは、20 年分の写真を閲覧する方法として、従来とは明らかに異なります。顔認識は無料の Community エディションに含まれています。有料の Essentials および Plus メンバーシップでは、より詳細な地図レイヤー、追加のユーザーロール、ユーザー管理インターフェースなどの機能が追加されます。2026 年 7 月時点では、料金は月数ユーロからです。

Immich は完全に無料で、有料プランはありません。PhotoPrism の中核機能は無料で、任意で有料の追加機能を利用できます。

バックアップが保持できるかどうかを決めます

バックアップのない写真サーバーでは、ディスクが1台故障するだけで、家族の写真をすべて失う可能性があります。どちらのアプリでも、データベースとファイルの2種類をバックアップする必要があります。

Immichでは、Postgresコンテナからデータベースをダンプし、アップロード先をコピーします。

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

次に、UPLOAD_LOCATIONをバックアップします。失うと復元できないデータを含むフォルダは、uploadlibraryprofileです。thumbsencoded-videoのフォルダは、数時間のCPU時間をかければ再生成できます。データベースダンプだけでは、メタデータしか含まれていないため、何も復元できません。

PhotoPrismでは、インデックス専用のコマンドがあります。

docker compose exec photoprism photoprism backup -i -f

このコマンドは、storage/backup/の下にSQLダンプを書き込みます。次に、originalsフォルダとstorageフォルダをコピーします。PhotoPrismは各写真を説明するYAMLサイドカーファイルも書き込むため、インデックスを失ってもファイルだけから再構築できます。これは、数十年にわたって保持する予定のアーカイブにとって大きな利点です。

どちらを選んでも、暗号化および重複排除されたresticバックアップによるリモートストレージへの保存を使用し、スケジュールに従ってバックアップをサーバー外へ送信してください。ライブラリと同じディスクに保存されているバックアップは、バックアップではありません。

どちらを実行すべきか

写真がスマートフォンに保存されている場合、複数人がカメラロールをバックアップする必要がある場合、またはサーバーに6 GB以上のRAMを割り当てられる場合は、Immichを実行してください。自分でホストできるサービスの中ではGoogle Photosに最も近く、モバイルでの使いやすさが特徴です。Immichの詳しい手順付きインストールガイドでは、メモリ不足によるプロセス停止やアップグレード時の問題を詳しく説明しています。

すでにディスク上に写真アーカイブがある場合、地図やメタデータを重視し、自分のフォルダー構成を維持したい場合、またはVPSのRAMが4 GBで、スワップが発生するライブラリよりも正常に動作するライブラリを選びたい場合は、PhotoPrismを実行してください。整理と選別に適しており、低スペックのハードウェアにも負荷をかけにくい製品です。

両方を実行する構成も合理的です。Immichで日々スマートフォンから写真を取り込み、年に1回、残す写真をアーカイブに整理して、PhotoPrismにインデックスを作成させます。PhotoPrismはフォルダーを読み取り、Immichは独自のデータを管理するため、両者は競合しません。

FAQ

PhotoPrismとImmichで同じ写真フォルダーを共有できますか?

両方向で安全に共有することはできません。PhotoPrismはoriginalsフォルダーを読み取り、画像の隣にサイドカーYAMLファイルを書き込みます。一方、Immichはアップロード先の内容を自分で管理することを前提としています。Immichのlibraryフォルダーの読み取り専用コピーをPhotoPrismに指定して閲覧することはできます。ただし、両方のアプリケーションに同じファイルを管理させないでください。Immichはインデックス作成中にストレージテンプレートを使ってアセットを移動または名前変更することがあり、PhotoPrismに影響します。

Immichに写真の唯一のコピーを保存しても十分安定していますか?

セルフホスト型アプリケーションに、何かの唯一のコピーを保存してはいけません。Immichは互換性を損なう変更を頻繁にリリースします。また、注意を欠いたdocker compose pullによってデータベースが起動できなくなることがあります。そのため、バージョンを固定し、アップグレード前にリリースノートを確認してください。元のファイルをサーバー外にバックアップしておけば、リスクを小さくできます。

Immichのmachine learningコンテナが再起動を繰り返すのはなぜですか?

メモリを使いすぎたため、強制終了されています。docker compose psを実行し、machine learningサービスがコード137で終了していないか確認してください。これはkernelのout of memory killerによる終了を示します。swapを追加するか、コンテナにメモリ制限を設定して強制終了ではなくスロットリングするようにしてください。4 GBのマシンでは、machine learning自体を無効にする方法もあります。無効にすると検索は機能しませんが、Immichの他の機能は正常に動作します。

PhotoPrismにはMariaDBが必要ですか、それともSQLiteで動作しますか?

SQLiteは動作し、個人用ライブラリには十分です。ただし、PhotoPrismはSQLite使用時のworker数を4に制限します。ドキュメントでは、高い同時実行性への対応に優れたMariaDBへの切り替えを推奨しています。プロジェクトがリリースするcomposeファイルにはMariaDBがすでに含まれているため、推奨構成がそのままデフォルト構成になっています。

ライブラリのサイズに加えて、ディスク容量をどの程度確保すべきですか?

どちらのアプリケーションでも、オリジナルのサイズに10から20パーセントを加えてください。これで、生成されるサムネイルとトランスコードされた動画プレビューを保存できます。200 GBのコレクションでは、データベース、ローカルバックアップコピー、今後の増加分のための余裕を含めると、おおよそ300 GBのvolumeが必要です。