Googleフォトの代替として、写真・動画管理ソフトの「Immich」をWindowsメインPCに導入しました。
Immichというと、NASやミニPC、Ubuntuサーバーなどで24時間動かすイメージがあるかもしれません。
ただ、私は専用機を用意せず、普段使っているWindowsメインPC上でImmichを動かしています。
構成は、Windows+Docker Desktop+WSL2+Ubuntuです。
写真や動画の保存先として、まず手元にあった4TBのHDDをFドライブとして使用しています。
写真・動画データはそのFドライブに置き、Immich本体やDB周りはUbuntu内のDocker環境で動かす形です。
写真データは大容量HDD側に置きつつ、Immichの動作環境はメインPC側で管理しています。
現在はGoogleフォトから移行したデータも含めて、約4TB規模の写真・動画を必要な時だけ起動する形で運用しています。
結論から言うと、NASなしでもImmichは導入できます。
ただし、WindowsメインPCで使う場合は、Docker Desktop、WSL2、Ubuntu、保存先ドライブの関係を理解しておかないとハマります。
特に、Docker DesktopのWSL Integration、Windows側のパスとUbuntu側のパスの違い、ポート番号、外部ライブラリの指定はつまずきやすい部分です。
この記事では、WindowsメインPCにImmichを導入する手順を、順番にまとめます。
できるだけコピペと画面確認だけで進められるように、実際に使った設定とコマンドをそのまま載せています。
NASやミニPCを買う前に、まず手元のPCでImmichを試したい人向けの記事です。
結論:NASなしでもWindowsメインPCにImmichは導入できる
ImmichはNASや専用サーバーがなくても導入できます。
私の環境では、WindowsメインPCにDocker Desktopを入れ、WSL2上のUbuntuからImmichを起動しています。
完成形はこのようなイメージです。
WindowsメインPC
└ Docker Desktop
└ WSL2
└ Ubuntu
└ ~/immich
└ docker compose up -d
写真フォルダは、Windows側では以下のように見えます。
F:\ImmichData
Ubuntu側では、同じフォルダが以下のように見えます。
/mnt/f/ImmichData
Immichをブラウザで開くURLは、この記事では以下に統一します。
http://localhost:8080
この記事では、ポート設定を以下の例で進めます。
8080:2283
ここはかなり重要です。
もし docker-compose.yml で 2283:2283 にする場合は、ブラウザで開くURLは http://localhost:2283 になります。
(標準では恐らくそうなっています。)
この記事では分かりやすさを優先して、基本的に 8080:2283 と http://localhost:8080 で説明します。

この記事で作るImmich環境
今回作る環境は、WindowsメインPC上でImmichを動かす構成です。
NASやミニPCを用意するのではなく、普段使っているWindows PCを写真サーバー兼用にします。
使用環境
私の実環境は以下です。
| 項目 | 内容 |
|---|---|
| OS | Windows |
| Docker環境 | Docker Desktop |
| Linux環境 | WSL2+Ubuntu |
| Immichバージョン | v3.0.0 |
| CPU | Intel Core Ultra 9 285K |
| GPU | RTX 3080 Ti |
| メモリ | 96GB |
| Immich本体の場所 | Ubuntu内の ~/immich |
| 写真・動画の保存先 | Fドライブ |
| DB保存先(私の実環境) | /var/lib/immich/db |
| ブラウザURL例 | http://localhost:8080 |
Immichを試すだけなら正直オーバースペックです。
24時間稼働は電気代を考えると恐ろしいです。
ただし、大量の写真や動画を読み込ませる場合は、CPUやディスクにそれなりの負荷がかかります。
初回読み込み時に大量のサムネイル生成やメタデータの取得・整理など行われるためです。
私のように数TB規模で使う場合は、メインPCの処理能力を使えるのはかなり恩恵があります。
Immichを動かすPCの目安スペック
Immich公式では、最低要件として メモリ6GB以上、CPU 2コア以上 が案内されています。
ただし、これはあくまで「動かすための最低ライン」です。
Immichは写真や動画を表示するだけでなく、サムネイル作成、動画の変換、顔認識、スマート検索なども行います。
そのため、写真や動画の量が多い場合は、CPUやメモリに余裕があるPCの方が安定します。
目安としては、最低でもこのくらいです。
| 用途 | 目安 |
|---|---|
| とりあえず試す | メモリ6GB以上 / CPU 2コア以上 |
| 普段使いしたい | メモリ8GB以上 / CPU 4コア以上 |
| 写真・動画が多い | メモリ16GB以上 / CPU 4〜6コア以上 |
| Googleフォト代替として本格運用 | メモリ16GB以上 / CPU 6コア以上、保存容量に余裕のある構成 |
古いPCでも、2コア以上でメモリが6GB以上あれば起動自体は狙えます。
ただし、サムネイル作成や顔認識の処理中は負荷がかかるため、快適に使うなら 4コア以上、メモリ8GB以上 は欲しいところです。
私のように写真や動画の量が多い場合は、メモリ16GB以上あると安心です。
特に重要なのは、CPUよりも保存容量です。
写真や動画本体だけでなく、Immichが作成するサムネイル、エンコード済み動画、DB用データも増えていきます。
そのため、保存先のドライブにはかなり余裕を持たせておくことをおすすめします。
古いPCを使う場合の目安
古いPCをImmich用に使う場合でも、最低要件を満たしていれば起動自体は可能です。
ただし、快適さまで考えるなら、あまり古すぎるPCは避けた方が無難です。
目安としては、Intelなら第8世代Core i3 / Core i5以降、AMDならRyzen世代以降が扱いやすいと思います。
特に、写真や動画が多い場合は、2コアCPUよりも4コア以上のCPUを選んだ方が安心です。
小型PCなら、Intel N100搭載機でも軽めの運用は狙えます。
ただし、数万枚規模の写真や動画を一気に読み込ませる場合は、初回スキャンやサムネイル作成に時間がかかる可能性があります。
読者向けの標準例
この記事では、読者向けに分かりやすくするため、写真フォルダの例を以下で統一します。
Windows側:F:\ImmichData
Ubuntu側:/mnt/f/ImmichData
導入前に知っておきたい用語
いきなり手順に入る前に、今回出てくる用語を簡単に整理します。
ここをざっくり理解しておくと、エラーが出た時に原因を切り分けしやすくなります。
Immichとは
Immichは、自分のPCやサーバー上で動かせる写真・動画管理ソフトです。
スマホアプリから写真をアップロードしたり、ブラウザで写真を見たり、タイムライン表示や検索を使ったりできます。
かなりざっくり言うと、Googleフォトそっくりな写真管理環境です。
Googleフォトと違うのは、写真や動画をGoogleのクラウドではなく、自分のストレージに保存する点です。
自由度は上がりますが、バックアップや保存先の管理は自分で考える必要があります。
ダウンロードすれば使えるGoogleフォトと違い、導入のハードルは正直高めです。
Dockerとは
Dockerは、アプリを動かすために必要な部品を、ひとまとめにして扱える仕組みです。
普通のWindowsアプリなら、インストーラーを実行してPCに直接インストールします。
しかしImmichは、Immich本体だけで動いているわけではありません。
写真や動画の情報を管理するデータベース、検索や処理に使う部品、機械学習用の部品など、いくつかのサービスが組み合わさって動いています。
これをWindowsにひとつずつ手作業で入れようとすると、かなり大変です。
そこでDockerを使います。
Dockerを使うと、Immichに必要な部品を「コンテナ」という単位でまとめて用意し、まとめて起動できます。
難しく考える必要はありません。
この記事では、Dockerを「Immichに必要な部品一式をまとめて動かすための仕組み」と考えればOKです。
Docker Desktopとは
Docker Desktopは、Windows上でDockerを使うためのアプリです。
今回の構成では、WindowsにDocker Desktopを入れ、その裏側でWSL2のUbuntuと連携させます。
つまり、Windows上でDocker Desktopを起動し、Ubuntu側からDockerのコマンドを実行してImmichを動かす形です。
Docker Desktopは「WindowsでImmich用のコンテナを動かすための土台」みたいなもんです。
WSL2とは
WSL2は、Windows上でLinuxを動かすための仕組みです。
正式には「Windows Subsystem for Linux 2」といいます。
難しく聞こえますが、今回の用途では「Windowsの中でUbuntuを使うための仕組み」と考えればOKです。
Ubuntuとは
UbuntuはLinuxの一種です。
今回の構成では、Windows上にUbuntu環境を用意し、そのUbuntu内でImmichのコマンドを実行します。
つまり、ImmichをWindowsに直接インストールするのではなく、Windowsの中にあるUbuntu環境で動かすイメージです。
導入前に用意するもの
ImmichをWindowsメインPCに導入する前に、いくつか用意するものがあります。
WindowsメインPC
まずはWindows PCが必要です。
この記事では、普段使っているWindowsメインPCに導入する前提で進めます。
NASや専用サーバーは使いません。
ただし、写真や動画を大量に扱う場合は、ある程度の空き容量が必要です。
Googleフォトから移行する場合、数百GBから数TBになることもあります。
写真保存用のドライブ
この記事では、写真や動画の保存先としてFドライブを使います。
複数の外付けストレージを使用している場合、ドライブレターが変わると起動できません。
保存先に使用するドライブは、ドライブレターを固定化しておきましょう。
例として、Windows側に以下のフォルダを作ります。
F:\ImmichData
このフォルダに写真や動画を置いておきます。
Ubuntu側から見ると、このフォルダは以下になります。
/mnt/f/ImmichData
ここは何度も出てきます。
Windowsでは F:\ImmichData、Ubuntuでは /mnt/f/ImmichData です。
同じ場所ですが、見え方が違います。
ドライブレターは固定しておく
外付けHDDや増設ドライブを使う場合は、先にドライブレターを固定しておきましょう。

