Immich:VPSに写真・動画用の自分専用クラウドを構築する方法
Immichは、写真や動画の保存と自動アップロードに対応したセルフホスト型サービスです。モバイルアプリ、Webインターフェース、アルバム、スマート検索、顔認識を備え、ライブラリは自分で選んだサーバー上に保存されます。
ここでは、Immichの必要要件、Docker Composeを使ったUbuntuへのインストール、HTTPSの設定、スマートフォンの接続、外部バックアップについて説明します。
6ステップでImmichを導入
- 十分なRAMとディスク容量を備えたLinux VPSを用意する。
photos.example.comなどのサブドメインをサーバーのIPアドレスに向ける。- Dockerをインストールし、Immichの公式設定ファイルをダウンロードする。
- メディアライブラリとデータベースの保存先を指定し、コンテナを起動する。
- 内部ポートを外部から閉じ、HTTPSを設定する。
- モバイルアプリをインストールし、外部バックアップを設定する。
Immichとは
Immichは、自分で写真・動画ライブラリを管理するためのオープンソースアプリケーションです。写真はタイムラインに表示され、アルバムにまとめたり、検索で見つけたり、スマートフォンからサーバーへ自動アップロードしたりできます。
一般的なクラウド写真サービスとの最大の違いは、サーバー側を自分で管理できることです。ファイルは自分のVPSまたはホームサーバーに保存されますが、空き容量、アップデート、セキュリティ、バックアップについては所有者自身が責任を負います。
| 項目 | クラウド写真サービス | Immich |
|---|---|---|
| ファイルの保存場所 | サービス提供者の環境 | 自分のサーバー |
| 保守 | サービス提供者が実施 | 所有者が実施 |
| 費用 | 容量に応じた料金プラン | VPS、ディスク、バックアップ |
Immichそのものはバックアップではありません。写真が1台のVPSにしか存在しない場合、ディスク障害や誤削除によってアーカイブ全体を失う可能性があります。
Immichの主な機能
- 自動アップロード。 AndroidおよびiOSアプリから、選択したアルバム内の写真と動画をアップロードできます。デフォルトではWi-Fiが使用され、すでに存在するファイルはチェックサムに基づいてスキップされます。
- スマート検索。 人物、場所、日付、カメラ、画像内の文字、写っている内容の説明などで検索できます。顔は自動的にグループ化され、あとから名前を付けられます。
- アルバムと共有。 複数ユーザー、共有アルバム、パートナー共有、パスワードと有効期限を設定できる公開リンクに対応しています。
- 地図とメタデータ。 ImmichはEXIF情報を読み取り、撮影場所を表示し、思い出を作成します。お気に入り、アーカイブ、外部ライブラリにも対応しています。
機械学習処理は、最初のインポート時にCPUとRAMへ特に大きな負荷をかけます。サムネイルとインデックスの生成が終わると、通常の日常負荷は低くなります。
Immichのサーバー要件
現行バージョンの公式要件は次のとおりです。
- 64ビットのLinuxまたはUnix系システム。
- CPUは最低2コア、推奨4コア。
- RAMは最低6GB、推奨8GB。
docker composeプラグインを備えたDocker Engine。- PostgreSQLデータベース用のローカルSSD。
- オリジナルファイル、サムネイル、トランスコード済み動画を保存する容量。
機械学習機能を無効にすれば、4GB RAMのサーバーでもImmichを実行できます。顔認識とスマート検索を利用する場合は、最初から8GBを選ぶ方が安心です。
サムネイルとトランスコード済みファイルは、平均してメディアライブラリ容量の10〜20%を追加で使用します。200GBのアーカイブなら、少なくとも240〜260GBを確保してください。データベースの DB_DATA_LOCATION ディレクトリは、ネットワークドライブではなくローカルSSDに置く必要があります。
実用的な初期構成は、4 vCPU、8GB RAM、Ubuntu 24.04 LTS、そして元のライブラリ容量より20〜30%余裕のあるSSDです。専用GPUは必須ではありませんが、大規模なアーカイブの処理を高速化できます。
VPSにImmichをインストールする方法
以下の例では、Ubuntu 24.04とサブドメイン photos.example.com を使用します。
1. DNSを設定し、Ubuntuを準備する
VPSのIPv4アドレスを向くDNSの A レコードを作成します。その後、SSHで接続します。
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable新しいSSH接続が正常に行えることを確認するまでは、現在のSSHセッションを閉じないでください。
2. DockerとDocker Composeをインストールする
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version使用するのは docker compose コマンドです。旧式の docker-compose は、このプロジェクトではすでにサポートされていません。
3. Immichをダウンロードして設定する
mkdir -p /opt/immich /srv/immich-data
cd /opt/immich
curl -L -o docker-compose.yml \
https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
https://github.com/immich-app/immich/releases/latest/download/example.envファイルを開きます。
nano /opt/immich/.env主要なパラメーターを変更します。
UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD自分のタイムゾーンを指定してください。PostgreSQLのパスワードは半角英字と数字で構成し、openssl rand -hex 24 コマンドでランダムな値を生成できます。その他の行は、現行の example.env に記載されている内容のままにします。
4. 内部ポートを閉じてコンテナを起動する
docker-compose.yml で、immich-server サービスのポートを探します。
ports:
- '2283:2283'次のように置き換えます。
ports:
- '127.0.0.1:2283:2283'これで、このポートへアクセスできるのはVPS自身だけになります。サービスを起動します。
cd /opt/immich
docker compose up -d
docker compose psトラブルシューティングには docker compose logs --tail=200 を使用します。
5. CaddyでHTTPSを設定する
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
reverse_proxy 127.0.0.1:2283
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyDNSがVPSを向き、ポート80と443へアクセスできる状態であれば、Caddyが証明書を自動取得します。Immichはドメインまたはサブドメインのルートで動作させる必要があり、example.com/immich のようなURLはサポートされません。
6. 管理者を作成し、スマートフォンを接続する
https://photos.example.com を開きます。最初に登録したユーザーが管理者となり、ほかのアカウントを作成できます。
App StoreまたはGoogle PlayからImmichをインストールします。ログイン画面では、/api を付けずに次のアドレスを入力します。
https://photos.example.com対象のアルバムを選び、バックアップを有効にします。最初のインポートには時間がかかる場合があります。サーバーはサムネイルの生成、顔認識、検索インデックスの作成、動画処理を行います。
Immichのアップデート
アップデート前にリリースノートを確認してください。特に新しいメジャーバージョンへ移行する場合は重要です。
cd /opt/immich
docker compose pull
docker compose up -d
docker image prune先にモバイルアプリを更新し、その後でサーバーを更新します。個別の手順が用意されていない限り、データベースを古いバージョンへ戻す操作はサポートされない場合があります。
Immichのバックアップ
ImmichはPostgreSQLのダンプを自動生成しますが、そこに含まれるのはデータベースとメタデータだけで、写真や動画は含まれません。完全に復元できるよう、次のものを保存してください。
/srv/immich-dataディレクトリ全体。/opt/immich/.envとdocker-compose.yml。- Caddyの設定。
同じVPS内に置いたコピーでは、ディスク障害やサーバー削除から保護できません。別のサーバー、NAS、またはオブジェクトストレージへデータを送り、3-2-1バックアップルールに従ってください。バックアップファイルの存在を確認するだけでなく、定期的にテスト復元を行いましょう。
Immichに適したVPSの選び方
顔認識とスマート検索を含むすべての機能を利用するなら、4 vCPU以上、8GB RAM以上のVPSを選ぶのが現実的です。ディスク容量はメディアライブラリのサイズを基準にし、サムネイル、動画、今後のアーカイブ増加分も見込んで計算します。
固定IPとSSDストレージを備えた tropic.host のLinux VPSは、この用途に適しています。まず8GB RAMの構成から始め、ライブラリの拡大に応じてリソースを増やせます。PostgreSQLデータベースは高速なローカルディスクに置き、バックアップはこのVPSの外部に保存してください。
VPSなら、どのネットワークからでも24時間アクセスしやすくなります。数TB規模のアーカイブではホームサーバーの方が安くなる場合もありますが、電源、外部アクセス、冗長化を自分で用意する必要があります。
Immichの制限事項
セルフホストだからといって、信頼性が自動的に保証されるわけではありません。弱いパスワード、外部公開された2283番ポート、古いコンテナ、外部バックアップの欠如は、データ損失のリスクにつながります。
また、ImmichはGoogle PhotosやiCloudの完全な複製ではありません。編集機能やバックグラウンド同期の仕様は異なり、解析速度はハードウェアに左右されます。唯一の写真アーカイブを移行する前に、小規模なテストライブラリでサービスを確認してください。
まとめ
Immichを使えば、モバイルからのアップロード、アルバム、顔認識、検索、共有を備えた自分専用の写真ギャラリーを構築できます。現行バージョンでは、4コア、8GB RAM、元データより少なくとも20〜30%余裕のあるSSDを備えたLinux VPSを用意するのがおすすめです。
インストール後は、HTTPS、アップデート、メディアディレクトリとデータベースの外部バックアップを設定してください。写真を損失から守るのは、セルフホストという事実そのものではなく、適切なバックアップです。
FAQ
Immichは無料ですか?
Immichサーバーはオープンソースで、必須のサブスクリプションなしで利用できます。ただし、VPS、ドメイン、ディスク容量、バックアップには費用がかかります。
ImmichにはどれくらいのRAMが必要ですか?
公式の最小要件は6GB RAM、推奨は8GBです。4GBで使う場合は、機械学習機能を無効にする必要があります。
ドメインなしでImmichをインストールできますか?
技術的には可能ですが、スマートフォンから継続的に利用するなら、ドメインとHTTPSを使う方が安全です。認証情報とファイル転送を保護できます。
Immichは写真のバックアップ代わりになりますか?
いいえ。メディアライブラリとデータベースを、別の端末または別の保存先へ個別にコピーしてください。
既存の写真アーカイブを移行できますか?
はい。WebインターフェースやCLIからファイルをアップロードするか、ディレクトリを外部ライブラリとして接続できます。大量インポートの前に、元データのコピーを作成してください。
