Instalando Portainer en la Raspberry Pi

Uno de los temas que me tenía preocupado al cual le quería dar una solución, es la administración de contenedores Docker a través de una interfaz gráfica la cual a la vez me permitiera actualizarlos fácilmente en vez de hacerlo a través de la Terminal.

Los puristas del Terminal probablemente dirán que es mejor administrar los contenedores a través de la línea de comandos, y quizás tienen razón, pero en mi opinión para alguien a quien el tiempo le es esquivo y escaso, es mejor disponer de una interfaz gráfica.

No es mi primera aproximación a Portainer, lo había probado antes sin el éxito que esperaba, pero decidí darle una segunda oportunidad antes de lo cual me documenté adecuadamente leyendo otros blogs y viendo algunos videos de YouTube.

En mi caso instalé Portainer CE (Community Edition) el cual es de uso gratuito. Lo primero que debemos hacer es crear un volumen en el cual Portainer guardará su base de datos.

docker volume create portainer_data

Una vez hecho esto basta crear el contenedor Docker de Portainer usando el siguiente comando.

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data cr.portainer.io/portainer/portainer-ce:latest

Una vez terminado el proceso, es necesario terminar la configuración de Portainer ingresando a la página web del servicio, reemplazando localhost por la dirección IP de la Raspebbry Pi.

https://localhost:9443

En este último paso, debemos crear el usuario y password con que administraremos Portainer.

En los próximos posts comentaré como instalar Homebridge vía Portainer, así como otros servicios con los que he estado jugando últimamente.

Por emontes, hace

¡Estamos de vuelta!

Después de bastante tiempo de receso, principalmente porque no encontraba el tiempo para escribir de nuevo, y porque además no encontraba la motivación para hacerlo, finalmente decidí relanzar el blog bajo un nuevo nombre más acorde a lo que me mueve a escribir (GeekMD),dejando de lado personajes del cine que puedan haber pasado al olvido (MrAnderson hacía referencia al alter ego de Neo de Matrix). Todas las entradas del blog antiguo fueron migradas a este nuevo blog, y sólo me falta migrar algunas entradas de «Code is Poetry» en donde hablaba principalmente de domótica. No prometo que escribiré todos los días, ni siquiera todas las semanas, porque el tiempo sigue siendo escaso, y tampoco escribiré de cosas que pueden leer en otros blogs, pero tengan por cierto que escribiré de lo que llame mi atención y me interese. El objetivo principal es escribir sin sentir la presión de hacerlo buscando la aprobación de ustedes, sino para mi y para quienes les guste lo que publico y mi forma de escribir. Así de sencillo. No quiero volver a desvivirme buscando temas escribiendo cualquier cosa porque «había que publicar algo todos los días». De ahora en adelante escribiré simplemente porque me genera satisfacción en vez ansiedad.

[Docker] Cómo actualizar Homebridge

Habiendo comentado en una entrada previa respecto de la instalación de Homebridge, quedó pendiente comentar cómo es que se actualiza Homebridge ya que aunque se trata de un proceso sencillo y está dentro de la documentación, habitualmente lo pasamos por alto.

Después de tener corriendo Homebridge por casi 10 meses, me di cuenta que tanto los paquetes nodejs como npm estaban desactualizados.

Mi primera aproximación fue a través del Terminal interno que tiene la instalación de Homebridge gracias al plugin reinstalado «Homebridge UI», de hecho pude actualizar npm pero no tuvo ningún efecto en el sistema a pesar de reiniciar homebridge.

Después de buscar bastante tiempo por internet, finalmente encontré la respuesta en la página de Github del proyecto oznu/docker-homebridge.

La solución para actualizar Homebridge es conectarse por ssh a la Raspberry Pi, cambiar al directorio en que está el archivo «docker-compose.yml» de nuestra instalación de Homebridge, actualizar el docker y finalmente correr el «docker-compose.yml» con lo cual el sistema queda actualizado.

Los comandos para dicha gestión, una vez conectados por ssh, son los siguientes.

cd /home/pi/homebridge
docker-compose pull homebridge
docker-compose up -d

Con eso queda actualizada la instalación de Homebridge y los paquetes nodejs y npm que estaban desactualizados.

Por emontes, hace

Automatizando el respaldo de la Raspberry Pi

Uno de los temas que últimamente me ha estado preocupando es el respaldo del sistema de la Raspberry Pi, lo cual resulta muy necesario cuando has gastado bastante tiempo en personalizar el sistema y dejarlo funcionando como una máquina de relojería.

