コンテンツにスキップ

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を使用する場合、最も簡単なオプションは、grampswebサービスのenvironment:ブロックにすべての環境変数を追加することです:

environment:
  AWS_ACCESS_KEY_ID: my_access_key_id
  AWS_SECRET_ACCESS_KEY: my_secret_access_key
  GRAMPSWEB_MEDIA_BASE_DIR: s3://my_bucket_name
  AWS_DEFAULT_REGION: eu-central-1

Gramps Webの設定オプションのみがGRAMPSWEB_プレフィックスを持つことに注意してください;AWS_*変数は、基盤となるboto3ライブラリによって直接読み取られ、プレフィックスを付けない必要があります。

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

メディアファイルの同期

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