Pangolin Docker Compose: Proxy Inverso con Túneles VPN 2026

Pangolin Docker Compose proxy inverso con túneles VPN

¿Quieres exponer tus servicios auto-hospedados a Internet pero estás detrás de CGNAT o no puedes abrir puertos en tu router? Pangolin Docker Compose es la solución definitiva: un proxy inverso con túneles VPN que te permite acceder a tus aplicaciones desde cualquier lugar sin necesidad de IP pública. En esta guía completa aprenderás a desplegarlo en minutos y configurar acceso remoto seguro con autenticación integrada.

¿Qué es Pangolin Docker Compose?

Pangolin es una plataforma open-source que combina las capacidades de un proxy inverso y una VPN en un solo sistema. Construido sobre WireGuard, ofrece conectividad segura a recursos privados y públicos siguiendo principios de seguridad Zero-Trust.

A diferencia de soluciones comerciales como Tailscale o Cloudflare Tunnels, esta herramienta te da control total sobre tu infraestructura mientras disfrutas de funcionalidades profesionales como certificados SSL automáticos, balanceo de carga y autenticación centralizada.

La principal ventaja es que no necesitas IP pública ni abrir puertos en tu firewall. El servicio establece túneles seguros desde tus redes remotas hacia un servidor VPS, haciendo cualquier red accesible para usuarios autorizados.

Características Principales de Pangolin

El proyecto incluye componentes especializados que trabajan juntos para proporcionar acceso remoto completo:

  • Site Connectors: Conectores ligeros que establecen túneles seguros sin requerir IP pública
  • Acceso basado en navegador: Expone aplicaciones web mediante proxies inversos conscientes de identidad y contexto
  • Acceso a recursos con cliente: Conecta a servidores SSH, bases de datos, RDP y rangos de red completos
  • Zero-Trust integrado: Otorga acceso solo a recursos específicos, no a redes enteras
  • Certificados SSL automáticos: Integración con Let’s Encrypt vía Traefik
  • NAT traversal inteligente: Atraviesa firewalls restrictivos sin configuración manual

La arquitectura incluye tres servicios Docker principales: Pangolin (aplicación central), Gerbil (software de túnel) y Traefik (gestión de proxy inverso y SSL).

Requisitos Previos para Instalar Pangolin Docker Compose

Antes de comenzar el despliegue, asegúrate de tener:

  • Un servidor Linux con Docker y Docker Compose instalados
  • Acceso root al servidor
  • Un dominio configurado con DNS apuntando a tu servidor
  • Dirección de email válida para certificados Let’s Encrypt
  • Puertos 80, 443, 51820/UDP y 21820/UDP disponibles

Recomendamos un VPS con al menos 1GB RAM y Ubuntu 22.04 LTS o Debian 12. Proveedores como DigitalOcean, Hetzner o Vultr funcionan perfectamente.

Archivo docker-compose.yml para Pangolin

Crea la estructura de directorios necesaria en tu servidor:

mkdir -p pangolin/config/{traefik,db,letsencrypt,logs}
cd pangolin
touch config/letsencrypt/acme.json
chmod 600 config/letsencrypt/acme.json

Ahora crea el archivo docker-compose.yml con esta configuración:

version: '3.8'

services:
  pangolin:
    image: fosrl/pangolin:latest
    container_name: pangolin
    volumes:
      - ./config:/app/config
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/api/health"]
      interval: 10s
      timeout: 5s
      retries: 5

  gerbil:
    image: fosrl/gerbil:latest
    container_name: gerbil
    depends_on:
      pangolin:
        condition: service_healthy
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    ports:
      - "51820:51820/udp"
      - "21820:21820/udp"
      - "443:443"
      - "80:80"
    volumes:
      - ./config:/app/config
    restart: unless-stopped

  traefik:
    image: traefik:v3.4.0
    container_name: traefik
    network_mode: "service:gerbil"
    depends_on:
      - gerbil
    volumes:
      - ./config/traefik/traefik_config.yml:/etc/traefik/traefik.yml:ro
      - ./config/traefik/dynamic_config.yml:/etc/traefik/dynamic_config.yml:ro
      - ./config/letsencrypt:/letsencrypt
      - ./config/logs:/logs
    restart: unless-stopped