この記事では、写真や動画の保存先として F:\ImmichData を使います。
Windows側で F:\ImmichData として見えているフォルダは、Ubuntu側では以下のように見えます。
/mnt/f/ImmichData
つまり、Fドライブとして認識されていることが前提です。
もし後からドライブレターが変わって、FドライブではなくGドライブとして認識されると、Ubuntu側のパスも変わります。
Fドライブの場合:/mnt/f/ImmichData
Gドライブの場合:/mnt/g/ImmichData
この状態になると、.env の UPLOAD_LOCATION や、docker-compose.yml に追加した外部ライブラリのパスがズレて、Immichから写真フォルダが見えなくなる可能性があります。
Windowsでは、以下の流れでドライブレターを変更できます。
スタートボタンを右クリック
↓
ディスクの管理
↓
対象ドライブを右クリック
↓
ドライブ文字とパスの変更
↓
変更
↓
使用するドライブレターを選ぶ
一度ドライブレターを設定すると、Windowsは基本的にそのドライブへ同じ文字を割り当てようとします。

ただし、そのドライブを外している間に別のドライブが同じ文字を使っている場合は、別のドライブレターに変わることがあります。
そのため、Immich用の保存ドライブは、他の外付けHDDやUSBメモリと競合しにくい文字にしておくと安心です。
この記事では例としてFドライブを使いますが、すでにFドライブを別用途で使っている場合や、外付けドライブをよく差し替える場合は、PドライブやIドライブなどにしても問題ありません。
その場合は、記事内のパスを自分の環境に合わせて読み替えてください。
F:\ImmichData → P:\ImmichData
/mnt/f/ImmichData → /mnt/p/ImmichData
重要なのは、どのドライブレターを使うかではなく、Immichで指定したパスと実際のドライブレターを一致させることです。
SSD側とHDD側の空き容量も確認しておく
Immichを入れる前に、SSD側とHDD側の空き容量も確認しておいた方がいいです。
今回の構成では、Immich本体やDBまわりはUbuntu内の ~/immich 側、写真や動画本体はFドライブ側に置く形にしています。
ざっくり分けると、こんなイメージです。
SSD側:Ubuntu、Docker、Immich本体、DBまわり
HDD側:写真・動画本体、アップロード保存先、外部ライブラリ用フォルダ
SSD側は、写真や動画本体を置かない場合でも、ある程度の空き容量が必要です。
Dockerイメージ、コンテナ、Ubuntu環境、ImmichのDBなどが増えていくためです。
特に大量の写真や動画を読み込ませる場合、DBや関連データもそれなりに大きくなる可能性があります。
最低でも数十GB、できれば50GB以上はSSD側に余裕を見ておくと安心です。
数TB規模の写真・動画を扱うなら、100GB以上空けておけるとより安全です。
一方で、HDD側は写真や動画本体を置く場所になります。
こちらは、すでに持っている写真・動画の容量によって必要な空き容量が大きく変わります。
たとえば、手元の写真・動画が1TBあるなら、最低でも1TB以上の空き容量が必要です。
ただし、Immichにアップロードするデータや、サムネイルなどの生成データも増えていくため、元データぴったりの空き容量では少し不安です。
目安としては、以下のように考えると分かりやすいです。
写真・動画データが500GB → HDD側は最低700GB〜1TB程度あると安心
写真・動画データが1TB → HDD側は最低1.3TB〜1.5TB程度あると安心
写真・動画データが3TB → HDD側は4TB以上あると安心
もちろん、これはあくまで目安です。
外部ライブラリとして既存フォルダを読み込ませるだけなら、写真本体が二重にコピーされるわけではありません。
ただし、スマホアプリからImmichへアップロードする写真や動画、サムネイルなどの生成データは増えていきます。
そのため、HDD側は「今ある写真・動画が入ればOK」ではなく、今後増える分も含めて余裕を見ておいた方がいいです。
今回のようにWindowsメインPCでImmichを動かす場合は、
処理に関わる部分 → SSD側に余裕を持たせる
大容量の写真・動画 → HDD側に余裕を持たせる
という考え方で準備すると、あとから容量不足で困りにくくなります。
Docker Desktop
Docker DesktopをWindowsにインストールします。
ImmichはDocker Composeで動かすため、Docker Desktopは今回の中心になるアプリです。
WSL2とUbuntu
Windows上でUbuntuを使うために、WSL2とUbuntuを用意します。
すでにUbuntuを使っている人は、その環境を使っても大丈夫です。
初めての人は、Microsoft StoreからUbuntuを入れる方法が分かりやすいです。
手順1:FドライブにImmich専用フォルダを作る
最初に、Immichで使用するデータ置き場をWindows側に作っておきます。
この記事では、Fドライブ直下に以下のフォルダを作ります。
F:\ImmichData

