【BAT配布】ImmichをWindowsでワンクリック起動・停止する方法

ImmichをWindowsでワンクリック起動・停止するBATツールのアイキャッチ画像 Immich・自宅サーバー
広告を含む場合があります。
⏱ この記事は約16分で読めます(約9,100字)

WindowsメインPCにImmichを導入したものの、使うたびにUbuntuを開いてコマンドを入力するのが面倒になってきました。
これ面倒ですよね?w

Immichを起動するだけなら、実行するコマンドは難しくありません。

cd ~/immich
docker compose up -d

たった2行です。

ただ、実際にWindowsメインPCで運用してみると、コマンドを入力する前にも確認したいことが出てきます。

Docker Desktopは起動しているか。
Ubuntu側からDockerへ接続できる状態になっているか。
写真を保存しているFドライブは認識されているか。
Immichが起動したあと、Web画面が開ける状態になったか。

Docker Desktopを起動した直後に急いで docker compose up -d を実行すると、まだDocker Engineの準備が終わっておらず、起動に失敗する事があります。
これやってしまうとWindows事態を再起動する羽目になる事も。。。

毎回これを確認するのは地味に面倒です。

そこで、Immichの起動と停止をBATファイルのダブルクリックだけで行える「Immich Windows Startup Tool」を作りました。

GitHubで配布しているので、私のImmich導入記事と同じ構成なら、基本的には設定を変えずに使えます。

導入がまだの方はこちらから導入手順を確認できます。
ImmichをNASなしでWindowsメインPCに導入する方法

ImmichをBATファイルで起動・停止できるツールを配布します

配布しているツールを使えば、普段触るのは次の2ファイルだけです。

Immich起動.bat
Immich停止.bat

Immichを使いたいときは Immich起動.bat をダブルクリック。

使い終わったら Immich停止.bat をダブルクリックします。

BATファイルの内部からPowerShellスクリプトを呼び出し、Docker DesktopやWSL2の状態を確認しながらImmichを起動・停止する仕組みです。

単純に docker compose up -d を実行するだけではなく、起動できる状態になるまで順番に待つようにしています。

起動時に行う処理

Immich起動.bat を実行すると、内部では次のように進みます。

  1. WSL2のUbuntuが存在するか確認
  2. 写真フォルダがWindows側から見えるか確認
  3. Docker Desktopが起動しているか確認
  4. 起動していなければDocker Desktopを起動
  5. Ubuntu側からDockerへ接続できるまで待機
  6. Ubuntu内のImmichフォルダと docker-compose.yml を確認
  7. docker compose up -d を実行
  8. ImmichのWeb画面が応答するまで待機
  9. ブラウザでImmichを開く

Docker Desktopを自分で起動し、少し待ってからUbuntuを開き、コマンドを入力して、ブラウザを開くという一連の操作をまとめています。

停止時に行う処理

Immich停止.bat では、Ubuntu側で次のコマンドを実行します。

docker compose down

初期設定では、Immichのコンテナを停止したあとにDocker Desktopも終了します。

WSL2全体については、他のUbuntu作業まで巻き込んでしまう可能性があるため、初期設定では停止しません。

Immich Windows Startup Toolのダウンロード

最新版はGitHubのReleasesページからダウンロードできます。

記事公開時点のバージョンは v1.0.2 です。

ソースコードを確認したい場合は、GitHubリポジトリからすべてのファイルを閲覧できます。

Immich Windows Startup ToolのGitHubリポジトリを見る

Immich Windows Startup ToolをGithubで表示した画面
右サイドバー上のReleasesからダウンロードできます。

ダウンロードするファイル名は、バージョンによって数字が変わります。

immich-windows-startup-tool-v1.0.2.zip

GitHubが自動生成している Source code (zip) ではなく、右サイドバー上、Releasesに添付されている配布用ZIPをダウンロードしてください。

配布ZIPに入っているファイル

ZIPを解凍すると、次のファイルが入っています。

Immich起動.bat
Immich停止.bat
README.md
README.html
src/
├─ Start-Immich.ps1
└─ Stop-Immich.ps1

普段使うのは、フォルダ直下にある2つのBATファイルだけです。

srcフォルダには、実際の処理を行うPowerShellスクリプトが入っています。

環境に合わせて設定を変える場合は、src内の .ps1ファイルを編集します。

README.htmlはブラウザで説明を読みたい人向け、README.mdはGitHub上やテキストエディターで内容を確認したい人向けです。

immich windows startup tool.zip内のファイル一覧
解凍後のファイル一覧

ツールを使うために必要な環境

このツールは、WindowsメインPC上でDocker DesktopとWSL2を使い、Ubuntu内からImmichを起動している環境を想定しています。