Buscando en internet encontré un post de PiMyLifeUp en el cual nombraban un script de bash llamado bkup_rpimage creado por lzkelley el cual de acuerdo a su creador permitía crear respaldos incrementales en un archivo .img de todo el contenido de la microSD de la Raspberry Pi.

Era justo lo que necesitaba, pero por alguna razón no funcionaba correctamente en mi sistema, así que decidí crear un fork en Github y optimizarlo, con lo cual quedó funcionando a pedir de boca.

Lo primero que debemos hacer es clonar el script en nuestra Raspberry para lo cual ejecutaremos el siguiente comando.

cd /home/pi
git clone https://github.com/MrAndersonMD/bkup_rpimage.git
cd bkup_rpimage

Esto creará un directorio llamado bkup_rpimage en nuestro directorio home en el cual encontraremos los archivos bkup_rpimage.sh, exclude-file.txt, LICENSE y readme.md.

bkup_rpimage.sh corresponde al script, exclude-file.txt corresponde a un archivo en el cual podemos incluir los archivos o directorios que queremos excluir del respaldo, como por ejemplo archivos de cache y logs, LICENSE corresponde a la licencia y readme.md corresponde al archivo de ayuda en el cual se explica el uso del script.

Antes de realizar el primer respaldo vale la pena revisar el archivo exclude-file.txt con el siguiente comando.

sudo nano exclude-file.txt

El contenido por defecto de dicho archivo es el siguiente.

