Objetivo
En este artículo aprenderás a automatizar los backups de tus zonas y registros DNS que tienes en Cloudflare. Está pensado para quienes gestionan grandes cantidades de zonas y registros DNS, y quieran mantener backups diarios.
Motivación
He perdido datos en varias ocasiones de mi vida. Eso me ha hecho aprender que los respaldos son una pieza fundamental para nuestro negocio. Seguro que alguna vez has perdido datos por no realizar respaldos debidamente.
Como puedes ver, llevo adelante una empresa de desarrollo web, donde gestiono una gran cantidad de datos de infraestructura. Uno de esos datos son las zonas y registros DNS de mis clientes que alojo en Cloudflare.
Para aumentar el grado de seguridad de los servicios que ofrezco, he creado este paquete que permite el respaldo diario de todas tus zonas y registros DNS de manera automatizada utilizando Docker.
¿NECESITAS AYUDA CON TU WEB?
Como usar el paquete
Tienes dos formas de usarlo, la primera de forma manual, instalas el paquete y ejecutas el comando. Tan fácil como eso.
La segunda forma es automatizada y más sofisticada pero muy simple, requiere el uso de Docker y posiblemente un NAS donde almacenar tus backups. También puedes utilizar cualquier ordenador/servidor que tengas siempre encendido para la tarea automatizada de respaldo.
Cualquiera de las dos formas involucra el uso de tu clave de API de Cloudflare.
Obtén las credenciales del API de Cloudflare
Lo primero será iniciar sesión en nuestra cuenta de Cloudflare. En este punto permíteme darte un consejo de seguridad: activa el 2FA en tu cuenta si no lo has hecho.
Luego iremos a nuestro perfil mediante el icono ubicado en la esquina superior derecha.
El paso siguiente será seleccionar del menú izquierdo la opción «Tokens de API«. Luego selecciona el botón «ver» para obtener la clave de API llamada «Global API Key«. Lo puedes ver en la imagen a continuación.
Uso manual del paquete
Comenzaremos por instalarlo en el ordenador que quieras ejecutarlo. Para ello necesitarás tener instalado Nodejs y Git (no tienes por qué tener la misma versión que muestra el ejemplo).
Abre la consola o terminal y ejecuta los siguientes comandos.
# Comprobamos que tenemos Node y Git
$ node -v
v19.x.x
$ git --version
git version 2.xx.x
# Instalamos el paquete de forma global
$ npm install -g danielcharrua/cloudflare-backup
Una vez instalado ya puedes ejecutar el comando para realizar el backup manual. Una vez lo ejecutes te almacenará un respaldo en el archivo zones.bind.txt. Si quieres revisar en dónde estarás guardando el archivo puedes ejecutar previamente el comando pwd.
# Saber en que carpeta estamos
$ pwd
/Users/danielcharrua/web
# Realizar backup de zonas y registros
$ CF_EMAIL=<email-de-tu-cuenta-cloudflare> CF_TOKEN=<global-api-key-cloudflare> cf-backup > zones.bind.txt
Uso automatizado con Docker
Esta forma de uso está pensada para realizar un respaldo automatizado. Podría ser en un NAS o un ordenador que tengas siempre encendido, quizá también un servidor o VPS que tengas para realizar tareas de respaldo.
En este caso el paquete viene programado para realizar un backup cada 24 horas a las 2 AM.
Lo primero será asegurarnos que tenemos Docker instalado en la máquina donde ejecutaremos los respaldos. Si no tienes Docker puedes instalarlo siguiendo la documentación oficial aquí.
# Comprobamos que tenemos docker
$ docker -v
Docker version 20.xx.xx, build 71xxxxx
Luego ejecutaremos el siguiente comando para descargar la imagen del contenedor e iniciarlo. Esta estrategia almacenará los respaldos en el directorio principal del contenedor /app lo que significa que cada vez que resetees el contenedor se borrará la información.
$ docker run \
--name cloudflare-backup \
--env 'CF_EMAIL=<email-de-tu-cuenta-cloudflare>' \
--env 'CF_TOKEN=<global-api-key-cloudflare>' \
--restart=always \
danielpcostas/cloudflare-backup
Almacenar respaldos fuera del contenedor
Contamos con una opción interesante que es crear un volumen externo al contenedor en la máquina (host). De esta forma al resetear el contenedor no perderemos los datos. Esta estrategia es la elegida a la hora de trabajar con un NAS o servidor de respaldo.
$ docker run \
--name cloudflare-backup \
--volume /home/username/cloudflare-backups:/storage \
--env 'CF_EMAIL=<email-de-tu-cuenta-cloudflare>' \
--env 'CF_TOKEN=<global-api-key-cloudflare>' \
--restart=always \
danielpcostas/cloudflare-backup
Recuerda que lo que indicas en el parámetro volume antes de los dos puntos es el PATH a la carpeta en dónde almacenar los respaldos, en el ejemplo anterior es en /home/username/cloudflare-backups.
Lo que tenemos luego de los dos puntos es el punto de montaje. Esto significa que cuando estés dentro del contenedor, cada vez que accedas a /storage realmente accederás a tu máquina (host) en /home/username/cloudflare-backups.
Es importante que siempre utilices /storage como punto de montaje ya que otras funcionalidades de este paquete dependen de ello.
Borrado automático de backups
El paquete también cuenta con una opción de borrado automático de backups. Esta opción viene predeterminada en 180 días. Esto significa que el sistema almacenará backups diarios de los últimos 6 meses, si los backups son más antiguos, los borrará automáticamente.
Puedes modificar este valor con la siguiente variable BACKUP_DAYS a la hora de ejecutar el contenedor. Por ejemplo, mantengamos un año los backups:
$ docker run \
--name cloudflare-backup \
--volume /home/username/cloudflare-backups:/storage \
--env 'BACKUP_DAYS=365' \
--env 'CF_EMAIL=<email-de-tu-cuenta-cloudflare>' \
--env 'CF_TOKEN=<global-api-key-cloudflare>' \
--restart=always \
danielpcostas/cloudflare-backup
Conclusión
Hemos instalado el paquete de respaldo de zonas y registros DNS de Cloudflare de dos formas, manual y automatizada. Con este paquete aumentarás tu seguridad y la de tus proyectos personales o de clientes.
Si quieres visitar el repositorio del proyecto puedes hacerlo aquí https://github.com/danielcharrua/cloudflare-backup.
Recuerda que la estrategia de backups que emplees es fundamental para la supervivencia de tus datos y proyectos.
🖖 Si este artículo te ha sido útil comparte para ayudar a otros.
HAGAMOS DESPEGAR TU NEGOCIO ONLINE 🚀
Te ayudo a potenciar tu página web o tienda online con estos servicios.