Skip to content

Configuración del agente

El agente se configura exclusivamente mediante variables de entorno. No necesitas ficheros de configuración adicionales: las rutas y los parámetros del túnel los obtiene automáticamente del panel de Nubulus.

VariableObligatoriaPor defectoDescripción
TUNNEL_TOKENToken de autenticación del túnel. Lo obtienes en el panel de Nubulus.
LOG_LEVELNoinfoNivel de log: debug, info, warn, error.
POLL_INTERVALNo30Segundos entre comprobaciones de cambios en las rutas.
HEALTH_CHECK_INTERVALNo60Segundos entre comprobaciones del estado del túnel.
API_URLNoURL de producciónSolo para entornos de prueba o instalaciones on-premise.

El setup más simple posible:

services:
nubulus-tunnel:
image: ghcr.io/nubulusnetwork/tunnel-agent:latest
container_name: nubulus-tunnel
environment:
TUNNEL_TOKEN: "tun_xxxxxxxxxxxxxxxxxxxxxxxxx"
restart: unless-stopped
networks:
- tunnel-network
networks:
tunnel-network:
driver: bridge

Nginx sirviendo contenido estático en el mismo compose:

services:
web:
image: nginx:alpine
networks:
- tunnel-network
nubulus-tunnel:
image: ghcr.io/nubulusnetwork/tunnel-agent:latest
container_name: nubulus-tunnel
environment:
TUNNEL_TOKEN: "tun_xxxxxxxxxxxxxxxxxxxxxxxxx"
restart: unless-stopped
networks:
- tunnel-network
depends_on:
- web
networks:
tunnel-network:
driver: bridge

Ruta a configurar en el panel:

TipoHostnamePathUpstream hostUpstream port
hostmi-dominio.com/web80

services:
frontend:
image: mi-frontend:latest
networks:
- tunnel-network
api:
image: mi-api:latest
networks:
- tunnel-network
nubulus-tunnel:
image: ghcr.io/nubulusnetwork/tunnel-agent:latest
container_name: nubulus-tunnel
environment:
TUNNEL_TOKEN: "tun_xxxxxxxxxxxxxxxxxxxxxxxxx"
restart: unless-stopped
networks:
- tunnel-network
depends_on:
- frontend
- api
networks:
tunnel-network:
driver: bridge

Rutas a configurar en el panel:

TipoHostnamePathUpstream hostUpstream portStrip prefix
pathmi-dominio.com/apiapi3000
hostmi-dominio.com/frontend80No

Si tu servicio ya corre en otra red de Docker Compose, conéctala al túnel:

services:
nubulus-tunnel:
image: ghcr.io/nubulusnetwork/tunnel-agent:latest
container_name: nubulus-tunnel
environment:
TUNNEL_TOKEN: "tun_xxxxxxxxxxxxxxxxxxxxxxxxx"
restart: unless-stopped
networks:
- tunnel-network
- mi-red-existente # red donde ya corre tu servicio
networks:
tunnel-network:
driver: bridge
mi-red-existente:
external: true

Ruta en el panel apuntando al nombre del contenedor de tu servicio existente.


Útil para diagnosticar problemas de conexión o de routing:

services:
nubulus-tunnel:
image: ghcr.io/nubulusnetwork/tunnel-agent:latest
container_name: nubulus-tunnel
environment:
TUNNEL_TOKEN: "tun_xxxxxxxxxxxxxxxxxxxxxxxxx"
LOG_LEVEL: "debug"
restart: unless-stopped
networks:
- tunnel-network
networks:
tunnel-network:
driver: bridge

El token es secreto. No lo subas a un repositorio público. Usa un fichero .env o los secretos de tu plataforma de despliegue:

.env
TUNNEL_TOKEN=tun_xxxxxxxxxxxxxxxxxxxxxxxxx
docker-compose.yml
environment:
TUNNEL_TOKEN: "${TUNNEL_TOKEN}"

El agente no necesita privilegios. No añadas privileged: true ni cap_add. Funcionará sin ellos.

El servicio y el agente deben compartir red Docker. Es la única forma de que el agente pueda alcanzar tu servicio por nombre de contenedor.