le preguntamos a la inteligencia artificial gemini de Google que nos explique cómo instalar y configurar Box Backup en linux
Explicanos detalladamente cómo instalar y configurar Box Backup en linuxBox Backup es un sistema de copia de seguridad de código abierto conocido por su fuerte encriptación del lado del cliente, de-duplicación de datos y su capacidad de realizar copias de seguridad continuas (casi en tiempo real). Está diseñado para respaldar grandes cantidades de datos a través de la red de manera eficiente y segura.
A diferencia de otras soluciones, Box Backup no solo comprime y encripta, sino que también identifica y almacena solo los bloques de datos únicos, lo que ahorra un espacio considerable en el almacenamiento remoto, especialmente útil para respaldar múltiples máquinas con archivos similares o para historiales de versiones extensos.
Componentes Principales de Box Backup
bbstored (Storage Daemon / Servidor): Se ejecuta en el servidor de respaldo. Es el encargado de almacenar los datos encriptados y de-duplicados que recibe de los clientes. También gestiona la base de datos de los bloques de datos.
bbstore (Utilidades de Almacenamiento): Herramientas de línea de comandos para administrar el bbstored (ej., verificar la integridad de los datos, ver estadísticas).
bbclientd (Client Daemon / Cliente): Se ejecuta en la máquina cliente que se desea respaldar. Monitoriza los archivos en busca de cambios, encripta, de-duplica y envía los datos al bbstored.
bbclient (Utilidades de Cliente): Herramientas de línea de comandos para interactuar con bbclientd (ej., forzar un respaldo, restaurar archivos).
Archivos de Configuración: bbstored.conf, bbclientd.conf, y bbkeys.conf (para las claves criptográficas).
Arquitectura Típica para esta Guía
Servidor Box Backup: Una máquina Linux que albergará el bbstored.
Cliente Box Backup: Una o más máquinas Linux que albergarán el bbclientd.
Requisitos Previos
Dos Máquinas Linux: (o VMs) una para el servidor y otra para el cliente.
Acceso Root/Sudo: En ambas máquinas.
Conectividad de Red: Asegúrate de que el servidor y el cliente puedan comunicarse en el puerto por defecto de Box Backup (4747/TCP).
Sincronización de Tiempo (NTP): Es CRUCIAL que la hora sea consistente entre el servidor y el cliente. Las diferencias de tiempo pueden causar fallos de autenticación y problemas de integridad.
Espacio en Disco:
Servidor: Mucho espacio libre en el directorio de almacenamiento (StoragePath) para los datos de respaldo.
Cliente: Espacio para la caché (BackupCachePath), que puede ser significativa dependiendo del tamaño de los datos y los cambios.
Paso 1: Instalación de Box Backup
Box Backup puede instalarse desde los repositorios de tu distribución o compilarse desde el código fuente si necesitas una versión más reciente o funcionalidades específicas (como FUSE para montajes virtuales). Para la mayoría de los usuarios, la instalación desde paquetes es más sencilla.
Actualiza tu sistema de paquetes:
Para Ubuntu/Debian y derivados (Linux Mint, Pop!_OS):
Bash
sudo apt update
sudo apt upgrade -y
Para Fedora/CentOS/RHEL y derivados:
Bash
sudo dnf update -y
Instala los paquetes de Box Backup:
Para Ubuntu/Debian y derivados:
Bash
sudo apt install boxbackup -y
Para Fedora/CentOS/RHEL y derivados:
Bash
sudo dnf install boxbackup -y
La instalación creará un usuario y grupo boxbackup que se utilizarán para ejecutar los demonios.
Paso 2: Configuración del Servidor Box Backup (bbstored)
Todos los comandos relacionados con el servidor se ejecutarán en la máquina del servidor de respaldo.
A. Preparar Directorios y Generar Claves del Servidor
Crear el directorio de almacenamiento de datos
Bash
sudo mkdir -p /var/lib/boxbackup/store
sudo chown boxbackup:boxbackup /var/lib/boxbackup/store
sudo chmod 700 /var/lib/boxbackup/store
Generar las claves criptográficas del servidor
Este paso crea un par de claves RSA para el servidor y el archivo bbkeys.conf que las referencia.
Bash
sudo -u boxbackup bbstored --generate-keys --config-file=/etc/boxbackup/bbstored.conf
Te pedirá que introduzcas una contraseña de encriptación para la clave privada del servidor. ¡Guarda esta contraseña de forma segura! La necesitarás cada vez que el bbstored se inicie.
Verifica que se hayan creado los archivos en /etc/boxbackup/: bbkeys.conf, bbstored.pem (clave privada encriptada), bbstored.pub (clave pública).
¡Seguridad de las Claves!: Las claves privadas (.pem) son extremadamente sensibles. Asegúrate de que sus permisos sean solo de lectura para el usuario boxbackup y nadie más. Si los permisos no son 400 o 600, corrígelos:
Bash
sudo chmod 400 /etc/boxbackup/bbstored.pem
B. Configurar bbstored.conf
Edita el archivo de configuración principal del servidor:
Bash
sudo nano /etc/boxbackup/bbstored.conf
Asegúrate de que las siguientes secciones y directivas estén configuradas correctamente:
Ini, TOML
# Ubicación del archivo de claves para el servidor
ServerKeysFile = /etc/boxbackup/bbkeys.conf
# Directorio donde se almacenarán los datos de respaldo. ¡CRÍTICO!
StoragePath = /var/lib/boxbackup/store
# Directorio donde se guardarán los certificados públicos de los clientes firmados por el servidor.
# Esto es para que bbstored sepa qué clientes están autorizados.
# Se recomienda crear este directorio:
# sudo mkdir -p /var/lib/boxbackup/clients_signed_keys
# sudo chown boxbackup:boxbackup /var/lib/boxbackup/clients_signed_keys
ClientPath = /var/lib/boxbackup/clients_signed_keys
# Archivo de log del servidor
LogFile = /var/log/boxbackup/bbstored.log
LogLevel = 2 # Nivel de detalle del log (0=errores, 5=muy detallado)
LogFile = /var/log/boxbackup/bbstored.log
LogLevel = 2 # Nivel de detalle del log (0=errores, 5=muy detallado)
# Dirección y puerto de escucha del servidor
ListenAddress = 0.0.0.0 # Escuchar en todas las interfaces. Si prefieres una IP específica, úsala.
ListenPort = 4747
ListenAddress = 0.0.0.0 # Escuchar en todas las interfaces. Si prefieres una IP específica, úsala.
ListenPort = 4747
# Máximo número de clientes conectados simultáneamente. Ajusta según tus necesidades.
MaxClients = 10
MaxClients = 10
# Tamaño máximo del almacenamiento (opcional, útil para evitar llenar un disco)
# MaxStoreSize = 100G # Ejemplo: 100 Gigabytes
# MaxStoreSize = 100G # Ejemplo: 100 Gigabytes
# Configuración de retención predeterminada para los clientes si no tienen una política específica
# RetentionPeriod = 365d # Ejemplo: retener datos por 365 días
# RetentionPeriod = 365d # Ejemplo: retener datos por 365 días
# Para cada cliente autorizado, necesitas una sección AccessClient.
# ¡Esto se añadirá DESPUÉS de que el cliente genere sus claves y las envíe al servidor para firmar!
# Por ahora, puedes dejarlo vacío o añadir una plantilla comentada.
# Por ejemplo, para un cliente llamado 'myclient':
# AccessClient {
# Name = myclient
# User = 1001 # Opcional: mapea al UID interno de Box Backup para ese cliente
# }
Guarda y sal del archivo.
C. Configurar el Firewall del Servidor
Abre el puerto 4747/TCP para permitir las conexiones entrantes de los clientes.
UFW (Ubuntu/Debian):
Bash
sudo ufw allow 4747/tcp comment "Box Backup Server"
sudo ufw reload
Firewalld (CentOS/RHEL/Fedora):
Bash
sudo firewall-cmd --permanent --add-port=4747/tcp
sudo firewall-cmd --reload
Paso 3: Configuración del Cliente Box Backup (bbclientd)
Todos los comandos relacionados con el cliente se ejecutarán en la máquina cliente de respaldo.
A. Preparar Directorios y Generar Claves del Cliente
Crear el directorio de caché del cliente:
Bash
sudo mkdir -p /var/lib/boxbackup/client_cache
sudo chown boxbackup:boxbackup /var/lib/boxbackup/client_cache
sudo chmod 700 /var/lib/boxbackup/client_cache
Generar las claves criptográficas del cliente:
Este paso crea un par de claves RSA para el cliente y el archivo bbkeys.conf que las referencia.
Bash
sudo -u boxbackup bbclientd --generate-keys --config-file=/etc/boxbackup/bbclientd.conf
Te pedirá una contraseña para la clave privada del cliente. ¡Guarda esta contraseña!
Verifica que se hayan creado los archivos en /etc/boxbackup/: bbkeys.conf, bbclientd.pem (clave privada encriptada), bbclientd.pub (clave pública).
¡Seguridad de las Claves!:
Bash
sudo chmod 400 /etc/boxbackup/bbclientd.pem
B. Configurar bbclientd.conf
Edita el archivo de configuración principal del cliente:
Bash
sudo nano /etc/boxbackup/bbclientd.conf
Asegúrate de que las siguientes secciones y directivas estén configuradas correctamente:
Ini, TOML
# Ubicación del archivo de claves para el cliente
ClientKeysFile = /etc/boxbackup/bbkeys.conf
# ¡Esto se añadirá DESPUÉS de que el cliente genere sus claves y las envíe al servidor para firmar!
# Por ahora, puedes dejarlo vacío o añadir una plantilla comentada.
# Por ejemplo, para un cliente llamado 'myclient':
# AccessClient {
# Name = myclient
# User = 1001 # Opcional: mapea al UID interno de Box Backup para ese cliente
# }
Guarda y sal del archivo.
C. Configurar el Firewall del Servidor
Abre el puerto 4747/TCP para permitir las conexiones entrantes de los clientes.
UFW (Ubuntu/Debian):
Bash
sudo ufw allow 4747/tcp comment "Box Backup Server"
sudo ufw reload
Firewalld (CentOS/RHEL/Fedora):
Bash
sudo firewall-cmd --permanent --add-port=4747/tcp
sudo firewall-cmd --reload
Paso 3: Configuración del Cliente Box Backup (bbclientd)
Todos los comandos relacionados con el cliente se ejecutarán en la máquina cliente de respaldo.
A. Preparar Directorios y Generar Claves del Cliente
Crear el directorio de caché del cliente:
Bash
sudo mkdir -p /var/lib/boxbackup/client_cache
sudo chown boxbackup:boxbackup /var/lib/boxbackup/client_cache
sudo chmod 700 /var/lib/boxbackup/client_cache
Generar las claves criptográficas del cliente:
Este paso crea un par de claves RSA para el cliente y el archivo bbkeys.conf que las referencia.
Bash
sudo -u boxbackup bbclientd --generate-keys --config-file=/etc/boxbackup/bbclientd.conf
Te pedirá una contraseña para la clave privada del cliente. ¡Guarda esta contraseña!
Verifica que se hayan creado los archivos en /etc/boxbackup/: bbkeys.conf, bbclientd.pem (clave privada encriptada), bbclientd.pub (clave pública).
¡Seguridad de las Claves!:
Bash
sudo chmod 400 /etc/boxbackup/bbclientd.pem
B. Configurar bbclientd.conf
Edita el archivo de configuración principal del cliente:
Bash
sudo nano /etc/boxbackup/bbclientd.conf
Asegúrate de que las siguientes secciones y directivas estén configuradas correctamente:
Ini, TOML
# Ubicación del archivo de claves para el cliente
ClientKeysFile = /etc/boxbackup/bbkeys.conf
# Nombre único para este cliente. ¡Debe coincidir EXACTAMENTE con el nombre
# que usarás al firmar la clave del cliente en el servidor!
ClientName = myclient.example.com # EJEMPLO: "myclient" o "servidorweb1"
# Directorio de caché local del cliente. Aquí se almacenan los bloques de datos
# antes de ser enviados y las listas de bloques para la de-duplicación.
BackupCachePath = /var/lib/boxbackup/client_cache
# Dirección y puerto del servidor Box Backup
ServerAddress = <IP_DEL_SERVIDOR_BBSTORED># Ejemplo: 192.168.1.100
ServerPort = 4747
# Archivo de log del cliente
LogFile = /var/log/boxbackup/bbclientd.log
LogLevel = 2 # Nivel de detalle del log
# Intervalo de tiempo en segundos para comprobar cambios y enviar datos.
# SnapshotInterval = 60s # Cada 60 segundos
SnapshotInterval = 5m # Cada 5 minutos (más común)
# Configuración del contenido a respaldar
# Puedes tener múltiples secciones BackupContent para diferentes conjuntos de datos.
BackupContent {
Name = HomeAndConfig # Nombre descriptivo para este conjunto
# Directorio(s) a respaldar
Dir = /home/tu_usuario # Respalda el directorio personal
Dir = /etc # Respalda la configuración del sistema
# Opciones para FileVersioning y DeletedFileRetention:
# 'Versions': Número de versiones antiguas a mantener. (0=solo la última, -1=todas)
# 'Retention': Tiempo para retener archivos eliminados antes de purgar los bloques.
# Estas se aplican a este conjunto de respaldo.
FileVersioning = 10 # Mantener las últimas 10 versiones de un archivo modificado
DeletedFileRetention = 30d # Mantener archivos eliminados por 30 días
# Listas de inclusión/exclusión (patrones tipo rsync)
Include = ** # Incluye todo por defecto, luego excluye lo no deseado
Exclude = *.tmp # Excluye archivos temporales
Exclude = *.bak # Excluye archivos .bak
Exclude = /var/tmp/** # Directorios temporales del sistema
Exclude = /tmp/**
Exclude = /proc/** # Directorios virtuales del kernel
Exclude = /sys/**
Exclude = /dev/**
Exclude = /mnt/** # Generalmente no quieres respaldar puntos de montaje
Exclude = /media/**
Exclude = /lost+found/**
Exclude = **/.cache/** # Cachés de usuario
Exclude = **/Trash/** # Papeleras de reciclaje
# Excluir sistemas de archivos específicos (montajes temporales, etc.)
# Puedes encontrar los tipos de sistemas de archivos con 'mount' o '/etc/fstab'
ExcludeFilesystem = tmpfs
ExcludeFilesystem = devtmpfs
ExcludeFilesystem = devpts
ExcludeFilesystem = cgroup
ExcludeFilesystem = fuse.gvfsd-fuse
ExcludeFilesystem = nfs # Si hay montajes NFS que no quieres respaldar
ExcludeFilesystem = cifs # Si hay montajes SMB/CIFS que no quieres respaldar
# Si quieres que siga o no los enlaces simbólicos
FollowSymlinks = no
# Opcional: Forzar un propietario y grupo para los archivos en el servidor Box Backup
# Owner = 0 # root
# Group = 0 # root
}
Guarda y sal del archivo.
C. Configurar el Firewall del Cliente
Los clientes de Box Backup inician la conexión al servidor. Generalmente, no necesitas abrir puertos entrantes en el cliente, pero el cliente debe tener permitido realizar conexiones salientes al puerto 4747/TCP del servidor.
Paso 4: Intercambio y Firma de Claves entre Servidor y Cliente
Este es el paso más crítico para la autenticación y seguridad de Box Backup.
Copiar la clave pública del cliente al servidor
Desde la máquina cliente, copia el archivo bbclientd.pub a una ubicación temporal en el servidor (ej., /tmp).
Bash
scp /etc/boxbackup/bbclientd.pub tu_usuario@(IP_DEL_SERVIDOR>:/tmp/
Firmar la clave pública del cliente en el servidor:
Desde la máquina servidor, usa el comando bbstored --sign-client-key para firmar la clave pública del cliente con la clave privada del servidor. Esto autoriza al cliente a conectarse.
Bash
sudo -u boxbackup bbstored --sign-client-key \
--config-file=/etc/boxbackup/bbstored.conf \
--client-key-file=/tmp/bbclientd.pub \
--client-name=myclient.example.com # ¡Debe coincidir con ClientName en bbclientd.conf!
Este comando te pedirá la contraseña de la clave privada del servidor que definiste en el Paso 2.
Creará dos archivos en el ClientPath del servidor (/var/lib/boxbackup/clients_signed_keys):
myclient.example.com.pub: La clave pública firmada del cliente.
myclient.example.com.conf: Un archivo de configuración que el servidor usará para este cliente (contiene la directiva AccessClient).
Mover el archivo de configuración del cliente en el servidor:
El archivo myclient.example.com.conf debe ser incluido por el bbstored.conf principal para que el servidor reconozca al cliente.
Puedes hacer una de dos cosas:
Añadirlo directamente a bbstored.conf: Abre bbstored.conf y añade al final:
Ini, TOML
# Incluir configuraciones de clientes firmados
@include /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf
Moverlo al directorio /etc/boxbackup/bbstored.d/: Si tu instalación crea un directorio bbstored.d para includes automáticos, simplemente mueve el archivo allí.
Bash
sudo mv /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf /etc/boxbackup/bbstored.d/
¡Asegúrate de que bbstored.conf tenga una directiva @include para el directorio donde resides estos archivos de cliente, o para cada archivo de cliente individualmente!
Copiar la clave pública firmada de vuelta al cliente:
Desde la máquina servidor, copia el archivo myclient.example.com.pub (la clave firmada) de vuelta a la máquina cliente, sobrescribiendo la clave pública original del cliente.
Bash
scp /var/lib/boxbackup/clients_signed_keys/myclient.example.com.pub tu_usuario@<IP_DEL_CLIENTE>:/etc/boxbackup/bbclientd.pub
¡Muy Importante!: Es bbclientd.pub en el cliente. La clave pública del cliente (/etc/boxbackup/bbclientd.pub) DEBE ser la clave firmada por el servidor para que la autenticación funcione.
Paso 5: Iniciar Servicios y Primera Copia de Seguridad
A. Iniciar Servicios
En el Servidor Box Backup:
Bash
sudo systemctl enable bbstored
sudo systemctl start bbstored
¡Atención! Te pedirá la contraseña de la clave privada del servidor. Introduce la que definiste en el Paso 2.
Verifica el estado: sudo systemctl status bbstored
Consulta el log: sudo tail -f /var/log/boxbackup/bbstored.log
En el Cliente Box Backup:
Bash
sudo systemctl enable bbclientd
sudo systemctl start bbclientd
¡Atención! Te pedirá la contraseña de la clave privada del cliente. Introduce la que definiste en el Paso 3.
Verifica el estado: sudo systemctl status bbclientd
Consulta el log: sudo tail -f /var/log/boxbackup/bbclientd.log
B. Verificar la Conexión y Primera Sincronización
En el log del cliente (bbclientd.log): Deberías ver mensajes como "Connected to server", "Performing initial scan", "Sending new blocks".
En el log del servidor (bbstored.log): Deberías ver "Client connected", "Receiving data from client".
Para forzar un respaldo (si no quieres esperar el SnapshotInterval):
En el cliente, ejecuta como el usuario boxbackup (el daemon ya está corriendo con este usuario):
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --force-backup
Paso 6: Realizar una Restauración
La restauración se realiza desde la máquina cliente utilizando el comando bbclient.
Listar Archivos Disponibles:
Puedes listar los archivos y sus versiones disponibles para restaurar:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --list-files "/path/to/original/file_or_directory"
Esto mostrará las versiones disponibles con sus marcas de tiempo.
Restaurar un Archivo o Directorio:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/path/to/original/file_or_directory" \
"/path/to/restore/destination"
Ejemplo: Restaurar /home/usuario/documento.txt a /tmp/restored_doc.txt
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/documento.txt" "/tmp/restored_doc.txt"
Restaurar una versión específica:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/documento.txt" "/tmp/restored_doc_old.txt" \
--version "2024-06-27 10:00:00" # Usa la marca de tiempo de 'list-files'
Restaurar un archivo eliminado:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/deleted_file.txt" "/tmp/restored_deleted_file.txt" \
--deleted # Indica que es un archivo que fue eliminado
¡Verifica la Restauración! Siempre prueba la restauración de algunos archivos al azar para asegurarte de que tu sistema de respaldo funciona correctamente.
Paso 7: Monitoreo y Solución de Problemas Detallada
Los problemas en Box Backup suelen estar relacionados con la configuración, las claves/permisos y la red.
Logs, Logs, Logs:
Servidor: sudo tail -f /var/log/boxbackup/bbstored.log
Cliente: sudo tail -f /var/log/boxbackup/bbclientd.log
Busca ERROR, WARNING, authentication failed, connection refused, permission denied, disk full.
Verificación de Estado de los Daemons:
sudo systemctl status bbstored (servidor)
sudo systemctl status bbclientd (cliente)
Si no están activos, sudo journalctl -u <daemon_name>-f para ver el log de arranque.
Contraseñas de Claves:
Si el daemon no arranca, una causa común es una contraseña incorrecta para la clave privada (servidor o cliente). Asegúrate de haberla introducido correctamente al iniciar el servicio.
Box Backup no almacena las contraseñas de las claves en texto plano; las pide al iniciar el daemon. Si el sistema se reinicia, tendrás que introducirlas de nuevo a menos que uses un mecanismo de desbloqueo automático (lo cual puede comprometer la seguridad si no se gestiona con cuidado).
Permisos de Archivos y Directorios:
Claves privadas: Los archivos .pem (claves privadas) deben tener permisos 400 o 600 (solo lectura para el propietario). Si son demasiado permisivos, el daemon se negará a cargarlos.
Bash
sudo chmod 400 /etc/boxbackup/bbstored.pem
sudo chmod 400 /etc/boxbackup/bbclientd.pem
Directorios de almacenamiento/caché: Asegúrate de que los directorios StoragePath (servidor) y BackupCachePath (cliente) sean propiedad del usuario boxbackup y tengan permisos de escritura.
Bash
sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/store
sudo chmod 700 /var/lib/boxbackup/store # O 750
sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/client_cache
sudo chmod 700 /var/lib/boxbackup/client_cache
Archivos de origen: El usuario boxbackup en el cliente necesita permisos de lectura para los archivos y directorios definidos en BackupContent. Si se deniegan permisos, esos archivos se omitirán del respaldo.
Problemas de Red y Firewall:
telnet <IP_SERVIDOR>4747 (desde el cliente): Prueba si el cliente puede llegar al puerto del servidor. Si falla, es un problema de firewall o de red.
Verifica las reglas del firewall en ambas máquinas.
Asegúrate de que la ServerAddress en bbclientd.conf sea correcta.
Sincronización de Tiempo (NTP):
Las grandes diferencias de tiempo entre el cliente y el servidor pueden causar fallos de autenticación o hacer que los datos de respaldo sean rechazados.
Instala y configura NTP o systemd-timesyncd en ambas máquinas:
Bash
sudo apt install ntp # o systemd-timesyncd
sudo systemctl status ntp # o systemctl status systemd-timesyncd
timedatectl
Errores de bbclientd.conf / bbstored.conf:
ClientName y firma de clave: El ClientName en bbclientd.conf debe coincidir exactamente con el --client-name usado al firmar la clave en el servidor. Si no coinciden, la autenticación fallará.
Rutas incorrectas: Doble verificación de todas las rutas en los archivos de configuración (ClientKeysFile, ServerKeysFile, StoragePath, BackupCachePath, LogFile).
@include faltantes: Si el servidor no está reconociendo la configuración de un cliente, asegúrate de que el archivo .conf del cliente firmado esté incluido en bbstored.conf (ya sea directamente o a través de un directorio de inclusión).
Espacio en Disco:
df -h en el servidor (para StoragePath) y en el cliente (para BackupCachePath). Si cualquiera está lleno, el respaldo fallará.
SELinux / AppArmor:
Estos módulos de seguridad pueden bloquear operaciones de Box Backup sin dar errores claros en los logs de Box Backup.
Diagnóstico:
SELinux: sudo auditctl -a never,dontaudit -S setxattr -S fsetxattr -S lsetxattr (o revisar /var/log/audit/audit.log y buscar denegaciones).
AppArmor: sudo grep "DENIED" /var/log/syslog | grep -i boxbackup.
Solución temporal:
SELinux: sudo setenforce 0 (modo permisivo). Prueba el respaldo. Si funciona, la política es el problema. Luego, sudo setenforce 1 y crea/carga una política SELinux para Box Backup.
AppArmor: sudo systemctl stop apparmor. Si funciona, edita los perfiles de AppArmor para Box Backup.
Aumentar la Verbosidad de los Daemons (para depuración intensiva):
Puedes añadir una opción -v o -vv al comando de inicio de bbstored o bbclientd si los ejecutas manualmente, o ajustar LogLevel en los archivos de configuración a un valor más alto (ej., LogLevel = 5). ¡Recuerda bajarlo después de depurar para evitar logs excesivamente grandes!
Box Backup es una solución potente y segura, pero su configuración inicial requiere atención al detalle, especialmente en la gestión de claves y permisos. Una vez configurado correctamente, es muy confiable. ¡No olvides probar tus restauraciones regularmente!
# que usarás al firmar la clave del cliente en el servidor!
ClientName = myclient.example.com # EJEMPLO: "myclient" o "servidorweb1"
# Directorio de caché local del cliente. Aquí se almacenan los bloques de datos
# antes de ser enviados y las listas de bloques para la de-duplicación.
BackupCachePath = /var/lib/boxbackup/client_cache
# Dirección y puerto del servidor Box Backup
ServerAddress = <IP_DEL_SERVIDOR_BBSTORED>
ServerPort = 4747
# Archivo de log del cliente
LogFile = /var/log/boxbackup/bbclientd.log
LogLevel = 2 # Nivel de detalle del log
# Intervalo de tiempo en segundos para comprobar cambios y enviar datos.
# SnapshotInterval = 60s # Cada 60 segundos
SnapshotInterval = 5m # Cada 5 minutos (más común)
# Configuración del contenido a respaldar
# Puedes tener múltiples secciones BackupContent para diferentes conjuntos de datos.
BackupContent {
Name = HomeAndConfig # Nombre descriptivo para este conjunto
# Directorio(s) a respaldar
Dir = /home/tu_usuario # Respalda el directorio personal
Dir = /etc # Respalda la configuración del sistema
# Opciones para FileVersioning y DeletedFileRetention:
# 'Versions': Número de versiones antiguas a mantener. (0=solo la última, -1=todas)
# 'Retention': Tiempo para retener archivos eliminados antes de purgar los bloques.
# Estas se aplican a este conjunto de respaldo.
FileVersioning = 10 # Mantener las últimas 10 versiones de un archivo modificado
DeletedFileRetention = 30d # Mantener archivos eliminados por 30 días
# Listas de inclusión/exclusión (patrones tipo rsync)
Include = ** # Incluye todo por defecto, luego excluye lo no deseado
Exclude = *.tmp # Excluye archivos temporales
Exclude = *.bak # Excluye archivos .bak
Exclude = /var/tmp/** # Directorios temporales del sistema
Exclude = /tmp/**
Exclude = /proc/** # Directorios virtuales del kernel
Exclude = /sys/**
Exclude = /dev/**
Exclude = /mnt/** # Generalmente no quieres respaldar puntos de montaje
Exclude = /media/**
Exclude = /lost+found/**
Exclude = **/.cache/** # Cachés de usuario
Exclude = **/Trash/** # Papeleras de reciclaje
# Excluir sistemas de archivos específicos (montajes temporales, etc.)
# Puedes encontrar los tipos de sistemas de archivos con 'mount' o '/etc/fstab'
ExcludeFilesystem = tmpfs
ExcludeFilesystem = devtmpfs
ExcludeFilesystem = devpts
ExcludeFilesystem = cgroup
ExcludeFilesystem = fuse.gvfsd-fuse
ExcludeFilesystem = nfs # Si hay montajes NFS que no quieres respaldar
ExcludeFilesystem = cifs # Si hay montajes SMB/CIFS que no quieres respaldar
# Si quieres que siga o no los enlaces simbólicos
FollowSymlinks = no
# Opcional: Forzar un propietario y grupo para los archivos en el servidor Box Backup
# Owner = 0 # root
# Group = 0 # root
}
Guarda y sal del archivo.
C. Configurar el Firewall del Cliente
Los clientes de Box Backup inician la conexión al servidor. Generalmente, no necesitas abrir puertos entrantes en el cliente, pero el cliente debe tener permitido realizar conexiones salientes al puerto 4747/TCP del servidor.
Paso 4: Intercambio y Firma de Claves entre Servidor y Cliente
Este es el paso más crítico para la autenticación y seguridad de Box Backup.
Copiar la clave pública del cliente al servidor
Desde la máquina cliente, copia el archivo bbclientd.pub a una ubicación temporal en el servidor (ej., /tmp).
Bash
scp /etc/boxbackup/bbclientd.pub tu_usuario@(IP_DEL_SERVIDOR>
Firmar la clave pública del cliente en el servidor:
Desde la máquina servidor, usa el comando bbstored --sign-client-key para firmar la clave pública del cliente con la clave privada del servidor. Esto autoriza al cliente a conectarse.
Bash
sudo -u boxbackup bbstored --sign-client-key \
--config-file=/etc/boxbackup/bbstored.conf \
--client-key-file=/tmp/bbclientd.pub \
--client-name=myclient.example.com # ¡Debe coincidir con ClientName en bbclientd.conf!
Este comando te pedirá la contraseña de la clave privada del servidor que definiste en el Paso 2.
Creará dos archivos en el ClientPath del servidor (/var/lib/boxbackup/clients_signed_keys):
myclient.example.com.pub: La clave pública firmada del cliente.
myclient.example.com.conf: Un archivo de configuración que el servidor usará para este cliente (contiene la directiva AccessClient).
Mover el archivo de configuración del cliente en el servidor:
El archivo myclient.example.com.conf debe ser incluido por el bbstored.conf principal para que el servidor reconozca al cliente.
Puedes hacer una de dos cosas:
Añadirlo directamente a bbstored.conf: Abre bbstored.conf y añade al final:
Ini, TOML
# Incluir configuraciones de clientes firmados
@include /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf
Moverlo al directorio /etc/boxbackup/bbstored.d/: Si tu instalación crea un directorio bbstored.d para includes automáticos, simplemente mueve el archivo allí.
Bash
sudo mv /var/lib/boxbackup/clients_signed_keys/myclient.example.com.conf /etc/boxbackup/bbstored.d/
¡Asegúrate de que bbstored.conf tenga una directiva @include para el directorio donde resides estos archivos de cliente, o para cada archivo de cliente individualmente!
Copiar la clave pública firmada de vuelta al cliente:
Desde la máquina servidor, copia el archivo myclient.example.com.pub (la clave firmada) de vuelta a la máquina cliente, sobrescribiendo la clave pública original del cliente.
Bash
scp /var/lib/boxbackup/clients_signed_keys/myclient.example.com.pub tu_usuario@<IP_DEL_CLIENTE>
¡Muy Importante!: Es bbclientd.pub en el cliente. La clave pública del cliente (/etc/boxbackup/bbclientd.pub) DEBE ser la clave firmada por el servidor para que la autenticación funcione.
Paso 5: Iniciar Servicios y Primera Copia de Seguridad
A. Iniciar Servicios
En el Servidor Box Backup:
Bash
sudo systemctl enable bbstored
sudo systemctl start bbstored
¡Atención! Te pedirá la contraseña de la clave privada del servidor. Introduce la que definiste en el Paso 2.
Verifica el estado: sudo systemctl status bbstored
Consulta el log: sudo tail -f /var/log/boxbackup/bbstored.log
En el Cliente Box Backup:
Bash
sudo systemctl enable bbclientd
sudo systemctl start bbclientd
¡Atención! Te pedirá la contraseña de la clave privada del cliente. Introduce la que definiste en el Paso 3.
Verifica el estado: sudo systemctl status bbclientd
Consulta el log: sudo tail -f /var/log/boxbackup/bbclientd.log
B. Verificar la Conexión y Primera Sincronización
En el log del cliente (bbclientd.log): Deberías ver mensajes como "Connected to server", "Performing initial scan", "Sending new blocks".
En el log del servidor (bbstored.log): Deberías ver "Client connected", "Receiving data from client".
Para forzar un respaldo (si no quieres esperar el SnapshotInterval):
En el cliente, ejecuta como el usuario boxbackup (el daemon ya está corriendo con este usuario):
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --force-backup
Paso 6: Realizar una Restauración
La restauración se realiza desde la máquina cliente utilizando el comando bbclient.
Listar Archivos Disponibles:
Puedes listar los archivos y sus versiones disponibles para restaurar:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf --list-files "/path/to/original/file_or_directory"
Esto mostrará las versiones disponibles con sus marcas de tiempo.
Restaurar un Archivo o Directorio:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/path/to/original/file_or_directory" \
"/path/to/restore/destination"
Ejemplo: Restaurar /home/usuario/documento.txt a /tmp/restored_doc.txt
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/documento.txt" "/tmp/restored_doc.txt"
Restaurar una versión específica:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/documento.txt" "/tmp/restored_doc_old.txt" \
--version "2024-06-27 10:00:00" # Usa la marca de tiempo de 'list-files'
Restaurar un archivo eliminado:
Bash
sudo -u boxbackup bbclient --config-file=/etc/boxbackup/bbclientd.conf \
--restore "/home/usuario/deleted_file.txt" "/tmp/restored_deleted_file.txt" \
--deleted # Indica que es un archivo que fue eliminado
¡Verifica la Restauración! Siempre prueba la restauración de algunos archivos al azar para asegurarte de que tu sistema de respaldo funciona correctamente.
Paso 7: Monitoreo y Solución de Problemas Detallada
Los problemas en Box Backup suelen estar relacionados con la configuración, las claves/permisos y la red.
Logs, Logs, Logs:
Servidor: sudo tail -f /var/log/boxbackup/bbstored.log
Cliente: sudo tail -f /var/log/boxbackup/bbclientd.log
Busca ERROR, WARNING, authentication failed, connection refused, permission denied, disk full.
Verificación de Estado de los Daemons:
sudo systemctl status bbstored (servidor)
sudo systemctl status bbclientd (cliente)
Si no están activos, sudo journalctl -u <daemon_name>
Contraseñas de Claves:
Si el daemon no arranca, una causa común es una contraseña incorrecta para la clave privada (servidor o cliente). Asegúrate de haberla introducido correctamente al iniciar el servicio.
Box Backup no almacena las contraseñas de las claves en texto plano; las pide al iniciar el daemon. Si el sistema se reinicia, tendrás que introducirlas de nuevo a menos que uses un mecanismo de desbloqueo automático (lo cual puede comprometer la seguridad si no se gestiona con cuidado).
Permisos de Archivos y Directorios:
Claves privadas: Los archivos .pem (claves privadas) deben tener permisos 400 o 600 (solo lectura para el propietario). Si son demasiado permisivos, el daemon se negará a cargarlos.
Bash
sudo chmod 400 /etc/boxbackup/bbstored.pem
sudo chmod 400 /etc/boxbackup/bbclientd.pem
Directorios de almacenamiento/caché: Asegúrate de que los directorios StoragePath (servidor) y BackupCachePath (cliente) sean propiedad del usuario boxbackup y tengan permisos de escritura.
Bash
sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/store
sudo chmod 700 /var/lib/boxbackup/store # O 750
sudo chown -R boxbackup:boxbackup /var/lib/boxbackup/client_cache
sudo chmod 700 /var/lib/boxbackup/client_cache
Archivos de origen: El usuario boxbackup en el cliente necesita permisos de lectura para los archivos y directorios definidos en BackupContent. Si se deniegan permisos, esos archivos se omitirán del respaldo.
Problemas de Red y Firewall:
telnet <IP_SERVIDOR>
Verifica las reglas del firewall en ambas máquinas.
Asegúrate de que la ServerAddress en bbclientd.conf sea correcta.
Sincronización de Tiempo (NTP):
Las grandes diferencias de tiempo entre el cliente y el servidor pueden causar fallos de autenticación o hacer que los datos de respaldo sean rechazados.
Instala y configura NTP o systemd-timesyncd en ambas máquinas:
Bash
sudo apt install ntp # o systemd-timesyncd
sudo systemctl status ntp # o systemctl status systemd-timesyncd
timedatectl
Errores de bbclientd.conf / bbstored.conf:
ClientName y firma de clave: El ClientName en bbclientd.conf debe coincidir exactamente con el --client-name usado al firmar la clave en el servidor. Si no coinciden, la autenticación fallará.
Rutas incorrectas: Doble verificación de todas las rutas en los archivos de configuración (ClientKeysFile, ServerKeysFile, StoragePath, BackupCachePath, LogFile).
@include faltantes: Si el servidor no está reconociendo la configuración de un cliente, asegúrate de que el archivo .conf del cliente firmado esté incluido en bbstored.conf (ya sea directamente o a través de un directorio de inclusión).
Espacio en Disco:
df -h en el servidor (para StoragePath) y en el cliente (para BackupCachePath). Si cualquiera está lleno, el respaldo fallará.
SELinux / AppArmor:
Estos módulos de seguridad pueden bloquear operaciones de Box Backup sin dar errores claros en los logs de Box Backup.
Diagnóstico:
SELinux: sudo auditctl -a never,dontaudit -S setxattr -S fsetxattr -S lsetxattr (o revisar /var/log/audit/audit.log y buscar denegaciones).
AppArmor: sudo grep "DENIED" /var/log/syslog | grep -i boxbackup.
Solución temporal:
SELinux: sudo setenforce 0 (modo permisivo). Prueba el respaldo. Si funciona, la política es el problema. Luego, sudo setenforce 1 y crea/carga una política SELinux para Box Backup.
AppArmor: sudo systemctl stop apparmor. Si funciona, edita los perfiles de AppArmor para Box Backup.
Aumentar la Verbosidad de los Daemons (para depuración intensiva):
Puedes añadir una opción -v o -vv al comando de inicio de bbstored o bbclientd si los ejecutas manualmente, o ajustar LogLevel en los archivos de configuración a un valor más alto (ej., LogLevel = 5). ¡Recuerda bajarlo después de depurar para evitar logs excesivamente grandes!
Box Backup es una solución potente y segura, pero su configuración inicial requiere atención al detalle, especialmente en la gestión de claves y permisos. Una vez configurado correctamente, es muy confiable. ¡No olvides probar tus restauraciones regularmente!