さらに、その中に以下の2つのフォルダを作っておきます。
F:\ImmichData\upload
F:\ImmichData\Photos
それぞれの役割はこんな感じです。
F:\ImmichData\upload
Immich本体が使う保存先です。
スマホからアップロードした写真や動画、Immich側で生成されるサムネイルなど、Immichが管理するデータはここに入ります。
upload フォルダは、Immich本体が管理する保存先です。なぜ名前が
upload なのかは後述しますが、要は設定ファイル内の UPLOAD_LOCATION に合わせた名前です。Googleフォトから取り出した写真や、もともと持っている写真・動画をここに直接入れる用途ではありません。
既存の写真や動画をImmichに読み込ませたい場合は、下で説明する
Photos フォルダ側に置いて、外部ライブラリとして追加します。
F:\ImmichData\Photos
もともと自分で持っている写真や動画を置く場所です。
Googleフォトから取り出したデータや、外付けHDDに保存していた写真・動画をImmichに読み込ませたい場合は、この Photos フォルダに入れておきます。
つまり、ざっくり分けるとこんな形です。
F:\ImmichData
├─ upload ← Immichが使う保存先
└─ Photos ← 自分で用意した既存の写真・動画置き場
フォルダ名はシンプルにする
最初はフォルダ名をシンプルにした方がいいです。
たとえば、以下のようなフォルダ名は避けた方が無難です。
F:\My Photo Backup 2026
F:\写真データ\Googleフォト移行分
F:\Media\Photos\2026\Original
もちろん設定すれば使えると思いますが、最初から空白や日本語、深い階層を使うと、パス指定でミスしやすくなります。
特にImmichは、Windows側のパス、WSL側のパス、Docker Compose側のパスが絡んできます。
ここでフォルダ名を複雑にすると、あとで「どこのパスが間違っているのか」が分かりにくくなります。
まずは分かりやすく、以下のような形にしておくのがおすすめです。
F:\ImmichData\upload
F:\ImmichData\Photos
upload、既存の写真・動画を置く場所を Photos として進めます。正直に言うと、小文字と大文字が混在していることには後で気付きました。
ただ、フォルダ名としてはこのままでも問題なく使えます。大事なのは、あとで設定ファイルに書くパスと実際のフォルダ名を一致させることです。大文字小文字も含め。
手順2:Docker Desktopをインストールする
次に、WindowsにDocker Desktopをインストールします。
Docker Desktop公式
https://www.docker.com/ja-jp/products/docker-desktop/


ここで少し分かりにくいのが「AMD64」という表記です。
AMDと書かれていると、「Intel CPUのPCでも大丈夫なの?」と思うかもしれません。
結論として、一般的なIntel製CPU・AMD製CPUを使ったWindows PCであれば、基本的には AMD64版 を選べばOKです。
AMD64はAMD専用という意味ではなく、現在の多くのWindows PCで使われている64bit CPU向けの形式です。

ダウンロードした「Docker Desktop Installer.exe」を実行します。

Docker Desktopのインストール設定画面では、基本的に以下のように設定します。
All-users installation は、PC全体にDocker Desktopをインストールする設定です。
管理者権限が必要になりますが、通常はこちらを選びます。
Use WSL 2 instead of Hyper-V は、Hyper-VではなくWSL2を使ってDockerを動かす設定です。
この記事ではWSL2+UbuntuでImmichを動かすため、ここは必ずチェックしておきます。
Allow Windows Containers は、Windowsコンテナを使うための設定です。
ImmichではLinuxコンテナを使うため、ここはチェックしなくて大丈夫です。
Per-user installation (Beta) は、現在のユーザーだけにインストールするベータ版の設定です。
今回の記事では使用しません。
Add shortcut to desktop は、デスクトップにDocker Desktopのショートカットを作る設定です。
好みですが、邪魔なら後で消せばいいので今は作ってOKです。

インストール中は、Docker Desktopに必要なファイルの展開や設定が自動で進みます。
この画面では特に操作する必要はありません。完了するまで待ちます。

Docker Desktopのインストールが完了すると、Windowsの再起動を求められる場合があります。
開いているファイルや作業中の内容を保存しておきましょう。
再起動後、Docker Desktopを起動して初期設定を進めます。
なおDocker Desktopの初回起動時には、サインインや利用条件に関する画面が表示される場合があります。
今回のImmich導入では、Dockerアカウントへのサインインや有料プラン登録は必須ではありません。
画面に Skip や close が表示されている場合は、スキップして先へ進めます。
Docker Desktop初回起動時にWSLの更新を求められる場合がある

Docker Desktopを初回起動すると、環境によってはWSLの更新を求められる場合があります。
WSLは、Windows上でUbuntuなどのLinux環境を動かすための仕組みです。
今回の構成では、Docker DesktopとWSL2のUbuntuを連携させてImmichを動かすため、WSLまわりが古い状態だとDocker Desktopが正常に使えないことがあります。
この画面が表示された場合は、PowerShellからWSLを更新します。
Windowsの検索欄で「PowerShell」と入力し、PowerShellを起動します。
検索結果には「Windows PowerShell」と「PowerShell」が表示されることがあります。通常は「Windows PowerShell」を開けば問題ありません。
PowerShell 7など最新版のPowerShellを導入済みの場合は、一覧に表示される「PowerShell」を開いてもOKです。
この記事のImmich導入手順は、Windows標準のPowerShell 5.1でも進められます。
ただし、今後DockerやWSL、PowerShellスクリプトを使う機会が増えるなら、PowerShell 7を入れておくと便利です。
PowerShell 7はWindows PowerShell 5.1を上書きするものではなく、別アプリとして追加されます。

PowerShellを開いたら、次のコマンドを入力してEnterキーを押します。
wsl --update

更新が完了したら、Docker Desktopへ戻り「Try Again」をクリック。
それでもうまく反映されない場合は、Windows自体を再起動してから、もう一度Docker Desktopを開いてください。
うまくいったらもう一度PowerShellを使用するので、閉じなくてOKです。
手順3:WSL2とUbuntuを準備する
次に、Windows上でUbuntuを使えるようにします。
すでにUbuntuを入れている人、先ほどWSLのアップデートを済ませた人は、この手順は確認だけで大丈夫です。
PowerShellでWSLの状態を確認する
PowerShellを開き、以下のコマンドを実行します。
wsl -l -v
このコマンドは、Windowsに入っているWSL環境の一覧を表示します。
Ubuntuが入っていれば、以下のような表示になります。
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
ここで見たいのは、Ubuntuがあるかどうか。
そして VERSION が 2 になっているかどうかです。
VERSION が 2 ならWSL2です。

