283 lines
12 KiB
Markdown
283 lines
12 KiB
Markdown
# 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.
|
|
|
|
Desde Telegram, el bot consulta el ASUS mediante la clave de servicio de la Raspberry:
|
|
|
|
```text
|
|
/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 | TABLET INES |
|
|
| 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.
|
|
|
|
## Rutinas parentales por nombre
|
|
|
|
El diseño previsto permite guardar rutinas propias y activarlas o desactivarlas desde Telegram, sin borrar su definicion:
|
|
|
|
```text
|
|
/parental listar
|
|
/parental activar <rutina>
|
|
/parental desactivar <rutina>
|
|
/parental pausa <rutina> <minutos>
|
|
```
|
|
|
|
Dispositivos iniciales:
|
|
|
|
- `Caroline-tablet` — `192.168.50.213` — MAC `3A:99:2B:ED:D3:5E`.
|
|
- `TABLET INES` — `192.168.50.73` — MAC `04:34:F6:0C:8E:48`.
|
|
|
|
Las rutinas se definirán con nombre, dispositivos objetivo, días y franjas horarias. No se aplica ninguna hasta que el usuario indique la primera definición.
|
|
|
|
Los nombres de dispositivo serán tolerantes a mayúsculas, minúsculas, tildes y nombres sencillos:
|
|
|
|
```text
|
|
/parental activar Inés
|
|
/parental desactivar INES
|
|
/parental pausa Carolina 60
|
|
```
|
|
|
|
`Inés`, `INES`, `ines` y `tablet ines` identifican la misma tablet. `Carolina`, `CAROLINA` y `Caroline tablet` identifican la tablet de Carolina.
|
|
|
|
## 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.
|
|
|
|
## Historico de funcionalidades del router propuestas (05-sep-2026)
|
|
|
|
Catalogo de capacidades del RT-AX88U PRO consultado con el usuario, agrupado por area, para implementar desde Telegram cuando se pida. Ninguna de estas se ha implementado todavia salvo que se indique.
|
|
|
|
**Red y Wi-Fi**
|
|
- Apagar/encender cada banda Wi-Fi (2.4/5 GHz) por separado.
|
|
- Ajustar canales y potencia de senal para optimizar cobertura.
|
|
- Red de invitados: WiFi separado con ancho de banda limitado y sin acceso a la red local.
|
|
- Control de acceso por MAC para expulsar dispositivos de la red.
|
|
|
|
**Rendimiento (QoS)**
|
|
- Priorizacion de trafico por tipo: gaming, streaming, videollamadas.
|
|
- Limites de ancho de banda por dispositivo (evitar que la NAS sature la red).
|
|
- Red de invitados con limite de velocidad.
|
|
|
|
**Seguridad**
|
|
- VPN: activar WireGuard/OpenVPN para entrar desde fuera como si se estuviera en casa.
|
|
- Firewall: bloquear IPs o puertos.
|
|
- DDNS: nombre de dominio fijo para acceder desde fuera.
|
|
- AiProtection: analisis de malware y bloqueo de webs peligrosas.
|
|
- Bloqueo de anuncios en toda la red.
|
|
|
|
**Monitorizacion**
|
|
- Velocidad real de subida/bajada en tiempo real.
|
|
- Historial de dispositivos conectados y desconectados.
|
|
- Alertas cuando entra un dispositivo nuevo a la red.
|
|
|
|
**Automatizacion**
|
|
- Rutinas de horario parentales (cuando el usuario las defina).
|
|
- Apagar el Wi-Fi de un dispositivo en horario programado.
|
|
- Pausas programadas.
|
|
|
|
## Cliente torrent en el router (consulta 05-sep-2026)
|
|
|
|
El RT-AX88U PRO incluye **Download Master**, el cliente BitTorrent oficial del firmware ASUSWRT, que permite descargar torrents, NZB y aMule con la descarga alojada en el router (siempre encendido, ~10W).
|
|
|
|
Requisitos y limitaciones verificados en la documentacion oficial de ASUS:
|
|
|
|
- Es **imprescindible un disco USB** (pendrive o disco duro externo) conectado al puerto USB 3.0 del router. Sin disco USB, Download Master no se puede instalar.
|
|
- **No soporta una unidad en red (NAS) como destino.** La FAQ oficial y la comunidad coinciden en que Download Master solo se instala/descarga sobre el disco USB fisico. El truco de enlazar (symlink) a una NAS no es fiable y falla con torrents grandes.
|
|
- Formatos de disco soportados por este modelo: HFS+, NTFS, vFAT, ext2, ext3, ext4. Se recomienda ext4.
|
|
- Descarga con el ordenador apagado y se gestiona desde la web ASUSWRT o la utilidad Windows.
|
|
|
|
Conclusion / recomendacion: como el laboratorio ya tiene una NAS con Download Station nativa y el panel de descargas de Telegram ya implementado, **no merece la pena** montar torrents en el router. Download Master seria redundante, dependeria de un disco USB y es menos fiable que la NAS. Se descarta salvo que el usuario quiera descargar en el router sin depender de la NAS.
|
|
|
|
## 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.
|