Files
biblioteca_conocimiento_lab…/docs/raspberry_pi.md
2026-09-05 18:22:56 +02:00

154 lines
5.0 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 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.
## 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.