Saltar a contenido

Sistema de Comunicaciones

Visión global del subsistema de comunicaciones de SmallCountry: VPN, mensajería, videollamadas y notificaciones que conectan los nodos entre sí y a las personas con el sistema.


Descripción general

Las comunicaciones en SmallCountry cubren tres dominios:

  1. Máquina a máquina: los cuatro nodos deben hablarse entre sí de forma segura, incluso a través de internet o redes móviles.
  2. Persona a persona: mensajería cifrada y videollamadas sin límite de tiempo, sin ceder metadatos a terceros.
  3. Sistema a persona: el sistema notifica a las personas cuando algo requiere atención.

Todo ello opera con doble canal redundante por diseño (ADR-005) y es compatible con modo isla (ADR-022).


Topología de comunicaciones

flowchart LR
    subgraph Nodos["🖥️ Nodos físicos"]
        Ra["Ra<br/>10.10.1.1"]
        Horus["Horus<br/>10.10.1.2"]
        Geb["Geb<br/>10.10.2.1"]
        Thoth["Thoth<br/>10.10.9.1"]
    end

    subgraph VPN["🔐 Túneles VPN"]
        WG["WireGuard<br/>malla mesh<br/>túneles punto a punto"]
        NB["NetBird<br/>overlay mesh<br/>NAT traversal"]
    end

    subgraph Mensajeria["💬 Mensajería"]
        Matrix["Matrix Synapse<br/>chat federado<br/>cifrado E2E"]
        Jitsi["Jitsi<br/>videollamadas<br/>sin límite"]
    end

    subgraph Notificaciones["🔔 Notificaciones"]
        ntfy["ntfy<br/>push al móvil<br/>tópicos por prioridad"]
        BotMatrix["Bot Matrix<br/>alertas en sala<br/>#alertas"]
    end

    subgraph Personas["👥 Personas"]
        Hogar["Vesta · Hogar"]
        Campo["Melissa · Campo"]
        Admin["Jano · Admin"]
    end

    Nodos -->|"túneles cifrados"| VPN
    VPN -->|"red plana .sc"| Mensajeria
    Mensajeria --> Personas
    Notificaciones --> Personas
    Nodos -.->|"ntfy push"| Notificaciones

    style Nodos fill:#c8e6c9,stroke:#2e7d32,color:#000
    style VPN fill:#90caf9,stroke:#1565c0,color:#000
    style Mensajeria fill:#f9a8d4,stroke:#c2185b,color:#000
    style Notificaciones fill:#ffe082,stroke:#f57f17,color:#000
    style Personas fill:#ffcc80,stroke:#f57f17,color:#000

VPN — WireGuard + NetBird

SmallCountry usa dos tecnologías de VPN en paralelo para garantizar conectividad redundante:

Tecnología Rol Puertos Cifrado Ficha
WireGuard Túnel primario. Conexiones punto a punto con claves precompartidas 51820 UDP ChaCha20 Ficha
NetBird Malla secundaria. Overlay mesh con NAT traversal automático 443 TCP fallback WireGuard Ficha

Matriz de conectividad

Origen ↓ Destino → Ra Horus Geb Thoth
Ra WG (primario) + NB WG (primario) + NB NB
Horus WG (primario) + NB WG NB
Geb WG (primario) + NB WG
Thoth NB NB

Geb se conecta a través de un router 4G en la finca. Thoth está en una ubicación externa con IP dinámica detrás de CGNAT (traducción de direcciones de red a nivel de operadora); por eso solo usa NetBird, que hace NAT traversal automático sin necesidad de abrir puertos.


Mensajería — Matrix

Matrix es el protocolo de mensajería federado de SmallCountry (ADR-021). El servidor Matrix Synapse corre en un LXC de Ra y sirve a todos los usuarios del ecosistema.

Característica Implementación
Servidor Matrix Synapse en LXC matrix.sc
Cliente web Element Web en chat.sc
Cliente móvil Element X (Android/iOS) con cifrado E2E
Federación Desactivada por defecto (instancia privada)
Cifrado E2E por sala. Megolm + Olm
Salas principales #general, #campo, #alertas, #admin, #familia
Autenticación OIDC (protocolo de autenticación OpenID Connect) contra Authentik (ADR-014)

Videollamadas — Jitsi

Jitsi proporciona videoconferencia autoalojada sin límite de tiempo ni participantes:

Característica Implementación
Servidor Jitsi Meet en LXC jitsi.sc
Acceso https://reunion.sc
Cifrado E2E para salas de 2 personas. Cifrado en tránsito para grupos
Límites Sin límite de tiempo. Hasta 20 participantes con recursos actuales
Modo isla Funciona sin internet (todos los participantes en la red local o VPN)
Grabación Desactivada por defecto. Bajo demanda con Jibri

Notificaciones — ntfy + Bot Matrix

El sistema notifica a las personas por dos canales independientes y redundantes:

Canal Tecnología Uso Ficha
ntfy Push nativo al móvil (Android/iOS) Alertas urgentes. Llega aunque el móvil esté en silencio Ficha
Bot Matrix Mensaje en sala #alertas de Matrix Alertas informativas. Historial consultable en la sala Ficha

Tópicos ntfy

Tópico Prioridad Suscriptores Gatillos
sc-emergencia Máxima (override DND) Terminus, Jano Bomba sótano, incendio, batería <10%
sc-infra Alta Argos, Hefesto, Terminus Servicio Tier A caído, disco >90%, backup fallido
sc-campo Normal Deméter, Melissa, Fauno Alerta de colmena, temperatura gallinero, electrovalla
sc-ia Baja Jano, Hermes Modelo actualizado, GPU saturada, Whisper caído
sc-info Mínima Todos Despliegues exitosos, actualizaciones, estado semanal

Compatibilidad con modo isla

Componente Sin internet Sin VPN entre nodos Solo local (sin Geb ni Thoth)
Matrix ✅ Funciona en red local ✅ (Ra es suficiente)
Jitsi ✅ Funciona en red local ✅ (Ra es suficiente)
ntfy ✅ Servidor local ✅ (Ra es suficiente)
Bot Matrix ✅ Publica en Matrix local
WireGuard ✅ Túneles locales ❌ Sin VPN ❌ Solo local
NetBird ⚠️ Sin NAT traversal externo ❌ Sin VPN ❌ Solo local
Caddy ✅ Certificados internos
Pi-hole ✅ DNS local

En modo isla puro (solo Ra encendido, sin internet), todas las comunicaciones entre personas funcionan. Las comunicaciones entre nodos remotos (Geb, Thoth) quedan en pausa hasta que se restablezca la conectividad.


Para el arquitecto

Configuración WireGuard

# Ra → Horus
[Peer]
PublicKey = <clave_horus>
AllowedIPs = 10.10.1.2/32, 10.10.40.0/24
Endpoint = horus.sc:51820

Topología NetBird

  • Management server en Ra (LXC netbird.sc)
  • Agentes en Ra, Horus, Thoth y dispositivos móviles
  • Geb no ejecuta NetBird (ARM sin soporte oficial)

Salas Matrix preconfiguradas

Sala Miembros Propósito
#general Todos Conversación general de la comunidad
#campo Deméter, Melissa, Fauno, Gea, Silvano Coordinación de tareas de campo
#alertas Todos + Bot Matrix Canal de solo lectura de alertas del sistema
#admin Jano, Argos, Hefesto, Hermes, Égida, Mnemósine, Terminus Coordinación técnica
#familia Vesta, Orfeo, Minerva Conversación familiar

Fichas relacionadas