Zum Inhalt

Hosting von Mediendateien auf S3

Anstatt die Mediendateien des Stammbaums auf demselben Server wie die Gramps-Datenbank zu hosten, können sie auch auf Amazon S3 oder einem anderen API-kompatiblen Objektspeicherdienst gehostet werden. Dies reduziert die Speicher- und Verkehrsanforderungen für den Gramps-Webserver erheblich.

Vorbereitung der Anmeldeinformationen

Holen Sie sich in Ihrem AWS (oder einem anderen Objektspeicherdienst) Konto eine Zugangs-Schlüssel-ID und geheinen Zugangs-Schlüssel (Sie möchten möglicherweise zuerst einen separaten Benutzer mit einer Sicherheitsrichtlinie erstellen, die nur den Zugriff auf S3 erlaubt).

Mediendateien hochladen

Um Ihre vorhandenen Mediendateien nach S3 hochzuladen, können Sie unter Linux eine lokale Gramps-Installation mit dem S3 Media Uploader Addon verwenden, das Sie direkt von Gramps Desktop aus installieren können. Es ist jedoch eine zusätzliche Konfiguration erforderlich.

Das Addon verwendet die boto3 Python-Bibliothek im Hintergrund. Sie müssen es zuerst mit folgendem Befehl installieren:

python3 -m pip install boto3

Exportieren Sie in der Befehlszeile die Zugangs-Schlüssel-ID und den geheimen Schlüssel in die entsprechenden Umgebungsvariablen:

export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key

Jetzt können Sie den Uploader starten, indem Sie den folgenden Befehl ausführen:

gramps -O "Mein Stammbaum" -a tool \
    -p "name=s3uploader,bucket_name=my_bucket_name"

Ersetzen Sie "Mein Stammbaum" durch den Namen Ihres Stammbaums und my_bucket_name durch den vollständigen Namen Ihres S3-Buckets. Sie benötigen einen dedizierten S3-Bucket für Ihre Gramps-Webinstanz. Wenn der Bucket noch nicht existiert, wird das S3 Uploader Addon versuchen, ihn zu erstellen.

Gramps Web konfigurieren

Um den neuen S3-Bucket als Medienquelle für Gramps Web zu verwenden, setzen Sie einfach die MEDIA_BASE_DIR Konfigurationsoption auf s3://my_bucket_name.

Wenn Sie Docker Compose verwenden, ist die einfachste Option, alle Umgebungsvariablen zum env-Block hinzuzufügen:

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

Wenn Sie einen S3-kompatiblen Objektspeicher verwenden möchten, der nicht von AWS stammt (z. B. GCP oder für lokale Tests), setzen Sie die Umgebungsvariable AWS_ENDPOINT_URL.

Synchronisierung von Mediendateien

Um Mediendateien zwischen einer lokalen Gramps-Installation und auf S3 gehosteten Gramps-Web-Mediendateien synchron zu halten, unterstützt das Gramps Web Sync Addon die Dateisynchronisierung über die Web-API.