Ubuntuが入っていない場合はMicrosoft Storeからインストールする
まだUbuntuを入れていない場合は、Microsoft Storeからインストールします。

スタートメニューから Microsoft Store を開き、検索欄で Ubuntu と検索します。
検索結果にUbuntuがいくつか表示される場合がありますが、迷ったら通常の Ubuntu または Ubuntu 24.04 LTS を選べばOKです。

Ubuntuのページを開いたら、入手 または インストール をクリックします。
インストールが完了したら、そのまま「開く」ボタンか、スタートメニューから Ubuntu を起動します。

初回起動時は、Ubuntu内で使用するユーザー名とパスワードの設定を求められます。

ここで設定するユーザー名とパスワードは、Windowsのログイン情報とは別物です。
パスワード入力中は画面に文字が表示されませんが、入力はされています。
入力後にEnterキーを押せばOKです。
※後ほど使うので忘れないように!

設定が完了して、ユーザー名@PC名:~$ のような表示になれば、Ubuntuでコマンドを入力できる状態です。
手順4:Docker DesktopのWSL Integrationを確認する
ここはかなり重要です。
Docker Desktopを入れても、Ubuntu側からDockerを使えるとは限りません。
Docker DesktopのWSL Integrationが有効になっていないと、Ubuntu側で docker コマンドが使えないことがあります。
WSL IntegrationをONにする
Docker Desktopを開きます。
以下の順番で設定画面を開きます。
Settings
→ Resources
→ WSL Integration
ここでUbuntuが表示されているか確認します。
「Settings」はDocker Desktop上部のギアのアイコンです。
「Sign in」の左の左です。

Ubuntuが表示されている場合は、スイッチをONにします。

「Apply & restart」で設定反映です。
Ubuntu側でdockerコマンドを確認する
Ubuntuを開いて、以下を実行します。
docker --version
Dockerのバージョンが表示されればOKです。

次に、Dockerと接続できるか確認します。
docker ps
コンテナ一覧が表示されれば、Ubuntu側からDockerを操作できています。

ここで以下のようなエラーが出る場合は、まだDocker DesktopとUbuntuの連携がうまくいっていません。
The command 'docker' could not be found in this WSL 2 distro.
または、以下のようなエラーが出る場合もあります。
failed to connect to the docker API at unix:///var/run/docker.sock
この場合は、Immichの設定を見直す前に、Docker Desktopが起動しているか、Docker DesktopのWSL IntegrationでUbuntuとの連携が有効になっているかを確認します。
Docker Desktopを起動した直後は、裏側の準備がまだ終わっていない場合もあります。少し待ってから、もう一度Ubuntuで docker --version や docker ps を実行してみてください。
手順5:Ubuntu内にImmich用フォルダを作る
Ubuntu内にImmich用の作業フォルダを作ります。
この記事では、Immich本体の場所を以下にします。
~/immich
~ は、Ubuntu内の自分のホームフォルダを意味します。
Ubuntuで以下を実行します。
mkdir -p ~/immich
cd ~/immich
これで、Immich用のフォルダを作成し、その中に移動できます。

今後、Immichを起動する時は基本的にこのフォルダで作業します。
cd ~/immich

手順6:docker-compose.ymlと.envを用意する
Immichは、docker-compose.yml と .env という設定ファイルを使って起動します。
docker-compose.ymlとは
docker-compose.yml は、Immichに必要なコンテナをどう起動するかを書くファイルです。
Immich本体、DB(データベース)、Redis、機械学習用コンテナなどをまとめて管理します。
Redisは、Immichの処理をスムーズに回すための一時的なデータ置き場です。
写真データ本体を保存する場所ではないので、「Immichに必要な裏方の部品」と考えればOKです。
.envとは
.env は、保存先やタイムゾーン、バージョン、DBパスなどを書く設定ファイルです。
簡単に言うと、Immichの環境設定メモのようなものです。
公式のファイルを取得する
Ubuntuの ~/immich フォルダ内で、以下を実行します。
curl -L -o docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
公式の docker-compose.yml を取得します。

次に、.env の元になるファイルを取得します。
curl -L -o .env https://github.com/immich-app/immich/releases/latest/download/example.env

これで、~/immich 内に以下の2つができます。
docker-compose.yml
.env
確認する場合は、以下を実行します。
ls -la
一覧に docker-compose.yml と .env が表示されていればOKです。

手順7:.envを編集する
次に、.env を編集します。
Ubuntuで以下を実行します。
nano .env
nano は、Ubuntu上で使えるテキストエディタです。
画面上で .env の内容を編集できます。
変更する主な項目
この記事で特に見る項目は以下です。
UPLOAD_LOCATION=/mnt/f/ImmichData/upload
DB_DATA_LOCATION=./postgres
IMMICH_VERSION=release
DB_USERNAME=好きなID
DB_PASSWORD=好きなパスワード
DB_DATABASE_NAME=好きなデータベース名
環境によって項目名や並び順が違う場合があります。