Esta configuración define los tres componentes esenciales. Gerbil requiere capacidades especiales (NET_ADMIN, SYS_MODULE) para gestionar interfaces WireGuard, mientras que Traefik comparte la red de Gerbil para manejar correctamente el tráfico HTTP/HTTPS.

Configuración de Traefik para Pangolin Docker Compose

Crea el archivo de configuración estática de Traefik en config/traefik/traefik_config.yml:

api:
  dashboard: true
  insecure: false

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

certificatesResolvers:
  letsencrypt:
    acme:
      email: [email protected]
      storage: /letsencrypt/acme.json
      httpChallenge:
        entryPoint: web

providers:
  file:
    filename: /etc/traefik/dynamic_config.yml
    watch: true

experimental:
  plugins:
    badger:
      moduleName: "github.com/fosrl/badger"
      version: "v1.1.0"

Reemplaza [email protected] con tu dirección real. Este email se usa para las notificaciones de Let’s Encrypt.

Ahora crea la configuración dinámica en config/traefik/dynamic_config.yml:

http:
  middlewares:
    redirect-to-https:
      redirectScheme:
        scheme: https
        permanent: true

    badger:
      plugin:
        badger:
          pangolinUrl: "http://pangolin:3000"

  routers:
    pangolin-app:
      rule: "Host(`tudominio.com`)"
      entryPoints:
        - websecure
      service: pangolin-frontend
      tls:
        certResolver: letsencrypt
      middlewares:
        - badger

    pangolin-api:
      rule: "Host(`tudominio.com`) && PathPrefix(`/api`, `/auth`, `/setup`)"
      entryPoints:
        - websecure
      service: pangolin-api
      tls:
        certResolver: letsencrypt
      middlewares:
        - badger

    pangolin-ws:
      rule: "Host(`tudominio.com`) && PathPrefix(`/ws`)"
      entryPoints:
        - websecure
      service: pangolin-api
      tls:
        certResolver: letsencrypt
      middlewares:
        - badger

  services:
    pangolin-frontend:
      loadBalancer:
        servers:
          - url: "http://pangolin:3002"

    pangolin-api:
      loadBalancer:
        servers:
          - url: "http://pangolin:3000"

Sustituye tudominio.com por tu dominio real en todas las apariciones. La configuración define routers separados para la interfaz web, la API y las conexiones WebSocket.

Configuración Básica de Pangolin

Crea el archivo config/config.yml con la configuración básica:

database:
  type: sqlite
  path: /app/config/db/db.sqlite

server:
  host: 0.0.0.0
  port: 3000
  frontend_port: 3002

wireguard:
  listen_port: 51820
  endpoint: tudominio.com:51820

security:
  session_secret: GENERA_UN_SECRET_ALEATORIO_AQUI
  jwt_secret: GENERA_OTRO_SECRET_ALEATORIO_AQUI

domain: tudominio.com

Para generar secretos aleatorios seguros, ejecuta:

openssl rand -base64 32

Ejecuta este comando dos veces y usa los resultados para session_secret y jwt_secret. Nunca compartas estos valores.

Desplegar Pangolin con Docker Compose

Con toda la configuración lista, inicia los servicios:

docker compose up -d

Monitoriza los logs para verificar que todo arranca correctamente:

docker compose logs -f

Deberías ver mensajes indicando que Pangolin está escuchando en los puertos 3000 y 3002, Gerbil ha iniciado las interfaces WireGuard, y Traefik ha obtenido certificados SSL. El proceso completo toma entre 1-3 minutos.

Verifica el estado de los contenedores:

docker compose ps

Los tres servicios deben mostrar estado «Up». Si alguno está reiniciándose constantemente, revisa los logs específicos con docker compose logs [nombre-servicio].

Configuración Inicial de Pangolin Docker Compose

