Por qué una herramienta dedicada y no un pg_dump en crontab
La copia más extendida cabe en una línea: un pg_dump lanzado cada noche por cron y comprimido en un directorio. Funciona hasta el día en que descubres que llevaba tres semanas fallando sin avisar a nadie, que el disco estaba lleno o que el archivo no se restaura por falta del rol adecuado.
Databasus ataca justo esos puntos ciegos: avisa de cada fallo, aplica una política de retención, envía las copias fuera de la máquina y demuestra que se restauran. Para PostgreSQL añade lo que un volcado no puede hacer: copias físicas incrementales y streaming de WAL, que permiten volver al minuto anterior a un error.
Lo que aporta Databasus
- PostgreSQL físico y lógico — copias completas e incrementales, streaming de WAL y recuperación a un momento dado (PITR).
- MySQL, MariaDB, MongoDB — copias lógicas comprimidas desde la misma interfaz.
- Programación precisa — cada hora, diaria, semanal, mensual o con una expresión cron.
- Restauración verificada — restauración real en una base temporal e informe por tabla.
- Almacenamientos múltiples — disco local, S3, Cloudflare R2, Google Drive, SFTP, Rclone.
- Cifrado AES-256-GCM — archivos ilegibles incluso en un almacenamiento compartido.
- Equipo — espacios de trabajo, roles, registro de auditoría y avisos por correo, Telegram, Slack o webhook.
Databasus frente a los métodos habituales
Desplace la tabla
| Databasus | pg_dump + cron | Instantánea del VPS | |
|---|---|---|---|
| Aviso en caso de fallo | Sí, varios canales | Hay que escribirlo | Según el proveedor |
| Recuperación a un momento dado | Sí (streaming de WAL) | No | No, solo la hora de la instantánea |
| Copia fuera de la máquina | S3, R2, SFTP, Drive… | Hay que programarla | En el proveedor |
| Restauración verificada | Automática, con informe | Manual | Manual |
| Granularidad | Por base | Por base | El disco entero |
| Interfaz y equipo | Sí, roles y auditoría | No | Consola del proveedor |
Requisitos previos
Basta un VPS Ubuntu 24.04 con 1 GB de RAM para gestionar las copias; prevé espacio en disco si guardas copias locales, o un bucket S3 o R2 para enviarlas fuera. Necesitas Docker con el plugin Compose y, del lado de las bases, acceso de red desde el VPS y un usuario dedicado a las copias.
Si tus bases funcionan en otros servidores, abre su puerto solo a la dirección IP del VPS de Databasus, nunca a todo Internet: un cortafuegos que solo acepta ese origen limita la exposición a una única máquina que controlas. Para una base en el mismo VPS no hace falta abrir ningún puerto hacia el exterior.
Instalar Databasus con Docker Compose
Crear el archivo Compose
Crea un directorio
/opt/databasusy coloca en él estedocker-compose.yml. El puerto solo se publica en la interfaz local, yextra_hostspermite al contenedor llegar a una base instalada en el propio VPS mediante el nombrehost.docker.internal.services: databasus: image: databasus/databasus:v3.62.0 restart: unless-stopped ports: - "127.0.0.1:4005:4005" extra_hosts: - "host.docker.internal:host-gateway" volumes: - databasus-data:/databasus-data volumes: databasus-data: {}Arrancar el contenedor
Arranca Databasus y sigue su inicio:
docker compose up -d docker compose logs -f databasusEn el primer arranque, la imagen inicializa su propia base de metadatos y aplica sus migraciones en el volumen
databasus-data. La líneahttp server listening on :4005indica que está lista, en pocos segundos.Abrir la interfaz y crear la cuenta
Desde tu equipo, abre un túnel SSH hacia el VPS:
ssh -L 4005:127.0.0.1:4005 root@<ip-vps>Después ve a http://localhost:4005 y crea tu cuenta: la primera cuenta creada pasa a ser administradora. Los registros posteriores siguen abiertos por defecto con un rol de miembro, así que desactiva los registros externos en los ajustes.
Declarar una base PostgreSQL
En el servidor PostgreSQL, crea un rol dedicado que solo pueda leer:
CREATE ROLE databasus WITH LOGIN PASSWORD 'a-long-password'; GRANT pg_read_all_data TO databasus;En Databasus, añade la base con su host (para una base del mismo VPS:
host.docker.internal), su puerto, ese rol y su contraseña, y después un destino de almacenamiento y una programación. Lanza una primera copia a mano para comprobar que termina.
Siempre una copia fuera del VPS
Una copia guardada en el disco del servidor protege frente a un DROP TABLE desafortunado, no frente a la pérdida de la máquina. Añade al menos un destino externo — un bucket S3 o R2 — y activa el cifrado: el archivo no le sirve de nada a quien llegue a él sin la clave.
Elegir una política de retención
Databasus ofrece cuatro maneras de acotar el historial: una duración (siete días, tres meses, un año), un número (las treinta últimas), una rotación GFS (abuelo, padre, hijo: copias horarias, diarias, semanales, mensuales y anuales conservadas por separado) y límites de tamaño, por copia y en total.
Para una aplicación en producción, un buen punto de partida es una copia diaria conservada treinta días, más una rotación GFS mensual durante un año y un límite total de tamaño que evite que el almacenamiento se desborde. Añade el streaming de WAL si perder un día de datos es inaceptable.
Comprobar que la restauración funciona
Es la función que distingue a Databasus. Después de cada copia, o según un calendario, arranca una base temporal, restaura en ella la copia, compara el tamaño obtenido con el de la copia y lista cada tabla con su número de filas. Puede enviarte el informe, o solo los fallos.
Programar al menos una verificación semanal de tu base más importante. El día de un incidente no descubrirás que faltaba una extensión o un rol: la verificación te lo habrá dicho semanas antes.
Guarda también un registro de esos informes: son la prueba fechada de que tu plan de recuperación se ha ejercitado. Suele ser la primera pregunta de un cliente o de un auditor tras un incidente, y la respuesta «restauramos cada semana, aquí están los informes» zanja la discusión.
Solución de problemas
Falla la conexión a una base del mismo VPS. El servidor de base de datos solo escucha en 127.0.0.1: añade la interfaz de la red Docker a listen_addresses (PostgreSQL) o a bind-address (MySQL), autoriza la subred Docker en pg_hba.conf y reinicia el servicio.
Falla una copia hacia S3. Comprueba la región, el nombre del bucket y los permisos de la clave de acceso: debe poder escribir, listar y borrar objetos bajo el prefijo elegido, o la retención no podrá purgar las copias antiguas.
No llega ninguna notificación. Prueba el canal desde su página de configuración; para el correo, hay que indicar un servidor SMTP en los ajustes.
La interfaz deja de responder. Lee los registros con docker compose logs --tail 100 databasus: cada tarea en segundo plano se registra al arrancar.
Instalación en un clic desde el Marketplace de ServOrbit
El Marketplace de ServOrbit instala Databasus en tu VPS sin línea de comandos: despliega el contenedor con el acceso a host.docker.internal ya declarado, publica el puerto en la interfaz local y te indica en el área de cliente el puerto que debes usar para el túnel SSH. También puedes asociarle un dominio para un acceso permanente por HTTPS.