Copias seguridad deslocalizadas con Vorta

Copias seguridad deslocalizadas con Vorta

Actualizacion: a dia 25 de enero han solucionado el bug asi que el paso de comentar la linea de codigo ya no es necesaria

En este post os comentaré como he solucionado la otra pata que notaba que estaba falto y que , los que tenemos un toc, pues no vivimos tranquilo sin tenerlo resuelto.

Os hablo de las copias de seguridad, en este caso de las deslocalizadas, ya que, tras el chasco de la copia en nube que tuve cuando tuve que restaurar la copia de mi antiguo synology 918+, he decidido preparar un dispositivo pequeño y de pequeño consumo energético para llevarlo a casa de mi hermana y tener allí una copia de seguridad que se realiza cada tres días y que es incremental, es decir, que la primera copia es grande, pero las siguientes sólo son de los cambios realizados.

Aquí en este post os mostraré primero a configurar ese dispositivo para conectarlo a nuestra VPN y así, aunque este fuera de casa, será como si estuviese dentro. Después comenzaremos con la creación y corrección de código del docker que vamos a utilizar y por último mostraré como hacer, programar y rescatar una copia de seguridad.

Preparación del dispositivo remoto

En mi caso lo voy a hacer con una rapsberry pi zero 2w que tengo por casa en el tutorial, ya que, como os he dicho, quiero un dispositivo pequeño y con un consumo energético igual de pequeño ya que no va a ir en mi domicilio.

Los pasos a seguir son los siguientes:

  1. Instalamos raspberry Pi OS en la versión que sea para nuestro dispositivo. Configuramos para acceder a ella a través de escritorio remoto y así no tendremos que conectarle ni teclado ni ratón, sino que podremos controlarla y configurarla desde nuestro ordenador principal. Accedemos a ella por una app de escritorio remoto, en mi caso Microsoft Remote Desktop.
  2. Instalamos WireGuard, mediante terminal introduciendo el comando
sudo apt install wireguard

3. Hacemos sudo su y entraremos como root.

4. Navegamos hasta la carpeta que nos interesa mediante el comando cd /etc/wireguard y creamos las claves del peer con el comando

sudo su
cd /etc/wireguard
wg genkey | tee rpi2_privatekey | wg pubkey > rpi2_publickey

5. Obtenemos la clave privada creada mediante el comando  cat rpi2_privatekey y lo copiamos. Hacemos lo mismo con la clave pública mediante el comando cat rpi2_publickey.

cat rpi2_privatekey
cat rpi2_publickey

6. Las anotamos en el bloc de notas

7. Tendremos que copiar también la clave publica de nuestro servidor WireGuard

8. Una vez que tenemos estos datos, creamos el archivo de configuración del peer mediante el comando nano rpi2.conf e introducimos los siguientes parámetros

nano rpi2.conf

9. Guardamos el archivo pulsando CTRL + O, pulsamos ENTER y luego salimos a la terminal de nuevo con las teclas CTRL + X

10. Levantaremos esta conexión con el comando wg-quick up rpi2

wg-quick up rpi2

11. Hacemos que se conecte de forma automática en cada reinicio con el comando sudo systemctl enable wg-quick@rpi2

sudo systemctl enable wg-quick@rpi2
exit

Una vez que la tenemos añadida correctamente a nuestro servidor Wireguard comprobamos que funciona haciendole un ping. En mi caso desde el terminal de windows o mac, lo hago con el comando ping 10.10.10.13 y si me da tráfico, ya sé que está bien configurada.

Volvemos a la ventana de terminal de la raspberry y procedemos a la instalacion de Borg, mediante el comando sudo apt install borgbackup

sudo apt install borgbackup

Comprobamos que está ejecutándose introduciendo el comando borg --version y debe de darnos la versión de nuestra app de borg que se está ejecutando en la raspberry.

Creamos una carpeta llamada .ssh, para ello nos vamos a la ruta cd /home/pi/ y con el comando mkdir .ssh crearemos dicha carpeta.

cd /home/pi
mkdir .ssh

Para que el proceso de copia se haga correctamente, debemos darle permiso 700 a esta carpeta creada y lo hacemos mediante el comando sudo chmod 700 /home/pi/.ssh

sudo chmod 700 /home/pi/.ssh

Ahora creamos una carpeta en el directorio /home/pi que será donde almacenemos las copias de seguridad. Lo haremos mediante el comando mkdir backups

mkdir backups

Ahora navegaremos hasta una ruta que necesitamos ir mediante el comando cd /etc/ssh y dentro de esta carpeta tendremos que editar el archivo sshd_config. Esto lo haremos mediante el comando sudo nano sshd_config

cd /etc/ssh
sudo nano sshd_config

Bajaremos a lo largo del archivo hasta una linea que pone MaxSessions 10, pulsamos ENTER para ir a la siguiente linea e introducimos RSAAuthentication yes en la siguiente linea eliminamos el símbolo # de la línea PubkeyAuthentication yes.

Un par de líneas más abajo eliminamos el símbolo # de la línea AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

Nos debe quedar así

Procedemos a guardar, pulsando en CTRL + O, pulsamos ENTER y salimos de esta ventana con CTRL + X.

Ahora solo nos reiniciar el servicio ssh , mediante el comando sudo systemctl restart ssh

sudo systemctl restart ssh

Vamos a la parte de UNRAID

Instalamos VORTA desde el appcenter. Lo hacemos desde la ventana del buscador, escribiendo VORTA y eligiendo la opción que nos sale.

Podemos configurar el puerto que trae por defecto, que es el 5800 o lo cambiamos por el que prefiramos y que no esté siendo usado por otro servicio.

