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 🐧