UPLOAD_LOCATION
UPLOAD_LOCATION は、Immichにアップロードした写真や動画などを保存する場所です。
この記事では以下の例にします。
UPLOAD_LOCATION=/mnt/f/ImmichData/upload
これは、Windows側で見るとだいたい以下のような場所になります。
F:\ImmichData\upload
外部ライブラリとして F:\ImmichData\Photos (既存の写真・動画データ等)を読み込ませる場合でも、Immich本体が使うアップロード先は別に用意しておいた方が分かりやすいです。
UPLOAD_LOCATION は、Immich本体が管理するファイル保存先です。スマホからアップロードした写真や動画のほか、Immichが生成するサムネイルなども、この保存先の中に作られます。
そのため、既存の写真・動画を置いている
/mnt/f/ImmichData/Photos をここに指定するのではなく、この記事では /mnt/f/ImmichData/upload をImmich本体用として分けています。既存データは、あとで外部ライブラリとしてImmichに追加します。
DB_DATA_LOCATION
DB_DATA_LOCATION は、ImmichのDBを保存する場所です。
この記事では以下にします。
DB_DATA_LOCATION=./postgres
写真や動画本体はFドライブに置きます。
一方で、DBはImmich本体と同じ Ubuntu内の ~/immich 配下に置く方針です。
./postgres は、現在作業している ~/immich フォルダから見た相対パスなので、Ubuntu上から見た実際の保存先は ~/immich/postgres となります。
この方が、docker-compose.yml、.env、DBフォルダが ~/immich 配下にまとまり、あとから場所を確認しやすくなります。
なぜDBはSSD側、写真・動画本体はHDD側にしたのか
今回の構成では、Immich本体やDBまわりはUbuntu内の ~/immich (SSD側)に置き、写真や動画本体はFドライブのHDD側に保存する形にしています。
理由は、CPU性能やストレージの読み書き速度を活かしたい部分と、単純に大容量を確保したい部分を分けたかったからです。
Immichは、写真や動画をただ保存するだけのソフトではありません。
サムネイル生成、メタデータ抽出、顔認識、スマートサーチなど、裏側でいろいろな処理が動きます。
こうした処理に関わるImmich本体やDBまわりは、できるだけ高速なSSD側に置いた方が扱いやすいと考えました。
一方で、写真ファイルや動画ファイルそのものは、とにかく容量を使います。
Googleフォトから移行したデータやスマホのバックアップをまとめていくと、数百GBから数TB規模になることもあります。
そのため今回は、以下のようにすみ分けました。
Immich本体・DB・管理情報 → SSD側
写真・動画ファイル本体 → HDD側
要するに、処理速度を活かしたい頭脳部分はSSD側、大容量を確保したい記憶域はHDD側という分け方です。
NASや専用サーバーではなく、WindowsメインPCでImmichを動かすなら、メインPCのCPU性能や高速SSDを活かしつつ、大容量の写真・動画データはHDDに逃がす構成が現実的だと感じました。
データベース系
→ SSD側(
DB_DATA_LOCATION / postgres)→ 写真の情報、ユーザー情報、アルバム情報、解析結果、検索用データなど
既存の写真・動画データ
→ HDD側(
Photos)→ Googleフォトから取り出した写真、もともと持っている写真・動画など
Immichが保存・生成するファイル
→ HDD側 (
upload)→ スマホからアップロードした写真・動画、サムネイル、変換済み動画、プロフィール画像など
この3つを分けて考えておくと、あとで
.env や docker-compose.yml のパスを確認するときに混乱しにくくなります。
IMMICH_VERSION
IMMICH_VERSION は、使用するImmichのバージョンを指定する項目です。
今回は、以下のように設定します。
IMMICH_VERSION=release
release は、Immichの通常リリース版を使う指定です。

Immichには v3 のようにバージョンを指定する方法もありますが、私の環境では v3 指定でうまく起動しない場面がありました。
そのため、今回の記事では release を推奨として進めます。
この記事の作成時点ではImmich v3系で動作確認していますが、Immichは開発が活発なため、今後のバージョンによって画面や設定が変わる可能性があります。
nanoの保存方法
編集が終わったら、以下の操作で保存します。
Ctrl + O (^O)
Enter
Ctrl + X (^X)
Ctrl + O で保存。
Enter でファイル名を確定。
Ctrl + X でnanoを終了します。
手順8:DB保存先フォルダを作る
.env でDB保存先を ./postgres にしたので、Ubuntu側でフォルダを作っておきます。
この時点で ~/immich にいる前提なので、以下を実行します。
mkdir -p ./postgres
これで、~/immich/postgres フォルダが作成されます。

./postgres は「今いるフォルダの中にある postgres フォルダ」という意味です。
今回の手順では ~/immich 内で作業しているため、実際の場所は以下になります。
~/immich/postgres
ちゃんとフォルダ出来たかな?と心配な場合は ls -la コマンドでimmichフォルダ内一覧を取得してみましょう。
先ほどのスクリーンショットのように、postgresが追加されていれば成功です。
簡単に言うと、Immichの管理情報を保存する場所を作っている作業です。
手順9:FドライブがUbuntuから見えるか確認する
次に、写真フォルダがUbuntu側から見えるか確認します。
Windows側で作ったフォルダは以下です。
F:\ImmichData\Photos
Ubuntu側では以下になります。
/mnt/f/ImmichData/Photos
Ubuntuで以下を実行します。
ls /mnt/f
Fドライブの中身が表示されれば、UbuntuからFドライブが見えています。
次に、写真フォルダを確認します。
ls /mnt/f/ImmichData/Photos
ここで中身が表示されればOKです。

まだ写真を入れていない場合は、何も表示されないかもしれません。
その場合でも、エラーが出なければフォルダ自体は見えています。
Path does not existを防ぐために必ず確認する
Immichの外部ライブラリでよくあるエラーがこれです。
Invalid import path: Path does not exist (ENOENT)
これは、Immichから見てそのパスが存在しないという意味です。
Windows上に F:\ImmichData\Photos が存在していても、UbuntuやDockerコンテナから見えていなければ、Immichには存在しない扱いになります。
そのため、外部ライブラリを追加する前に、Ubuntu側で /mnt/f/ImmichData/Photos が見えるか確認しておくのが大事です。
手順10:docker-compose.ymlを編集する
ここでは、以下の3つを確認します。
- 外部ライブラリ用のフォルダを追加する
- ポート番号を確認する
- restart設定を “no” に変更する
Immichで既存の写真フォルダを読み込ませるには、外部ライブラリを使います。
外部ライブラリを使う場合、Immichコンテナから写真フォルダが見えるように、docker-compose.yml にフォルダのマウント設定を追加します。
まずdocker-compose.ymlを開く

Ubuntuで以下を実行します。
nano docker-compose.yml
immich-serverのvolumesを探す
docker-compose.yml の中から、immich-server の volumes を探します。

環境やバージョンによって書き方が少し違う場合がありますが、だいたい以下のような部分があります。
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/data
ここに、外部ライブラリ用のフォルダを追加します。
※Tabキーのインデントで列を揃えないでください!
見た目が同じように見えても、Tabが混ざると設定ファイルの読み込みエラーになることがあります。

実際に自分の写真・動画データが詰まっている(これから詰める)フォルダを指定します。
F:\ImmichData\Photos\20260703.jpg
だったり
F:\ImmichData\Photos\2026\0703.jpg
こういう状態になっていればOKです。
実際に追加するコードは以下です。
- /mnt/f/ImmichData/Photos:/external/photos:ro
最終的には、イメージとして以下のようになります。
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/data
- /mnt/f/ImmichData/Photos:/external/photos:ro
※実際の docker-compose.yml の内容は、Immichのバージョンによって違う可能性があります。既存の行を消さずに、外部ライブラリ用の行を追加する形で編集してください。

