Tutorial de instalación Bacula - Docker.

Introducción.

Esta guía detalla el proceso de instalación y configuración de un servidor de Bacula utilizando la imagen bacularis/bacularis-standalone en Docker, y cómo configurar un cliente Bacula (File Daemon) para realizar backups. El objetivo es proporcionar un camino claro y evitar los problemas comunes encontrados durante la configuración inicial.

¿Por qué Bacula y Docker?

Bacula es una suite de software de código abierto para gestionar backups, restauración y verificación de datos. Es robusta y escalable, ideal para entornos de producción.Docker nos permite empaquetar Bacula (y Bacularis, su interfaz web) en un contenedor aislado, facilitando la instalación, el despliegue y la gestión. La imagen bacularis/bacularis-standalone simplifica aún más al incluir todos los componentes de Bacula (Director, Storage Daemon, Catálogo) y la interfaz web Bacularis en un único contenedor.

Instalación de Docker y Despliegue de Bacularis.

a) Crear Directorio donde se harán los backups:

sudo mkdir -p /mnt/bacula_storage

b) En la máquina Host (La que va a hacer los backups), hay que instalar docker:

# Eliminar versiones antiguas (si existen)

sudo apt remove docker docker-engine docker.io containerd runc

# Instalar dependencias

sudo apt update

sudo apt install ca-certificates curl gnupg lsb-release -y

# Añadir la clave GPG oficial de Docker

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Añadir el repositorio de Docker

echo \

 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \

 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalar Docker Engine

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# (Opcional) Añadir tu usuario al grupo docker para no usar sudo

sudo usermod -aG docker $USER

# Sal de tu sesión SSH y vuelve a entrar para que los cambios surtan efecto

c) Despliegue del contenedor Bacularis Standalone.

# Detener y eliminar el contenedor existente (si lo hay)

docker stop bacularis

docker rm bacularis

# Ejecutar el nuevo contenedor Bacularis

docker run --name bacularis \

 -p 80:80 \

 -p 9101:9101 \

 -p 9102:9102 \

 -p 9103:9103 \

 -v /opt/bacularis/config:/opt/bacula/etc \

 -v /mnt/bacula_storage:/raid \

 --restart=unless-stopped \

 -d bacularis/bacularis-standalone

Configuración inicial de Bacula.

La interfaz web de Bacularis es la forma recomendada y más cómoda para configurar Bacula. Bacularis se encargará de traducir tus entradas web a los archivos de configuración de Bacula (bacula-dir.conf, bacula-sd.conf, etc.) y, gracias al volumen mapeado (-v /opt/bacularis/config:/opt/bacula/etc), estos cambios se guardarán de forma persistente en tu host.

Accede a Bacularis en http://<IP_DE_TU_SERVIDOR_DEBIAN>. La contraseña por defecto de Bacularis suele ser admin/admin o bacularis/bacularis. Revisa la documentación específica de la imagen si no es así.

Bacula se organiza en recursos que definen sus diferentes partes y cómo interactúan. Aunque los configurarás a través de Bacularis, es fundamental entender su propósito

Pasos Generales de Configuración en Bacularis Web UI

Hay que hacer un mapeo de volumen del storage daemon del contenedor para afuera del contenedor.

  1. Configurar Storage Daemon Device:
    • Navega a la sección de "Storage Daemons" y luego a "Devices".
    • Localiza o crea un dispositivo. Asegúrate de que el campo "Archive Device" esté configurado como     . Este es el punto de montaje dentro del contenedor.
    • Dale un Name significativo a este Device (ej: FileStorage).
    • Guarda los cambios.
  2. Configurar Director Storage Resource:
    • Navega a la sección "Director" y luego a "Storage".
    • Localiza el Storage resource (puede llamarse File o similar).
    • Verifica que Address sea localhost y Port sea 9103.
    • ¡CRÍTICO! En el campo SD Address, ingresa la IP de tu servidor donde se respaldaran los datos.
    • En el campo Device, asegúrate de que el nombre coincida exactamente con el Name que le diste a tu dispositivo de almacenamiento en el paso anterior (ej: FileStorage).
    • Configura la Password para la comunicación con el SD (debe coincidir con la del SD).
    • Guarda los cambios.
  3. Configurar Cliente (File Daemon):
    • Navega a la sección "Clients".
    • Crea un nuevo cliente o edita uno existente.
    • Asigna un Name .
    • Configura la Address con la IP de tu máquina cliente.
    • Define una Passwordsegura para este cliente. ¡Necesitarás esta misma contraseña en la configuración del cliente Bacula
    • Guarda los cambios.
  4. Configurar FileSet:
    • Navega a la sección "FileSets".
    • Crea un nuevo FileSet.
    • Dale un Name
    • Define las rutas a Include y Exclude en la máquina cliente (ej: /home/agus para incluir y /home/agus/Downloads para excluir).
    • Guarda los cambios.
  5. Configurar Pool:
    • Navega a la sección "Pools".
    • Verifica o configura el Pool Default. Asegúrate de que tenga una política de retención (Volume Retention) y que AutoPrune y Recycle estén activados.
    • Guarda los cambios.
  6. Configurar Job:
    • Navega a la sección "Jobs".
    • Crea un nuevo Job.
    • Dale un Name (ej: TEST).
    • Asigna el Client (ej: kali-client), FileSet (ej: Kali Home), Storage (ej: File), y Pool (ej: Default) que acabas de configurar.
    • Selecciona un Schedule (puedes usar uno predefinido o crear uno).
    • Guarda los cambios.

Ejecutar el Primer Backup y Verificación

Reiniciar el Contenedor Bacularis

Después de realizar cambios en la configuración de Bacula a través de Bacularis, siempre debes reiniciar el contenedor para que Bacula cargue la nueva configuración.

docker restart bacularis

Iniciar el Job de Backup

Puedes iniciar el job desde la interfaz web de Bacularis (recomendado) o desde la consola de Bacula (bconsole).Desde Bacularis Web UI:

  • Navega a la sección "Jobs" y busca el Job TEST que configuraste.
  • Selecciona la opción para ejecutar el Job (usualmente un botón de "Run" o "Start").
  • Sigue las indicaciones (ej: si es necesario, Bacula te pedirá etiquetar un volumen si el pool no tiene uno disponible).

Configuracion del cliente

En la maquina que será respaldada, se necesita instalar y configurar El bacula file Daemon (bacula-fd)

sudo apt update

sudo apt install bacula-client -y

Aplica los cambios reiniciando el servicio y asegúrate de que inicie automáticamente.

sudo systemctl restart bacula-fd

sudo systemctl enable bacula-fd # Para que inicie con el sistema

sudo systemctl status bacula-fd # Verifica el estado