# Raspberry Pi del laboratorio ## Objetivo Centralizar la configuracion, el acceso y el mantenimiento de una flota de Raspberry Pi. La primera unidad es `minipc`; el mismo procedimiento debe servir para las cinco unidades previstas. ## Inventario actual | Campo | Valor | |---|---| | Hostname | `minipc` | | Sistema | Raspbian GNU/Linux 13 (trixie) | | Ethernet | `192.168.50.187` | | Wi-Fi | `192.168.50.251` | | Usuario operativo | `pi` | | Codigo | `/home/pi/minipc/` | | Servicio bot | `pi-bot.service` | | Servicio tunel | `autossh-tunel.service` | | Zona horaria | `Europe/Madrid` | | Teclado | Espanol (`es`) | No se documentan contrasenas, tokens ni claves privadas en este fichero. ## Comando unico de diagnostico En la Raspberry: ```bash bash /home/pi/minipc/vigilancia/raspberry_info.sh ``` El comando muestra identidad, red, teclado, locale, hora, servicios y recursos sin revelar secretos. Desde el PC, pasando por el VPS: ```powershell ssh -i C:\Users\juanm\Documents\GitHub\contabo root@185.187.169.109 "ssh -i /root/.ssh/pi_deploy -p 2222 pi@127.0.0.1 'bash /home/pi/minipc/vigilancia/raspberry_info.sh'" ``` ## Configuracion aplicada en minipc ```bash sudo raspi-config nonint do_configure_keyboard es sudo localectl set-x11-keymap es pc105 sudo locale-gen es_ES.UTF-8 sudo localectl set-locale LANG=es_ES.UTF-8 sudo timedatectl set-timezone Europe/Madrid sudo timedatectl set-ntp true ``` El cambio de idioma puede requerir cerrar la sesion y volver a entrar. El teclado de consola queda definido en `/etc/default/keyboard` con `XKBLAYOUT="es"`. ## Conectividad - Ethernet es la ruta preferida y usa la IP `192.168.50.187`. - Wi-Fi queda disponible como respaldo en `192.168.50.251`. - El tunel inverso publica SSH de la Pi en el VPS como `127.0.0.1:2222`. - El acceso remoto usa la clave privada del VPS configurada para el tunel; nunca se copia ni documenta aqui. - Si la IP cambia, consultar `hostname -I` en la Pi y actualizar el inventario. ## Acceso al ASUS RT-AX88U PRO El ASUS esta detras del router principal de Digi. Para abrir su SSH desde el PC: ```powershell powershell -ExecutionPolicy Bypass -File scripts/router-ssh-tunnel.ps1 ssh -p 2222 usuario_del_router@127.0.0.1 ``` El script mantiene el salto PC -> VPS -> Raspberry -> ASUS sin exponer el router a Internet. ## Despliegue La Pi no tiene Git operativo para este flujo. El despliegue se hace por el VPS y el tunel inverso: 1. Copiar el fichero al VPS. 2. Copiarlo por SSH a `pi@127.0.0.1:2222`. 3. Validar con `python3 -m py_compile` si es Python. 4. Reiniciar el servicio correspondiente. 5. Verificar `systemctl is-active` y los logs. ## Escalado a cinco Raspberry Cada unidad debe tener un registro con hostname, MAC, IP Ethernet, IP Wi-Fi, servicios, funcion y ubicacion. Se recomienda: - Reservas DHCP por MAC para evitar cambios de IP. - Ethernet como red principal. - Un hostname unico por unidad: `minipc-01`, `minipc-02`, etc. - Un servicio `autossh-tunel` por unidad con un puerto de tunel distinto. - Una clave SSH de despliegue independiente por unidad. - Un script de diagnostico identico en todas las unidades. ## Hoja de ruta pendiente Estas mejoras quedan apuntadas para la Raspberry actual, sin implementarlas ahora: - Panel Telegram de descargas y NAS con progreso, velocidad y espacio libre. - Pausar, reanudar y cancelar tareas de Download Station desde Telegram. - Aviso cuando termina o falla una descarga. - Estado de la NAS y sus discos. - Estado del VPS: CPU, RAM, disco, Docker y servicios. - Alertas de temperatura, disco lleno, perdida de red y servicios caidos. - Backups de configuracion y datos. - Despliegue y actualizacion remota del codigo. - Capturas de camaras y control de dispositivos conectados. - Comando `/flota` preparado para cuando existan varias Raspberry. ## Primer dispositivo Tapo El dispositivo `termo` es un Tapo Smart Wi-Fi Plug P100. El bot dispone de estos comandos directos: ```text /termo on /termo off /termo estado ``` La Raspberry necesita estas variables en `/home/pi/minipc/vigilancia/.env`, introducidas localmente y sin publicarlas: ```text TAPO_USERNAME=cuenta-de-tapo TAPO_PASSWORD=contrasena-de-tapo TAPO_TERMO_IP=192.168.50.6 ``` El control usa `python-kasa` directamente desde la Raspberry y no depende de Alexa.