【2026年版】ImmichをNASなしでWindowsメインPCに導入する方法|Docker Desktop+WSL2+Ubuntu

ImmichをWindows PCへ導入する方法を解説した2026年版ガイドのアイキャッチ画像 Immich・自宅サーバー
広告を含む場合があります。
⏱ この記事は約55分で読めます(約32,900字)

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.yml2283:2283 にする場合は、ブラウザで開くURLは http://localhost:2283 になります。
(標準では恐らくそうなっています。)

この記事では分かりやすさを優先して、基本的に 8080:2283http://localhost:8080 で説明します。

WindowsメインPCで起動したImmichの写真タイムライン画面
Immichで写真タイムラインが表示されている完成形。

この記事で作るImmich環境

今回作る環境は、WindowsメインPC上でImmichを動かす構成です。

NASやミニPCを用意するのではなく、普段使っているWindows PCを写真サーバー兼用にします。

使用環境

私の実環境は以下です。

項目内容
OSWindows
Docker環境Docker Desktop
Linux環境WSL2+Ubuntu
Immichバージョンv3.0.0
CPUIntel Core Ultra 9 285K
GPURTX 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や増設ドライブを使う場合は、先にドライブレターを固定しておきましょう。

Windowsのディスクの管理でFドライブを右クリックし、ドライブ文字とパスの変更を選択している画面
Windowsの「ディスクの管理」でImmich用の保存ドライブを右クリックし、「ドライブ文字とパスの変更」を開きます。外付けHDDや増設ドライブを使う場合は、ここからドライブレターを固定しておくと安心です。

この記事では、写真や動画の保存先として F:\ImmichData を使います。

Windows側で F:\ImmichData として見えているフォルダは、Ubuntu側では以下のように見えます。

/mnt/f/ImmichData

つまり、Fドライブとして認識されていることが前提です。

もし後からドライブレターが変わって、FドライブではなくGドライブとして認識されると、Ubuntu側のパスも変わります。

Fドライブの場合:/mnt/f/ImmichData
Gドライブの場合:/mnt/g/ImmichData

この状態になると、.envUPLOAD_LOCATION や、docker-compose.yml に追加した外部ライブラリのパスがズレて、Immichから写真フォルダが見えなくなる可能性があります。

Windowsでは、以下の流れでドライブレターを変更できます。

スタートボタンを右クリック

ディスクの管理

対象ドライブを右クリック

ドライブ文字とパスの変更

変更

使用するドライブレターを選ぶ

一度ドライブレターを設定すると、Windowsは基本的にそのドライブへ同じ文字を割り当てようとします。

WindowsでImmich用ドライブのドライブ文字をFに設定している画面
Immich用の保存ドライブに使うドライブレターを指定します。この記事では例としてFドライブを使うため、写真フォルダは F:\ImmichData、Ubuntu側では /mnt/f/ImmichData として扱います。

ただし、そのドライブを外している間に別のドライブが同じ文字を使っている場合は、別のドライブレターに変わることがあります。

そのため、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
Fドライブ直下に作ったImmichDataフォルダ
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

💡 一言メモ
この記事では、Immichが使う保存先を upload、既存の写真・動画を置く場所を Photos として進めます。

正直に言うと、小文字と大文字が混在していることには後で気付きました。
ただ、フォルダ名としてはこのままでも問題なく使えます。大事なのは、あとで設定ファイルに書くパスと実際のフォルダ名を一致させることです。大文字小文字も含め。

手順2:Docker Desktopをインストールする

次に、WindowsにDocker Desktopをインストールします。

Docker Desktop公式
https://www.docker.com/ja-jp/products/docker-desktop/

DockerDesktop公式サイトの画像
Docker Desktop公式サイト。「Docker Desktopをダウンロードする」でダウンロードできる。
Docker Desktopの公式ダウンロードページでWindows AMD64版を選択する画面
Docker Desktop公式サイトから、Windows向けのAMD64版インストーラーをダウンロードします。

ここで少し分かりにくいのが「AMD64」という表記です。

AMDと書かれていると、「Intel CPUのPCでも大丈夫なの?」と思うかもしれません。

