Introducción
BareOS (Backup Archiving Recovery Open Sourced) es una solución de backup en red de código abierto, multiplataforma y de nivel empresarial. Nació como fork de Bacula cuando la comunidad detectó que las mejoras y parches aportados solo se incorporaban a la versión comercial de Bacula.
BareOS se basa en una arquitectura cliente-servidor con los siguientes componentes principales:
- Director (bareos-dir): orquesta todas las operaciones de backup, restauración y verificación. Es el cerebro del sistema.
- Storage Daemon (bareos-sd): gestiona los dispositivos de almacenamiento donde se escriben los datos de backup (disco, cinta, cloud).
- File Daemon (bareos-fd): el agente cliente que se instala en cada máquina a respaldar. Envía los datos al Storage Daemon.
- Catalog (base de datos): almacena el índice de todos los archivos respaldados, los volúmenes y los jobs. Soporta MySQL/MariaDB y PostgreSQL.
- Console (bconsole): interfaz de línea de comandos para interactuar con el Director.
- WebUI: interfaz web para gestión y monitorización.
En esta guía cubriremos la instalación completa del servidor BareOS con MariaDB, la instalación del cliente en GNU/Linux (Debian/Ubuntu y RHEL/CentOS) y en Windows, la configuración de la WebUI, y la ejecución de nuestro primer job de backup.
Requisitos previos
Para seguir esta guía necesitamos:
- Un servidor GNU/Linux (Debian 12 o RHEL 9 / Rocky Linux 9) para el Director, Storage Daemon y Catalog.
- Uno o más clientes GNU/Linux o Windows donde instalar el File Daemon.
- Acceso root o sudo en todos los equipos.
- Conectividad de red entre el servidor y los clientes.
Los puertos que deben estar abiertos en el firewall:
Puerto Servicio Dirección
------ ---------------- ---------------------------------
9101/tcp Director Clientes → Servidor
9102/tcp File Daemon Servidor → Clientes
9103/tcp Storage Daemon Clientes → Servidor
80/443 WebUI (Apache) Navegador → ServidorInstalación del servidor BareOS
Añadir los repositorios oficiales
BareOS mantiene repositorios oficiales para las principales distribuciones. Es importante utilizar siempre los repositorios oficiales para recibir actualizaciones de seguridad.
En Debian/Ubuntu:
# Importar la clave GPG del repositorio
wget -qO- https://download.bareos.org/current/Debian_12/Release.key | \
gpg --dearmor -o /usr/share/keyrings/bareos-archive-keyring.gpg
# Añadir el repositorio
echo "deb [signed-by=/usr/share/keyrings/bareos-archive-keyring.gpg] \
https://download.bareos.org/current/Debian_12/ /" \
> /etc/apt/sources.list.d/bareos.list
# Actualizar índices
apt updateEn RHEL/Rocky/CentOS:
# Añadir el repositorio
wget -O /etc/yum.repos.d/bareos.repo \
https://download.bareos.org/current/EL_9/bareos.repo
# Verificar que el repositorio se ha añadido correctamente
dnf repolist | grep bareosInstalar los paquetes del servidor
En el servidor instalamos todos los componentes de BareOS junto con la base de datos y la WebUI.
En Debian/Ubuntu:
apt install -y bareos bareos-database-mysql mariadb-server \
bareos-webui apache2 libapache2-mod-php php php-cli php-commonEn RHEL/Rocky/CentOS:
dnf install -y bareos bareos-database-mysql mariadb-server \
bareos-webui httpd php php-cli php-commonConfiguración de la base de datos
BareOS necesita una base de datos para almacenar su catálogo. Vamos a configurar MariaDB y crear las tablas necesarias.
Primero, iniciamos y securizamos MariaDB:
systemctl enable --now mariadb
mysql_secure_installationEn sistemas Debian, creamos el fichero de credenciales para que los scripts de BareOS puedan conectarse a MariaDB:
# /root/.my.cnf
[client]
host=localhost
user=root
password=TU_PASSWORD_MYSQLEjecutamos los scripts de BareOS para crear la base de datos, las tablas y asignar los privilegios:
# Crear la base de datos
/usr/lib/bareos/scripts/create_bareos_database
# Crear las tablas del catálogo
/usr/lib/bareos/scripts/make_bareos_tables
# Asignar privilegios al usuario bareos
/usr/lib/bareos/scripts/grant_bareos_privilegesInicio de servicios del servidor
Habilitamos e iniciamos los tres demonios principales de BareOS y el servidor web:
# Habilitar e iniciar los servicios de BareOS
systemctl enable --now bareos-dir
systemctl enable --now bareos-sd
systemctl enable --now bareos-fd
# Habilitar e iniciar Apache (Debian) o httpd (RHEL)
systemctl enable --now apache2 # Debian/Ubuntu
# systemctl enable --now httpd # RHEL/CentOSVerificamos que todo funciona correctamente conectándonos con bconsole:
bconsole
Connecting to Director localhost:9101
1000 OK: bareos-dir Version: 23.0.4 (01 January 2024)
Enter a period to cancel a command.
*status dir
...Si la conexión es exitosa, el servidor está correctamente configurado.
Configuración de la WebUI
BareOS WebUI proporciona una interfaz gráfica accesible desde el navegador para gestionar y monitorizar los backups. Necesitamos crear un usuario de consola para la WebUI.
Editamos o creamos el fichero de configuración de la consola de administración:
cat /etc/bareos/bareos-dir.d/console/admin.conf
Console {
Name = admin
Password = "tu_password_segura"
Profile = "webui-admin"
}Reiniciamos el Director para aplicar los cambios:
systemctl restart bareos-dirAccedemos a la WebUI desde el navegador en http://IP_SERVIDOR/bareos-webui e introducimos las credenciales configuradas.
Instalación del cliente en GNU/Linux
El File Daemon (bareos-fd) es el agente que se instala en cada máquina que queremos respaldar. Su instalación es sencilla y ligera.
Añadir repositorios en el cliente
En Debian/Ubuntu:
# Importar clave GPG
wget -qO- https://download.bareos.org/current/Debian_12/Release.key | \
gpg --dearmor -o /usr/share/keyrings/bareos-archive-keyring.gpg
# Añadir repositorio
echo "deb [signed-by=/usr/share/keyrings/bareos-archive-keyring.gpg] \
https://download.bareos.org/current/Debian_12/ /" \
> /etc/apt/sources.list.d/bareos.list
apt updateEn RHEL/Rocky/CentOS:
wget -O /etc/yum.repos.d/bareos.repo \
https://download.bareos.org/current/EL_9/bareos.repoInstalar e iniciar el File Daemon
En Debian/Ubuntu:
apt install -y bareos-client
systemctl enable --now bareos-fdEn RHEL/Rocky/CentOS:
dnf install -y bareos-client
systemctl enable --now bareos-fdConfigurar el File Daemon del cliente
Editamos la configuración del File Daemon en el cliente. El parámetro clave es el Name que debe coincidir con la definición del cliente en el Director:
cat /etc/bareos/bareos-fd.d/client/myself.conf
Client {
Name = cliente-linux-fd
Maximum Concurrent Jobs = 20
}
cat /etc/bareos/bareos-fd.d/director/bareos-dir.conf
Director {
Name = bareos-dir
Password = "PASSWORD_COMPARTIDA_CON_DIRECTOR"
}Reiniciamos el File Daemon para aplicar los cambios:
systemctl restart bareos-fdInstalación del cliente en Windows
BareOS también soporta clientes Windows, lo que permite respaldar servidores y estaciones de trabajo Windows desde el mismo servidor BareOS.
Descarga e instalación
Descargamos el instalador del File Daemon para Windows desde la página oficial de BareOS:
https://download.bareos.org/current/windows/El instalador es un ejecutable .exe estándar. Durante la instalación se nos solicitarán los siguientes datos:
- Client Name: el nombre del File Daemon (por ejemplo,
cliente-windows-fd). - Director Name: el nombre de nuestro Director (por ejemplo,
bareos-dir). - Password: la contraseña que compartirá con el Director para autenticarse.
- Director Address: la IP o hostname del servidor BareOS.
Alternativamente, podemos instalar de forma silenciosa desde la línea de comandos de PowerShell:
.\bareos-fd-installer.exe /S /CLIENTNAME=cliente-windows-fd ^
/DIRECTORNAME=bareos-dir /CLIENTPASSWORD=PASSWORD_SEGURA ^
/DIRECTORADDRESS=192.168.1.100Configuración del cliente Windows
Los ficheros de configuración se encuentran en C:\ProgramData\Bareos\. La estructura es similar a la de Linux:
C:\ProgramData\Bareos\
├── bareos-fd.d\
│ ├── client\
│ │ └── myself.conf
│ └── director\
│ └── bareos-dir.conf
└── ...Verificamos que el servicio está ejecutándose desde PowerShell:
Get-Service bareos-fd
Status Name DisplayName
------ ---- -----------
Running bareos-fd Bareos File DaemonRegistrar los clientes en el Director
Cada cliente que queramos respaldar debe estar registrado en el Director. Creamos un fichero de configuración por cada cliente en el servidor.
Para el cliente Linux:
cat /etc/bareos/bareos-dir.d/client/cliente-linux-fd.conf
Client {
Name = cliente-linux-fd
Address = 192.168.1.50
Password = "PASSWORD_COMPARTIDA_CON_DIRECTOR"
Catalog = MyCatalog
}Para el cliente Windows:
cat /etc/bareos/bareos-dir.d/client/cliente-windows-fd.conf
Client {
Name = cliente-windows-fd
Address = 192.168.1.60
Password = "PASSWORD_SEGURA"
Catalog = MyCatalog
}Recargamos la configuración del Director:
systemctl reload bareos-dirVerificamos la conexión con los clientes desde bconsole:
bconsole
*status client=cliente-linux-fd
*status client=cliente-windows-fdSi la respuesta incluye la versión del File Daemon, la conexión es correcta.
Crear volúmenes y etiquetar medios
Antes de ejecutar el primer backup, necesitamos crear y etiquetar un volumen de almacenamiento. Los volúmenes son los contenedores donde BareOS escribirá los datos.
bconsole
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: Full-Vol-001
Defined Pools:
1: Scratch
2: Incremental
3: Full
4: Differential
Select the Pool (1-4): 3
Connecting to Storage daemon File at bareOS:9103 ...
Sending label command for Volume "Full-Vol-001" Slot 0 ...
3000 OK label. VolBytes=204 Volume="Full-Vol-001" Device="FileStorage" (/var/lib/bareos/storage)
Catalog record for Volume "Full-Vol-001", Slot 0 successfully created.
Requesting to mount FileStorage ...
3906 File device "FileStorage" (/var/lib/bareos/storage) is always mounted.Repetimos el proceso para crear volúmenes de los pools Incremental y Differential según nuestra estrategia de backup.
Configurar y ejecutar el primer job de backup
BareOS incluye un job por defecto llamado DefaultJob que podemos usar como plantilla. Para crear un job personalizado para nuestro cliente Linux, creamos el siguiente fichero:
cat /etc/bareos/bareos-dir.d/job/backup-cliente-linux.conf
Job {
Name = "Backup-Cliente-Linux"
JobDefs = "DefaultJob"
Client = "cliente-linux-fd"
Pool = Full
FileSet = "LinuxAll"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
}Recargamos la configuración y ejecutamos el primer backup manualmente desde bconsole:
systemctl reload bareos-dir
bconsole
*run job=Backup-Cliente-Linux
Using Catalog "MyCatalog"
Run Backup job
JobName: Backup-Cliente-Linux
Level: Full
Client: cliente-linux-fd
...
OK to run? (yes/mod/no): yes
Job queued. JobId=1Podemos monitorizar el progreso del job con:
*status dir
*list jobsRestauración de archivos
La restauración es tan importante como el backup. BareOS permite restaurar archivos individuales o directorios completos de forma sencilla.
bconsole
*restore client=cliente-linux-fd
...
Select item (1-12): 5
# Opción 5: Select the most recent backup for a client
# Navegamos por el árbol de archivos
cwd is: /
$ cd /etc
$ mark nginx/
1 file marked.
$ done
# Se nos muestra un resumen del job de restauración
OK to run? (yes/mod/no): yes
Job queued. JobId=2Por defecto, los archivos se restauran en /tmp/bareos-restores/ en el cliente. Podemos cambiar la ruta de destino modificando la opción Where antes de confirmar el job.
Comandos útiles de bconsole
A continuación, un resumen de los comandos más utilizados en bconsole para la operación diaria:
# Ver el estado general del Director
*status dir
# Ver el estado de un cliente específico
*status client=cliente-linux-fd
# Ver el estado del Storage Daemon
*status storage=File
# Listar todos los jobs ejecutados
*list jobs
# Listar los volúmenes disponibles
*list volumes
# Ejecutar un backup manualmente
*run job=Backup-Cliente-Linux level=Incremental
# Cancelar un job en ejecución
*cancel jobid=123
# Ver los mensajes pendientes
*messages
# Recargar la configuración sin reiniciar
*reloadConsideraciones de seguridad
Para un despliegue seguro de BareOS en producción, ten en cuenta las siguientes recomendaciones:
- Contraseñas: cambia todas las contraseñas por defecto inmediatamente. Utiliza contraseñas fuertes y únicas para cada componente (Director, File Daemon, Storage Daemon, WebUI).
- TLS: habilita el cifrado TLS en todas las comunicaciones entre Director, Storage Daemon y File Daemons. BareOS soporta TLS de forma nativa desde la versión 18.
- Firewall: restringe los puertos 9101, 9102 y 9103 únicamente a las IPs de los servidores y clientes de BareOS.
- WebUI: configura HTTPS con un certificado válido (Let's Encrypt) y restringe el acceso por IP si es posible.
- Almacenamiento: asegura los permisos del directorio de almacenamiento (
/var/lib/bareos/storage/) para que solo el usuariobareospueda leer y escribir. - Backups offsite: considera configurar un segundo Storage Daemon en una ubicación remota o utilizar el plugin de BareOS para cloud (S3, Azure Blob).
:wq!