なぜ /external/photos にしているのか
今回の設定では、外部ライブラリのマウント先を /external/photos にしています。
これはImmich公式で決められた専用パスではありません。この記事内で、外部ライブラリ用の場所だと分かりやすくするために決めた、Immichコンテナ内のパスです。
docker-compose.yml のマウント設定は、左側と右側で意味が違います。
/mnt/f/ImmichData/Photos:/external/photos:ro
左側の /mnt/f/ImmichData/Photos は、Ubuntuから見た実際の写真フォルダです。
右側の /external/photos は、Immichコンテナ内から見える写真フォルダです。
Immichの外部ライブラリ画面に入力するのは、右側の /external/photos です。
最初は少し分かりにくいですが、ここを分けておくと、あとから写真以外のフォルダを追加したくなったときにも管理しやすくなります。
たとえば、今後ゲーム動画や作業用の写真・動画を分けて読み込ませたい場合は、次のように追加できます。
/mnt/f/ImmichData/Photos:/external/photos:ro/mnt/f/ImmichData/Games:/external/games:ro/mnt/f/ImmichData/Works:/external/works:ro
この場合、Immichの外部ライブラリ画面で指定するパスは、それぞれ次のようになります。
/external/photos/external/games/external/works
最初からここまで分ける必要はありません。
まずは写真用の /external/photos だけで進めて、Immichの操作に慣れてきたら、ゲーム動画用、作業用素材用のように少しずつ増やしていくのが安全です。
外部ライブラリには、ImmichData や Media のような親フォルダを丸ごと指定しない方が安全です。
親フォルダの中に upload、library、thumbs、encoded-video などが含まれていると、Immich自身が作ったサムネイルやエンコード済み動画まで読み込んでしまうことがあります。
私の初回導入時も、この指定が原因でジョブがなかなか終わらない状態になりました。外部ライブラリには、読み込ませたい写真・動画フォルダだけを指定してください。
※私はこれで2日無駄にしました
:roの意味
最後の :ro は読み取り専用という意味です。
- /mnt/f/ImmichData/Photos:/external/photos:ro
読み取り専用にしておくと、Immich側から元の写真フォルダを書き換えにくくなります。
最初は :ro を付けておく方が安全です。
ただし、XMPサイドカーなどを書き込みたい場合は、読み取り専用ではなく書き込み可能にする必要があります。
しかし最初から難しく考える必要はありません。
まずは読み取り専用で外部ライブラリを読み込ませるのがおすすめです。
ポート番号を確認する
次に、ブラウザでImmichを開くためのポート番号を確認します。

先述しましたが、この記事ではポート番号は8080として進めます。
ports:
- "8080:2283"
この場合、ブラウザで開くURLはこちらです。
http://localhost:8080
ここは必ず一致させてください。
8080:2283の意味
8080:2283 は、ざっくり言うとこういう意味です。
Windows側の8080番ポート → Immichコンテナ側の2283番ポート
つまり、ブラウザでは http://localhost:8080 にアクセスします。
すると、DockerがImmichコンテナ内の2283番ポートにつないでくれます。
2283:2283にする場合
初期状態では 2283:2283 に設定されていることが多いです。
私の環境では、たまたまWindowsの動的ポートと競合して起動できなかったため、8080:2283 に変更して運用しています。
2283:2283 のまま問題なく動作する場合は、そのまま使っても大丈夫です。
ports:
- "2283:2283"
ブラウザで開くURLは以下です。
http://localhost:2283
この記事では混乱を避けるため、本文では 8080:2283 と http://localhost:8080 に統一します。
実際のスクリーンショットに localhost:2283 や 192.168.1.15:2283 が写っている場合は、本文とのズレに注意してください。
restart設定を “no” に変更する
docker-compose.yml を開いたら、外部ライブラリ用のマウント設定とあわせて、restart の設定も確認しておきます。
Immichの docker-compose.yml には、サービスごとに restart が書かれている場合があります。
ここが restart: always のままだと、WindowsやDocker Desktopの起動時に、Immich関連のコンテナが自動で起動しようとします。
NASや専用サーバーのように24時間動かす環境なら便利ですが、この記事では普段使いのWindowsメインPCで、必要なときだけImmichを起動する運用を前提にしています。
私の環境では、写真や動画の保存先にHDDを使っています。
そのため、Windows起動直後に保存先ドライブがまだ認識されていなかったり、Docker DesktopやWSL2の準備が終わっていなかったりすると、Immichが先に起動しようとしてトラブルになる事がありました。
たとえば、保存先のパスが見つからない、外部ライブラリが読み込めない、起動したはずなのにブラウザで開けない、といった状態です。
なので、この記事では restart を次のように変更して進めます。
restart: "no"
restart: no でも動く場合がありますが、この記事では "no" のようにクォート付きで書きます。
設定ファイル内で no が紛らわしく扱われるのを避けるためです。
まず、immich-server の中にある restart を確認します。

restart は、ports や depends_on、healthcheck と同じ階層に置きます。healthcheck の中に入れないように注意してください。
次に、immich-machine-learning 側の restart も確認します。

さらに、redis の restart も同じように変更します。

最後に、database 側の restart も確認します。

このように、Immich関連のコンテナは、できるだけ同じ方針でそろえておいた方が分かりやすいです。
今回の構成では、必要なときに自分で起動します。
docker compose up -d
停止するときは、以下を使います。
docker compose down
つまり、この記事ではこういう考え方です。
WindowsメインPCで、必要なときだけImmichを起動する場合。
restart: "no"
NASや専用サーバーで、24時間動かし続ける場合。
restart: always
今回はWindowsメインPC向けなので、restart: "no" にして進めます。
手順11:Immichを起動する
ここまでできたら、Immichを起動します。
Ubuntuでこのコマンドを入力してください。
docker compose up -d
これでImmich関連のコンテナが起動します。

docker compose up -d は、Immichに必要なコンテナをまとめて起動するコマンドです。
-d はバックグラウンドで動かす指定です。
つまり、ターミナルを開きっぱなしにしなくても、裏側でImmichが動くようになります。
初回起動は時間がかかる

初回起動時は、Immichに必要なDockerイメージをダウンロードします。
そのため、回線速度やPC性能によっては少し時間がかかります。
画面にいろいろなログが流れても、基本的には待てば大丈夫です。
途中でエラーが出た場合は、エラーメッセージを見て原因を確認します。
docker compose up -d でエラーが出る場合は、Docker Desktopの起動状態やWSL Integrationを確認します。よくあるエラーと対処法は、別記事で詳しくまとめています。Immich導入時によくあるエラーと対処法を見る
手順12:起動状態を確認する
Immichが起動したか確認するには、以下を実行します。
docker ps
起動中のコンテナ一覧が表示されます。

Immich関連のコンテナが表示されていればOKです。
※画像では cloudflared も表示されていますが、Cloudflare Tunnelはまだ使用していないため表示されなくて問題ありません。
たとえば、以下のようなコンテナが見えるはずです。
immich_server
immich_postgres
immich_redis
immich_machine_learning
環境やバージョンによって表示名は多少違う場合があります。
ログを確認する場合
うまく起動しない場合は、ログを確認します。
docker compose logs -f
特定のコンテナだけ見る場合は、このような命令になります。
docker compose logs -f immich-server
docker compose logs -f をそのまま実行すると、過去のログが大量に表示される場合があります。
見づらい場合は、直近100行だけ表示する --tail=100 を付けるのがおすすめです。
docker compose logs -f --tail=100
特定のコンテナだけ確認する場合は、以下のように指定します。
docker compose logs -f --tail=100 immich-server
ログを止める時は、このコマンドです。
Ctrl + C
手順13:ブラウザでImmichを開く
コンテナが起動したら、ブラウザでImmichを開きます。
この記事の設定では、以下のURLにアクセスします。
http://localhost:8080
初回起動時は、管理者ユーザーの作成画面が表示されます。

