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.

Vorbereiten der Anmeldeinformationen

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

Hochladen von Mediendateien

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 installieren können. Einige zusätzliche Konfigurationen sind jedoch 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 Zugriffsschlü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 in den environment: Block des grampsweb Dienstes hinzuzufügen:

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

Beachten Sie, dass nur die Gramps Web-Konfigurationsoption das Präfix GRAMPSWEB_ trägt; die AWS_* Variablen werden direkt von der zugrunde liegenden boto3 Bibliothek gelesen und müssen unpräfigiert bleiben.

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

Synchronisieren 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.