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
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.ymlのgrampswebサービスの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_BACKENDをsharedpostgresqlに設定します。例えば、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で問題を報告してください。