結論として、一般的なIntel製CPU・AMD製CPUを使ったWindows PCであれば、基本的には AMD64版 を選べばOKです。

AMD64はAMD専用という意味ではなく、現在の多くのWindows PCで使われている64bit CPU向けの形式です。

Immich導入用にDocker DesktopインストーラーをWindowsエクスプローラーで確認する画面
Docker Desktopのインストーラーをダウンロードしたら、Windowsのエクスプローラーから実行します。

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

Docker DesktopインストーラーでWSL2を使用する設定を選択する画面
Docker Desktopのインストール設定では、WSL2を使用する設定にチェックを入れて進めます。

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のインストールが開始されるので、完了するまでそのまま待ちます。

インストール中は、Docker Desktopに必要なファイルの展開や設定が自動で進みます。

この画面では特に操作する必要はありません。完了するまで待ちます。

Docker Desktopのインストール完了後にWindowsの再起動を求められる画面
Docker Desktopのインストールが完了すると、Windowsの再起動を求められます。作業中のファイルを保存してから再起動します。

Docker Desktopのインストールが完了すると、Windowsの再起動を求められる場合があります。
開いているファイルや作業中の内容を保存しておきましょう。

再起動後、Docker Desktopを起動して初期設定を進めます。

なおDocker Desktopの初回起動時には、サインインや利用条件に関する画面が表示される場合があります。

今回のImmich導入では、Dockerアカウントへのサインインや有料プラン登録は必須ではありません。

画面に Skipclose が表示されている場合は、スキップして先へ進めます。

Docker Desktop初回起動時にWSLの更新を求められる場合がある

Docker Desktop初回起動時にWSLの更新を求められる画面
Docker Desktop初回起動時にWSLの更新を求められる場合があります。ImmichをWSL2+Ubuntu環境で動かすため、案内が出た場合は先に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です。

補足:PowerShell 7は必須ではありません

この記事のImmich導入手順は、Windows標準のPowerShell 5.1でも進められます。

ただし、今後DockerやWSL、PowerShellスクリプトを使う機会が増えるなら、PowerShell 7を入れておくと便利です。

PowerShell 7はWindows PowerShell 5.1を上書きするものではなく、別アプリとして追加されます。

PowerShell 7のインストール方法を見る

PowerShell 7を入れる場合は、Windows標準のPowerShellを開いて、以下のコマンドを実行します。

winget install --id Microsoft.PowerShell --source winget
PowerShellでwingetコマンドを使ってPowerShell 7をインストールしている画面

インストール後は、スタートメニューから「PowerShell 7」または「pwsh」を起動します。

よく分からない場合は、無理に入れなくても大丈夫です。この記事の手順では、標準のPowerShellでも進められます。

Windowsの検索画面でPowerShellを検索している様子
スタートメニューで「PowerShell」と検索し、PowerShellを起動します。

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

wsl --update
Immich導入前にPowerShellでWSLカーネル更新を完了した画面
Docker DesktopでWSL2を使うため、案内に従ってWSLカーネルを更新します。完了後は次の手順へ進みます。

更新が完了したら、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があるかどうか。
そして VERSION2 になっているかどうかです。

VERSION2 ならWSL2です。

PowerShellでwsl -l -vを実行し、Ubuntuとdocker-desktopがWSL2で起動していることを確認する画面
PowerShellで wsl -l -v を実行し、Ubuntuとdocker-desktopが「Running」、VERSIONが「2」になっていることを確認します。

Ubuntuが入っていない場合はMicrosoft Storeからインストールする

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

Microsoft StoreでUbuntuを検索する画面
Ubuntuが入っていない場合は、Microsoft StoreでUbuntuを検索し、入手またはインストールをクリックします。

スタートメニューから Microsoft Store を開き、検索欄で Ubuntu と検索します。

検索結果にUbuntuがいくつか表示される場合がありますが、迷ったら通常の Ubuntu または Ubuntu 24.04 LTS を選べばOKです。

Microsoft StoreでUbuntuのインストール画面を開いている状態
Ubuntuが入っていない場合は、Microsoft StoreでUbuntuを検索し、インストールをクリックします。

