Saltar a contenido

Servicios opcionales#

Empowerment Center funciona sin estos servicios, pero cada uno añade algo: el navegador sin interfaz, los documentos en PDF y la imagen en el correo; el motor de rutas, las isócronas por carretera; el mapa base, el fondo de los mapas; y el puerto de gestión, las métricas para Prometheus. Esta página explica cómo se activa cada uno.

El navegador sin interfaz#

Un Chromium en un contenedor aparte que abre los documentos como lo haría un usuario y los dibuja. Con él:

  • las suscripciones y las alertas de datos pueden enviar en PDF los gráficos, los mapas y las páginas de las plantillas del portal;
  • el correo puede llevar la imagen del documento en el cuerpo;
  • los usuarios pueden exportar a PDF una página del portal.

Sin él, esos formatos no se ofrecen y lo demás funciona igual. El PDF y las demás exportaciones del cubo no lo necesitan.

Activarlo con Docker Compose#

  1. En deploy/.env, añada:

    COMPOSE_PROFILES=render
    ECENTER_RENDER_ENABLED=true
    
  2. Arranque de nuevo: docker compose -f deploy/compose.yaml up -d.

El perfil arranca el servicio chromium con la versión que se prueba con ECenter y 1 GB de memoria compartida. compose.yaml ya dice al backend dónde está (http://chromium:9222) y por dónde llega Chromium al frontal: por su dirección interna, http://frontend:8080, que sirve lo mismo que la pública sin salir de la red.

Lo que hay que saber#

  • DevTools no se publica nunca. El puerto 9222 solo lo ve el backend: quien llega a él puede abrir cualquier página con ese navegador y leer lo que dibuja.
  • Uno por instancia del backend. Cada instancia dibuja como mucho 2 documentos a la vez (ecenter.render.max-concurrent, cada uno en una pestaña) y espera 30 s a que haya hueco. Uno compartido tiene que aguantar la suma.
  • La memoria compartida. Chromium dibuja en /dev/shm: con los 64 MB que da Docker por defecto, las páginas grandes fallan. compose.yaml le da 1 GB; en Kubernetes, monte un volumen en memoria en /dev/shm.
  • La hora. Las fechas de los PDF salen en la zona del backend: TZ tiene que ser la de la instalación.
  • El mapa base. Lo pide el propio Chromium. Si su red no llega al proveedor, el mapa sale sin fondo o el dibujo agota su tiempo (60 s). Sin salida a internet, use un mapa base autoalojado que vean a la vez los usuarios y el contenedor.
  • Sin licencia válida no se dibuja nada.

Comprobarlo#

Con el navegador activado, la consola de operación abre la alerta El navegador sin interfaz no responde si no responde en 10 s mientras haya suscripciones o alertas de datos que lo pueden necesitar. Para probarlo de punta a punta, cree una suscripción a un gráfico en PDF, con la imagen en el cuerpo, y use Enviarme una prueba.

Todas las propiedades: Servicios: render, mapas, API y MCP.

El motor de rutas#

Sin motor de rutas, los mapas solo calculan isócronas de distancia radial (círculos) y no hay matriz de tiempos y distancias («No hay motor de rutas configurado»). Con él, las isócronas por tiempo y por distancia van por carretera, y la matriz dice cuánto se tarda y cuánto se recorre hasta cada entidad de una capa.

ECenter admite dos motores:

Motor Dónde Cuándo conviene
Valhalla Autoalojado, en deploy/compose.yaml El recomendado: las coordenadas no salen de la red.
OpenRouteService Su servicio en la nube, con clave, o autoalojado Para probar, o si ya lo tiene. Su plan gratuito da 500 isócronas y 500 matrices al día, y las coordenadas salen a su servicio.

Valhalla con Docker Compose#

  1. En deploy/.env, añada:

    COMPOSE_PROFILES=routing
    ECENTER_MAPS_ROUTING_PROVIDER=valhalla
    

    Con el navegador sin interfaz también: COMPOSE_PROFILES=render,routing.

  2. Arranque de nuevo: docker compose -f deploy/compose.yaml up -d.

La primera vez Valhalla descarga de Geofabrik los extractos de OpenStreetMap de ECENTER_ROUTING_TILE_URLS (por defecto, España con Baleares, Ceuta y Melilla, y Canarias: 1,5 GB) y construye su grafo en el volumen routing-data. Mientras tanto, las isócronas por carretera fallan con su error y lo demás funciona. Después arranca en segundos.

España y Canarias Comunidad de Madrid
Construir el grafo, con la descarga 24 min 1,5 min
Memoria al construirlo (2 hilos) 4,6 GB 0,7 GB
Memoria en marcha 250 MB 250 MB
Disco 5,8 GB 0,5 GB

Cifras medidas con 2 CPU y 7,8 GB de memoria para Docker.

Variable Por defecto Qué es
ECENTER_ROUTING_TILE_URLS España y Canarias de Geofabrik Los extractos, separados por espacios.
ECENTER_ROUTING_THREADS 2 Hilos para construir el grafo: con más tarda menos y gasta más memoria.
ECENTER_ROUTING_MEMORY 6g El límite de memoria del contenedor. Tiene que cubrir la construcción.

Para otra zona, o para poner al día las carreteras (Geofabrik publica a diario), borre el volumen y vuelva a arrancar:

docker compose -f deploy/compose.yaml stop valhalla
docker compose -f deploy/compose.yaml rm -f valhalla
docker volume rm ecenter_routing-data
docker compose -f deploy/compose.yaml up -d valhalla

Valhalla no calcula rutas de más de 400 km en una matriz ni isócronas de más de 120 minutos: la isócrona lo dice con su error. Una matriz manda como mucho 500 destinos por petición (ecenter.maps.routing.max-matrix-targets); el límite de pares de Valhalla (max_matrix_location_pairs, 2 500 por defecto en la 3.9) no debe ser menor.

OpenRouteService#

En deploy/.env:

ECENTER_MAPS_ROUTING_PROVIDER=openrouteservice
ECENTER_MAPS_ROUTING_URL=https://api.openrouteservice.org
ECENTER_MAPS_ROUTING_APIKEY=su-clave

El mapa base#

El fondo de los mapas lo da un proveedor de estilos de MapLibre o de teselas ráster (MapTiler, Protomaps u OpenStreetMap autoalojados…). El navegador de cada usuario lo pide directamente. Se configura en un application.yml propio:

ecenter:
  maps:
    base-map:
      style: https://mapas.example.org/estilos/claro.json
      style-dark: https://mapas.example.org/estilos/oscuro.json

Y en deploy/.env, su origen para la política de contenido del frontal:

ECENTER_CSP_MAP_ORIGINS=https://mapas.example.org

Las demás opciones (teselas ráster, atribución, zoom máximo) están en Servicios: render, mapas, API y MCP. Las teselas públicas de OpenStreetMap solo valen para pruebas, por su política de uso.

Métricas para Prometheus#

Las métricas de ECenter y de la JVM se publican para Prometheus en un puerto de gestión aparte, apagado por defecto y pensado solo para la red interna.

  1. En deploy/.env, ponga el puerto: ECENTER_MANAGEMENT_PORT=9090.
  2. Vuelva a crear el backend.
  3. Configure Prometheus para que lo recoja por la red interna, no por el frontal:

    scrape_configs:
      - job_name: ecenter
        metrics_path: /actuator/prometheus
        static_configs:
          - targets: ['backend:9090']
    

    backend:9090 vale si Prometheus está en la misma red de Docker que ECenter; si no, ponga la dirección interna del equipo del backend y publique el puerto solo en ella.

Con el puerto de gestión activado:

  • /actuator/prometheus, /actuator/health (con sus sondas) y /actuator/info responden en ese puerto sin sesión. Lo demás de /actuator se deniega.
  • El puerto de la aplicación deja de servir /actuator: las sondas del orquestador se apuntan al de gestión.
  • No publique ese puerto fuera de la red de ECenter.

Sin él, /actuator/prometheus no responde a nadie. Qué métricas hay y qué significan está en Operación.

Otros servicios#

Servicio Dónde se explica
Inicio de sesión único con OIDC o SAML, y SCIM Seguridad
El servidor MCP para asistentes de IA (apagado por defecto: ECENTER_MCP_ENABLED) Integraciones
La incrustación en otras aplicaciones Integraciones

Véase también#