Abre tu navegador y accede a https://tudominio.com/auth/initial-setup. Verás el asistente de configuración inicial donde debes:

  1. Crear la cuenta de administrador con email y contraseña segura (mínimo 12 caracteres)
  2. Configurar el nombre de tu organización
  3. Definir el dominio base para los túneles
  4. Revisar y confirmar la configuración

Una vez completado, el sistema generará automáticamente la base de datos SQLite en config/db/db.sqlite y las claves WireGuard en config/key. Traefik habrá obtenido y configurado los certificados SSL de Let’s Encrypt.

Accede al dashboard en https://tudominio.com con tus credenciales de administrador para comenzar a configurar sites y recursos.

Crear Sites y Recursos en Pangolin

Desde el panel de administración, crea tu primer «Site» que representa una ubicación física (tu casa, oficina, Raspberry Pi, etc.):

  1. Navega a SitesNew Site
  2. Asigna un nombre descriptivo (ej: «Homelab Casa»)
  3. El sistema generará automáticamente un Newt Endpoint, Newt ID y Newt Secret Key
  4. Guarda estas credenciales, las necesitarás para conectar el cliente Newt

Después crea recursos que representen tus servicios auto-hospedados:

  1. Ve a ResourcesNew Resource
  2. Selecciona el tipo: Web Application, SSH, Database, Network Range
  3. Define la dirección local (ej: 192.168.1.100:8080 para tu instancia de Jellyfin)
  4. Asigna un subdominio (ej: jellyfin.tudominio.com)
  5. Configura políticas de acceso y autenticación si es necesario

El sistema automáticamente configurará el proxy inverso, obtendrá certificados SSL y establecerá el túnel cuando conectes el cliente Newt en tu red local.

Instalar Cliente Newt para Pangolin Docker Compose

Newt es el componente cliente que establece el túnel desde tu red local hacia el servidor. Puedes desplegarlo con Docker en cualquier dispositivo de tu red (Raspberry Pi, NAS, servidor local):

docker run -d \
  --name newt \
  --cap-add NET_ADMIN \
  --cap-add SYS_MODULE \
  --restart unless-stopped \
  -e NEWT_ENDPOINT="https://tudominio.com" \
  -e NEWT_ID="tu-site-id-generado" \
  -e NEWT_SECRET="tu-secret-key-generado" \
  fosrl/newt:latest

Reemplaza los valores de NEWT_ID y NEWT_SECRET con los generados al crear el Site. El cliente se conectará automáticamente al servidor, establecerá el túnel WireGuard y comenzará a enrutar el tráfico.

Verifica la conexión en el dashboard de Pangolin: el Site debería mostrar estado «Connected» con un indicador verde.

Casos de Uso Reales de Pangolin

Este sistema resuelve múltiples escenarios comunes en self-hosting:

  • CGNAT bypass: Expón servicios desde conexiones con IP compartida sin necesidad de VPN externa
  • Homelab remoto: Accede a tu servidor doméstico desde cualquier ubicación con autenticación integrada
  • Multi-site: Conecta múltiples ubicaciones (casa, oficina, VPS) en una red unificada
  • Desarrollo remoto: Prueba aplicaciones web locales desde Internet sin exponerlas públicamente
  • Acceso a bases de datos: Conecta de forma segura a PostgreSQL, MySQL o Redis desde cualquier lugar
  • SSH remoto: Acceso SSH a servidores detrás de firewalls restrictivos

La ventaja sobre alternativas comerciales es el control total: tus datos nunca pasan por servidores de terceros, defines tus propias políticas de seguridad y no hay límites artificiales de dispositivos o ancho de banda.

Seguridad y Mejores Prácticas