必要になるものは次のとおりです。

  • Windows 11またはWindows 10
  • Docker Desktop
  • WSL2
  • Ubuntu
  • Ubuntu内へ導入済みのImmich
  • docker-compose.yml
  • Windows側の写真保存フォルダ

私の導入記事では、次の構成でImmichを動かしています。

項目設定
WSLディストリビューションUbuntu
Immich本体~/immich
写真フォルダF:\ImmichData\Photos
ブラウザURLhttp://localhost:8080
ポート設定8080:2283
DB保存先~/immich/postgres

ツールの初期設定も、この構成に合わせています。

PowerShell 7が入っているか分からない場合は、PowerShellを開いて次のコマンドを実行します。

pwsh -v

バージョン番号が表示されれば、そのまま使えます。

pwshが見つからないと表示された場合は、PowerShell 7のインストールが必要です。
※Windows標準PowerShellでの運用に対応しました (26/07/16)

Immich起動・停止ツールの使い方

1.配布ZIPをダウンロードする

GitHubのReleasesページを開き、最新版のZIPをダウンロードします。

immich-windows-startup-tool-v1.0.2.zip

2.ZIPを解凍する

ダウンロードしたZIPを右クリックし、「すべて展開」を選びます。

解凍後のフォルダは、任意の場所に置いて構いません。

私は分かりやすいように、次のような場所へ置く想定で作っています。

C:\Immich

デスクトップに置いても動きますが、うっかり削除したり移動したりしやすいため、Cドライブ直下などに専用フォルダを作った方が管理しやすいです。

BATファイルだけを別の場所へ移動すると、src内のPowerShellスクリプトを見つけられなくなります。

フォルダ内のファイルはバラさず、フォルダごと移動してください。

💡 Windowsのセキュリティ警告が表示される場合
GitHubからダウンロードしたBATファイルを実行すると、 「発行元を確認できませんでした」というWindowsの警告が表示される場合があります。


警告画面の 「このファイルを開く前に常に確認する」のチェックを外して実行できます。

3.Immich起動.batをダブルクリックする

Immichを使いたいときは、次のファイルをダブルクリックします。

Immich起動.bat

黒い画面が開き、現在行っている処理が順番に表示されます。

Immich 起動準備を開始します...
WSLディストリビューションを確認しています...
写真フォルダを確認しています...
Docker Desktop を起動します...
Ubuntu側からDockerが使えるまで待っています...
Immich を起動します...

Docker Desktopが起動していない場合は、自動で起動します。

Docker Desktopの画面が表示されても、手動で操作する必要はありません。そのまま待つと、Ubuntu側からDockerへ接続できるようになった段階でImmichの起動へ進みます。

Immich起動.batを実行し、Docker Desktopと写真フォルダを確認してImmichを起動している画面
Immich起動.batを実行すると、写真フォルダとDocker Desktopの状態を確認してからImmichが起動する

4.ブラウザが開くまで待つ

Immichのコンテナを起動したあと、ツールはWeb画面が応答するまで待機します。

起動が完了すると、自動的に次のURLが開きます。

http://localhost:8080

Immichの写真タイムラインやログイン画面が表示されれば、起動成功です。

初回スキャン中や大量の写真を処理している場合は、コンテナの起動後もしばらく重い場合があります。

5.使用後はImmich停止.batを実行する

Immichを使い終わったら、次のファイルをダブルクリックします。

Immich停止.bat

Ubuntu側で docker compose down が実行され、Immich関連のコンテナが停止します。

初期設定では、そのあとDocker Desktopも終了します。

Immich を停止します...
Immich関連コンテナを停止しました。
Docker Desktop を終了します...
Immich 停止完了。
Immich停止.batを実行し、関連コンテナとネットワークを停止してDocker Desktopを終了した画面
Immich停止.batを実行すると、関連コンテナを停止してDocker Desktopまで終了する

導入記事と同じ環境なら設定変更は不要

ツールの初期設定は、私が公開しているWindows版Immich導入記事に合わせています。

src/Start-Immich.ps1の上部には、次の設定が入っています。

$DistroName = "Ubuntu"
$ImmichDir  = "~/immich"
$PhotoPath  = "F:\ImmichData\Photos"
$ImmichUrl  = "http://localhost:8080"

同じ構成でImmichを導入している場合は、そのまま Immich起動.bat を実行できます。

環境が違う場合は、PowerShellスクリプトをメモ帳などで開いて設定を変更します。

環境に合わせて設定を変更する方法

Ubuntuの名前が違う場合

WSL2へインストールしたUbuntuの名前は、環境によって違うことがあります。

