Backrest, una interfaz Web para Restic Backup
2024-06-24
He escrito varios artículos sobre diferentes sistemas para hacer backupss, pero al final siempre vuelvo a restic, principalmente por su integración con los diferentes servicios en la nube, ya sea de forma nativa o a través de rclone.
Una de las razones por las que restic echa para atrás a muchos usuarios es el tener que utilizar la terminal para manejar las copias de seguridad. A día de hoy, y que yo conozca, solo la aplicación Deja Dup y de una manera experimental, permite de una forma gráfica realizar backups mediante restic.
Si nos vamos del lado del servidor estas aplicaciones no están disponibles por lo que si quieres hacer uso de restic tienes que utilizar la terminal para realizar y programar las copias.
Backrest nos va a proporcionar una interfaz web para crear copias de seguridad de los datos de nuestros servidores o clientes mediante la utilidad restic de una manera muy sencilla.
Con Backrest podremos crear o eliminar repositorios, programar copias y políticas de retenimiento, restaurar datos, eliminar instantáneas, enviar notificaciones, etc. Vamos, todo un descubrimiento
Backrest está disponible en Docker, Linux, MacOS y de forma experimental para Windows
Características
- WebUI para restic, admite acceso local y remoto (por ejemplo, se ejecuta en un NAS y tenga acceso desde el pc de escritorio)
- UI en tiempo real, por ejemplo, barras de progreso en vivo para operaciones de respaldo
- Navegador de instantáneas
- Interfaz para restaurar
- Configuración de planes de backups
Cronexprs
ofrece opciones de programación flexibles- Políticas de retención con
restic forget
(por ejemplo, mantenga 1 instantánea al día durante 30 días, 1 instantánea por semana durante 6 meses, etc) - Incluir listas
- Listas de exclusión
- Añadir banderas personalizadas para su uso con CLI para el control detallado de restic, por ejemplo, para su uso con rclone
- Los destinos pueden ser cualquier repositorio soportado por restic (por ejemplo, sistema de archivos local, S3, Backblaze, rclone, etc).
- Operaciones automáticas de comprobación del estado de salud del repo, por ejemplo, forget y prune.
- Prune de cada respaldo.
- Forget una vez cada 7 días por defecto.
- Se pueden configurar múltiples planes de respaldo, en diferentes horarios y con diferentes políticas de retención.
- Pueden configurarse múltiples repositorios restic y utilizarse en diferentes planes.
- Hooks de evento para notificaciones
- Los hooks de tiempo de ejecución se activan con información del estado de las operaciones de respaldo
- Servicios soportados: Discord, Gotify y comandos Shell
- Eventos: Backup Start, Backup Finalish, Backup Error, Any Error
- Autenticación multiusuario: el respaldo se puede asegurar con un nombre de usuario y contraseña.
Instalación
Aunque Backrest se empaqueta en un solo ejecutable, en este articulo voy a explicar su instalación mediante docker compose y plantillas de Unraid. Si te decides por el ejecutable, restic se descargará e instalara en el directorio de datos durante la primera ejecución.
Docker Compose
Dispones de dos imágenes, garethgeorge/backrest:latest y garethgeorge/backrest:latest-alpine
que incluye rclone y utilidades comunes de unix, si vas a hacer uso de rclone elige está ultima.
Configura los volúmenes de acuerdo a tus necesidades, en el fichero de configuración que muestro a continuación los volúmenes están personalizados para mi servidor y necesidades.
version: "3.2"
services:
backrest:
image: garethgeorge/backrest:latest-alpine
container_name: backrest
hostname: backrest #Use this to set the hostname instead of container ID to the config.json and WebUI.
volumes:
- /mnt/user/appdata/backrest/data/:/data
- /mnt/user/appdata/backrest/config/:/config
- /mnt/user/temp/:/cache
- /mnt/user/media/:/media
- /mnt/user/datos/:/datos
- /mnt/user/copias/:/repos
- /mnt/user/appdata/:/apps
environment:
- BACKREST_DATA=/data # path for backrest data. restic binary and the database are placed here.
- BACKREST_CONFIG=/config/config.json # path for the backrest config file.
- XDG_CACHE_HOME=/cache # path for the restic cache which greatly improves performance.
restart: unless-stopped
ports:
- 9898:9898
Plantilla Unraid
A día de la publicación de este articulo no existe en la CA una plantilla para Backrest, por lo que utilizaremos la plantilla por que viene por defecto
Habilitamos el modo avanzado
Elegimos un nombre para el contenedor, Backrest, la imagen del contenedor a utilizar, en mi caso, garethgeorge/backrest:latest-alpine,
Continuamos poniendo la URL de la interfaz web, http://[IP]:[PORT:9898]/
y tipo de red bridge
Pulsamos en el enlace Agregar otra Ruta, Puerto, Variable, Etiqueta o Dispositivo para añadir el resto de variables, volúmenes y puerto
Empezamos añadiendo los volúmenes que vamos a utilizar
Las variables de entorno
El puerto
Desplegamos el contenedor
Vemos el contenedor iniciado
Funcionamiento
Backrest es accesible desde el navegador web. Por defecto nos conectamos a la dirección IP donde se esta ejecutando y al puerto 9898, que hemos configurado anteriormente. La primera vez que conectamos debemos de dar un nombre a la instancia que estamos ejecutado y podemos dar alta un usuario o deshabilitar la autentificación de acceso. Yo he creado un usuario para mis copias.
Después de dar de alta al usuario, podemos iniciar sesión
Añadiendo un repositorio
Podemos crear o añadir un repositorio ya existente donde alojar las copias de seguridad, este repositorio puede residir en un sistema de ficheros local de nuestro servidor, sftp, Amazon S3 o compatibles, Backblaze B2, etc u otros servicios compatibles con rclone.
De forma predeterminada el repositorio ejecuta un prune de las instantáneas marcadas como forget cada 7 días
🗨️ Si no sabes como trabaja restic, he publicado una serie de artículos donde lo explico
Creando un plan
Tras crear o configurar el repositorio donde alojar las copias, debemos de crear un plan para realizar las copias, básicamente un plan consiste en configurar la frecuencia y datos a respaldar, en que repositorio se va a guardar la copia y la política de retención de las instantáneas.
También podemos añadir patrones de exclusión y hacer uso de los hooks para las notificaciones sobre el resultado de la ejecución del plan
Realizando copias
Una vez creado el plan podemos esperar a que se ejecute su programación o ejecutarlo manualmente
Tenemos un histórico de las ejecuciones del plan
Restaurando las copias
Recuperar los datos de las copias se hace una manera muy sencilla, basta con seleccionar en el histórico de copias el día y el fichero a restaurar y su nueva ubicación
Conclusión
Restic es una gran herramienta para copias de seguridad, el hecho de que hasta ahora no hubiese un cliente con una interfaz gráfica (Deja Dup está en un proceso experimental) y que se tenga que manejar por linea de comandos, hace que muchos usuarios no lo considere como una alternativa para sus copias de seguridad.
Backrest viene a ocupar ese vacío, con una sencilla instalación podemos obtener casi todo el potencial que proporciona restic por linea de comandos.
Espero que te haya gustado, pasa un gran día 🐧