Utilizzare un database PostgreSQL¶
Per impostazione predefinita, Gramps utilizza un database SQLite basato su file per memorizzare l'albero genealogico. Questo funziona perfettamente per Gramps Web ed è raccomandato per la maggior parte degli utenti. Tuttavia, a partire dalla versione 0.3.0 dell'API Gramps Web, è supportato anche un server PostgreSQL con un singolo albero genealogico per database, alimentato dal Gramps PostgreSQL Addon. Dalla versione 1.0.0, è supportato anche l'Addon SharedPostgreSQL, che consente di ospitare più alberi genealogici in un singolo database, particolarmente utile se utilizzato insieme al supporto multi-albero dell'API Gramps Web.
Configurazione del server PostgreSQL¶
Se desideri configurare un nuovo database da utilizzare con il PostgreSQLAddon, puoi seguire le istruzioni nel Wiki di Gramps per configurare il server.
In alternativa, puoi anche utilizzare Docker Compose per eseguire il server PostgreSQL in un contenitore sullo stesso host Docker di Gramps Web.
Utilizzare un PostgreSQL dockerizzato con Gramps è complicato solo dal fatto che le immagini PostgreSQL predefinite non hanno alcuna localizzazione installata, necessaria a Gramps per la collazione localizzata degli oggetti. L'opzione più semplice è utilizzare l'immagine gramps-postgres rilasciata in questo repository. Per utilizzarla, aggiungi la seguente sezione al tuo docker-compose.yml:
postgres_gramps:
image: ghcr.io/davidmstraub/gramps-postgres:latest
restart: unless-stopped
environment:
POSTGRES_PASSWORD: postgres_password_admin
POSTGRES_PASSWORD_GRAMPS: postgres_password_gramps
POSTGRES_PASSWORD_GRAMPS_USER: postgres_password_gramps_user
volumes:
- postgres_data:/var/lib/postgresql/data
postgres_data: come chiave sotto la sezione volumes: di questo file YAML. Questa immagine contiene un database separato per i dati genealogici di Gramps e per il database utente di Gramps; ciascuno può avere password separate.
Importare un albero genealogico di Gramps¶
Ancora una volta, se hai configurato tu stesso il server PostgreSQL, puoi seguire le istruzioni nel Wiki di Gramps per importare un albero genealogico nel database.
In alternativa, se hai seguito le istruzioni di Docker Compose sopra, puoi utilizzare il seguente comando per importare un file XML di Gramps situato sul tuo host Docker:
docker compose run --entrypoint "" grampsweb \
gramps -C postgres \
-i /root/.gramps/grampsdb/my_tree.gramps \
--config=database.path:/root/.gramps/grampsdb \
--config=database.backend:postgresql \
--config=database.host:postgres_gramps \
--config=database.port:5432 \
--username=gramps --password=postgres_password_gramps
Configurare l'API Web per l'uso con il database¶
Per configurare l'API Web per l'uso con il database PostgreSQL, aggiungi quanto segue sotto la chiave environment: del servizio grampsweb in docker-compose.yml:
# l'addon PostgreSQL presume che il nome dell'albero sia
# uguale al nome del database e qui viene utilizzato il nome
# del database predefinito dell'immagine PostgreSQL
TREE: postgres
# Le credenziali devono corrispondere a quelle utilizzate per
# il contenitore PostgreSQL
POSTGRES_USER: gramps
POSTGRES_PASSWORD: postgres_password_gramps
Utilizzare un database PostgreSQL condiviso in un'installazione multi-albero¶
Quando si utilizza una configurazione multi-albero, l'addon SharedPostgreSQL è un'opzione conveniente per ospitare tutti gli alberi, anche quelli appena creati tramite l'API, in un unico database PostgreSQL senza compromettere la privacy o la sicurezza.
Per ottenere ciò, configura un contenitore basato sull'immagine gramps-postgres come descritto sopra e imposta semplicemente l'opzione di configurazione NEW_DB_BACKEND su sharedpostgresql, ad esempio tramite la variabile d'ambiente GRAMPSWEB_NEW_DB_BACKEND.
Utilizzare un database PostgreSQL per il database utente¶
Indipendentemente da quale backend di database venga utilizzato per i dati genealogici, il database utente può essere ospitato in un database PostgreSQL fornendo un URL di database appropriato. L'immagine Docker gramps-postgres menzionata sopra contiene un database separato grampswebuser che può essere utilizzato a tale scopo. In tal caso, il valore appropriato per l'opzione di configurazione USER_DB_URI sarebbe
postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser
Utilizzare un database PostgreSQL per l'indice di ricerca¶
Dalla versione 2.4.0 dell'API Gramps Web, l'indice di ricerca è ospitato sia in un database SQLite (il predefinito) che in un database PostgreSQL. Anche per questo scopo, può essere utilizzata l'immagine gramps-postgres. Per l'indice di ricerca, possiamo utilizzare il database gramps fornito dall'immagine, indipendentemente dal fatto che stiamo ospitando i nostri dati genealogici in PostgreSQL o meno (l'indice di ricerca e i dati genealogici possono coesistere nello stesso database). Questo può essere ottenuto, nell'esempio sopra, impostando l'opzione di configurazione SEARCH_INDEX_DB_URI su
postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps
Problemi¶
In caso di problemi, si prega di monitorare l'output del log di Gramps Web e del server PostgreSQL. Nel caso di Docker, ciò si ottiene con
docker compose logs grampsweb
docker compose logs postgres_grampsweb
Se sospetti che ci sia un problema con Gramps Web (o la documentazione), ti preghiamo di segnalare un problema su Github.