Saltar a contenido

07 soberania operativa

Principio

SmallCountry no depende de ningún servicio externo para su funcionamiento cotidiano.
Cualquier información obtenida de fuentes de internet —datos climáticos, imágenes satelitales, literatura científica, precios de la electricidad— se captura, valida y almacena localmente mediante intermediarios como n8n y Node-RED antes de ser consumida por los servicios internos.

La despensa local incluye un espejo completo de paquetes (APT, PyPI) y un registro OCI de imágenes Docker en Forgejo, lo que garantiza que la instalación y actualización de software no requiera acceso a internet.
La falta de conectividad exterior no interrumpe la actividad diaria de la casa en Chapinería ni de la finca en Garganta la Olla. Internet es una fuente de aprovisionamiento voluntario, nunca un requisito indispensable para la operación del sistema.

Cómo se garantiza la independencia operativa

Patrón Fachada para APIs externas

Ningún servicio interno de SmallCountry consume directamente una API (interfaz de programación) externa. Toda la información sigue este flujo:

  1. Captura programada: n8n o Node-RED ejecutan consultas a las APIs externas según una programación definida (cada hora, cada día, cada semana, según el tipo de dato).
  2. Validación: antes de almacenar el dato, el intermediario verifica que cumple con el esquema esperado (formato, rango de valores, campos obligatorios). Si la validación falla, se descarta y se notifica.
  3. Almacenamiento local: el dato validado se guarda en la base de datos o sistema de archivos local (PostGIS, Qdrant, ficheros CSV, SQLite).
  4. Consumo interno: los servicios como farmOS, Grafana o la IA de Ollama solo ven datos que ya están en la despensa local. No saben de dónde vienen ni cuándo se actualizaron.

Despensa local (Tier A obligatorio)

Recurso Herramienta Función
Paquetes Debian / Proxmox Apt‑Cacher‑NG Proxy caché transparente. Si internet falla, los paquetes ya descargados se siguen sirviendo a velocidad de red local.
Imágenes Docker **Registro OCI pull‑through en Forgejo Descarga, almacena en ZFS (sistema de archivos con integridad de datos) y sirve las imágenes localmente. Los nodos de producción nunca acceden a Docker Hub.
Paquetes Python Espejo PyPI local Cachea las dependencias de Ansible, code-server y otras herramientas.
Datos climáticos n8n + SQLite / Victoria Metrics Consulta programada a Open‑Meteo y AEMET. Si la API (interfaz de programación) falla, se utiliza el último valor válido.
Datos de biodiversidad n8n + PostGIS Descarga semanal de GBIF (red mundial de datos de biodiversidad), iNaturalist y eBird. Se almacenan en tablas espaciales y se sirven vía QGIS Server.
Literatura científica n8n + Qdrant Indexación de artículos y guías en el motor RAG (generación aumentada con documentos (IA)) para consulta offline por parte de la IA.
Precios de electricidad (PVPC) Node-RED + Victoria Metrics Consulta horaria a la API de ESIOS. Cache local para n8n y Home Assistant.
Documentación y playbooks Forgejo + MkDocs Toda la documentación del sistema se versiona y se sirve localmente en docs.sc.

Ejemplos concretos de operación offline

  • Si la API de Open‑Meteo no responde, n8n emplea la última previsión almacenada. El riego de la finca se ajusta con el dato en caché.
  • Si internet está caído, Apt‑Cacher‑NG sigue entregando los paquetes que ya fueron descargados alguna vez. Se puede instalar un nuevo paquete en un LXC (contenedor ligero de Proxmox) aunque el exterior no esté accesible.
  • Si el registro OCI de Forgejo ya cacheó la imagen de Nextcloud, se puede recrear el LXC (contenedor ligero de Proxmox) de Nextcloud completamente offline.
  • La IA de Ollama consulta Qdrant con datos locales. No necesita acceso a Wikipedia ni a APIs externas para responder preguntas sobre la finca o la infraestructura.

Dashboard de salud de la despensa

En Grafana se monitoriza el estado de cada fuente externa:

  • Última actualización exitosa.
  • Tiempo transcurrido desde el último dato fresco.
  • Errores de scraping o validación en los últimos 7 días.
  • Espacio en disco ocupado por la despensa.

Si una fuente supera su SLA de frescura (por ejemplo, más de 6 horas sin actualizar los datos climáticos), se genera una alerta en ntfy.

Stack necesario

  • n8n – Orquestación de ingestiones programadas desde APIs externas.
  • Node-RED – Captura de datos en tiempo real (precios de electricidad, telemetría).
  • Apt‑Cacher‑NG – Proxy caché de paquetes Debian/Proxmox.
  • **Registro OCI pull‑through en Forgejo – Espejo local de imágenes Docker.
  • Espejo PyPI local – Caché de paquetes Python.
  • PostGIS + QGIS Server – Almacenamiento y servicio de datos geoespaciales.
  • Qdrant – Base vectorial para RAG offline.
  • Victoria Metrics + Grafana – Panel de salud de la despensa.
  • Pi-hole – DNS (servidor de nombres de dominio) local para resolver nombres internos sin depender de servidores externos.
  • Forgejo + MkDocs** – Documentación versionada y servida localmente.

Relaciones con otros principios

Diagrama de soberanía operativa

graph TD
    subgraph Exterior [Fuentes externas - Internet]
        direction TB
        API1[APIs climáticas]
        API2[APIs biodiversidad]
        API3[APIs electricidad]
        API4[Repositorios APT/PyPI/Docker]
    end

    subgraph Intermediarios [Intermediarios - Captura y validación]
        direction TB
        n8n[n8n]
        NR[Node-RED]
        AptCache[Apt-Cacher-NG]
        Registry[Registro OCI Forgejo]
    end

    subgraph Despensa [Despensa local - Almacenamiento]
        direction TB
        PostGIS[PostGIS]
        Qdrant[Qdrant]
        VicMet[Victoria Metrics]
        ZFS[ZFS / ficheros]
    end

    subgraph Servicios [Servicios internos - Consumo]
        direction TB
        Farm[farmOS]
        Grafana[Grafana]
        IA[Ollama]
        Next[Nextcloud]
    end

    API1 --> n8n
    API2 --> n8n
    API3 --> NR
    API4 --> AptCache
    API4 --> Registry

    n8n --> PostGIS
    n8n --> Qdrant
    n8n --> VicMet
    NR --> VicMet
    AptCache --> ZFS
    Registry --> ZFS

    PostGIS --> Farm
    PostGIS --> Grafana
    VicMet --> Grafana
    Qdrant --> IA
    ZFS --> Next

    Exterior -.-|Internet no es necesaria para operar| Servicios

    style Exterior fill:#e1bee7,stroke:#8e24aa,color:#000
    style Intermediarios fill:#90caf9,stroke:#1565c0,color:#000
    style Despensa fill:#a5d6a7,stroke:#2e7d32,color:#000
    style Servicios fill:#ffe082,stroke:#f57f17,color:#000

Principio 6: Arquitectura por capas   |   Principio 8: Observabilidad integral


Secciones relacionadas