8.0 KiB
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 /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:
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
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 -Ien 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 -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.
Desde Telegram, el bot consulta el ASUS mediante la clave de servicio de la Raspberry:
/router estado
/router clientes
/router wifi
/router inventario
/router reservar confirmar
/router reiniciar confirmar
El reinicio exige la palabra confirmar. Las consultas actuales no cambian la configuracion.
Capacidades del RT-AX88U PRO
El router puede centralizar muchas funciones para Telegram:
- Estado del firmware, uptime, IP LAN/WAN y radios Wi-Fi.
- Clientes conectados y tabla ARP.
- Estado de Internet y rutas.
- Control de radios 2.4 GHz y 5 GHz.
- Reservas DHCP y nombres de dispositivos.
- Reinicio protegido y lectura de logs.
- Estado AiMesh, si se añaden nodos.
- QoS, control parental y perfiles de acceso.
- VPN, DDNS, firewall y red de invitados.
Las acciones que cambian red, Wi-Fi, firewall o VPN deben tener confirmacion doble.
La reserva DHCP conserva la IP actual de cada lease y mantiene las reservas previas. Los dispositivos sin hostname quedan como pendiente-identificar hasta asignarles un nombre humano.
Inventario DHCP actual del ASUS
Reservas aplicadas para los 39 leases actuales y 3 reservas historicas conservadas. Los nombres marcados como pendiente-identificar son provisionales.
| IP | MAC | Nombre actual |
|---|---|---|
| 192.168.50.2 | 1C:FE:2B:BE:2C:D4 | pendiente-identificar |
| 192.168.50.6 | D8:47:32:6E:B8:62 | termo / Tapo_SmartPlug |
| 192.168.50.8 | BE:4E:C5:AF:E3:3F | pendiente-identificar |
| 192.168.50.12 | 4C:A9:19:4E:E8:4C | pendiente-identificar |
| 192.168.50.13 | 58:11:22:1B:0E:C0 | pendiente-identificar |
| 192.168.50.16 | 14:EA:63:1D:1B:25 | Tele |
| 192.168.50.31 | 00:11:32:3B:6F:4E | MINGUEZ / NAS |
| 192.168.50.54 | 48:43:DD:73:A2:FB | pendiente-identificar |
| 192.168.50.65 | 94:B8:6D:08:2A:7D | NAHID_PC |
| 192.168.50.67 | 62:A3:89:4A:EB:70 | iPhone |
| 192.168.50.68 | AC:15:A2:89:D7:8A | P110 |
| 192.168.50.69 | DC:98:40:F0:7B:56 | HERMES2111 |
| 192.168.50.73 | 04:34:F6:0C:8E:48 | pendiente-identificar |
| 192.168.50.76 | 58:11:22:22:AD:90 | pendiente-identificar |
| 192.168.50.77 | 24:DF:A7:E0:13:C7 | pendiente-identificar |
| 192.168.50.80 | B0:CF:CB:D0:FD:35 | AmazonAQM-009R |
| 192.168.50.101 | 48:E1:E9:88:AD:FF | pendiente-identificar |
| 192.168.50.102 | 44:87:63:9B:07:A2 | 203938483430501000520018 |
| 192.168.50.104 | FC:67:1F:38:24:CD | pendiente-identificar |
| 192.168.50.108 | D4:AD:FC:1D:01:31 | pendiente-identificar |
| 192.168.50.112 | D8:1F:12:1C:FF:29 | wlan0 |
| 192.168.50.122 | 70:C9:32:1F:E5:65 | dreame_vacuum_r2205 |
| 192.168.50.127 | 10:5A:17:20:84:4F | pendiente-identificar |
| 192.168.50.137 | 74:D6:37:D8:F2:64 | amazon-a816315ca |
| 192.168.50.143 | A8:8C:3E:7C:F3:C7 | XBOX |
| 192.168.50.173 | 24:4C:E3:DF:6D:F4 | pendiente-identificar |
| 192.168.50.187 | B8:27:EB:80:C6:0E | minipc / Raspberry |
| 192.168.50.189 | D8:D6:68:BD:84:BD | lwip0 |
| 192.168.50.191 | E0:EF:BF:AA:CD:1E | pendiente-identificar |
| 192.168.50.192 | 40:A2:DB:40:C0:6E | pendiente-identificar |
| 192.168.50.203 | 70:B1:3D:A6:D2:40 | Samsung |
| 192.168.50.207 | 88:1E:5A:37:E5:52 | JUANJER |
| 192.168.50.211 | 84:E3:42:50:1F:1E | pendiente-identificar |
| 192.168.50.213 | 3A:99:2B:ED:D3:5E | Caroline-tablet |
| 192.168.50.224 | D8:47:32:44:8A:79 | Tapo pendiente-identificar |
| 192.168.50.226 | 5A:BE:9F:4A:20:DD | iPad |
| 192.168.50.241 | CE:2A:16:A6:44:7D | Watch |
| 192.168.50.247 | 70:EE:50:86:FB:FE | pendiente-identificar |
| 192.168.50.248 | EC:5C:68:32:57:B0 | MiWiFi-R4A-srv0 |
Siguiente prioridad
Control parental por dispositivo o grupo: horarios, bloqueo temporal, perfiles, pausas desde Telegram y registro de cambios. Se implementara despues de terminar la normalizacion de nombres del inventario.
La lectura avanzada de control parental usa asusrouter y requiere ASUS_USERNAME y ASUS_PASSWORD solo en el .env local de la Raspberry. No se guardan en el repositorio.
Despliegue
La Pi no tiene Git operativo para este flujo. El despliegue se hace por el VPS y el tunel inverso:
- Copiar el fichero al VPS.
- Copiarlo por SSH a
pi@127.0.0.1:2222. - Validar con
python3 -m py_compilesi es Python. - Reiniciar el servicio correspondiente.
- Verificar
systemctl is-activey 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-tunelpor 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
/flotapreparado 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:
/termo on
/termo off
/termo estado
La Raspberry necesita estas variables en /home/pi/minipc/vigilancia/.env, introducidas localmente y sin publicarlas:
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.