コミュニティソリューション

ZimaOSアップグレード後にImmichでEAI_AGAINが発生:DockerのDNSを修正

After upgrading to ZimaOS 1.6.1, a user corrected renamed host volumes but Immich still failed with EAI_AGAIN while trying to resolve the immich-postgres service hostname.

ZimaOSのアップグレード後にImmichが停止し、サーバーログにgetaddrinfo EAI_AGAIN immich-postgresと表示される場合、直接的な障害はコンテナ間の名前解決です。これは、PostgreSQLのデータボリューム自体が破損している証拠ではありません。

元の1.6.1のスレッドでは、ストレージパスの名前変更により複数のアプリケーションで問題が発生しましたが、パスを修正するとMariaDB、Plex、Nextcloudは復旧しました。Immichは異なり、PostgreSQLは正常だった一方で、immich-serverがホスト名immich-postgresを解決できませんでした。

Immichのエラーを文字どおりに読む

EAI_AGAINは、一時的なDNS解決エラーです。サーバーはimmich-postgresという名前のデータベースホストに接続しようとしていましたが、データベースコンテナ自体は接続を受け付ける準備ができていると報告していました。

そのため、最初に確認すべきなのはDockerネットワークとサービスディスカバリーです。まずデータベースを削除したり、フォトライブラリを再作成したりしないでください。

Immichのサービスが同じComposeネットワークを共有していることを確認する

DockerのComposeネットワークガイドでは、同じComposeネットワーク上のサービスはサービス名で相互にアクセスできると説明されています。コンテナを再作成するとコンテナIPアドレスは変わることがありますが、サービス名は安定しています。

immich-server、PostgreSQL、Redisが意図した共有ネットワークに接続されていること、またImmichのデータベースホスト名がComposeのサービス名と一致していることを確認してください。恒久的な対策として、ホスト名を固定のコンテナIPに置き換えるのは避けてください。

ボリューム名の変更は別の移行確認として扱う

このユーザーの環境では、アップグレードにより一部のストレージ名が変更され、スペースがアンダースコアに置き換えられました。他のアプリではホストパスの修正が必要だったため、Immichのすべてのバインドマウントも確認してください。特にライブラリ、アップロード、データベースのパスを確認する必要があります。

Immichストレージパスガイドアプリデータ移行ガイドを利用すると、ストレージパスの問題とネットワークの問題を切り分けられます。

設定をバックアップしてからスタックを再作成する

Composeファイルとパスを確認した後でImmichスタックを再作成すると、意図したDockerネットワークとDNSエントリを再構築できます。データベースボリュームとImmichのライブラリパスは保持してください。ネットワークのテストとして破壊的なリセットを実行しないでください。

ZimaOS 1.7.1では後に、1.7.1のリリースノートでDockerネットワーク設定とアプリ移行の互換性に関する改善が挙げられました。これはアップデートする理由になりますが、変更履歴では、この特定のImmichのEAI_AGAIN問題が修正されたとは明記されていません。

要点

PostgreSQLが正常なのにImmichがEAI_AGAIN immich-postgresを報告する場合は、まずサービス名のDNSと共有Dockerネットワークを確認してください。その後、ZimaOSのアップグレードで名前が変更されたすべてのホストボリュームパスを別途確認します。