【ITニュース解説】Keep Your Immich Server Up-to-Date 🚀
2025年09月26日に「Dev.to」が公開したITニュース「Keep Your Immich Server Up-to-Date 🚀」について初心者にもわかりやすく解説しています。
ITニュース概要
Immichサーバーを常に最新に保つため、Bashスクリプトが提供された。これは、稼働中のバージョンとGitHubの最新リリースを自動比較し、更新が必要ならDockerを使い安全にアップデートを行う。簡単な手順で導入でき、定期的な管理に有効だ。
ITニュース解説
Immichは、ユーザー自身がサーバーを構築して写真や動画を管理できるオープンソースのシステムだ。スマートフォンやクラウドサービスに頼らず、自分のデータを完全に自分でコントロールできるという魅力がある。しかし、このようなセルフホスト型のソフトウェアを運用する上で、常にそのシステムを最新の状態に保つことは非常に重要になる。ソフトウェアの更新には、新たに発見されたセキュリティ上の脆弱性を修正するためのパッチや、より便利な新機能の追加、既存のバグの修正などが含まれるからだ。もし古いバージョンのままで使い続けると、セキュリティリスクにさらされたり、最新の機能が使えなかったり、思わぬ不具合に遭遇する可能性もある。
しかし、手動でImmichサーバーの更新状況を確認し、実際に更新作業を行うのは、特に初心者にとって手間がかかる作業になりがちだ。この手間を解消し、より安全かつ簡単にImmichサーバーを最新の状態に保つために、提供されたBashスクリプトが役立つ。このスクリプトは、現在稼働しているImmichサーバーのバージョンを自動的に確認し、Immichの開発元がGitHubで公開している最新バージョンと比較する。そして、もし新しいバージョンが利用可能であれば、ユーザーに通知し、簡単な操作で安全に更新プロセスを実行できるよう手助けをする。
スクリプトの仕組みを具体的に見ていこう。まず、Immichサーバーの現在のバージョンを知る必要がある。このスクリプトでは、「get_current_version」という機能がその役割を担う。Immichサーバーには、外部から情報を取得したり操作したりするための「API(Application Programming Interface)」という仕組みが備わっている。スクリプトは、curlというコマンドを使って、このAPIに対して特定の情報を要求する。この際、Immichサーバーが本当に認証されたユーザーからの要求であることを確認するため、「APIキー」というパスワードのようなものが必要になる。APIキーは、Immichの設定画面の「API keys」セクションで、サーバーにアクセスする権限のみを持つ新しいキーを作成することで取得できる。curlコマンドで取得したAPIからの応答には、バージョン情報がJSON形式で含まれているため、sedというコマンドを使って、その中から「major(メジャー)」「minor(マイナー)」「patch(パッチ)」という形式のバージョン番号だけを抽出し、例として「1.50.3」のような形式に整える。もし何らかの理由でバージョンが取得できなかった場合は、「unknown(不明)」と判断する仕組みだ。
次に、Immichの最新バージョンが何かを確認するために、「get_latest_version」という機能が働く。Immichはオープンソースプロジェクトであり、そのソースコードやリリース情報はGitHubという開発者向けのプラットフォームで管理されている。スクリプトは、ここでもcurlコマンドを利用して、Immichの公式GitHubリポジトリの最新リリース情報を取得する。取得した情報の中から、最新のリリースを示す「tag_name(タグ名)」をsedコマンドで抽出し、例えば「v1.50.3」のような形で取得する。バージョン番号には「v」というプレフィックスが付いている場合があるが、スクリプトは比較しやすいようにこの「v」を取り除く処理を行っている。
現在のバージョンと最新バージョンが取得できたら、「compare_versions」という機能でそれらを比較する。バージョン番号は一般的に「メジャー.マイナー.パッチ」という3つの数字で構成される。メジャーバージョンは大幅な変更や後方互換性のない変更を示し、マイナーバージョンは新機能の追加や改善、パッチバージョンはバグ修正などの小規模な変更を意味する。スクリプトは、それぞれのバージョン番号をドットで区切って個別の数字として扱い、まずメジャーバージョンを比較し、次にマイナーバージョン、最後にパッチバージョンという順で比較していく。もし最新バージョンのメジャー番号が現在のバージョンより大きければ「major」アップデート、メジャー番号が同じでマイナー番号が大きければ「minor」アップデート、それらも同じでパッチ番号が大きければ「patch」アップデートと判断する。もし全ての数字が同じか、現在のバージョンの方が新しい場合は「none(更新なし)」と判断する。
これらの準備が整ったら、スクリプトの本体部分が実行される。まず、現在稼働しているバージョンと、利用可能な最新バージョンを画面に表示する。もし両方のバージョンが同じか、最新バージョンが不明な場合は、更新は不要と判断し、スクリプトは終了する。もし新しいバージョンが見つかった場合は、それがメジャー、マイナー、パッチのいずれの種類のアップデートであるかをユーザーに分かりやすく通知する。そして、「Immichを更新しますか?」という確認メッセージを表示し、ユーザーが「y(はい)」を選択した場合のみ更新処理に進む。
更新処理は、Docker Composeというツールを使って行われる。Docker Composeは、複数のコンテナで構成されるアプリケーションをまとめて管理するためのツールで、Immichのような複雑なシステムを簡単にデプロイ・管理できる。スクリプトは以下の3つのコマンドを順に実行する。
docker compose down: 現在稼働しているImmichのすべてのコンテナ(サービス)を安全に停止する。これにより、更新中にデータが破損するリスクを減らす。docker compose pull: Immichの最新のDockerイメージをインターネットからダウンロードする。Dockerイメージは、アプリケーションとその実行に必要なすべてのものをパッケージ化したものだ。docker compose up -d: ダウンロードした最新のイメージを使って、Immichのコンテナを再度起動する。-dオプションは、コンテナをバックグラウンドで起動し、スクリプトの実行を妨げないようにするためのものだ。 これらのステップが完了すると、Immichサーバーは最新バージョンに更新された状態で再び利用可能になる。もしユーザーが更新をキャンセルした場合は、スクリプトは更新せずに終了する。
このスクリプトは一度実行するだけでなく、CronジョブというLinuxの機能を使って定期的に自動実行することもできる。これにより、Immichの更新状況を常に監視し、新しいバージョンがリリースされた際に通知を受け取ったり、自動的に更新を行ったりすることが可能になる。APIキーは重要な情報なので、スクリプトファイルに直接書き込む際は、そのファイルのアクセス権限を適切に設定し、セキュリティに配慮することが重要だ。このようなスクリプトを使うことで、システムエンジニアを目指す初心者でも、セルフホスト型アプリケーションの運用・管理をより効率的かつ安全に行うためのスキルを習得できるだろう。