Ubuntuのページを開いたら、入手 または インストール をクリックします。

インストールが完了したら、そのまま「開く」ボタンか、スタートメニューから Ubuntu を起動します。

Microsoft StoreでUbuntuのインストール完了後に開くボタンが表示されている画面
Ubuntuのインストールが完了すると「開く」ボタンが表示されます。クリックするとUbuntuを起動できます。

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

ここで設定するユーザー名とパスワードは、Windowsのログイン情報とは別物です。

パスワード入力中は画面に文字が表示されませんが、入力はされています。
入力後にEnterキーを押せばOKです。

※後ほど使うので忘れないように!

Ubuntuの初回セットアップが完了し、システム情報とコマンド入力画面が表示されている状態
パスワード設定を間違えた例。間違えてもそのままやり直せます。

設定が完了して、ユーザー名@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」の左の左です。

Docker Desktopの設定画面でWSL Integrationタブを開いている状態
Docker Desktopの設定から「Resources」→「WSL Integration」を開き、Ubuntuとの連携設定を確認します。

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

Docker DesktopのWSL IntegrationでUbuntu連携を有効にしApply and restartを押す画面
「Enable integration with my default WSL distro」と「Ubuntu」を有効にしたら、「Apply & restart」をクリックして設定を反映します。

「Apply & restart」で設定反映です。

Ubuntu側でdockerコマンドを確認する

Ubuntuを開いて、以下を実行します。

docker --version

Dockerのバージョンが表示されればOKです。

Ubuntuで docker --version を実行し、Dockerコマンドが使えることを確認している画面
Ubuntuで docker –version を実行し、Dockerのバージョンが表示されれば、UbuntuからDocker Desktopを使える状態です。

次に、Dockerと接続できるか確認します。

docker ps

コンテナ一覧が表示されれば、Ubuntu側からDockerを操作できています。

Ubuntuで docker ps を実行し、現在起動中のコンテナ一覧を確認している画面
docker ps を実行すると、現在起動中のコンテナを確認できます。この時点ではImmichをまだ起動していないため、一覧が空でも問題ありません。
補足: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 --versiondocker ps を実行してみてください。

手順5:Ubuntu内にImmich用フォルダを作る

Ubuntu内にImmich用の作業フォルダを作ります。

この記事では、Immich本体の場所を以下にします。

~/immich

~ は、Ubuntu内の自分のホームフォルダを意味します。

Ubuntuで以下を実行します。

mkdir -p ~/immich
cd ~/immich

これで、Immich用のフォルダを作成し、その中に移動できます。

Ubuntuで mkdir -p ~/immich を実行し、Immich用フォルダを作成している画面
Ubuntu上にImmich用の作業フォルダを作成します。ここに docker-compose.yml や .env を配置します。

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

cd ~/immich
Ubuntuで cd ~/immich を実行し、Immich用フォルダへ移動している画面
作成した ~/immich フォルダへ移動します。この場所で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 を取得します。

Ubuntuでcurlコマンドを使ってImmichのdocker-compose.ymlをダウンロードしている画面
Immich公式のdocker-compose.ymlを、curlコマンドで ~/immich フォルダ内にダウンロードします。

次に、.env の元になるファイルを取得します。

curl -L -o .env https://github.com/immich-app/immich/releases/latest/download/example.env
Ubuntuでcurlコマンドを使ってImmichのexample.envを.envとしてダウンロードしている画面
続いて、Immichの設定ファイルになる example.env を .env という名前でダウンロードします。

これで、~/immich 内に以下の2つができます。

docker-compose.yml
.env

確認する場合は、以下を実行します。

ls -la

一覧に docker-compose.yml.env が表示されていればOKです。

Ubuntuでls -laを実行し、docker-compose.ymlと.envが作成されたことを確認している画面
ls -la を実行し、~/immich フォルダ内に docker-compose.yml と .env が作成されていることを確認します。

手順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=好きなデータベース名

環境によって項目名や並び順が違う場合があります。

