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 🐧


Ingrese la dirección de su instancia