Brug af en PostgreSQL-database¶
Som standard gemmer Gramps Web hvert slægtstræ i sin egen SQLite-databasefil. Dette kræver ingen yderligere service, sikkerhedskopier er så enkle som at kopiere filer, og det fungerer godt for de fleste installationer, inklusive dem der hoster flere træer.
Alternativt kan slægtstræer hostes på en PostgreSQL-server ved hjælp af SharedPostgreSQL-tilføjelsen, som holder alle træer i en enkelt database. Dette kan give mening, hvis du allerede kører en PostgreSQL-server og ønsker at administrere sikkerhedskopier og overvågning der, eller hvis du forventer mange brugere, der redigerer samtidig. PostgreSQL kan også hoste bruger databasen og søgeindekset, uafhængigt af hvor slægtstræerne er gemt.
PostgreSQL-tilføjelse afskrevet
Den ældre PostgreSQL-tilføjelse, som gemmer et enkelt slægtstræ pr. database, er afskrevet og vil ikke længere blive understøttet i en fremtidig version af Gramps Web API. Hvis du bruger den, se Flytning af et træ fra PostgreSQL-tilføjelsen til SharedPostgreSQL.
Opsætning af PostgreSQL-serveren¶
Den nemmeste mulighed er at køre PostgreSQL-serveren i en container på samme Docker-vært som Gramps Web, ved hjælp af Docker Compose.
Gramps har brug for lokaliteter installeret på PostgreSQL-serveren for at sortere objekter korrekt på forskellige sprog, og de standard PostgreSQL-billeder inkluderer ikke nogen. Billedet gramps-postgres tilføjer dem. For at bruge det, tilføj følgende sektion til din 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: som nøgle under volumes: sektionen af denne YAML-fil. Billedet indeholder to databaser, hver med sin egen bruger og adgangskode: gramps til de genealogiske data og grampswebuser til Gramps Web bruger databasen.
Hvis du bruger din egen PostgreSQL-server i stedet, skal du oprette en database med navnet gramps, som den konfigurerede bruger kan oprette tabeller i, og sørge for, at de lokaliteter, dine brugere har brug for, er installeret.
Konfigurering af Gramps Web¶
Nye slægtstræer oprettes i SharedPostgreSQL-databasen, når Gramps Web kører i multi-tree mode og konfigurationsmuligheden NEW_DB_BACKEND er indstillet til sharedpostgresql. Med Docker Compose-opsætningen ovenfor, tilføj følgende under environment: nøgle i grampsweb tjenesten i docker-compose.yml:
# aktiver multi-tree mode
GRAMPSWEB_TREE: "*"
GRAMPSWEB_MEDIA_PREFIX_TREE: true
# opret nye træer i SharedPostgreSQL-databasen
GRAMPSWEB_NEW_DB_BACKEND: sharedpostgresql
# Værten og porten for PostgreSQL-serveren.
# Værten er navnet på PostgreSQL-tjenesten ovenfor
GRAMPSWEB_POSTGRES_HOST: postgres_gramps
GRAMPSWEB_POSTGRES_PORT: 5432
# Legitimationsoplysningerne skal stemme overens med dem, der bruges til
# PostgreSQL-containeren
GRAMPSWEB_POSTGRES_USER: gramps
GRAMPSWEB_POSTGRES_PASSWORD: postgres_password_gramps
Se Konfiguration for en beskrivelse af alle disse muligheder. Bemærk, at værten og porten gemmes med hvert træ, når det oprettes, så ændringer af dem senere kun påvirker nye træer.
Oprettelse af et træ og import af data¶
For at oprette et nyt træ, POST til /trees/ endpointet som beskrevet i Opsætning til hosting af flere træer. Svaret indeholder ID'et for det nye træ, som du har brug for for at oprette træejerskontoen.
Når træejeren har logget ind, kan de importere et eksisterende slægtstræ, f.eks. en Gramps XML-fil eksporteret fra Gramps Desktop, via webgrænsefladen.
Brug af en PostgreSQL-database til bruger databasen¶
Bruger databasen er normalt en SQLite-fil, uanset hvor slægtstræerne er hostet. For at bruge PostgreSQL i stedet, skal du indstille konfigurationsmuligheden USER_DB_URI til en PostgreSQL-database-URL. Med gramps-postgres billedet ovenfor, brug dets grampswebuser database:
postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser
Brug af en PostgreSQL-database til søgeindekset¶
Søgeindekset gemmes også i SQLite som standard. For at bruge PostgreSQL i stedet, skal du indstille konfigurationsmuligheden SEARCH_INDEX_DB_URI til en PostgreSQL-database-URL. Med gramps-postgres billedet ovenfor, kan du bruge dets gramps database, uanset om dine slægtstræer også er hostet der:
postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps
Flytning af et træ fra PostgreSQL-tilføjelsen til SharedPostgreSQL¶
Ældre installationer kan hoste deres slægtstræ med PostgreSQL-tilføjelsen, som gemmer et enkelt træ pr. database og er afskrevet. For at finde ud af, hvilken tilføjelse et træ bruger, skal du se på filen database.txt i træets undermappe i Gramps-databasedirektoriet: den indeholder postgresql for den afskrevne PostgreSQL-tilføjelse og sharedpostgresql for SharedPostgreSQL.
For at flytte et træ fra PostgreSQL-tilføjelsen til SharedPostgreSQL inden for den samme installation, mens du beholder dine brugerkonti og mediefiler:
- Sikkerhedskopier dit slægtstræ som en Gramps XML (
.gramps) fil, ved hjælp af en konto, der kan se private optegnelser. - Ændre din konfiguration som beskrevet i Konfigurering af Gramps Web. Du kan fortsætte med at bruge din eksisterende
gramps-postgrescontainer. - Opret et nyt træ og noter dets træ-ID.
- Tildel dine eksisterende brugerkonti til det nye træ, som beskrevet i Migrer eksisterende bruger database.
- Flyt dine mediefiler til den placering, der forventes for det nye træ, som beskrevet i Migrer eksisterende mediefiler.
- Log ind og importer Gramps XML-filen til det nye træ.
Behold Gramps XML-filen, indtil du har kontrolleret, at det nye træ er komplet.
Hvis du flytter til en separat Gramps Web-installation i stedet, skal du følge trinene i Flyt til en anden Gramps Web-instans.
Problemer¶
I tilfælde af problemer, bedes du overvåge logudgangen fra Gramps Web og PostgreSQL-serveren. I tilfælde af docker opnås dette med
docker compose logs grampsweb
docker compose logs postgres_gramps
Hvis du har mistanke om, at der er et problem med Gramps Web (eller dokumentationen), bedes du indgive et problem på Github.