VPSにImmichを導入:写真・動画用の自分専用クラウドを構築

読了時間 6分
Tropic
VPSにImmichを導入:写真・動画用の自分専用クラウドを構築

Immich:VPSに写真・動画用の自分専用クラウドを構築する方法

Immichは、写真や動画の保存と自動アップロードに対応したセルフホスト型サービスです。モバイルアプリ、Webインターフェース、アルバム、スマート検索、顔認識を備え、ライブラリは自分で選んだサーバー上に保存されます。

ここでは、Immichの必要要件、Docker Composeを使ったUbuntuへのインストール、HTTPSの設定、スマートフォンの接続、外部バックアップについて説明します。

6ステップでImmichを導入

  1. 十分なRAMとディスク容量を備えたLinux VPSを用意する。
  2. photos.example.com などのサブドメインをサーバーのIPアドレスに向ける。
  3. Dockerをインストールし、Immichの公式設定ファイルをダウンロードする。
  4. メディアライブラリとデータベースの保存先を指定し、コンテナを起動する。
  5. 内部ポートを外部から閉じ、HTTPSを設定する。
  6. モバイルアプリをインストールし、外部バックアップを設定する。

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 caddy

DNSが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/.envdocker-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からファイルをアップロードするか、ディレクトリを外部ライブラリとして接続できます。大量インポートの前に、元データのコピーを作成してください。