Gå til indholdet

Brug af en PostgreSQL-database

Som standard bruger Gramps en filbaseret SQLite-database til at gemme slægtsforskningen. Dette fungerer helt fint for Gramps Web og anbefales til de fleste brugere. Dog, fra og med Gramps Web API version 0.3.0, understøttes også en PostgreSQL-server med et enkelt slægtstræ pr. database, drevet af Gramps PostgreSQL Addon. Siden version 1.0.0 understøttes også SharedPostgreSQL Addon, som muliggør hosting af flere slægtstræer i en enkelt database, hvilket er særligt nyttigt, når det bruges sammen med Gramps Web API multi-tree support.

Opsætning af PostgreSQL-serveren

Hvis du ønsker at opsætte en ny database til brug med PostgreSQLAddon, kan du følge instruktionerne i Gramps Wiki for at opsætte serveren.

Alternativt kan du også bruge Docker Compose til at køre PostgreSQL-serveren i en container på samme docker-vært som Gramps Web.

Brugen af en dockeriseret PostgreSQL med Gramps er kun kompliceret af det faktum, at de standard PostgreSQL-billeder ikke har nogen lokaliteter installeret, som dog er nødvendige for Gramps til lokaliseret sortering af objekter. Den nemmeste mulighed er at bruge gramps-postgres billedet, der er udgivet i denne repository. 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
og tilføj også postgres_data: som nøgle under volumes: sektionen i denne YAML-fil. Dette billede indeholder en separat database til Gramps slægtsdata og til Gramps brugerdatabase; de kan hver især have separate adgangskoder.

Importering af et Gramps slægtstræ

Igen, hvis du selv har opsat PostgreSQL-serveren, kan du følge instruktionerne i Gramps Wiki for at importere et slægtstræ til databasen.

Alternativt, hvis du har fulgt Docker Compose-instruktionerne ovenfor, kan du bruge følgende kommando til at importere en Gramps XML-fil, der er placeret på din docker-vært:

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

Konfigurering af Web API til brug med databasen

For at konfigurere Web API til brug med PostgreSQL-databasen, tilføj følgende under environment: nøgle i grampsweb tjenesten i docker-compose.yml:

      # PostgreSQL add-on antager, at trænavnet er
      # lig med databasens navn, og her bruges det
      # standard database navn for PostgreSQL billedet
      TREE: postgres
      # Adgangsoplysningerne skal stemme overens med dem, der bruges til
      # PostgreSQL containeren
      POSTGRES_USER: gramps
      POSTGRES_PASSWORD: postgres_password_gramps

Brug af en delt PostgreSQL-database i en multi-tree installation

Når du bruger en multi-tree opsætning, er SharedPostgreSQL add-on en praktisk mulighed for at hoste alle træer, også nyoprettede via API'en, i en enkelt PostgreSQL-database uden at gå på kompromis med privatlivets fred eller sikkerhed.

For at opnå dette, opsæt en container baseret på gramps-postgres billedet som beskrevet ovenfor og sæt simpelthen konfigurationsmuligheden NEW_DB_BACKEND til sharedpostgresql, f.eks. via miljøvariablen GRAMPSWEB_NEW_DB_BACKEND.

Brug af en PostgreSQL-database til brugerdatabasen

Uafhængigt af hvilken database backend der bruges til slægtsdataene, kan brugerdatabasen hostes i en PostgreSQL-database ved at angive en passende database-URL. Det nævnte gramps-postgres dockerbillede indeholder en separat database grampswebuser, der kan bruges til dette formål. I så fald ville den passende værdi for konfigurationsmuligheden USER_DB_URI være

postgresql://grampswebuser:postgres_password_gramps_user@postgres_gramps:5432/grampswebuser

Brug af en PostgreSQL-database til søgeindekset

Siden Gramps Web API version 2.4.0, er søgeindekset hostet enten i en SQLite-database (standard) eller en PostgreSQL-database. Også til dette formål kan gramps-postgres billedet bruges. For søgeindekset kan vi bruge gramps databasen, der leveres af billedet, uanset om vi hoster vores slægtsdata i PostgreSQL eller ej (søgeindekset og slægtsdataene kan sameksistere i den samme database). Dette kan opnås, i det ovenstående eksempel, ved at sætte konfigurationsmuligheden SEARCH_INDEX_DB_URI til

postgresql://gramps:postgres_password_gramps@postgres_gramps:5432/gramps

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_grampsweb

Hvis du mistænker, at der er et problem med Gramps Web (eller dokumentationen), bedes du indgive et problem på Github.