Saltar a contenido

Uso de una base de datos PostgreSQL

Por defecto, Gramps utiliza una base de datos SQLite basada en archivos para almacenar el árbol genealógico. Esto funciona perfectamente bien para Gramps Web y se recomienda para la mayoría de los usuarios. Sin embargo, a partir de la versión 0.3.0 de la API de Gramps Web, también se admite un servidor PostgreSQL con un solo árbol genealógico por base de datos, impulsado por el Complemento de PostgreSQL de Gramps. Desde la versión 1.0.0, también se admite el Complemento SharedPostgreSQL, que permite alojar múltiples árboles genealógicos en una sola base de datos, lo cual es particularmente útil cuando se utiliza junto con el soporte para múltiples árboles de la API de Gramps Web.

Configuración del servidor PostgreSQL

Si deseas configurar una nueva base de datos para usar con el Complemento PostgreSQL, puedes seguir las instrucciones en la Wiki de Gramps para configurar el servidor.

Alternativamente, también puedes usar Docker Compose para ejecutar el servidor PostgreSQL en un contenedor en el mismo host de Docker que Gramps Web.

Usar un PostgreSQL dockerizado con Gramps solo se complica por el hecho de que las imágenes predeterminadas de PostgreSQL no tienen locales instalados, que son necesarios para la colación localizada de objetos por parte de Gramps. La opción más fácil es usar la imagen gramps-postgres publicada en este repositorio. Para usarla, agrega la siguiente sección a tu 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
y también agrega postgres_data: como clave bajo la sección volumes: de este archivo YAML. Esta imagen contiene una base de datos separada para los datos genealógicos de Gramps y para la base de datos de usuarios de Gramps; cada una puede tener contraseñas separadas.

Importando un árbol genealógico de Gramps

Nuevamente, si has configurado el servidor PostgreSQL tú mismo, puedes seguir las instrucciones en la Wiki de Gramps para importar un árbol genealógico en la base de datos.

Alternativamente, si has seguido las instrucciones de Docker Compose anteriores, puedes usar el siguiente comando para importar un archivo XML de Gramps ubicado en tu host de 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

Configurando la API Web para su uso con la base de datos

Para configurar la API Web para su uso con la base de datos PostgreSQL, agrega lo siguiente bajo la clave environment: del servicio grampsweb en docker-compose.yml:

      # el complemento de PostgreSQL asume que el nombre del árbol es
      # igual al nombre de la base de datos y aquí se utiliza el nombre
      # de base de datos predeterminado de la imagen de PostgreSQL
      TREE: postgres
      # Las credenciales deben coincidir con las utilizadas para
      # el contenedor de PostgreSQL
      POSTGRES_USER: gramps
      POSTGRES_PASSWORD: postgres_password_gramps

Uso de una base de datos PostgreSQL compartida en una instalación de múltiples árboles

Al usar una configuración de múltiples árboles, el complemento SharedPostgreSQL es una opción conveniente para alojar todos los árboles, también los recién creados a través de la API, en una sola base de datos PostgreSQL sin comprometer la privacidad o la seguridad.

Para lograr esto, configura un contenedor basado en la imagen gramps-postgres como se describió anteriormente y simplemente establece la opción de configuración NEW_DB_BACKEND a sharedpostgresql, por ejemplo, a través de la variable de entorno GRAMPSWEB_NEW_DB_BACKEND.

Uso de una base de datos PostgreSQL para la base de datos de usuarios

Independientemente de qué backend de base de datos se utilice para los datos genealógicos, la base de datos de usuarios puede ser alojada en una base de datos PostgreSQL proporcionando una URL de base de datos apropiada. La imagen de Docker gramps-postgres mencionada anteriormente contiene una base de datos separada grampswebuser que se puede usar para este propósito. En ese caso, el valor apropiado para la opción de configuración USER_DB_URI sería

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

Uso de una base de datos PostgreSQL para el índice de búsqueda

Desde la versión 2.4.0 de la API de Gramps Web, el índice de búsqueda se aloja ya sea en una base de datos SQLite (la predeterminada) o en una base de datos PostgreSQL. También para este propósito, se puede usar la imagen gramps-postgres. Para el índice de búsqueda, podemos usar la base de datos gramps proporcionada por la imagen, independientemente de si estamos alojando nuestros datos genealógicos en PostgreSQL o no (el índice de búsqueda y los datos genealógicos pueden coexistir en la misma base de datos). Esto se puede lograr, en el ejemplo anterior, configurando la opción de configuración SEARCH_INDEX_DB_URI a

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

Problemas

En caso de problemas, por favor monitorea la salida de registro de Gramps Web y del servidor PostgreSQL. En el caso de Docker, esto se logra con

docker compose logs grampsweb
docker compose logs postgres_grampsweb

Si sospechas que hay un problema con Gramps Web (o la documentación), por favor informa un problema en Github.