コンテンツにスキップ

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イメージのデフォルト
      # データベース名が使用されます。
      GRAMPSWEB_TREE: postgres
      # 認証情報は、PostgreSQLコンテナで
      # 使用されるものと一致する必要があります。
      GRAMPSWEB_POSTGRES_USER: gramps
      GRAMPSWEB_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に問題を報告してください。