ここで作成した最初のユーザーが、Immichの管理者になります。
メールアドレス、名前、パスワードなどを入力してアカウントを作成します。
登録完了すると、ログイン画面へ移行します。

初回起動設定をお好みで
初回設定時に、必要であればストレージテンプレートを設定しておきます。

ストレージテンプレートは、Immichにアップロードした写真や動画を、どのようなフォルダ構成で保存するかを決める設定です。
こだわりが無ければこの程度の指定がオススメです。
{{y}}/{{MM}}/{{filename}}
この設定にすると、年/月ごとにフォルダが分かれ、最後に元のファイル名が入ります。

たとえば、2026年7月の写真なら、この様に保存・整理されます。
ImmichData
└─ upload
└─ 2026
└─ 07
└─ IMG_0001.jpg
外部ライブラリとして読み込ませる既存のPhotosフォルダは、この設定で勝手に整理されるわけではありません。
主に、スマホアプリなどからImmichへアップロード・バックアップする写真や動画の保存先整理に関係する設定です。
開けない場合はポート番号を確認する
もしブラウザで開けない場合は、まずポート番号を確認してください。
docker-compose.yml のポート設定が、
ports:
- "8080:2283"
この状態なら、開くURLは
http://localhost:8080
と、なります。
docker-compose.yml のポート設定が、
ports:
- "2283:2283"
この状態なら、開くURLは
http://localhost:2283
Immichが起動しているのに開けない場合、ポート番号のズレが原因になっていることがあります。
手順14:外部ライブラリを作成する

管理画面を開き、ライブラリを作成します。

ライブラリが作成できました。

下にスクロールして、「フォルダーを追加」をクリック。
インポートパスに /external/photos を追加します。

今回の例では、Windows側に生成済みのPhotosフォルダを読み込ませます。
F:\ImmichData\Photos
Immich上ではこう指定します。
/external/photos
Ubuntu側からは /mnt/f/ImmichData/Photos
この様に見えてますが、Immich側からは/external/photos
ちょっとややこしいですが、違うパスでは読み込めないってだけなので、そんなに深く考えなくて大丈夫です。
手順15:外部ライブラリをスキャンする

外部ライブラリを追加したら、「スキャン」ボタンを押してスキャンを開始します。
スキャンすると、Immichが指定フォルダ内の写真や動画を検出します。
ファイル数が少なければすぐ終わります。
ただし、大量の写真や動画を入れている場合は時間がかかります。
初回スキャン後はジョブ処理が走る

外部ライブラリを読み込ませると、Immichの裏側でいろいろな処理が動きます。
代表的な処理は以下です。
- サムネイル生成
- メタデータ抽出
- スマートサーチ
- XMPメタデータ処理
- 顔認識
- 機械学習関連処理
これらは、写真や動画をImmich上で快適に扱うための処理です。
数百枚程度ならそこまで気にならないかもしれません。
しかし、数万枚、数十万枚、数TB規模になるとかなり時間がかかります。
ジョブ数を上げすぎるとHDDが詰まることもある
Immichでは、外部ライブラリを読み込ませた後に、サムネイル生成、メタデータ抽出、顔認識、スマートサーチなどのジョブが実行されます。
管理画面からジョブの同時実行数を調整できますが、最初はデフォルト設定のまま進めるのがおすすめです。

同時実行数を増やすと処理が早く終わる場合もありますが、写真や動画本体をHDDに置いている場合は、HDDの読み書きが先に詰まることがあります。
タスクマネージャーでFドライブの使用率が100%付近に張り付いている場合は、ジョブ数を増やすより、少し下げた方が安定することもあります。
CPUに余裕がある → 少し増やしてもOK
HDD使用率が100%付近 → 増やしすぎ注意
PC全体が重い → ジョブ数を下げる
初回スキャンは時間がかかります。
無理に一気に終わらせようとせず、PCの負荷を見ながら調整しましょう。
サムネイルが出るまで待つ
外部ライブラリを追加した直後は、写真一覧にサムネイルがすぐ表示されないことがあります。
これは異常とは限りません。
裏側でサムネイル生成が進んでいるだけの可能性があります。
サムネイル生成が進むと、写真タイムラインがかなり見やすくなります。
初回スキャン直後に「重い」「表示されない」と判断せず、ジョブ処理が落ち着くまで待つのがおすすめです。
Immich起動後に確認するジョブ処理
Immichが起動し、外部ライブラリを追加したら、ジョブ画面も確認しておくと安心です。
Immichは写真を読み込んだ後、裏側でいろいろな処理を行います。
サムネイル生成
サムネイル生成は、写真一覧に表示する小さい画像を作る処理です。
これが終わるまでは、写真一覧がうまく表示されないことがあります。
メタデータ抽出
メタデータ抽出は、撮影日時、カメラ情報、位置情報などを読み取る処理です。
写真の並び順や詳細情報に関係します。
スマートサーチ
スマートサーチは、写真の内容を検索しやすくするための処理です。
便利ですが、大量の写真があると処理に時間がかかります。
処理中はCPUやディスク負荷が上がる

大量の写真や動画を読み込ませると、CPUやディスク使用率が上がります。
これは異常とは限りません。
Immichがサムネイル生成や機械学習関連の処理をしているためです。
私のように数TB規模で使う場合、初回処理はかなり動きます。
最初は焦らず、ジョブが落ち着くまで待つのがおすすめです。
導入完了:お疲れさまでした

