PG Back Web copias de seguridad postgreSQL con interfaz web

2025-01-27

Anteriormente escribí un articulo de como realizar copias de seguridad de tus bases de datos PostgresSql y aunque no era muy difícil de configurar y pese a ser proceso mas o menos automatizado, he de reconocer que era un poco tedioso a la hora restaurar, ya que debías de conectarte la shell del contenedor e ir navegando por diferentes menús.

Desde hace tiempo vengo utilizando PG Back Web, un proyecto gratuito y de código abierto, escrito en el lenguaje de programación Go y que simplifica enormemente la tarea de realizar las copias de seguridad de las bases de datos de PostgreSQL.

Dispone de una interfaz web muy intuitiva, lo que nos va a permitir gestionar y automatizar, sin necesidad de ser un experto en bases de datos, nuestras copias de seguridad de una manera muy sencilla.

Las principales características básicas de PG Back Web:

  • Interfaz web intuitiva: Puedes administrar las copias de seguridad con facilidad, sin necesidad de ser un experto en base de datos.
  • Backups programados
  • Monitoreo de la copia de seguridad: Visualiza el estado de las copias de seguridad con registros de su ejecución.
  • Descarga y restauración instantánea: Restaura y descarga las copias de seguridad directamente desde la interfaz web.
  • Soporte multiversión: Compatible con PostgreSQL 13, 14, 15 y 16.
  • Almacenamiento local y S3: Almacena copias de seguridad localmente o nubes S3.
  • La seguridad es lo primero: Encriptación PGP para proteger la información sensible.
  • Confianza en el código abierto: Construido bajo licencia MIT.
  • Modo oscuro: Porque a todos nos encanta el modo oscuro.

Instalación

Docker

PG Back Web dispone de una imagen docker. Tan sólo hay que establecer 3 variables de entorno.

Un ejemplo de cómo ejecutar PG Back Web con Docker Compose, recuerda adaptarlo a tus necesidades:

services:
  pgbackweb:
    image: eduardolat/pgbackweb:latest
    ports:
      - "8085:8085" # Access the web interface at http://localhost:8085
    volumes:
      - ./backups:/backups # If you only use S3 destinations, you don't need this volume
    environment:
      PBW_ENCRYPTION_KEY: "my_secret_key" # Change this to a strong key
      PBW_POSTGRES_CONN_STRING: "postgresql://postgres:password@postgres:5432/pgbackweb?sslmode=disable"
      TZ: "Europe/Madrid" # Set your timezone, optional
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: postgres
      POSTGRES_DB: pgbackweb
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

Sólo tienes que configurar las siguientes variables de entorno:

  • PBW-ENCRYPTION-KEY: Clave de cifrado, PG Back Web la usa para cifrar datos sensibles.
  • PBW-POSTGRES-CONN-STRING: La cadena de conexión con la base de datos PostgreSQL que almacenará datos web de PG Back.
  • TZ: Tu zona horaria (opcional). Por defecto es UTC. Esto impacta en el registro, los nombres de archivo de la copia de seguridad y la zona horaria predeterminada en la interfaz web.

Unraid

En el momento de escribir esta publicación aun no existe una plantilla de instalación de PG Back Web para Unraid disponible en las Community Applications, por lo que necesitamos crearla nosotros mismos:

Desde el menú principal Docker -> Agragar Contenedor y vamos añadiendo los campos como pongo a continuación, recuerda adaptarlo a tus necesidades:

🗨 En mi caso, tengo PostgreSQL en un contenedor aparte, por ello, en la plantilla indico la ubicación, credenciales y puerto de donde esta corriendo

Funcionamiento

Accederemos a la interfaz web en por el puerto configurado, por defecto el 8085, la primera vez nos pide crear un primer usuario

La primera pantalla que aparece en un resumen de las bases de datos que vamos a respaldar, destinos remotos, numero de backups realizados, etc. También tenemos una pequeña ayuda con los pasos a seguir para crear nuestras copias de respaldo

Bases de datos

Para añadir una base de datos, haz clic en “Databases” en la barra lateral izquierda. A continuación, haz clic en el botón “Create database”. Rellena el formulario y haz clic en el botón “Guarda”. Puedes crear tantas bases de datos para respalda como quieras.

Crear un destino en nubes S3

Para crear un destino en nubes S3 donde almacenar la copia de seguridad, haz clic en “Destinations” en la barra lateral izquierda. A continuación, haz clic en el botón “Create destination”. Rellena el formulario y haz clic en el botón “Save”.

Se pueden crear tantos destinos como se quieran para almacenar las copias de seguridad.

🗨️ Puedes omitir este paso si solo vas a usar el almacenamiento local para tus copias de seguridad.

Crear copias

Para crear una copia de seguridad necesitas tener al menos una base de datos y un destino.

Haz clic en “Backup” del menú de la izquierda. A continuación, haz clic en el botón “Create backup”.

Rellena el formulario, utiliza el campo cron para programar cuando quieres que se ejecute, la política de retención, etc. Cuando termines de rellenar todo el formulario haz clic en el botón “Guardar”.

Puedes crear tantas copias de seguridad como quieras, incluyendo cualquier combinación de bases de datos y destinos.

Destination directory es un directorio donde se almacenaran los backups. La ruta del directorio es una ruta relativa al directorio raíz del destino. Debe comenzar con / y no contener espacio y no terminar con /

Backups Locales

Para realizar Backups en un sistema de ficheros local, si por ejemplo el directorio base es /backups, entonces los ficheros del backup se almacenaran en:

/backups/<destination-directory>/<YYYY>/<MM>/<DD>/dump-<random-suffix>.zip

Bbackups Remotos

Para backups remotos, si el directorio base es bucket, entonces los ficheros del backup se almacenaran en:

s3://<bucket>/<destination-directory>/<YYYY>/<MM>/<DD>/dump-<random-suffix>.zip

Mi relación de backups

Esperar a las ejecuciones

Cuando un backup se crea y está activo, el sistema comenzará a crear los backups en función de la programación que configuramos. También puedes crear backups manualmente haciendo clic en el botón “Run backuo now” en la lista de copias de seguridad. Puedes ver las ejecuciones en “Executions” en la barra lateral izquierda y luego haz clic en el botón “Show details” para ver los detalles, registros y descargar o eliminar el archivo de copia de seguridad.

Recuperar contraseña acceso a PBW

En caso de que olvides la contraseña de acceso a PG Back Web puedes restablecerla ejecutando el siguiente comando en el servidor donde PG Back Web se está ejecutando:

docker exec -it <container_name_or_id> sh -c change-password

Sustituye <container_name_or_id> con el nombre o el identificador del contenedor de PG Back Web y a continuación sólo tienes que seguir las instrucciones.

Próximos pasos

En este enlace se puede ver una lista de características que se han confirmado para futuras actualizaciones: Próximos pasos.

Espero que te haya gustado, pasa un gran día 🐧


Ingrese la dirección de su instancia