Gramps Web

Aus SatriaWiki

Um Gramps als Webanwendung laufen zu lassen, bedarf es einiger schlecht bis gar nicht dokumentierter Handgriffe.

Ich beschreibe hier die Variante - WebAPI als Docker container, Frontend nativ, beides hinter einem nginx Webserver. Offizielle Seite: https://www.grampsweb.org/de/

WebAPI

Quelle: https://github.com/gramps-project/gramps-web-api Den Source code aus einem release herunterladen und auf dem System entpacken, wo später die WebAPI später als Docker container laufen soll.

Docker image erzeugen

Der build-Prozess ist zweigeteilt. Im ersten Schritt wird ein base-image erstellt und im zweiten Schritt das lauffähige. Die Erstellung des base-image kann einige Stunden dauern, wegen ein paar komplexen python Aufrufen. Der zweite Schritt geht schneller.

Base-image:
docker build -f Dockerfile.base -t ghcr.io/gramps-project/gramps-web-base:latest .

Finales image:
docker build -t gramps-webapi .

Dieses Tag kann frei gewählt werden.

Mapped Volumes

Die folgenden Dateien und Verzeichnisse sollten als Mapped Volume vom Host in den Container hineingereicht werden. Die config, um den Server bequem konfigurieren zu können und den Rest, damit Änderungen persistiert werden. Das ist essentiell für den korrekten Betrieb der WebAPI.

  • /app/config/config.cfg
  • /root/gramps/recent-files-gramps.xml
  • /root/.gramps/grampsdb
  • /app/indexdir
  • /app/media
  • /app/users

Port

Beim Erstellen/Starten des Container muss der Port 5000 nach außen gemapped werden:

 -p 5000:5000

config.cfg

Sobald man diese Datei als Mapped Volume konfiguriert hat, bietet es sich an, die notwendige Konfiguration hier vorzunehmen. Es ist einfach eine Textdatei mit zeilenweisen Variablendefinitionen. Strings müssen in Anführungszeichen gefasst werden.

TREE=Stammbaum-Name
Das ist die eine wesentliche Konfiguration, ohne die der Service nicht startet. Entspricht der Umgebungsvariablen GRAMPSWEB_TREE.
BASE_URL="https://Domain"
Damit in Emails die korrekte URL verschickt werden kann.
DISABLE_TELEMETRY=True
Um das Versenden von Telemetriedaten zu unterdrücken.

Nervige Warnung unterdrücken

Um eine bestimmte Warnung zu unterdrücken, die in den logs nervt, kann das hier als Umgebungsvariable übergeben werden:

 -e PYTHONWARNINGS="ignore:Using the in-memory storage for tracking rate limits:UserWarning"

Referenz

https://www.grampsweb.org/install_setup/configuration/

Frontend

Quelle: https://github.com/gramps-project/gramps-web grampsjs aus den releases nehmen und im nginx deployen.

nginx

Eine zu ladende Konfiguration (z.B. über die sites-enabled) sollte per 'root'-Anweisung auf das grampsjs Verzeichnis zeigen und diese locations beinhalten:

 location ^~ /api/ {
   proxy_pass                         http://127.0.0.1:5000;
   proxy_http_version                 1.1;
   proxy_set_header Host              $host;
   proxy_set_header X-Real-IP         $remote_addr;
   proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
 }
 location / {
   try_files $uri $uri/ /index.html;
 }

Hierdurch wird der statische Content bereitgestellt, aber auch die API-Zugriffe auf das als Container laufende WebAPI weitergeleitet.

Berechtigungen

Gast:

  • Listen, Stammbaum etc. ansehen: ja
  • Datensätze hinzufügen: nein
  • Datensätze editieren: nein
  • Vertrauliche Datensätze: nein
  • Liste der Änderungen einsehen: nein
  • Verwaltung, Benutzerverwaltung: nein

Mitglied:

  • Listen, Stammbaum etc. ansehen: ja
  • Datensätze hinzufügen: nein
  • Datensätze editieren: nein
  • Vertrauliche Datensätze: ja
  • Liste der Änderungen einsehen: ja
  • Verwaltung, Benutzerverwaltung: nein

Beitragender:

  • Listen, Stammbaum etc. ansehen: ja
  • Datensätze hinzufügen: ja
  • Datensätze editieren: nein
  • Vertrauliche Datensätze: ja
  • Liste der Änderungen einsehen: ja
  • Verwaltung, Benutzerverwaltung: nein

Bearbeiter:

  • Listen, Stammbaum etc. ansehen: ja
  • Datensätze hinzufügen: ja
  • Datensätze editieren: ja
  • Vertrauliche Datensätze: ja
  • Liste der Änderungen einsehen: ja
  • Verwaltung, Benutzerverwaltung: nein

Eigentümer:

  • Listen, Stammbaum etc. ansehen: ja
  • Datensätze hinzufügen: ja
  • Datensätze editieren: ja
  • Vertrauliche Datensätze: ja
  • Liste der Änderungen einsehen: ja
  • Verwaltung, Benutzerverwaltung: ja