Este blog te guiará Como instalar bacula en Centos 7, una solución de respaldo y recuperación de datos de código abierto, en un servidor Centos7. Aprenderás a configurar y optimizar Bacula para garantizar la seguridad y eficiencia de tus datos.
Requisitos previos
Para completar este tutorial, necesitará lo siguiente:
- Un servidor CentOS 7 con un usuario sudo. Puede configurar esto siguiendo nuestra guía de configuración inicial del servidor CentOS 7.
Requerimientos de sistema
- Memoria : 4GB o más
- Cpu: 4 Cores a más
- Disco duro : Más de 50GB de espacio disponible en disco duro
- Sistema : CentOS7, garantizar que sea un sistema operativo limpio
Contenido del Script de Instalación:
El script proporciona una instalación automatizada de Bacula, abordando aspectos importantes como la configuración de contraseñas, la desactivación de SELinux (en caso de estar habilitado), y la configuración del firewall para permitir el tráfico necesario. Además, se encarga de la instalación de MariaDB y la configuración de la base de datos de Bacula.
El script realiza las siguientes acciones:
- Detiene el servicio PackageKit.
- Solicita y configura contraseñas para MySQL y Bacula.
- Desactiva SELinux si está habilitado.
- Configura reglas de firewall para los puertos de Bacula.
- Descarga e instala las dependencias y paquetes de Bacula.
- Instala y configura MariaDB, estableciendo contraseñas y eliminando configuraciones innecesarias.
- Configura la base de datos de Bacula y otorga los privilegios necesarios.
- Enlaza binarios de Bacula y arranca el servicio.
- Reemplaza las contraseñas en los archivos de configuración.
- Reinicia el servicio Bacula Director.
- Instala Webmin, un panel de control web para administrar el sistema.
- Configura el firewall para Webmin y reinicia el servidor
#!/bin/bash
# Verificar si PackageKit está en ejecución
echo "deteneniedo Packagekit"
sudo systemctl stop packagekit
# Obtener nueva contraseña del usuario
read -p "Ingresa la contraseña de MySQL para el usuario root: " mysql_root_password
read -p "Ingresa la nueva contraseña para la base de datos bacula: " nueva_contrasena
# Verificar si SELinux está habilitado
if [ "$(getenforce)" = "Enforcing" ]; then
echo "SELinux está habilitado. Deshabilitando de manera permanente..."
# Deshabilitar SELinux de manera permanente
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
echo "SELinux ha sido deshabilitado de manera permanente. Por favor, reinicie el sistema para aplicar los cambios."
else
echo "SELinux ya está deshabilitado."
fi
# Configurar reglas del firewall
sudo firewall-cmd --add-port=9101/tcp --permanent
sudo firewall-cmd --add-port=9102/tcp --permanent
sudo firewall-cmd --add-port=9103/tcp --permanent
sudo firewall-cmd --reload
# Descargar e instalar Bacula
wget --no-check-certificate https://www.bacula.org/packages/5bcfda598e984/rpms/13.0.3/el7/x86_64/bacula-libs-13.0.3-23050308.el7.x86_64.rpm
wget --no-check-certificate https://www.bacula.org/packages/5bcfda598e984/rpms/13.0.3/el7/x86_64/bacula-mysql-13.0.3-23050308.el7.x86_64.rpm
wget --no-check-certificate https://www.bacula.org/packages/5bcfda598e984/rpms/13.0.3/el7/x86_64/bacula-client-13.0.3-23050308.el7.x86_64.rpm
rpm -Uvh bacula-libs-13.0.3-23050308.el7.x86_64.rpm
yum install bacula-mysql-13.0.3-23050308.el7.x86_64.rpm -y
# Instalar y configurar MariaDB
yum install mariadb-server -y
systemctl enable mariadb
systemctl start mariadb
# Eliminar usuarios anónimos, deshabilitar logueo remoto y establecer nueva contraseña
mysql -u root <<MYSQL_SCRIPT
UPDATE mysql.user SET Password=PASSWORD('${nueva_contrasena}') WHERE User='bacula';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${mysql_root_password}');
MYSQL_SCRIPT
# Configurar base de datos de Bacula
cd /opt/bacula/scripts/
./create_mysql_database -u root -p"${mysql_root_password}"
./make_mysql_tables -u root -p"${mysql_root_password}"
./grant_mysql_privileges -u root -p"${mysql_root_password}"
# Enlazar binarios de Bacula
cd /opt/bacula/bin
ln -s /opt/bacula/bin/* /usr/bin
bacula start
# Ruta al archivo bacula-dir.conf
archivo_conf="/opt/bacula/etc/bacula-dir.conf"
campo="Password"
sed -i "s/${campo}\s*=.*/${campo} = \"${nueva_contrasena}\"/" "$archivo_conf"
echo "Contraseñas reemplazadas con éxito en $archivo_conf"
# Ruta al archivo bconsole.conf
archivo_conf="/opt/bacula/etc/bconsole.conf"
campo="Password"
sed -i "s/${campo}\s*=.*/${campo} = \"${nueva_contrasena}\"/" "$archivo_conf"
echo "Contraseñas reemplazadas con éxito en $archivo_conf"
# Configurar la contraseña en MySQL
mysql -u root -p"${mysql_root_password}" <<MYSQL_SCRIPT
UPDATE mysql.user SET Password=PASSWORD('${nueva_contrasena}') WHERE User='bacula';
FLUSH PRIVILEGES;
EXIT;
MYSQL_SCRIPT
# Configurar contraseña en el archivo bacula-dir.conf
archivo_conf="/opt/bacula/etc/bacula-dir.conf"
# Reemplazar la contraseña en el campo "dbname" de la sección "Catalog"
sed -i "/^Catalog {/,/^}/{s/\(dbpassword\s*=\s*\"\).*\"/\1${nueva_contrasena}\"/}" "$archivo_conf"
echo "Contraseña del catálogo reemplazada con éxito en $archivo_conf"
# Reiniciar Bacula
systemctl restart bacula-director
# Instalar Webmin
yum install httpd -y
yum install perl-Digest-MD5 -y
yum install dnf -y
systemctl enable httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
yum install -y perl perl-Net-SSLeay openssl perl-IO-Tty perl-Encode-Detect
wget --no-check-certificate https://sitsa.dl.sourceforge.net/project/webadmin/webmin/2.105/webmin-2.105-1.noarch.rpm
rpm -Uvh webmin-2.105-1.noarch.rpm
firewall-cmd --add-port=10000/tcp --permanent
firewall-cmd --reload
server_ip=$(hostname -I | awk '{print $1}')
echo "Webmin instalado con éxito. Accede a https://${server_ip}:10000"
echo "El equipo se reiniciará en 20 segundos" && sleep 20s && sudo reboot
Pasos de Ejecución:
- Descarga del Script:
- Asegúrate de tener acceso al script de instalación. Puedes crear un nuevo archivo y copiar el contenido del script en él.
- Concesión de Permisos:
- Otorga permisos de ejecución al script para que pueda ser ejecutado. Puedes hacerlo con el siguiente comando:
chmod +x nombre_del_script.sh
- Otorga permisos de ejecución al script para que pueda ser ejecutado. Puedes hacerlo con el siguiente comando:
- Ejecución del Script:
- Ejecuta el script con privilegios de superusuario (root). Puedes utilizar el siguiente comando:
sudo ./nombre_del_script.sh
- Ejecuta el script con privilegios de superusuario (root). Puedes utilizar el siguiente comando:
- Interacción con el Script:
- Durante la ejecución, el script puede solicitar ciertos datos, como contraseñas de MySQL y Bacula. Proporciona la información solicitada y sigue las instrucciones.
- Revisión de Salida:
- Después de completar la ejecución, revisa la salida del script en busca de posibles errores o mensajes informativos. Asegúrate de que todas las operaciones se hayan realizado correctamente.
- Acceso a Webmin:
- Si has optado por instalar Webmin, accede a él a través de un navegador web. La dirección sería
https://tu_dirección_ip:10000
. Utiliza las credenciales apropiadas para iniciar sesión.
- Si has optado por instalar Webmin, accede a él a través de un navegador web. La dirección sería
- Reinicio del Servidor (Recomendado):
- Si el script indica que el servidor se reiniciará automáticamente, espera a que finalice y vuelve a conectarte después del reinicio.
Recuerda revisar la salida del script y cualquier mensaje informativo que pueda proporcionar para garantizar una instalación exitosa. También ten en cuenta que este script está diseñado para CentOS7, y su uso en otras versiones o distribuciones podría requerir modificaciones.


Nota: Se recomienda revisar y entender cada paso antes de ejecutar el script para asegurarse de que se adapte a tus necesidades específicas. Además, ten en cuenta que el servidor se reiniciará automáticamente al finalizar la instalación.
Este script facilita la instalación de Bacula en Centos7, proporcionando una solución eficiente y segura para la gestión de respaldo de datos.