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

ZimaOS上のAdventureLog:サインアップ、PostgreSQL、フロントエンドURL、Composeの問題を解決する

A June 2025 ZimaOS custom-app thread where AdventureLog opened but signup did nothing. Logs later showed repeated frontend fetch timeouts and a backend waiting for PostgreSQL. The thread never posted a confirmed working fix. AdventureLog's current upstream Compose has since changed substantially.

2025年のソーススレッドでは、AdventureLogのインストールが正常に動作したことは確認されませんでした。フロントエンドは読み込まれましたが、サインアップをクリックしても何も起こらないように見えました。その後のログには、さらに有力な2つの手がかりが示されました。フロントエンドは繰り返し次のように報告していました フェッチに失敗しました 接続タイムアウトが発生する一方で、バックエンドは繰り返し次のように報告していました PostgreSQLは利用できません - 待機中データベースコンテナ自体は最終的に初期化され、正常に接続を受け付けていました。

この証拠は、単純に「AdventureLogはZimaOSでは動作しない」という結論ではなく、複数サービス間の接続または設定の問題を示しています。AdventureLogの現在の上流デプロイ方法も変更されており、現在は保守されているComposeで次のものを使用しています .env ファイル、新しいPostGIS、現行のフロントエンド/バックエンドイメージ、そして外部フロントエンドURLとバックエンドURLの入力を求める専用インストーラー。

ソースでは3サービス構成のComposeスタックが使用されていた

2025年のComposeには、次のサービスが含まれていました。

  • SvelteKitフロントエンドである web;
  • Django/バックエンドサービスである server;
  • PostGIS/PostgreSQLデータベースである db.

フロントエンドはホストポート8015を公開し、バックエンドは別のホストポートを公開していました。また、名前付きDockerボリュームにデータベースとメディアのデータが保存されていました。

目に見える症状は、何も起こらないサインアップ画面だった

アプリケーションはZimaOSのカスタムアプリから正常にインストールされたように見えましたが、ユーザーはログイン/サインアップを進められませんでした。この種のフロントエンドの症状は、次の原因で発生する可能性があります。

  • フロントエンドがバックエンドに接続できない。
  • バックエンドがPostgreSQLに接続できない。
  • オリジン/CSRF URLが正しくない。
  • サービスの起動順序またはヘルス状態。
  • リバースプロキシが実質的な外部URLを変更している。

ソースログには最初の2つの層に関する証拠は含まれていましたが、最終的な根本原因を1つに確定するには至りませんでした。

フロントエンドはフェッチ中に繰り返しタイムアウトした

フロントエンドのログには次の内容が報告されていました TypeError: fetch failed および ETIMEDOUTつまり、フロントエンドプロセスは、成功するはずのネットワークリクエストを完了できませんでした。

元のComposeでは次のようになっていました PUBLIC_SERVER_URL=http://server:8000これは、1つのComposeプロジェクト内でのサービス間通信としては概念的に正しいものです。ただし、他のURL変数をLANアドレスやプロキシドメインに変更すると、オリジンとブラウザー/バックエンド間の不一致が発生する可能性があります。

バックエンドは当初、PostgreSQLに接続できなかった

バックエンドのログには、繰り返し次のメッセージが出力されました PostgreSQLは利用できません - 待機中一方、データベースのログには、PostGISの初期化が進み、最終的に準備完了となったことが示されていました。

これは、データベースの準備が整う前にバックエンドが起動した、DB接続設定が誤っている、またはサービスネットワークに問題がある場合と整合します。ソースには、これらの可能性を決定的に区別できる十分な証拠はありません。

Cloudflare Tunnelを追加しても根本的な問題は解決しなかった

最初のインストールに失敗した後、ユーザーはCloudflare Tunnelを試しましたが、アプリケーションは依然として動作しませんでした。基盤となるフロントエンド ↔ バックエンド ↔ データベース間の経路が壊れている場合、これは想定される結果です。パブリックトンネルでサービスを公開することはできますが、内部のComposeネットワークを修復することはできません。

現在のAdventureLogは、よりシンプルで保守されたComposeレイアウトを採用しています

AdventureLogの現在のアップストリームComposeでは、次のものが使用されています。

  • ghcr.io/seanmorley15/adventurelog-frontend:latest;
  • ghcr.io/seanmorley15/adventurelog-backend:latest;
  • postgis/postgis:16-3.5;
  • 共有 .env サービス設定用のファイル。
  • 永続的な postgres_data および adventurelog_media ボリューム。

2025年のフォーラムYAMLをそのままコピーするのではなく、現在のAdventureLog Compose定義を確認してください。

フロントエンドURLとバックエンドURLを意図的に設定する

現在のAdventureLogインストーラーはフロントエンドURLとバックエンドURLを尋ね、それらからポート設定を導出します。これは、URLやオリジンの値が単なる表示用ラベルではなく、アプリケーションの契約の一部であることを示す強い手がかりです。

LANのみの構成では、実際のZimaOSのIPアドレスまたはホスト名と、選択したポートを一貫して使用してください。リバースプロキシを使用する場合は、公開HTTPS URLを一貫して設定し、localhostとLANアドレスやパブリックドメインを混在させないでください。 localhost各値をどのプロセスが参照するのかを理解せずに、LANアドレスやパブリックドメインをそのまま使わないでください。

ソースのパスワードとSECRET_KEYをそのまま使わないでください

フォーラムのComposeには、次のようなプレースホルダー値が含まれていました。 changeme123 PostgreSQLとDjangoのシークレット用です。これらは例であり、本番環境で安全に使用できる認証情報ではありません。

データベース用の認証情報と、強力なアプリケーションシークレットを生成してください。実際のシークレットを公開したことがある場合は、ローテーションしてください。

再インストールのトラブルシューティング前にデータベースとメディアを保持する

名前付きボリュームが残っていたり、予期せず削除されたりすると、スタックのアンインストールと再インストールを繰り返すことで状態が分かりにくくなる場合があります。目的が次のどちらなのかを決めてください。

  • 既存のデータベースやメディアを再利用する。
  • 完全にクリーンなテストインスタンスから始めます。

重要なデータは、Dockerボリュームを削除する前にバックアップしてください。

現在のZimaOSは標準Composeをより直接的に処理します

現在のZimaOS App Store 2.0とカスタムアプリのワークフローは、標準Docker ComposeとZimaOSメタデータを中心に構築されています。アプリケーションのランタイム動作(依存関係、環境変数、ポート、ボリューム、ヘルスチェック、ネットワーク)は、引き続きComposeで定義します。

AdventureLogを適用する際は、現在のZimaOS Composeモデルを使用してください。

ZimaOS上のAdventureLog FAQ

2025年の元スレッドでは、動作する修正方法が確認されていましたか?

いいえ。ユーザーがフロントエンド、バックエンド、データベースのログを投稿した後、スレッドは終了しました。

最も有力な情報源の手がかりは何でしたか?

フロントエンドのフェッチタイムアウトと、バックエンドがPostgreSQLの応答を繰り返し待機している状態です。

2025年の古いComposeを変更せずに再利用すべきですか?

いいえ。AdventureLogで保守されているCompose、イメージ、PostGISのバージョン、設定モデルが変更されています。