Para mantener tu instalación segura, implementa estas recomendaciones:

  • Firewall configurado: Abre solo los puertos necesarios (80, 443, 51820/UDP, 21820/UDP)
  • Actualización regular: Ejecuta docker compose pull && docker compose up -d semanalmente
  • Backups automáticos: Respalda config/db/db.sqlite y config/key diariamente
  • Contraseñas robustas: Usa gestor de contraseñas para credenciales de administrador
  • Autenticación 2FA: Habilita autenticación de dos factores en cuentas de usuario
  • Monitoreo de logs: Revisa config/logs/ periódicamente para detectar intentos de acceso no autorizado
  • Rotación de secretos: Cambia session_secret y jwt_secret cada 6 meses

El modelo Zero-Trust de la plataforma significa que cada solicitud es autenticada y autorizada individualmente, minimizando la superficie de ataque incluso si algún componente se ve comprometido.

Alternativas a Pangolin Docker Compose

Si bien esta solución ofrece un excelente balance entre funcionalidad y control, existen alternativas según tus necesidades:

  • Tailscale: Más simple de configurar pero comercial y con límites en plan gratuito
  • Cloudflare Tunnel: Excelente performance pero dependes de infraestructura de Cloudflare
  • WireGuard + Nginx: Máximo control pero requiere configuración manual extensa
  • ZeroTier: Red mesh auto-hospedable pero enfocado en VPN más que proxy
  • Headscale: Servidor Tailscale auto-hospedado pero sin funcionalidad de proxy inverso

La ventaja principal del proyecto es la integración completa de VPN, proxy inverso, autenticación y gestión de certificados en un solo stack de Docker Compose. Para más información sobre proxies inversos tradicionales, consulta nuestra categoría de Docker Compose.

Preguntas Frecuentes (FAQ)

¿Necesito IP pública para usar Pangolin?

No en tu red local. Solo necesitas IP pública en el servidor VPS donde despliegas el stack principal. El cliente Newt conecta saliente desde tu red local, por lo que funciona perfectamente detrás de CGNAT o firewalls restrictivos.

¿Qué diferencia hay entre Pangolin y Tailscale?

Ambos usan WireGuard como base, pero la solución open-source te da control total sobre la infraestructura. Tailscale es más fácil de configurar inicialmente pero tiene límites en el plan gratuito y tus conexiones pasan por sus servidores de coordinación. Con esta alternativa, controlas completamente el flujo de datos.

¿Puedo conectar múltiples sitios remotos?

Sí, es uno de los casos de uso principales. Puedes crear múltiples Sites, cada uno con su cliente Newt en diferentes ubicaciones físicas. Todos se conectan al servidor central y pueden comunicarse entre sí según las políticas de acceso que configures.

¿Los certificados SSL se renuevan automáticamente?

Sí, Traefik gestiona automáticamente la obtención y renovación de certificados Let’s Encrypt. No requiere intervención manual. Solo asegúrate de que el puerto 80 esté accesible para el desafío HTTP de ACME.

¿Qué recursos de servidor necesito?

Para uso personal con 5-10 servicios, un VPS con 1 CPU, 1GB RAM y 20GB almacenamiento es suficiente. Para deployments más grandes con múltiples sites y usuarios, considera 2GB+ RAM. El consumo de ancho de banda depende del tráfico que enrutes a través del túnel.

Conclusión

Pangolin Docker Compose representa la solución perfecta para quienes buscan exponer servicios auto-hospedados sin sacrificar privacidad ni control. Combina la simplicidad de despliegue de Docker con la potencia de WireGuard, certificados SSL automáticos y autenticación integrada, todo en un stack completamente open-source.

La capacidad de atravesar CGNAT y firewalls restrictivos lo convierte en herramienta esencial para cualquier homelab moderno. Ya sea que gestiones un servidor doméstico, múltiples ubicaciones remotas o necesites acceso seguro a bases de datos y SSH, esta plataforma ofrece una alternativa profesional a servicios comerciales manteniendo tus datos bajo tu completo control.

Si este tutorial te ha resultado útil, explora nuestra colección completa de guías Docker Compose para descubrir más herramientas que potenciarán tu infraestructura auto-hospedada. La comunidad de self-hosting crece cada día, y soluciones como ésta demuestran que 2025 es el mejor momento para tomar control de tu stack tecnológico.

Avatar

Por Mid

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x