PowerShellで次のコマンドを実行すると、インストールされているディストリビューション名を確認できます。

wsl -l -v

たとえば、次のように表示された場合。

Ubuntu-24.04

Start-Immich.ps1Stop-Immich.ps1の両方を変更します。

$DistroName = "Ubuntu-24.04"

起動側だけ変更して停止側を忘れると、Immichは起動できても停止できなくなるため、両方揃えてください。

Immichのフォルダが違う場合

私の環境では、Ubuntu内の次の場所へImmichを置いています。

~/immich

別の場所へ置いた場合は、両方のPowerShellスクリプトにある $ImmichDir を変更します。

$ImmichDir = "~/immich"

写真フォルダが違う場合

初期設定では、Windows側の写真フォルダを次の場所にしています。

F:\ImmichData\Photos

Dドライブや外付けHDDを使っている場合は、Start-Immich.ps1$PhotoPath を実際の保存先へ変更します。

$PhotoPath = "D:\Photos"

起動時にこのフォルダが見つからない場合、ツールはImmichを起動せずエラーを表示します。

外付けHDDの電源を入れ忘れた状態や、ドライブ文字が変わった状態でImmichを起動してしまう事故を減らすための確認です。

ポート番号が違う場合

私の導入記事では、docker-compose.ymlのポートを次のように設定しています。

ports:
  - "8080:2283"

そのため、ブラウザURLは次の設定です。

$ImmichUrl = "http://localhost:8080"

Immich標準の 2283:2283を使っている場合は、次のように変更します。

$ImmichUrl = "http://localhost:2283"

docker-compose.ymlの左側のポート番号と、ブラウザURLのポート番号は必ず揃える必要があります。

停止時にDocker Desktopを終了したくない場合

src/Stop-Immich.ps1には、停止後の動作を決める設定があります。

$QuitDockerDesktop = $true
$ShutdownWsl = $false

QuitDockerDesktop

初期値は $trueです。

$QuitDockerDesktop = $true

Immichを停止したあと、Docker Desktop自体も終了します。

Immich以外のDockerコンテナを動かしている場合は、必ず $falseへ変更してください。

$QuitDockerDesktop = $false

$trueのままだと、Immich以外のコンテナもDocker Desktopごと停止します。

ShutdownWsl

初期値は $falseです。

$ShutdownWsl = $false

$trueにすると、Immich停止後に次のコマンドも実行します。

wsl --shutdown

このコマンドはImmichで使っているUbuntuだけではなく、動作中のWSL環境をまとめて停止します。

別のUbuntu環境やWSL上の作業を使っている場合まで止まるため、特別な理由がなければ $falseのままがおすすめです。

単純なBATファイルではなく起動待ちを入れた理由

最初は、BATファイルから次のコマンドを実行するだけでもいいと思っていました。

cd ~/immich
docker compose up -d

ただ、それだけだとDocker Desktopが完全に起動する前にコマンドが走ってしまいます。

Docker Desktopのウィンドウが表示されたからといって、すぐにDockerが使えるわけじゃありません。
実際に起きた事として、せっかちな私はDocker Desktop起動直後にdocker compose up -dを行って、その結果Windows再起動までする羽目になりました。

このツールでは、Ubuntu側で次の確認が成功するまで待機します。

docker info

接続できるようになってから docker compose up -d を実行するため、自分で起動時間を見計らう必要がありません。

さらに、Immichコンテナを起動した直後にブラウザを開いても、まだWebサーバーが応答できない場合があります。

そこで、指定したURLが応答するまで待ってからブラウザを開くようにしました。

起動に少し時間がかかっても、黒い画面を眺めていれば最終的にImmichが開きます。

v1.0.2で通常のUbuntuユーザーから実行するよう修正

作成途中で地味に危なかったのが、WSLコマンドをrootユーザーで実行する設定です。

Immichを通常のUbuntuユーザーで次の場所へ置いている場合。

~/immich

通常ユーザーの ~ は、そのユーザーのホームフォルダを意味します。

ところが、WSLコマンドへ -u root を付けて実行すると、~/rootを指します。

つまり、同じ ~/immichという表記でも、実際に探す場所が変わります。

通常ユーザー:/home/ユーザー名/immich
rootユーザー:/root/immich

これでは、導入記事どおり通常ユーザーのホームへImmichを置いた人がツールを使ったとき、フォルダが見つかりません。

v1.0.2ではroot指定を削除し、WSLの既定ユーザーからImmichを起動・停止するように修正しました。

自分の環境では動いているのに、配布した環境では動かないというタイプのハマり方をする部分だったので、公開前に気付けてよかったところです。

