コンテンツにスキップ

S3にメディアファイルをホスティングする

家系図のメディアファイルをGrampsデータベースと同じサーバーにホスティングする代わりに、Amazon S3や他のAPI互換のオブジェクトストレージサービスにホスティングすることもできます。これにより、Gramps Webサーバーのストレージおよびトラフィック要件が大幅に削減されます。

認証情報の準備

AWS(または他のオブジェクトストレージサービス)アカウントで、アクセスキーIDシークレットアクセスキーを取得します(最初にS3へのアクセスのみを許可するセキュリティポリシーを持つ別のユーザーを作成することをお勧めします)。

メディアファイルのアップロード

既存のメディアファイルをS3にアップロードするには、Linux上でS3 Media Uploader Addonを使用したローカルのGrampsインストールを利用できます。このアドオンはGrampsデスクトップから直接インストールできます。ただし、いくつかの追加設定が必要です。

このアドオンは、内部でboto3 Pythonライブラリを使用しています。まず、以下のコマンドでインストールする必要があります。

python3 -m pip install boto3

コマンドラインで、アクセスキーIDとシークレットキーを適切な環境変数にエクスポートします:

export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key

次に、以下のコマンドを実行してアップローダーを起動できます。

gramps -O "My Family Tree" -a tool \
    -p "name=s3uploader,bucket_name=my_bucket_name"

「My Family Tree」をあなたの家系図の名前に、my_bucket_nameをあなたのS3バケットの完全な名前に置き換えてください。Gramps Webインスタンス用に専用のS3バケットが必要です。バケットがまだ存在しない場合、S3 Uploader Addonはそれを作成しようとします。

Gramps Webの設定

新しいS3バケットをGramps Webのメディアソースとして使用するには、MEDIA_BASE_DIR 設定オプションs3://my_bucket_nameに設定します。

Docker Composeを使用する場合、最も簡単な方法はすべての環境変数をenvブロックに追加することです:

env:
  AWS_ACCESS_KEY_ID: my_access_key_id
  AWS_SECRET_ACCESS_KEY: my_secret_access_key
  MEDIA_BASE_DIR: s3://my_bucket_name
  AWS_DEFAULT_REGION: eu-central-1

AWS以外のS3互換オブジェクトストレージ(例:GCPやローカルテスト)を使用したい場合は、AWS_ENDPOINT_URL環境変数を設定してください。

メディアファイルの同期

ローカルのGrampsインストールとS3にホスティングされたGramps Webメディアファイル間でメディアファイルを同期させるために、Gramps Web Sync AddonはWeb APIを介したファイル同期をサポートしています。