コンテンツにスキップ

PostgreSQLデータベースの使用

デフォルトでは、Grampsは家系図を保存するためにファイルベースのSQLiteデータベースを使用します。これはGramps Webにとっては完全に機能し、ほとんどのユーザーに推奨されます。しかし、Gramps Web APIバージョン0.3.0以降、Gramps PostgreSQL Addonによって、データベースごとに単一の家系図を持つPostgreSQLサーバーもサポートされています。バージョン1.0.0以降、SharedPostgreSQL Addonもサポートされており、これにより単一のデータベース内で複数の家系図をホストすることが可能になり、特にGramps Web APIのmulti-tree supportと一緒に使用する際に便利です。

PostgreSQLサーバーの設定

PostgreSQLAddonで使用する新しいデータベースを設定したい場合は、Gramps Wikiの指示に従ってサーバーを設定できます。

また、Docker Composeを使用して、Gramps Webと同じDockerホスト上のコンテナでPostgreSQLサーバーを実行することもできます。

GrampsでのDocker化されたPostgreSQLの使用は、デフォルトのPostgreSQLイメージにロケールがインストールされていないために複雑になりますが、これはGrampsがオブジェクトのローカライズされた照合に必要とします。最も簡単なオプションは、このリポジトリでリリースされたgramps-postgresイメージを使用することです。これを使用するには、docker-compose.ymlに次のセクションを追加します:

  postgres_gramps:
    image: ghcr.io/davidmstraub/gramps-postgres:latest
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: postgres_password_admin
      POSTGRES_PASSWORD_GRAMPS: postgres_password_gramps
      POSTGRES_PASSWORD_GRAMPS_USER: postgres_password_gramps_user
    volumes:
      - postgres_data:/var/lib/postgresql/data
また、このYAMLファイルのvolumes:セクションの下にpostgres_data:をキーとして追加します。このイメージには、Grampsの系譜データ用の別のデータベースとGrampsユーザーデータベースが含まれており、それぞれに別々のパスワードを設定できます。

Gramps家系図のインポート

再度、PostgreSQLサーバーを自分で設定した場合は、Gramps Wikiの指示に従ってデータベースに家系図をインポートできます。

また、上記のDocker Composeの指示に従った場合は、次のコマンドを使用してDockerホスト上にあるGramps XMLファイルをインポートできます:

docker compose run --entrypoint "" grampsweb \
    gramps -C postgres \
    -i /root/.gramps/grampsdb/my_tree.gramps \
    --config=database.path:/root/.gramps/grampsdb \
    --config=database.backend:postgresql \
    --config=database.host:postgres_gramps \
    --config=database.port:5432 \
    --username=gramps --password=postgres_password_gramps

データベース用にWeb APIを構成する

PostgreSQLデータベース用にWeb APIを構成するには、docker-compose.ymlgrampswebサービスのenvironment:キーの下に次の内容を追加します:

      # PostgreSQLアドオンはツリー名が
      # データベース名と等しいと仮定します。
      # ここではPostgreSQLイメージのデフォルト
      # データベース名が使用されています。
      TREE: postgres
      # 認証情報は
      # PostgreSQLコンテナで使用されるものと一致する必要があります。
      POSTGRES_USER: gramps
      POSTGRES_PASSWORD: postgres_password_gramps

マルチツリーインストールでの共有PostgreSQLデータベースの使用

multi-tree setupを使用する場合、SharedPostgreSQLアドオンは、APIを介して新しく作成されたものを含むすべてのツリーを単一のPostgreSQLデータベースでホストする便利なオプションです。これにより、プライバシーやセキュリティを損なうことなく運用できます。

これを実現するには、上記で説明したようにgramps-postgresイメージに基づいたコンテナを設定し、単に設定オプションNEW_DB_BACKENDsharedpostgresqlに設定します。例えば、GRAMPSWEB_NEW_DB_BACKEND環境変数を介して設定します。

ユーザーデータベース用のPostgreSQLデータベースの使用

系譜データにどのデータベースバックエンドを使用しているかに関係なく、適切なデータベースURLを提供することで、ユーザーデータベースをPostgreSQLデータベースでホストできます。上記のgramps-postgres Dockerイメージには、この目的のために使用できる別のデータベースgrampswebuserが含まれています。その場合、USER_DB_URI設定オプションの適切な値は次のようになります。

postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser

検索インデックス用のPostgreSQLデータベースの使用

Gramps Web APIバージョン2.4.0以降、検索インデックスはSQLiteデータベース(デフォルト)またはPostgreSQLデータベースのいずれかにホストされます。この目的のためにも、gramps-postgresイメージを使用できます。検索インデックスには、系譜データをPostgreSQLでホストしているかどうかに関係なく、イメージが提供するgrampsデータベースを使用できます(検索インデックスと系譜データは同じデータベースに共存できます)。これは、上記の例でSEARCH_INDEX_DB_URI設定オプションを次のように設定することで実現できます。

postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps

問題

問題が発生した場合は、Gramps WebとPostgreSQLサーバーのログ出力を監視してください。Dockerの場合、これは次のコマンドで実行できます。

docker compose logs grampsweb
docker compose logs postgres_grampsweb

Gramps Web(またはドキュメント)に問題があると思われる場合は、Githubで問題を報告してください。