起動できないときの確認場所

BATファイルにエラーが表示された場合は、表示された内容から原因を確認できます。

pwsh.exeが見つからない

PowerShell 7がインストールされているか確認します。

pwsh -v

WSLディストリビューションが見つからない

Ubuntuの名前を確認します。

wsl -l -v

表示された名前と $DistroNameを揃えてください。

写真フォルダが見つからない

$PhotoPathに設定したフォルダが、Windowsのエクスプローラーから開けるか確認します。

外付けHDDを使っている場合は、電源やUSB接続、ドライブ文字も確認してください。

Ubuntu側からDockerへ接続できない

Docker DesktopのWSL Integrationを確認します。

Docker Desktop
→ Settings
→ Resources
→ WSL Integration

Immichで使っているUbuntuを有効にし、設定を適用します。

docker-compose.ymlが見つからない

$ImmichDirに指定した場所を確認します。

Ubuntuで次のコマンドを実行します。

cd ~/immich
ls

docker-compose.ymlが表示されるか確認してください。

ImmichのWeb画面が応答しない

docker-compose.ymlのポート設定と $ImmichUrlが一致しているか確認します。

コンテナの状態は、Ubuntuで次のコマンドを実行すると確認できます。

cd ~/immich
docker compose ps

ログを確認する場合はこちらです。

docker compose logs --tail=120

Docker、WSL、外部ライブラリ、ポート設定などでつまずいた場合は、別記事に詳しい対処法をまとめています。

PowerShellスクリプトの中身はGitHubで確認できます

BATファイルやPowerShellスクリプトをインターネットからダウンロードして実行するのが不安な人もいると思います。

このツールの処理内容は、GitHub上ですべて確認できます。

起動スクリプトが行うのは、Docker Desktopの起動確認、フォルダの存在確認、docker compose up -d、Web画面の応答確認、ブラウザの起動です。

停止時は docker compose downを実行しています。

写真フォルダ内の画像や動画を削除する処理は入れていません。

停止コマンドにもボリュームを削除する -vオプションは付けていません。

それでも、写真やデータベースのバックアップはツールの有無に関係なく用意しておくのがおすすめです。

Immichのデータベースだけをバックアップしても、写真や動画本体のバックアップにはなりません。

写真本体を置いているフォルダも、別のHDDやNASなどへバックアップしてください。

このツールが向いている使い方

Immich Windows Startup Toolは、WindowsメインPCで必要なときだけImmichを起動する環境に向いています。

普段はPCを通常どおり使い、写真をアップロードしたいときや閲覧したいときだけImmichを起動する運用です。

NASや専用ミニPCをまだ用意しておらず、まずは手持ちのWindows PCでImmichを試したい場合にも使いやすいと思います。

反対に、24時間稼働する専用サーバーでImmichを動かしている場合は、このBATファイルを使う必要性はあまりありません。

常時稼働環境なら、Dockerの自動起動やsystemdなどで管理した方が自然です。

このツールは、あくまでWindowsメインPCで「使うときだけ起動する」という少し特殊な運用を楽にするために作っています。

更新履歴

v1.0.2

  • 写真フォルダの初期値を F:\ImmichData\Photosへ統一
  • Windows版Immich導入記事と設定を統一
  • WSLコマンドのroot指定を削除
  • 通常のUbuntuユーザーから ~/immichを参照するよう修正
  • docker-compose.ymlの存在確認を追加
  • ImmichのWeb画面が応答するまで待機する処理を追加
  • README.mdとREADME.htmlを更新
  • 起動・停止時のエラー表示を調整
  • Windows標準のPowerShell 5.1へ対応し、PowerShell 7を不要化

今後、不具合修正や機能追加を行った場合は、GitHub Releasesで新しいバージョンを公開します。

まとめ:Immichの起動がダブルクリックだけになった

WindowsメインPCでImmichを使う場合、導入そのものよりも、その後の起動と停止が面倒になりがちです。

コマンドは難しくありません。

ただ、Docker Desktopを起動し、準備が終わるまで待ち、Ubuntuからコマンドを実行し、ブラウザを開く作業を毎回行うとなると、だんだんImmichを開くこと自体が面倒になります。

Immich Windows Startup Toolを使えば、普段の操作はBATファイルのダブルクリックだけです。

Docker Desktopが起動していなければ自動で起動し、Ubuntu側から接続できるまで待ち、Immichが応答できる状態になったらブラウザを開きます。

使い終わったあとの停止も、もう一方のBATファイルをダブルクリックするだけです。

WindowsメインPCで必要なときだけImmichを使っている人は、ぜひ試してみてください。

コメント