205 views
owned this note
# Bot de Respaldos
<!-- Nota: 13 huertas cuánto almacenamiento necesitamos en función de lo que estemos previendo de actividad + backup mínimo -->
:::success
**En esta sección abordaremos como desplegar un *Bot de Respaldos* en nuestra Huerta Digital que se encargará de realizar el backup de todos los que tengamos instaladas en ese servidor y de enviarlas a otro servidor remoto para que las almacene de manera cifrada.**
:::
## Agregar aplicación a la huerta a respaldar
Nuestro primer paso será agregar la aplicación de respaldos a la huerta que queremos respaldar, con el dominio respaldos.<span style="color: red;">HUERTA</span>.comun
```
abra plataforma nueva backup-bot-two
````
Nos va a realizar unas preguntas (en inglés), las líneas que empiezan con `?` son la pregunta y con `>` nuestra respuesta.
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
? Select app server:
> <span style="color: red;">HUERTA</span>
? Specify app domain
> respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
### ... al finalizar el proceso veremos algo así:
```
+-------------------------+----------------+-----------------------------------+
| SERVER | RECIPE | DOMAIN |
+-------------------------+----------------+-----------------------------------+
| HUERTA.comun | backup-bot-two | respaldos.HUERTA.comun |
+-------------------------+----------------+-----------------------------------+
You can configure this app by running the following:
abra app config respaldos.HUERTA.comun
You can deploy this app by running the following:
abra app deploy respaldos.HUERTA.comun
```
Ahora haremos algunos cambios a la configuración de esta aplicación, siguiendo lo que nos dice la línea de comandos, ejecutamos el comando:
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra app config respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
Y borramos el `#` (comentario) en las dos últimas líneas del documento:
```
SECRET_RESTIC_REPO_VERSION=V1
COMPOSE_FILE="$COMPOSE_FILE:compose.secret.yml"
```
Guardamos cambios con con control + O y cerramos el documento con control + X.
---
### Activar Credenciales en Servidor Remoto
El siguiente paso es darnos de alta en el servidor que recibirá los respaldos. Para ello necesitaremos que el servidor de respaldos de Red Abya Yala nos haya enviado una usuaria y una contraseña (**Solicitarla en el chat interno**).
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra app secret insert respaldos.<span style="color: red;">HUERTA</span>.comun restic_repo v1 rest:https://<span style="color: red;">USUARIA_RESPALDO</span>:<span style="color: red;">CONTRASEÑA_USUARIA_RESPALDO</span>@pazmental.respaldos.abyaya.la/<span style="color: red;">USUARIA_RESPALDO</span>/
</pre>
Si todo es exitoso el mensaje debería verse así:
```
INFO[0001] respaldos_nombre_del_nodo_comun_restic_repo_v1 successfully stored on server
```
---
### Generar contraseña para los respaldos cifrados
Una vez establecida la comunicación con el servidor que almacenará los respaldos, debemos crear la constraseña que nos permitirá abrir nuestros respaldos.
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra app secret generate -a respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
:::danger
**IMPORTANTE: Tomar nota de esta contraseña y guardarla en un lugar que consideremos seguro. Esta es la contraseña de cifrado de los respaldos, si la perdemos no hay forma de recuperar los archivos. Si alguien toma acceso a esta contraseña, tiene acceso también a los archivos.**
se verá algo así
```
+-----------------+------------------------------------------------+
| NAME | VALUE |
+-----------------+------------------------------------------------+
| restic_password | swimsuit-stroller-otter-refuse-empty-threefold |
+-----------------+------------------------------------------------+
WARN[0002] generated secrets are not shown again, please take note of them NOW
```
:::
----
### Desplegar aplicación de respaldo
Guardamos esa informacion sensible y desplegamos la aplicación de respaldos.
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra app deploy respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
Si todo resulta bien, deberíamos ver lo siguiente:
```
+-----------------------+----------------+--------------------+--------+------------------+
| SERVER | RECIPE | CONFIG | DOMAIN | VERSION |
+-----------------------+----------------+--------------------+--------+------------------+
| HUERTA.comun | backup-bot-two | compose.yml | | 2.3.0+2.3.0-beta |
| | | compose.secret.yml | | |
+-----------------------+----------------+--------------------+--------+------------------+
? continue with deployment? Yes
WARN[0014] skipping domain checks as no DOMAIN=... configured for app
INFO[0015] Updating service respaldos_HUERTA_comun_app (id: rkhps08hfnkozjfoiuje31b9t)
INFO[0019] Waiting for respaldos.HUERTA.comun to deploy... please hold 🤚
a
INFO[0048] Successfully deployed respaldos.HUERTA.comun
```
**Con estos pasos ya tenemos una aplicación llamada Backup-Bot-Two que de manera automática hará respaldo de todo lo que esté en esa huerta digital. Esto lo hará automáticamente todos los días a las 3.30 am.**
### Hacer respaldos remotos
---
### Configuraciones posteriores
Para acceder al archivo de configuración de la instancia que nos proporciona el entorno abra, ejecutamos:
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra plataforma configurar respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
Si bien la receta hace casi todo por nosotras, aún será necesario hacer pequeños ajustes de configuración por aquí y allá para que nuestra plataforma funcione de la mejor manera. Los pasos siguientes son opcionales pero te recomendamos seguirlos.
---
### Respaldar de manera manual
Para ejecutar la acción de generar un respaldo de manera manual, solo basta:
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra plataforma lanzar respaldos.<span style="color: red;">HUERTA</span>.comun app -- backup create
</pre>
Es posible que recibamos un error así:
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
FATA[0032] command [ssh -o ConnectTimeout=60 -l <span style="color: red;">USUARIA_DEL_NODO</span> -p 22 -- <span style="color: red;">HUERTA</span>.comun docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=
</pre>
Esto puede ser porque el respaldo tardó mucho en hacerse, pero podemos chequearlo con el siguiente comando.
Para ver la lista de respaldos realizados hasta el momento:
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra plataforma lanzar respaldos.<span style="color: red;">HUERTA</span>.comun app -- backup snapshots
</pre>
```
2024-11-05T20:13:13.120525742Z bff133ce351b844814762919e85aaa468488f0c63a839e9b606f9cb024a0c34c
2024-11-05T20:14:11.225426156Z 531e7b1a9c936e2e2ea55b9bcffe49a761a524104a51e55754ec557ac4da289b
2024-11-07T03:30:21.528184565Z bf80eb50de0d0b85e5c4bec11d35aa6b180945af3395b85634ca24a665cef018
```
Cada respaldo tiene un identificador único ilegible, pero podemos saber en qué fecha se hicieron para saber cuántos respaldos tenemos, si se están haciendo correctamente a la hora que programamos. Con el identificador luego podemos recuperar uno específico.
---
#### Cambiando el horario de respaldo
Si quieres cambiar el horario de respaldo puedes abrir las configuraciones
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
abra plataforma configurar respaldos.<span style="color: red;">HUERTA</span>.comun
</pre>
y cambiarlo aquí por el horario que necesites (ahí dice 3.30 am):
<pre style="color: black; background-color: #f5f5f5; padding: 10px;">
CRON_SCHEDULE='<span style="color: red;">30 3</span> * * *'
</pre>
Guardamos cambios con `control` + `O` (letra "o") y cerramos el documento con `control` + `X`.
#### Recibir notificaciones de los respaldos
Para poder recibir notificaciones cuando se comienza un respaldo y luego cuando termina o falla, necesitamos instalar la app `ntfy` disponible en <https://ntfy.sh>. Pueden crear una cuenta en este sitio o solicitar una cuenta en el ntfy de la Red Abya Yala. También pueden alojar el propio, con la receta de ntfy!
:::info
Al ingresar, un cartel arriba a la izquierda nos va a pedir permiso para recibir notificaciones. Es importante activarlo para que podamos recibirlas en nuestro navegador.
:::
##### Cambiar el idioma
Si al crear una cuenta no cambia el idioma, pueden hacerlo dentro de las opciones:

##### Copiar el token de publicación
:::info
Esta sección no es necesaria!
:::
Un "token" es como una contraseña secundaria que se genera automáticamente. En el banco puede ser un número de cuatro cifras. En este contexto es un texto de letras y números aleatorios.

Copiamos este token para usarlo luego.

##### Suscribirnos a las notificaciones
Para poder recibir las notificaciones, primero hay que suscribirnos. Usamos generar nombre aleatorio para que no sean fácilmente adivinables (ni tengamos que pensar un nombre) y copiamos ese nombre también.

##### Configurar backup-bot-two
Ahora con token y nombre aleatorio, podemos configurar `backup-bot-two` para enviar notificaciones.
```shell=
abra plataforma configurar respaldos.HUERTA.comun
```
En el archivo de configuración, buscamos estas tres variables:
```
PUSH_URL_START=
PUSH_URL_SUCCESS=
PUSH_URL_FAIL=
```
La primera es la notificación de comienzo, luego vienen la de éxito y la de error. Tenemos que generar los vínculos de ntfy para que backup-bot-two genere estas notificaciones.
```
https://ntfy.sh/NOMBRE/publish?message=MENSAJE
```
Creamos tres versiones de este link, reemplazando NOMBRE por el nombre generado para el canal de notificaciones y MENSAJE por el mensaje de inicio, éxito y fallo. Podemos escribir lo que queramos, pero es mejor usar una sola palabra para cada cosa.
La configuración quedaría así:
```
PUSH_URL_START=https://ntfy.sh/NOMBRE/publish?message=Comienzo
PUSH_URL_SUCCESS=https://ntfy.sh/NOMBRE/publish?message=Exito
PUSH_URL_FAIL=https://ntfy.sh/NOMBRE/publish?message=Fallo
```
Guardamos el archivo con Ctrl+o y salimos con Ctrl+x
Luego actualizamos la configuración de backup-bot-two aplicando los cambios:
```shell=
abra plataforma desarmar respaldos.HUERTA.comun
abra plataforma desplegar respaldos.HUERTA.comun
```
---
Con todas estas precauciones esperamos que puedan dormir mágica y plácidamente por las noches.