Configuramos las rutas para las carpetas backups (to) y backups (from). Yo en mi caso he configurado la ruta /mnt/user/ para ambas.

En storage le decimos la ruta donde queremos que se instalen los archivos de configuración del contenedor, en mi caso /mnt/user/appdata/Vorta-Tutoriales

Pulsamos en Apply y se instala y ejecuta el contenedor.

Vamos a la pestaña docker y vamos al icono de Vorta-tutoriales. Pulsamos en el icono del contenedor  y pulsamos en WebUI para entrar en la interfaz gráfica de nuestro contenedor

En la primera pantalla, si pulsamos sobre el símbolo + vemos que no podemos añadir una llave ssh, esto es por un bug.

Lo que tenemos que hacer son los pasos siguientes:

  1. Nos vamos de nuevo a unraid a la pestaña de docker y bajamos hasta el contenedor de Vorta.
  2. En el icono pulsamos y en lugar de ir a la WebUI, pulsaremos en >_console
  3. instalamos nano mediante el comando apk add nano
apk add nano
nano /usr/lib/python3.10/site-packages/vorta/borg/extract.py

4. hacemos nano /usr/lib/python3.10/site-packages/vorta/borg/extract.py  y comentamos la siguiente linea al final del archivo pattern_file.close()  # wont delete temp file

5. Guardamos el archivo con CTRL + O, ENTER y salimos a la ventana del terminal con CTRL + X

6. Lanzamos el comando ssh-keygen -t rsa . Pulsamos intro tres veces sin escribir nada

7. Eso creará las llaves en /root/.ssh

8. Navegaremos a la ruta cd /config y creamos un nuevo directorio, tal y como hicimos en la raspberry pi con el comando mkdir .ssh

9. Copiamos las llaves desde la carpeta root a la carpeta que hemos creado con el comando cp /root/.ssh/id* /config/.ssh/

10. Ahora vamos a copiar las llaves en la carpeta de la raspberry y para ello, lo hacemos lanzando el comando ssh-copy-id -i /config/.ssh/id_rsa.pub [email protected]

ssh-keygen -t rsa
cd /config
mkdir .ssh
cp /root/.ssh/id* /config/.ssh/
ssh-copy-id -i /config/.ssh/id_rsa.pub [email protected] 

11. Si tu usuario de raspberry es distinto y la ip también, tendrás que cambiarlo en poniendo los datos correspondiente tras id_rsa.pub

12. Confirmamos que queremos añadir el dispositivo como confiable almacenando sus datos con la palabra yes cuando nos pregunte.

13. Introducimos la contraseña de la raspberry cuando nos pida un password

14. Veremos que nos dice que ha añadido las llaves.

15. Cerramos la ventana del terminal y dentro de la pestaña docker, bajamos al contenedor de Vorta, pulsamos en su icono y reiniciamos el contenedor eligiendo RESTART en el menú. Volvemos a ir al icono de Vorta y volvemos a entrar en su web-UI

Creando la copia de seguridad

Tenemos que crear un repositorio nuevo, desde el icono + de la linea de Repository

En la ventana emergente que nos sale, lo primero que tenemos que hacer es irnos a la pestaña advanced y vemos que en desplegable de sshkey ya nos sale nuestra clave ssh.

Picamos a la pestaña general y tenemos que decirle la ruta donde va a estar nuestro dispositivo remoto para la copia mediante el comando [email protected]:/home/pi/backups

En Borg passphrase ponermos la contraseña de encryptación de nuestro backup, apuntadla a fuego ya que si no la recordais, no podreis rescatarla. En confirm passphrase, confirmamos dicha contraseña

Configurar archivos a copiar

  • Vamos a la carpeta SOURCES y pulsamos en el simbolo +
  • Elegimos si queremos copiar archivos o carpetas completas.
  • Picamos en Computer, en el directorio /,en data, en bk_from, y elegimos las carpetas.
  • vamos a hacer una prueba sencilla con el archivo appdata/adguard, lo seleccionamos y le damos a start

Una vez acabado vamos a archives y vemos que nuestra copia esta hecha.

Ahora nos vamos a nuestro equipo remoto, la raspberry en mi caso,  para comprobar que hay algo dentro de la carpeta /home/pi/backups

Vamos a nuestro unraid y borramos la carpeta appdata/adguard

Cómo rescatar una copia de seguridad

Volvemos a Vorta y vamos a reinstalar los archivos que hemos hecho backup

Vamos a Archives, seleccionamos el archivo y pulsamos en extract

Seleccionamos lo que queremos restaurar y le configuramos donde queremos restaurarlo, yendo a Computer, /, data, bkp_to

Como es un archivo pequeño, se restaura a toda velocidad y ahora vamos a nuestra maquina unraid para ver si está la carpeta adguard.

Para ello nos iremos a la carpeta /mnt/user/ y veremos que se nos habrá creado una carpeta data. Esto es así porque Vorta nos crea la ruta completa del archivo a restaurar.

Si entramos en la carpeta data, veremos que dentro habrá otra carpeta bkp_from, entramos y habrá otra carpeta appdata y dentro de esta, la carpeta adguard que habíamos eliminado. La seleccionamos y la movemos a la su carpeta correcta.

Mi nombre es David Rodríguez, apasionado por un millón de cosas que lleven placas y chips dentro.

Puedes encontrarme como @_Bilito en twitter y en grupo de Telegram de Synology NAS https://t.me/synologyNAS

Tengo un un canal de youtube que complementa al blog https://www.youtube.com/@_Bilito y que me harías un gran favor si te subscribes.

También colaboro en podcast como Bateria 2x100 https://pod.link/1115144939 y además hemos comenzado otra aventura en otro podcast Detras del Mostrador https://pod.link/1657695301