という場合もあると思います。
WindowsメインPCでImmichを動かす場合、Immich本体よりも、Docker Desktop・WSL2・Ubuntu・保存先ドライブの連携でつまずくことがあります。
私自身相当失敗してます。
うまく起動しない場合
Immichがうまく起動しない場合は、まず以下を確認してください。
- Docker Desktopが起動しているか
- Docker DesktopのWSL IntegrationでUbuntuが有効になっているか
- Ubuntuで
docker --versionやdocker psが実行できるか - FドライブがUbuntu上で
/mnt/fとして見えているか docker-compose.ymlのパス指定に間違いがないか- ブラウザで開くURLとポート番号が合っているか
Fドライブが見えているか確認する場合は、Ubuntuで以下を実行します。
ls /mnt/f
または、詳しく確認したい場合は以下でもOKです。
ls -la /mnt/f
このあたりで問題がある場合、Immich本体ではなく、Docker Desktop・WSL2・Ubuntu・Windows側ドライブの連携で止まっている可能性があります。
個別のエラー別対処法まで入れると長くなるため、別記事でまとめます。
スマホアプリからも使える
Immichはスマホアプリからも使えます。
スマホにImmichアプリを入れて、サーバーURL、メールアドレス、パスワードを入力すればログインできます。
同じ家庭内LANから使う場合、スマホ側で指定するURLは http://localhost:8080 ではありません。
localhost はその端末自身を指すため、スマホからWindowsメインPC上のImmichへ接続する場合は、PCのローカルIPアドレスを使います。
たとえば、WindowsメインPCのIPアドレスが 192.168.1.15 で、この記事と同じく 8080:2283 にしている場合は、以下のように指定します。
http://192.168.1.15:8080
ログインできたら、スマホ内の写真や動画をImmichへバックアップする設定もできます。
外出先からアクセスしたい場合は、Cloudflare Tunnelなどの外部公開設定が別途必要になります。
この辺も詳細は別記事でまとめます。
迷ったらここ!フォルダ構成まとめ
色々複雑なパスが出てきて非常に迷子になりやすいと思うので、簡単にまとめておきます。
Windows側で作るフォルダ
F:\ImmichData\uploadF:\ImmichData\PhotosUbuntuターミナルから見たパス
/mnt/f/ImmichData/upload/mnt/f/ImmichData/Photos.env で指定するアップロード先
UPLOAD_LOCATION=/mnt/f/ImmichData/upload.env で指定するデータベース保存先
DB_DATA_LOCATION=./postgres※
~/immich フォルダ内で作業している場合、実際には ~/immich/postgres が使われます。docker-compose.yml で追加する外部ライブラリ用のマウント
/mnt/f/ImmichData/Photos:/external/photos:roImmichの外部ライブラリで指定するパス
/external/photos
Immichは便利だがバックアップではない
ここはかなり大事です。
Immichは便利です。
Googleフォトのように写真を見られます。
スマホからアップロードできます。
外部ライブラリも扱えます。
サムネイル生成やスマートサーチもあります。
ただし、Immichを入れたからバックアップ完了ではありません。
Immichは写真管理ソフトです。
写真や動画を見やすく整理したり、検索しやすくしたりするための環境です。
保存先のHDDやSSDが壊れたら、写真本体は消えます。
DBが壊れたら、Immich上の管理情報が失われる可能性もあります。
WindowsメインPCが壊れたら、Immich環境ごと使えなくなる可能性もあります。
DBバックアップと写真本体のバックアップは別
DBには、Immich上の管理情報が入っています。
しかし、DBのバックアップだけでは写真や動画本体は守れません。
写真本体が F:\ImmichData\Photos にあるなら、そのフォルダ自体も別途バックアップする必要があります。
3-2-1バックアップを意識する
大事な写真を守るなら、3-2-1バックアップを意識した方がいいです。
3-2-1バックアップとは、ざっくり言うと以下の考え方です。
- データを3つ持つ
- 2種類以上の媒体に保存する
- 1つは別の場所に置く
たとえば、以下のような構成です。
1つ目:メインPCのFドライブ
2つ目:外付けHDDまたはNAS
3つ目:別の場所のHDD、クラウド、実家保管など
Googleフォトをやめるということは、Googleに任せていた保存責任を自分で持つということです。
自由度は上がりますが、その分バックアップは自分で考える必要があります。
WindowsメインPCでImmichを使って感じたこと
導入して実際に使ってみると、Immich自体はかなり便利でした。
写真タイムラインが表示され、外部ライブラリを読み込めて、サムネイルやメタデータ処理が進むと、かなりGoogleフォトに近い感覚で使えます。
NASやミニPCを買わずに、普段使っているWindowsメインPCでここまで動くのは普通に面白いです。
ただし、WindowsメインPC運用は起動まわりが大事です。
Docker Desktopが完全に起動していない。
WSL IntegrationがOFFになっている。
Ubuntu側でDockerに接続できない。
Fドライブが見えていない。
ポート番号がズレている。
このあたりで簡単に沼ります。
逆に言えば、ここを押さえればかなり安定します。
特に、この流れを意識するだけでトラブルはかなり減りました。
Docker Desktop起動確認
↓
Ubuntu側でdocker ps確認
↓
Fドライブ確認
↓
cd ~/immich
↓
docker compose up -d
↓
ブラウザでImmichを開く
毎回コマンド入力するのは面倒だった
ここまでの手順で、WindowsメインPCにImmichを導入できたと思いますがいかがでしょうか?
ただ、実際に運用してみると、毎回コマンドを打つのが面倒になってきます。
基本の起動コマンドは、ここまで来られたらもうお馴染みですが
cd ~/immich
docker compose up -d
慣れれば簡単です。
でも、実際にはその前にDocker Desktopの起動確認、WSL側のDocker接続確認、Fドライブ確認もしたいです。
特に、Docker Desktop起動直後に急いでImmichを起動すると失敗しやすかったので、起動順を待ってくれる仕組みが欲しくなりました。
そこで、Immichの起動・停止を簡略化するbat/PowerShellツールを作りました。
基本的に触るのは、起動用bat・停止用batファイルのみです。
内部ではPowerShellスクリプトを使い、Docker Desktop、WSL、写真フォルダ、Immichの起動を順番に確認する形にしています。

このツールについては、次回か、あるいはそのまた次回の記事で詳しく紹介します。
まとめ:NASなしでもImmichは導入できる。ただし起動順と保存先に注意
今回は、NASなしでWindowsメインPCにImmichを導入する方法をまとめました。
要点は多いですがこんな感じです。
- ImmichはNASやミニPCなしでも導入できる
- WindowsメインPC+Docker Desktop+WSL2+Ubuntuで動かせる
- Immich本体はUbuntu内の
~/immichに置いた - 写真フォルダはWindows側
F:\ImmichData\Photos、Ubuntu側/mnt/f/ImmichData/Photos、Immich側 /external/photos として扱う - DB保存先は ./postgres にした
docker-compose.ymlと.envを使って設定するdocker compose up -dでImmichを起動する- ブラウザURLはポート設定と必ず合わせる
- この記事では
8080:2283とhttp://localhost:8080で統一した - 外部ライブラリではWindowsパスではなくUbuntu側でもなく、Immichからみたパスを指定する
Invalid import pathはImmichからパスが見えていない時に出やすい- Docker DesktopのWSL IntegrationがOFFだとUbuntu側でdockerコマンドが使えない
- Docker Desktop起動直後に急いでImmichを起動すると失敗しやすい
- Immichは便利だがバックアップではない
- 写真本体とDBのバックアップは別で考える必要がある
Immichは、Googleフォト代替としてかなり魅力があります。
ただし、Googleフォトのように全部おまかせで動くクラウドサービスではありません。
自分のPC、自分のストレージ、自分のDocker環境で動かす以上、保存先やバックアップ、起動順は自分で管理する必要があります。
それでも、NASやミニPCを買う前に、まずWindowsメインPCで試せるのはかなり大きなメリットといえるでしょう。
私も最初は、メインPCで必要な時だけ起動する運用でどこまで使えるのか、使えたらいいなと期待と不安が半々といった感じでした。
でも実際に使ってみると、個人利用なら十分現実的だし便利です。
次回は、毎回の起動・停止を楽にするために作ったImmich起動・停止ツールについて紹介します。
(あるいはよくあるエラーをまとめるかもしれません。)
WindowsメインPCでImmichを使うなら、導入後は起動・停止を簡略化しておくとかなり快適になります。
なお、今回この記事の手順で詰まった場所があれば、エラー文と「どの手順で止まったか」をコメントで教えてください。実際に確認できたものは、記事にも追記します。





コメント