PostgreSQLデータベースの使用¶
デフォルトでは、Gramps Webは各家系図を独自のSQLiteデータベースファイルに保存します。これには追加のサービスは必要なく、バックアップはファイルをコピーするだけで簡単であり、ほとんどのインストールにおいてうまく機能します。複数の家系図をホスティングする場合も含まれます。
代わりに、家系図はSharedPostgreSQLアドオンを使用してPostgreSQLサーバー上にホストすることができ、すべての家系図を単一のデータベースに保持します。これは、すでにPostgreSQLサーバーを運用していて、そこでバックアップや監視を管理したい場合や、多くのユーザーが同時に編集することを期待する場合に意味があります。PostgreSQLは、家系図が保存されている場所に関係なく、ユーザーデータベースや検索インデックスもホストできます。
PostgreSQLアドオンの非推奨
単一の家系図をデータベースごとに保存する古いPostgreSQLアドオンは非推奨であり、今後のGramps Web APIのバージョンではサポートされなくなります。これを使用している場合は、PostgreSQLアドオンからSharedPostgreSQLへの移行を参照してください。
PostgreSQLサーバーの設定¶
最も簡単なオプションは、Docker Composeを使用してGramps Webと同じDockerホスト上のコンテナでPostgreSQLサーバーを実行することです。
Grampsは、異なる言語でオブジェクトを正しくソートするためにPostgreSQLサーバーにロケールがインストールされている必要があり、デフォルトのPostgreSQLイメージにはそれが含まれていません。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:をキーとして追加します。このイメージには、各自のユーザーとパスワードを持つ2つのデータベースが含まれています:系譜データ用のgrampsとGramps Webユーザーデータベース用のgrampswebuserです。
代わりに独自のPostgreSQLサーバーを使用する場合は、設定されたユーザーがテーブルを作成できるgrampsという名前のデータベースを作成し、ユーザーが必要とするロケールがインストールされていることを確認してください。
Gramps Webの設定¶
新しい家系図は、Gramps Webがmulti-treeモードで実行され、NEW_DB_BACKEND設定オプションがsharedpostgresqlに設定されているときにSharedPostgreSQLデータベースに作成されます。上記のDocker Composeセットアップを使用して、docker-compose.ymlのgrampswebサービスのenvironment:キーの下に以下を追加します:
# マルチツリー モードを有効にする
GRAMPSWEB_TREE: "*"
GRAMPSWEB_MEDIA_PREFIX_TREE: true
# SharedPostgreSQLデータベースに新しいツリーを作成する
GRAMPSWEB_NEW_DB_BACKEND: sharedpostgresql
# PostgreSQLサーバーのホストとポート。ホストは上記のPostgreSQLサービスの名前です
GRAMPSWEB_POSTGRES_HOST: postgres_gramps
GRAMPSWEB_POSTGRES_PORT: 5432
# 認証情報はPostgreSQLコンテナで使用されるものと一致する必要があります
GRAMPSWEB_POSTGRES_USER: gramps
GRAMPSWEB_POSTGRES_PASSWORD: postgres_password_gramps
これらのオプションの説明については設定を参照してください。ホストとポートは、ツリーが作成されるときに各ツリーと共に保存されるため、後で変更しても新しいツリーにのみ影響します。
ツリーの作成とデータのインポート¶
新しいツリーを作成するには、複数のツリーをホスティングするためのセットアップで説明されているように/trees/エンドポイントにPOSTします。レスポンスには新しいツリーのIDが含まれており、これがツリーオーナーアカウントの作成に必要です。
ツリーオーナーがログインすると、既存の家系図(例えば、Gramps DesktopからエクスポートされたGramps XMLファイル)をウェブインターフェースを介してインポートできます。
ユーザーデータベース用のPostgreSQLデータベースの使用¶
ユーザーデータベースは通常、家系図がホスティングされている場所に関係なくSQLiteファイルです。代わりにPostgreSQLを使用するには、USER_DB_URI設定オプションをPostgreSQLデータベースのURLに設定します。上記のgramps-postgresイメージを使用する場合は、そのgrampswebuserデータベースを使用します:
postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser
検索インデックス用のPostgreSQLデータベースの使用¶
検索インデックスもデフォルトではSQLiteに保存されます。代わりにPostgreSQLを使用するには、SEARCH_INDEX_DB_URI設定オプションをPostgreSQLデータベースのURLに設定します。上記のgramps-postgresイメージを使用する場合、家系図がそこにホストされているかどうかに関係なく、そのgrampsデータベースを使用できます:
postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps
PostgreSQLアドオンからSharedPostgreSQLへのツリーの移行¶
古いインストールでは、単一のツリーをデータベースごとに保存するPostgreSQLアドオンを使用して家系図をホストしている場合があります。ツリーがどのアドオンを使用しているかを確認するには、Grampsデータベースディレクトリのツリーのサブディレクトリにあるdatabase.txtファイルを見てください。そこには、非推奨のPostgreSQLアドオンの場合はpostgresql、SharedPostgreSQLの場合はsharedpostgresqlが含まれています。
同じインストール内でPostgreSQLアドオンからSharedPostgreSQLにツリーを移行し、ユーザーアカウントとメディアファイルを保持するには:
- プライベートレコードを表示できるアカウントを使用して、Gramps XML(
.gramps)ファイルとして家系図をバックアップします。 - Gramps Webの設定で説明されているように構成を変更します。既存の
gramps-postgresコンテナを引き続き使用できます。 - 新しいツリーを作成し、そのツリーIDをメモします。
- 既存のユーザーデータベースを移行で説明されているように、既存のユーザーアカウントを新しいツリーに割り当てます。
- 既存のメディアファイルを移行で説明されているように、メディアファイルを新しいツリーに期待される場所に移動します。
- ログインして、Gramps XMLファイルを新しいツリーにインポートします。
新しいツリーが完全であることを確認するまで、Gramps XMLファイルを保持してください。
別のGramps Webインストールに移行する場合は、別のGramps Webインスタンスに移動の手順に従ってください。
問題¶
問題が発生した場合は、Gramps WebおよびPostgreSQLサーバーのログ出力を監視してください。Dockerの場合、これは次のコマンドで実行できます。
docker compose logs grampsweb
docker compose logs postgres_gramps
Gramps Web(またはドキュメント)に問題があると思われる場合は、Githubに問題を報告してください。