10-08-2025, 10:06 PM
Desde hace ya bastante tiempo está de moda instalar aplicaciones a través de Docker con todas las ventajas que eso implica y que no son necesarias explicarlas. En todos los programas y los dockers no son una excepción, es muy recomendable hacer copias de seguridad de sus configuraciones para que en caso de que exista algún problema al restaurarlas todo vuelva a la normalidad. Aunque muchos dockers funcionan sin necesidad de hacerlo en este apartado del foro relativo a dockers siempre se explica que es muy recomendable crear carpetas persistentes Dockerdata para que esas configuraciones de los dockers sean accesibles y se pueda hacer copia de seguridad de ellas.
A la hora de hacer copias de seguridad de las carpetas persistentes de los dockers no hay mucho donde escoger y de lo poco que hay puede que no convenga del todo según los casos...... algunos sistemas automatizados necesitan mapear por partes los dockers y otros, por el contrario, lo hacen al completo sin ninguna discriminación lo cual es un problema gordo si, por ejemplo, se tiene mapeado un volumen de Plex con 2 TB de películas sin olvidar que mayórmente los sistemas actuales de copia de seguridad de dockers funcionan a través de scripts o consola.
En este post voy a tratar de explicar como instalar y configurar un docker llamado Backrest que tiene interfaz gráfica, permite copias de seguridad de los dockers de forma programada a voluntad, restauración de esas copias si fuera necesario, notificaciones a través de distintos servicios, etc, etc.
El compose para su instalación a través de Container Station o Portainer es el siguiente:
services:
backrest:
image: garethgeorge/backrest:latest
container_name: backrest
volumes:
- /path/to/backrest/data:/data
- /path/to/backrest/config:/config
- /path/to/backrest/cache:/cache
- /path/to/backrest/tmp:/tmp
- /path/to/backup/data:/userdata
- /path/to/local/repos:/repos
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- BACKREST_DATA=/data
- BACKREST_CONFIG=/config/config.json
- XDG_CACHE_HOME=/cache
- TMPDIR=/tmp
- TZ=Europe/Madrid
ports:
- 9898:9898
restart: always
A tener en cuenta:
- Los directorios /path/to/backrest hacen referencia a los directorios de la configuración de Backrest que hay que adecuarlos a las carpetas compartidas del nas.
- El directorio /path/to/backup hace referencia a la carpeta compartida del nas Dockerdata en la que se guardan las configuraciones de los dockers que tengamos. Si
esas configuraciones están por separado en otros directorios podemos mapear la carpeta compartida superior.
- El directorio /path/to/local/repos hace referencia a la carpeta compartida principal del nas en la que queramos guardar las copias de seguridad de Backrest. Esa
carpeta puede ser del propio nas o de otro dispositivo de la red local que tengamos mapeado.
Adicionálmente a través de la interfaz de Backrest podemos configurar distintos servicios en la nube como destinos de esas copias de seguridad:
- Backblaze B2: b2:bucket or b2:bucket/prefix
- AWS S3: s3:bucket or s3:bucket/prefix
- Google Cloud: gs:bucket:/ or gs:bucket:/prefix
- SFTP: sftp:user@host:/path/to/repo
- Rclone: rclone:remote:path (requires rclone installation)
Instalado el compose de Backrest en el nas accedemos a su interfaz mediante el navegador a través de http://iplocaldelnas:9898
Por defecto Backrest no requiere de usuario - contraseña para acceder a su interfaz así que al hacerlo nos propone su creación voluntaria:
[attachment=3661]
El funcionamiento principal de Backrest se basa en dos premisas:
- Creación de lo que denominan Repos que consisten en las carpetas donde se guardarán las copias de seguridad de los dockers de Backrest
- Creación de Planes de copia de seguridad.
Estas dos configuraciones las podemos hacer por separado para cada docker que nos interese hacer copia de seguridad. Para este tutorial paso a explicar a continuación como realizar esos procesos con un único docker.
Lo primero que tenemos que hacer a través de la interfaz de Backrest es añadir un nuevo Repo
[attachment=3675]
- Le ponemos el nombre que nos apetezca
- En el compose de instalación asignamos la ruta del nas para guardar los repos /path/to/local/repos:/repos así que se la indicamos también ( esa carpeta repos nos aparece en un desplegable clickando en el apartado correspondiente ) añadiendo la carpeta en la que queramos se guarde la copia de seguridad de ese docker en concreto, en este caso queda así: /repos/Homarr
- Las copias de seguridad que se generen están encriptadas de ahí que se nos pida una contraseña.
- Los apartados con flechas verdes Prune Policy - Check Policy se pueden dejar tal cual sabiendo que han referencia a esto:
Política de limpieza: Programación para la limpieza de datos sin referencias
Política de comprobación: Programación para la verificación de la integridad de las copias de seguridad
A tener en cuenta: En el apartado Repository URL podemos configurar si queremos los servicios en la nube como destino de las copias de seguridad anteriórmente citados.
Configurado todo guardamos los cambios.
Puesto en funcionamiento nuestro primer Repo pasamos a la segunda parte consistente en añadir un Plan asociado a ese Repo creado:
[attachment=3676]
- Le ponemos el nombre que nos apetezca.
- Seleccionamos el Repo creado anteriórmente.
- Similar al caso anterior, en el compose pusimos la ruta donde tenemos guardadas las configuraciones de los dockers que tengamos con el parámetro
/path/to/backup/data:/userdata así que clickando en el apartado Patch de la interfaz nos aparecerá entre otras la carpeta userdata y dentro de ella, en
este caso, la carpeta de configuración de Homarr.
- En los apartados marcados con flechas verdes podemos configurar a nuestro gusto cuando se hacen las copias de seguridad y el tiempo de retención.
El apartado marcado con flecha azul ( Hooks ) merece una atención especial:
[attachment=3664]
Como se puede ver tenemos varias opciones para elegir, de todas ellas escogemos Command
[attachment=3665]
- CONDITION_SNAPSHOT_START nos aparece si clickamos en un desplegable y hace referencia al inicio de la copia de seguridad
- docker stop homarr lo escribimos a mano y da la orden de detener el contenedor Homarr ANTES de hacer la copia de seguridad
- ON_ERROR_FATAL también aparece en un desplegable y obliga a detener la copia si ocurre un error grave.
En el sitio donde estamos añadimos un segundo Hook junto al anterior:
[attachment=3666]
- CONDITION_SNAPSHOT_END hacer referencia a la finalización de la copia de seguridad por parte de Backrest de ese contenedor Homarr
- docker start homarr arranca el contenedor después de finalizada la copia
- ON_ERROR_FATAL impide lo anterior si hay un error grave
Con esto configurado ya tendríamos lista la copia de seguridad automatizada del contenedor, en este caso, Homarr, si opcionálmente quisiéramos que Backrest nos notificara el inicio - finalización de la copia de seguridad, por ejemplo, a través de un bot de Telegram añadimos un tercer Hook junto a los anteriores.
[attachment=3667]
- Las dos condiciones que se ven son las mismas de antes y hacen referencia al inicio - finalización de la copia de seguridad
- Las notificaciones anteriores mediante un bot de Telegram a través de Shoutrrr tienen que estar configuradas en el siguiente formato:
telegram://XXXXX@telegram?chats=YYYYYYYYYY
Las XXXX se corresponden al token del bot
Las YYYYYYY se corresponden al Chat ID
Configurado todo guardamos los cambios. De esta forma ya tenemos configurada en Backrest las copias de seguridad de un docker en concreto, lo siguiente sería repetir los mismos procesos anteriores adecuándolos a los demás dockers de los que queramos hacer copia de seguridad automatizada.
En este punto primigenio la interfaz de Backrest queda así:
[attachment=3668]
Os pongo una imagen que no es mia para que veais como queda un sistema completo ya configurado:
[attachment=3669]
Backrest no sólo permite hacer copias de seguridad de los dockers sino que también permite su fácil restauración ( las siguientes imágenes tampoco son mias ):
[attachment=3670]
Proceso de restauración:
[attachment=3671]
Hasta aquí lo principal, sin embargo Backrest permite múltiples configuraciones a través de condiciones, variables, etc que por su extensión no voy a explicar. En su lugar os dejo un enlace a la documentación del programa:
https://garethgeorge.github.io/backrest/...ng-started
A la hora de hacer copias de seguridad de las carpetas persistentes de los dockers no hay mucho donde escoger y de lo poco que hay puede que no convenga del todo según los casos...... algunos sistemas automatizados necesitan mapear por partes los dockers y otros, por el contrario, lo hacen al completo sin ninguna discriminación lo cual es un problema gordo si, por ejemplo, se tiene mapeado un volumen de Plex con 2 TB de películas sin olvidar que mayórmente los sistemas actuales de copia de seguridad de dockers funcionan a través de scripts o consola.
En este post voy a tratar de explicar como instalar y configurar un docker llamado Backrest que tiene interfaz gráfica, permite copias de seguridad de los dockers de forma programada a voluntad, restauración de esas copias si fuera necesario, notificaciones a través de distintos servicios, etc, etc.
El compose para su instalación a través de Container Station o Portainer es el siguiente:
services:
backrest:
image: garethgeorge/backrest:latest
container_name: backrest
volumes:
- /path/to/backrest/data:/data
- /path/to/backrest/config:/config
- /path/to/backrest/cache:/cache
- /path/to/backrest/tmp:/tmp
- /path/to/backup/data:/userdata
- /path/to/local/repos:/repos
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- BACKREST_DATA=/data
- BACKREST_CONFIG=/config/config.json
- XDG_CACHE_HOME=/cache
- TMPDIR=/tmp
- TZ=Europe/Madrid
ports:
- 9898:9898
restart: always
A tener en cuenta:
- Los directorios /path/to/backrest hacen referencia a los directorios de la configuración de Backrest que hay que adecuarlos a las carpetas compartidas del nas.
- El directorio /path/to/backup hace referencia a la carpeta compartida del nas Dockerdata en la que se guardan las configuraciones de los dockers que tengamos. Si
esas configuraciones están por separado en otros directorios podemos mapear la carpeta compartida superior.
- El directorio /path/to/local/repos hace referencia a la carpeta compartida principal del nas en la que queramos guardar las copias de seguridad de Backrest. Esa
carpeta puede ser del propio nas o de otro dispositivo de la red local que tengamos mapeado.
Adicionálmente a través de la interfaz de Backrest podemos configurar distintos servicios en la nube como destinos de esas copias de seguridad:
- Backblaze B2: b2:bucket or b2:bucket/prefix
- AWS S3: s3:bucket or s3:bucket/prefix
- Google Cloud: gs:bucket:/ or gs:bucket:/prefix
- SFTP: sftp:user@host:/path/to/repo
- Rclone: rclone:remote:path (requires rclone installation)
Instalado el compose de Backrest en el nas accedemos a su interfaz mediante el navegador a través de http://iplocaldelnas:9898
Por defecto Backrest no requiere de usuario - contraseña para acceder a su interfaz así que al hacerlo nos propone su creación voluntaria:
[attachment=3661]
El funcionamiento principal de Backrest se basa en dos premisas:
- Creación de lo que denominan Repos que consisten en las carpetas donde se guardarán las copias de seguridad de los dockers de Backrest
- Creación de Planes de copia de seguridad.
Estas dos configuraciones las podemos hacer por separado para cada docker que nos interese hacer copia de seguridad. Para este tutorial paso a explicar a continuación como realizar esos procesos con un único docker.
Lo primero que tenemos que hacer a través de la interfaz de Backrest es añadir un nuevo Repo
[attachment=3675]
- Le ponemos el nombre que nos apetezca
- En el compose de instalación asignamos la ruta del nas para guardar los repos /path/to/local/repos:/repos así que se la indicamos también ( esa carpeta repos nos aparece en un desplegable clickando en el apartado correspondiente ) añadiendo la carpeta en la que queramos se guarde la copia de seguridad de ese docker en concreto, en este caso queda así: /repos/Homarr
- Las copias de seguridad que se generen están encriptadas de ahí que se nos pida una contraseña.
- Los apartados con flechas verdes Prune Policy - Check Policy se pueden dejar tal cual sabiendo que han referencia a esto:
Política de limpieza: Programación para la limpieza de datos sin referencias
Política de comprobación: Programación para la verificación de la integridad de las copias de seguridad
A tener en cuenta: En el apartado Repository URL podemos configurar si queremos los servicios en la nube como destino de las copias de seguridad anteriórmente citados.
Configurado todo guardamos los cambios.
Puesto en funcionamiento nuestro primer Repo pasamos a la segunda parte consistente en añadir un Plan asociado a ese Repo creado:
[attachment=3676]
- Le ponemos el nombre que nos apetezca.
- Seleccionamos el Repo creado anteriórmente.
- Similar al caso anterior, en el compose pusimos la ruta donde tenemos guardadas las configuraciones de los dockers que tengamos con el parámetro
/path/to/backup/data:/userdata así que clickando en el apartado Patch de la interfaz nos aparecerá entre otras la carpeta userdata y dentro de ella, en
este caso, la carpeta de configuración de Homarr.
- En los apartados marcados con flechas verdes podemos configurar a nuestro gusto cuando se hacen las copias de seguridad y el tiempo de retención.
El apartado marcado con flecha azul ( Hooks ) merece una atención especial:
[attachment=3664]
Como se puede ver tenemos varias opciones para elegir, de todas ellas escogemos Command
[attachment=3665]
- CONDITION_SNAPSHOT_START nos aparece si clickamos en un desplegable y hace referencia al inicio de la copia de seguridad
- docker stop homarr lo escribimos a mano y da la orden de detener el contenedor Homarr ANTES de hacer la copia de seguridad
- ON_ERROR_FATAL también aparece en un desplegable y obliga a detener la copia si ocurre un error grave.
En el sitio donde estamos añadimos un segundo Hook junto al anterior:
[attachment=3666]
- CONDITION_SNAPSHOT_END hacer referencia a la finalización de la copia de seguridad por parte de Backrest de ese contenedor Homarr
- docker start homarr arranca el contenedor después de finalizada la copia
- ON_ERROR_FATAL impide lo anterior si hay un error grave
Con esto configurado ya tendríamos lista la copia de seguridad automatizada del contenedor, en este caso, Homarr, si opcionálmente quisiéramos que Backrest nos notificara el inicio - finalización de la copia de seguridad, por ejemplo, a través de un bot de Telegram añadimos un tercer Hook junto a los anteriores.
[attachment=3667]
- Las dos condiciones que se ven son las mismas de antes y hacen referencia al inicio - finalización de la copia de seguridad
- Las notificaciones anteriores mediante un bot de Telegram a través de Shoutrrr tienen que estar configuradas en el siguiente formato:
telegram://XXXXX@telegram?chats=YYYYYYYYYY
Las XXXX se corresponden al token del bot
Las YYYYYYY se corresponden al Chat ID
Configurado todo guardamos los cambios. De esta forma ya tenemos configurada en Backrest las copias de seguridad de un docker en concreto, lo siguiente sería repetir los mismos procesos anteriores adecuándolos a los demás dockers de los que queramos hacer copia de seguridad automatizada.
En este punto primigenio la interfaz de Backrest queda así:
[attachment=3668]
Os pongo una imagen que no es mia para que veais como queda un sistema completo ya configurado:
[attachment=3669]
Backrest no sólo permite hacer copias de seguridad de los dockers sino que también permite su fácil restauración ( las siguientes imágenes tampoco son mias ):
[attachment=3670]
Proceso de restauración:
[attachment=3671]
Hasta aquí lo principal, sin embargo Backrest permite múltiples configuraciones a través de condiciones, variables, etc que por su extensión no voy a explicar. En su lugar os dejo un enlace a la documentación del programa:
https://garethgeorge.github.io/backrest/...ng-started