nanoエディタで.envを編集している画像
nanoエディタで .env ファイルを開き、UPLOAD_LOCATIONやDB_DATA_LOCATIONなどの保存先設定を編集します。

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に逃がす構成が現実的だと感じました。

💡 保存先の役割を整理
この記事の構成では、Immich関連の保存先を大きく3つに分けています。

データベース系
→ SSD側(DB_DATA_LOCATION / postgres
→ 写真の情報、ユーザー情報、アルバム情報、解析結果、検索用データなど

既存の写真・動画データ
→ HDD側(Photos
→ Googleフォトから取り出した写真、もともと持っている写真・動画など

Immichが保存・生成するファイル
→ HDD側 (upload)
→ スマホからアップロードした写真・動画、サムネイル、変換済み動画、プロフィール画像など

この3つを分けて考えておくと、あとで .envdocker-compose.yml のパスを確認するときに混乱しにくくなります。

IMMICH_VERSION

IMMICH_VERSION は、使用するImmichのバージョンを指定する項目です。

今回は、以下のように設定します。

IMMICH_VERSION=release

release は、Immichの通常リリース版を使う指定です。

Immichの.envファイルでIMMICH_VERSIONをv3からreleaseへ変更する箇所
私の環境ではv3指定で起動できない場面があったため、IMMICH_VERSIONはreleaseに変更して進めます。

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 フォルダが作成されます。

UbuntuでImmich用フォルダに移動し、mkdir -p ./postgresでDB保存先フォルダを作成している画面
.envでDB_DATA_LOCATION=./postgresにしたため、Ubuntu側で postgres フォルダを作成します。今回の手順では ~/immich/postgres がImmichのDB保存先になります。

./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です。

Ubuntuから /mnt/f を確認し、Fドライブ上の ImmichData フォルダが見えていることを確認します。Photosフォルダは空でも、エラーが出なければOKです。
Ubuntuから /mnt/f を確認し、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つを確認します。

  1. 外部ライブラリ用のフォルダを追加する
  2. ポート番号を確認する
  3. restart設定を “no” に変更する

Immichで既存の写真フォルダを読み込ませるには、外部ライブラリを使います。

外部ライブラリを使う場合、Immichコンテナから写真フォルダが見えるように、docker-compose.yml にフォルダのマウント設定を追加します。

まずdocker-compose.ymlを開く

Ubuntuで nano docker-compose.yml を実行し、Immichのdocker-compose.ymlを編集しようとしている画面
外部ライブラリ、ポート番号、restart設定を確認するため、nano docker-compose.yml を実行してImmichのdocker-compose.ymlを開きます。

Ubuntuで以下を実行します。

nano docker-compose.yml

immich-serverのvolumesを探す

docker-compose.yml の中から、immich-servervolumes を探します。

nanoでdocker-compose.ymlを開き、immich-serverのvolumes設定部分を確認している画面
docker-compose.yml内の immich-server の volumes 設定部分を確認します。外部ライブラリ用のパスは、この volumes の中に追加します。

環境やバージョンによって書き方が少し違う場合がありますが、だいたい以下のような部分があります。

immich-server:
  volumes:
    - ${UPLOAD_LOCATION}:/data

ここに、外部ライブラリ用のフォルダを追加します。

※Tabキーのインデントで列を揃えないでください!

💡 ここで注意
docker-compose.yml を nano エディタで編集するときは、Tabキーではなく、スペースキーでインデントをそろえてください。
見た目が同じように見えても、Tabが混ざると設定ファイルの読み込みエラーになることがあります。
nanoでImmichのdocker-compose.ymlを開き、volumesやportsの設定位置を確認している画面
画像のように、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のバージョンによって違う可能性があります。既存の行を消さずに、外部ライブラリ用の行を追加する形で編集してください。

nanoエディタでdocker-compose.ymlのvolumesに外部ライブラリ用のexternal/photosを追加した画面
FドライブのPhotosフォルダを外部ライブラリとして読み込むため、/mnt/f/ImmichData/Photos を /external/photos に割り当てます。

なぜ /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 のような親フォルダを丸ごと指定しない方が安全です。

親フォルダの中に uploadlibrarythumbsencoded-video などが含まれていると、Immich自身が作ったサムネイルやエンコード済み動画まで読み込んでしまうことがあります。

私の初回導入時も、この指定が原因でジョブがなかなか終わらない状態になりました。外部ライブラリには、読み込ませたい写真・動画フォルダだけを指定してください。


※私はこれで2日無駄にしました

:roの意味

最後の :ro は読み取り専用という意味です。

- /mnt/f/ImmichData/Photos:/external/photos:ro

読み取り専用にしておくと、Immich側から元の写真フォルダを書き換えにくくなります。

最初は :ro を付けておく方が安全です。

ただし、XMPサイドカーなどを書き込みたい場合は、読み取り専用ではなく書き込み可能にする必要があります。

しかし最初から難しく考える必要はありません。
まずは読み取り専用で外部ライブラリを読み込ませるのがおすすめです。

ポート番号を確認する

次に、ブラウザでImmichを開くためのポート番号を確認します。

docker-compose.ymlでImmichの外部ライブラリをexternal/photosにマウントし8080ポートを設定している画面
左側の8080はWindows側で開くポート、右側の2283はImmichコンテナ側のポートです。この記事では http://localhost:8080 で開けるように設定します。

先述しましたが、この記事ではポート番号は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:2283http://localhost:8080 に統一します。

実際のスクリーンショットに localhost:2283192.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 を確認します。

Immichのdocker-compose.ymlでimmich-serverのrestart設定をnoに変更している画面
immich-serverのrestart設定を「no」に変更します。WindowsメインPCで必要なときだけImmichを起動する場合は、自動再起動させない方が扱いやすくなります。

restart は、portsdepends_onhealthcheck と同じ階層に置きます。
healthcheck の中に入れないように注意してください。

次に、immich-machine-learning 側の restart も確認します。

Immichのdocker-compose.ymlでmachine-learningコンテナのrestart設定をnoに変更している画面
immich-machine-learning側のrestart設定も「no」に変更します。

さらに、redisrestart も同じように変更します。

Immichのdocker-compose.ymlでRedisコンテナのrestart設定をnoに変更している画面
Redisコンテナのrestart設定も「no」に変更します。

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

Immichのdocker-compose.ymlでdatabaseコンテナのrestart設定をnoに変更している画面
databaseコンテナのrestart設定も「no」に変更します。

このように、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関連のコンテナが起動します。

Ubuntuで docker compose up -d を実行してImmichを起動しようとしている画面
~/immich フォルダ内で docker compose up -d を実行し、Immich関連のコンテナを起動します。

docker compose up -d は、Immichに必要なコンテナをまとめて起動するコマンドです。

-d はバックグラウンドで動かす指定です。
つまり、ターミナルを開きっぱなしにしなくても、裏側でImmichが動くようになります。

初回起動は時間がかかる

docker compose up -d 実行後にImmich関連のDockerイメージをダウンロードしている画面
初回起動時は、Immichに必要なDockerイメージのダウンロードが行われます。回線速度やPC性能によって時間がかかる場合があります。

初回起動時は、Immichに必要なDockerイメージをダウンロードします。

そのため、回線速度やPC性能によっては少し時間がかかります。
画面にいろいろなログが流れても、基本的には待てば大丈夫です。

途中でエラーが出た場合は、エラーメッセージを見て原因を確認します。

💡 起動できない場合
docker compose up -d でエラーが出る場合は、Docker Desktopの起動状態やWSL Integrationを確認します。よくあるエラーと対処法は、別記事で詳しくまとめています。
Immich導入時によくあるエラーと対処法を見る

手順12:起動状態を確認する

Immichが起動したか確認するには、以下を実行します。

docker ps

起動中のコンテナ一覧が表示されます。

Ubuntuでdocker psを実行し、Immich関連コンテナが起動していることを確認している画面
docker ps を実行し、Immich関連のコンテナが起動していることを確認します。環境によって表示されるコンテナ名や数は少し異なります。

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

初回起動時は、管理者ユーザーの作成画面が表示されます。

ブラウザでlocalhost:8080にアクセスし、Immichのようこそ画面が表示されている状態
ブラウザで http://localhost:8080 を開き、Immichのようこそ画面が表示されれば起動成功です。

ここで作成した最初のユーザーが、Immichの管理者になります。
メールアドレス、名前、パスワードなどを入力してアカウントを作成します。

登録完了すると、ログイン画面へ移行します。

ブラウザでlocalhost:8080にアクセスし、Immichのログイン画面が表示されている状態
初回設定後は、作成したメールアドレスとパスワードでImmichにログインします。

初回起動設定をお好みで

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

Immichの初回設定でストレージテンプレートを有効化する画面
スマホアプリなどからImmichへアップロードする写真や動画を整理したい場合は、初回設定でストレージテンプレートを有効にします。

ストレージテンプレートは、Immichにアップロードした写真や動画を、どのようなフォルダ構成で保存するかを決める設定です。

こだわりが無ければこの程度の指定がオススメです。

{{y}}/{{MM}}/{{filename}}

この設定にすると、年/月ごとにフォルダが分かれ、最後に元のファイル名が入ります。

Immichのストレージテンプレート設定で、保存パスのプレビューとテンプレートを確認している画面
ストレージテンプレートを設定すると、Immichにアップロードした写真や動画の保存フォルダ構成を決められます。例では年/月/ファイル名の形で保存されるようにしています。

たとえば、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:外部ライブラリを作成する

Immichの外部ライブラリに /external/photos を追加している画面
右上のアカウントメニューからユーザー設定を開き、Immichの各種設定を確認します。

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

Immichで外部ライブラリを作成するダイアログが表示されている画面
外部ライブラリを追加するため、新しいライブラリを作成します。

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

Immichで新しい外部ライブラリの設定画面を開いている状態
作成した外部ライブラリの設定画面で、読み込ませるフォルダのパスを追加していきます。

下にスクロールして、「フォルダーを追加」をクリック。

インポートパスに /external/photos を追加します。

immichの外部ライブラリに/external/photosを追加している画面
外部ライブラリのインポートパスには、docker-compose.ymlで割り当てた /external/photos を指定します。

今回の例では、Windows側に生成済みのPhotosフォルダを読み込ませます。

F:\ImmichData\Photos

Immich上ではこう指定します。

/external/photos

Ubuntu側からは
/mnt/f/ImmichData/Photos
この様に見えてますが、Immich側からは
/external/photos
ちょっとややこしいですが、違うパスでは読み込めないってだけなので、そんなに深く考えなくて大丈夫です。

手順15:外部ライブラリをスキャンする

Immichの外部ライブラリにインポートパスとして/external/photosを追加した画面
/external/photos のスキャンを始める画面。

外部ライブラリを追加したら、「スキャン」ボタンを押してスキャンを開始します。

スキャンすると、Immichが指定フォルダ内の写真や動画を検出します。

ファイル数が少なければすぐ終わります。

ただし、大量の写真や動画を入れている場合は時間がかかります。

初回スキャン後はジョブ処理が走る

Immichの管理画面でスマートサーチや顔検出などのジョブ処理が進行している画面
外部ライブラリをスキャンすると、スマートサーチや顔検出などのジョブ処理が順番に実行されます。処理中はアクティブや待機中の件数が表示されます。

外部ライブラリを読み込ませると、Immichの裏側でいろいろな処理が動きます。

代表的な処理は以下です。

  • サムネイル生成
  • メタデータ抽出
  • スマートサーチ
  • XMPメタデータ処理
  • 顔認識
  • 機械学習関連処理

これらは、写真や動画をImmich上で快適に扱うための処理です。

数百枚程度ならそこまで気にならないかもしれません。

しかし、数万枚、数十万枚、数TB規模になるとかなり時間がかかります。

ジョブ数を上げすぎるとHDDが詰まることもある

Immichでは、外部ライブラリを読み込ませた後に、サムネイル生成、メタデータ抽出、顔認識、スマートサーチなどのジョブが実行されます。

管理画面からジョブの同時実行数を調整できますが、最初はデフォルト設定のまま進めるのがおすすめです。

Immichの管理画面でジョブ設定の同時実行数を確認している画面
Immichでは、管理画面のジョブ設定から各処理の同時実行数を調整できます。HDD使用率が高い場合は、無理に数値を上げすぎず、PCの負荷を見ながら調整するのがおすすめです。

同時実行数を増やすと処理が早く終わる場合もありますが、写真や動画本体をHDDに置いている場合は、HDDの読み書きが先に詰まることがあります。

タスクマネージャーでFドライブの使用率が100%付近に張り付いている場合は、ジョブ数を増やすより、少し下げた方が安定することもあります。

CPUに余裕がある → 少し増やしてもOK
HDD使用率が100%付近 → 増やしすぎ注意
PC全体が重い → ジョブ数を下げる

初回スキャンは時間がかかります。
無理に一気に終わらせようとせず、PCの負荷を見ながら調整しましょう。

サムネイルが出るまで待つ

外部ライブラリを追加した直後は、写真一覧にサムネイルがすぐ表示されないことがあります。

これは異常とは限りません。

裏側でサムネイル生成が進んでいるだけの可能性があります。
サムネイル生成が進むと、写真タイムラインがかなり見やすくなります。

初回スキャン直後に「重い」「表示されない」と判断せず、ジョブ処理が落ち着くまで待つのがおすすめです。

Immich起動後に確認するジョブ処理

Immichが起動し、外部ライブラリを追加したら、ジョブ画面も確認しておくと安心です。

Immichは写真を読み込んだ後、裏側でいろいろな処理を行います。

サムネイル生成

サムネイル生成は、写真一覧に表示する小さい画像を作る処理です。

これが終わるまでは、写真一覧がうまく表示されないことがあります。

メタデータ抽出

メタデータ抽出は、撮影日時、カメラ情報、位置情報などを読み取る処理です。

写真の並び順や詳細情報に関係します。

スマートサーチ

スマートサーチは、写真の内容を検索しやすくするための処理です。

便利ですが、大量の写真があると処理に時間がかかります。

処理中はCPUやディスク負荷が上がる

WindowsのタスクマネージャーでFドライブのディスク使用率が100%になっている画面
外部ライブラリの初回スキャン中は、写真・動画の読み込みやメタデータ処理によってFドライブの負荷が高くなることがあります。処理が落ち着くまでは焦らず待ちましょう。

大量の写真や動画を読み込ませると、CPUやディスク使用率が上がります。

これは異常とは限りません。

Immichがサムネイル生成や機械学習関連の処理をしているためです。

私のように数TB規模で使う場合、初回処理はかなり動きます。
最初は焦らず、ジョブが落ち着くまで待つのがおすすめです。

導入完了:お疲れさまでした

immichのサムネイル一覧が表示されてる画面
immichのサムネイル一覧が表示されてる画面

という場合もあると思います。

WindowsメインPCでImmichを動かす場合、Immich本体よりも、Docker Desktop・WSL2・Ubuntu・保存先ドライブの連携でつまずくことがあります。
私自身相当失敗してます。

うまく起動しない場合

Immichがうまく起動しない場合は、まず以下を確認してください。

  • Docker Desktopが起動しているか
  • Docker DesktopのWSL IntegrationでUbuntuが有効になっているか
  • Ubuntuで docker --versiondocker 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\upload
F:\ImmichData\Photos

Ubuntuターミナルから見たパス
/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:ro

Immichの外部ライブラリで指定するパス
/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の起動を順番に確認する形にしています。

Immich起動用バッチでDocker Desktop、写真保存先、Ubuntu側のDocker接続を確認してからImmichを起動している画面
起動用バッチを使うと、Docker Desktopや写真保存先、Ubuntu側のDocker接続を確認してからImmichを起動できます。毎回手動で確認する手間を減らせるため、WindowsメインPC運用ではかなり便利です。

このツールについては、次回か、あるいはそのまた次回の記事で詳しく紹介します。

まとめ: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:2283http://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を使うなら、導入後は起動・停止を簡略化しておくとかなり快適になります。

なお、今回この記事の手順で詰まった場所があれば、エラー文と「どの手順で止まったか」をコメントで教えてください。実際に確認できたものは、記事にも追記します。

コメント