Gramps Web
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/
Inhaltsverzeichnis
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