¿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:
- Crear la cuenta de administrador con email y contraseña segura (mínimo 12 caracteres)
- Configurar el nombre de tu organización
- Definir el dominio base para los túneles
- 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.):
- Navega a Sites → New Site
- Asigna un nombre descriptivo (ej: «Homelab Casa»)
- El sistema generará automáticamente un Newt Endpoint, Newt ID y Newt Secret Key
- Guarda estas credenciales, las necesitarás para conectar el cliente Newt
Después crea recursos que representen tus servicios auto-hospedados:
- Ve a Resources → New Resource
- Selecciona el tipo: Web Application, SSH, Database, Network Range
- Define la dirección local (ej:
192.168.1.100:8080para tu instancia de Jellyfin) - Asigna un subdominio (ej:
jellyfin.tudominio.com) - 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 -dsemanalmente - Backups automáticos: Respalda
config/db/db.sqliteyconfig/keydiariamente - 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_secretyjwt_secretcada 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.