media
tmp/**
proc/**
run/**
sys/**
mnt/**
var/swap
var/cache
var/log
home/pi/.cache/**
root/.cache
root/.npm

Podemos incluir más directorios, archivos específicos, o incluso extensiones, teniendo el cuidado de escribir un recurso por línea como se aprecia en el ejemplo. Una vez que hayamos terminado de editar el archivo, grabamos con Ctrl-O y salimos con Ctrl-X.

El primer respaldo es el que tomará más tiempo, pero los siguientes, dado que utiliza un sistema de respaldo incremental, sólo agregarán o borrarán lo que no esté respaldado previamente.

Para realizar el primer respaldo basta con utilizar el siguiente comando.

sudo sh /home/pi/bkup_rpimage/bkup_rpimage.sh start -c /media/pi/MYBACKUPDRIVE/rpi_backup.img

Yo tengo conectado un SSD WD PiDrive a uno de los puertos USB de la Raspberry Pi, de manera tal que donde dice MYBACKUPDRIVE lo reemplacé por la ruta de dicho SSD y del directorio que creé para guardar dichos respaldos.

Una vez terminado el primer respaldo podemos automatizarlos mediante cron con el siguiente comando.

sudo crontab -e

Seleccionamos nano como editor y agregamos la siguiente línea.

0 0 * * * sudo sh /home/pi/bkup_rpimage/bkup_rpimage.sh start -c /media/pi/WD_PiDrive_314GB/raspi-backup/raspi-backup.img

Una vez que esté todo listo, grabamos con Ctrl-O y salimos con Ctrl-X. Esta linea de cron creará un respaldo incremental todos los días a las 0:00.

Con esto, ya tendremos automatizada la creación de respaldos incrementales del sistema de nuestra Raspberry Pi, y podremos dormir algo más tranquilos sabiendo que si el sistema se llega a estropear, tenemos una copia de seguridad para recrear todo sin tanto trabajo.

Por emontes, hace

Configuración básica del Amazon Echo Show 5

En post anteriores le comenté que me había llegado un Amazon Echo Show 5 de regalo de cumpleaños, y quedó pendiente comentar cómo se configura dicho dispositivo para agregarlo a nuestro ecosistema domótico Amazon Alexa.

Apenas conectamos la fuente de poder del Echo Show 5 al dispositivo, se enciende la pantalla y comienza el proceso de encendido. Una vez finalizado este proceso el cual dura aproximadamente 1 minuto, el Echo Show 5 nos pide que seleccionemos el idioma de este. En mi caso elegí Español de México, ya que el de España no me resulta atractivo por mi origen latinoamericano.

Una vez seleccionado el idioma, el Echo Show 5 comienza a buscar redes WiFi disponibles. Seleccionamos la correspondiente a nuestra casa, e inmediatamente nos solicitará que ingresemos el password de dicha red con un teclado en pantalla. Cabe hacer notar que el Echo Show 5 es compatible con redes de 5 GHz.

Una vez introducido el password, pinchamos en «Listo» para que desaparezca el teclado en pantalla, dejamos activada la casilla de verificación para que el Echo Show 5 guarde la contraseña en Amazon, y pinchamos en «Conectar».

Una vez que el dispositivo se encuentra conectado a internet por WiFi, nos mostrará una pantalla en la cual debemos ingresar nuestro usuario y contraseña de Amazon, a través del teclado en pantalla. Una vez introducidos, pinchamos en «Iniciar sesión».

Una vez que ha iniciado sesión en Amazon, nos dará la bienvenida en pantalla, mostrando el nombre asignado a la cuenta. Pinchamos en «Continuar», tras lo cual e dispositivo nos pedirá que configuremos la hora. En mi caso seleccioné la opción «Santiago de Chile».

Una vez seleccionado el huso horario, el dispositivo nos preguntará dónde lo tenemos ubicado, basado en las habitaciones o estancias que tengas configuradas en la aplicación de Amazon Alexa. En mi caso le indiqué que lo tengo en el Comedor. Pinchamos en «Continuar».

Ahora nos solicitará que le asignemos un nombre. En mi caso lo llamé «Echo Show Comedor», ya que es el único Echo Show que tengo. Pinchamos en «Continuar».

Con esto el dispositivo debiera finalizar la configuración básica de funcionamiento. Antes de mostrar la pantalla de inicio, verificará si hay una actualización de software disponible. Si existe una actualización, nos mostrará un diálogo en pantalla indicando dicha situación, y no existe otra opción sino pinchar en «Descargar e instalar».

El proceso de actualización puede demorar unos 10 a 15 minutos, dependiendo de la velocidad de tu red WiFi, pero el dispositivo muestra una barra de progreso para que sepas cuánto falta de este proceso.

Una vez finalizada la descarga de la actualización, el Echo Show 5 nos anuncia a través de un mensaje de audio que «ha finalizado la descarga y se reiniciará 2 veces». Después del primer reinicio, el equipo comienza a instalar la actualización, mostrando una barra de progreso para saber cuánto falta de este proceso.

Una vez iniciado el segundo reinicio, y después de algunas pantallas de bienvenida, el Amazon Echo Show 5 nos anuncia a través de un mensaje de audio «ya he vuelto, continuemos».

Una vez finalizado el segundo reinicio el dispositivo nos hará un pequeño recorrido por las funcionalidades del Echo Show 5. Una vez terminado este pequeño recorrido, y después de algunas pantallas adicionales de bienvenida, el Echo Show 5 nos anuncia a través de un mensaje de audio que «el dispositivo ya está listo», tras lo cual nos mostrará la pantalla de inicio, ya estará completada la configuración básica y ya lo tenemos listo para funcionar.

Más adelante iré comentando respecto de cómo cambiar el reloj, cambiar los fondos, y otras configuraciones avanzadas.

Por emontes, hace

Nuevo Amazon Echo Show 5 en casa

Para mi cumpleaños, mi familia decidió regalarme un Amazon Echo Show 5, el cual secretamente deseaba desde hace bastante tiempo.

En casa ya tengo 1 Amazon Echo Dot y 1 Sonos One el cual es compatible con Amazon Alexa, pero como les había comentado antes, quiero expandir el uso de este asistente virtual al resto de la casa, pero con la pandemia es complejo encontrar dónde comprarlos.

La llegada de este Amazon Echo Show 5 permitió relocalizar el Amazon Echo Dot, el cual dejé en el baño para poder escuchar música mientras uso la ducha, o por qué no, para poner música relajante en conjunto con un baño de tina con sales aromatizantes.

El uso del Amazon Echo Show 5 no difiere mucho del Amazon Echo Dot, salvo que tienes un feedback visual de las acciones llevadas a cabo por Alexa.

Este dispositivo tiene la forma de un prisma triangular de bordes redondeados, acostado por una de sus caras laterales. Dispone de una pantalla táctil de 5.5″ y una cámara de 1MP en su cara anterior. En el borde superior encontramos un botón para desactivar los micrófonos, 2 micrófonos, botones para subir y bajar el volumen, y un interruptor físico para desactivar/activar la cámara frontal, a la vez que tapa la cámara.

En su parte posterior encontramos el puerto de entrada de poder, y una salida de audio con conector estéreo de 3.5mm. La base está reforzada en goma de manera que el dispositivo no resbala y se mantiene en su lugar.

Respecto de la configuración del Amazon Echo Show 5, lo comentaré en un post separado, pero de todas maneras les dejo un buen video review que encontré en YouTube.

Por emontes, hace

Agregando la iRobot Roomba 671 a Home via Homebridge

Ya les había comentado respecto de cómo agregar la iRobot Roomba 671 a Amazon Alexa, y ahora toca el turno de agregarla a Home vía Homebridge ya que no tiene compatibilidad nativa. Para esto utilizaremos el plugin homebridge-roomba-stv, aunque antes es necesario conseguir cierta información la cual nos será solicitada por el plugin.

1. Rescatando la IP de la Roomba

Para rescatar la IP de la Roomba basta con abrir la aplicación iRobot HOME, seleccionar «Configuración» en el menú inferior, luego seleccionamos «Configuración de Wi-Fi», y luego «Detalles de la red Wi-Fi del robot». En la sección «Dirección IP» encontraremos la IP de la Roomba, la cual necesitaremos para rescatar el password y blid de la Roomba.

2. Instalando npm y dorita980

Es necesario instalar npm en nuestra Raspberry Pi para lo cual utilizamos el siguiente comando.

sudo apt-get install npm -y

Si es la primera vez que instalamos el paquete npm en la RasPi, además se instalarán un montón de dependencias, por esta razón agregué la opción «-y» al final para que no nos solicite la confirmación de instalación de todas estas dependencias.

Una vez terminado el proceso de instalación de npm en la RasPi, necesitamos instalar y luego correr la librería «dorita980» para conocer el password y blid de la Roomba, los cuales son datos necesarios para configurar el plugin en Homebridge.

npm i dorita980
cd /home/pi/node_modules/dorita980
npm run getpassword roomba_ip

Debes reemplazar «roomba_ip» por la dirección IP local de la Roomba. Cuando se ejecute este comando parecerá un montón de información que no nos interesa, hasta que aparezca el siguiente mensaje.

Make sure your robot is on the Home Base and powered on (green lights on). Then press and hold the HOME button on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light.
Then press any key here...

En este momento tenemos que interactuar con la Roomba, presionar «Clean» 1 vez para encenderla, y luego mantener presionado «Clean» por algunos segundos hasta escuchar un sonido. Una vez hecho esto, volvemos a la RasPi y presionamos cualquier tecla para que el proceso continúe.

Una vez presionada cualquier tecla (yo habitualmente uso la barra espacio), la RasPi nos entregará una información similar a la siguiente.

Robot Data:
{ ver: '3',
  hostname: 'Roomba-0123456789ABCDEF',
  robotname: 'Roomba',
  ip: '192.168.X.XXX',
  mac: 'XX:XX:XX:XX:XX:XX',
  sw: '3.5.59',
  sku: 'R671400',
  nc: 0,
  proto: 'mqtt',
  cap: { ota: 1, eco: 1, svcConf: 1 },
  blid: '0123456789ABCDEF' }
Password=> :1:1234567890:abc123ABC456defg <= Yes, all this string.
Use this credentials in dorita980 lib :)

Debemos rescatar el valor de la variable «blid» y el valor de la variable «password» contenido entre ambas flechas, incluyendo los «:» iniciales.

3. Instalando y configurando el plugin homebridge-roomba-stv

Ahora que ya tenemos toda la información necesaria, sólo nos resta instalar y configurar el plugin homebridge-roomba-stv.

Abrimos una ventana de navegador e ingresamos a la interfaz de usuario de nuestra instalación de Homebridge, cosa que ya hemos visto anteriormente. Seleccionamos «Plugins» en el menú superior, y en la caja de búsqueda escribimos «homebridge-roomba-stv». Pinchamos en la opción «Instalar» y esperamos a que se complete el proceso.

Una vez completado el proceso, Homebridge nos pedirá configurar el plugin.

  • En «Name» escribes el nombre que le darás a la Roomba.
  • En «Model» escribes el modelo de la Roomba.
  • En «blid» escribes el valor que rescataste para este parámetro en el paso 2.
  • En «Robot Password» escribes el valor que rescataste para este parámetro en el paso 2.
  • En «IP Address» escribes el valor de la IP que rescataste para este parámetro en el paso 1.

Cabe hacer notar que si disponemos de más de una Roomba es posible agregar a continuación como un segundo dispositivo pinchando en «Add Accesory Block». Una vez registrados todos los parámetros, pinchas en «Guardar» y reinicias Homebridge para que los cambios surtan efecto.

Si realizaste todo correctamente, el ingresar en la aplicación Home, debieras ver un nuevo accesorio llamado Roomba, al cual sólo falta asignas a alguna de las habitaciones de nuestra casa.

Por emontes, hace