Logotipo de Bitdoze

Pangolin: Despliega una Alternativa Autoalojada a Cloudflare Tunnels

Pangolin es un proxy inverso con túneles de código abierto basado en WireGuard. Aprende a desplegarlo en un VPS como sustituto autoalojado de Cloudflare Tunnels.

Dragos

13 min de lectura

Pangolin: Despliega una Alternativa Autoalojada a Cloudflare Tunnels

Cloudflare Tunnels hizo que exponer servicios locales a internet fuera fácil. Un comando, sin reenvío de puertos, protección DDoS incluida. Pero después de usarlo un tiempo, te topas con los límites: un máximo de 100 MB de subida por archivo, restricciones de los ToS sobre el streaming de vídeo (los usuarios de Jellyfin conocen esa ansiedad) y el hecho de que Cloudflare termina tu TLS y lee tu tráfico en texto plano dentro de su red. Si autoalojas para ser dueño de tu infraestructura, tener a un tercero en medio de cada conexión va un poco contra el propósito.

Pangolin soluciona eso. Es un proxy inverso autoalojado de código abierto con túneles basados en WireGuard, control de acceso y un panel que de verdad se puede usar. Lo ejecutas en un VPS que controlas y te da la misma experiencia de túnel que Cloudflare sin entregar tu tráfico a nadie.

Llevo unos meses usando Pangolin y maneja todo lo que hacía con Cloudflare Tunnels, además de algunas cosas que allí no podía hacer. Así es como se configura.

¿Por qué alejarse de Cloudflare Tunnels?

Algunas cosas me empujaron (a mí y a otros) a buscar alternativas:

  • Límite de 100 MB por archivo: Las transferencias a través de Cloudflare Tunnels se limitan a 100 MB por petición. Si usas Immich, Nextcloud o cualquier cosa con archivos grandes, esto rompe cosas silenciosamente.
  • ToS sobre streaming de vídeo: Los términos de Cloudflare prohíben usar Tunnels para distribuir contenido de vídeo. Jellyfin y Plex funcionan, técnicamente, pero estás a una revisión de los ToS de perder el acceso.
  • Terminación TLS: Cloudflare descifra tu tráfico dentro de su red antes de, opcionalmente, volver a cifrarlo hacia tu origen. Estás confiando datos en texto plano a toda su infraestructura.
  • Dependencia de la cuenta: Tus túneles, DNS y reglas de acceso viven bajo una sola cuenta de Cloudflare. Una violación de los ToS (real o percibida) y todo se cae.
  • Soporte de protocolos limitado: Tunnels solo maneja HTTP/HTTPS. Nada de TCP, UDP o SSH directamente por el túnel.

Cloudflare sigue siendo una buena opción para muchos montajes. Pero si quieres ser dueño de tu infraestructura de extremo a extremo, necesitas algo autoalojado.

¿Qué es Pangolin?

Pangolin es una plataforma de acceso remoto de código abierto construida sobre WireGuard. Combina un proxy inverso con capacidades de VPN en un solo stack. El proyecto lo mantiene Fossorial y ha ganado tracción en la comunidad del self-hosting.

Qué hace:

  • Expone aplicaciones web a través del navegador. Los usuarios finales no necesitan instalar ningún cliente.
  • El tráfico entre tus servicios y el VPS de Pangolin se cifra de extremo a extremo con WireGuard. Nada de texto plano en tránsito.
  • Autenticación integrada con acceso basado en roles. También puedes conectar proveedores de identidad externos como Authentik, Keycloak o Google vía OIDC.
  • Cada servicio tiene sus propias reglas de acceso. Tú decides exactamente quién puede llegar a qué.
  • El cliente Newt (el equivalente de Pangolin a cloudflared) conecta hacia afuera con tu VPS. No hace falta reenvío de puertos.
  • No solo HTTP. Puedes tunelar SSH, bases de datos y otros protocolos.

Cómo funciona

Pangolin se ejecuta en un VPS con IP pública. El cliente Newt se ejecuta en tu servidor casero o donde estén tus servicios. Newt conecta hacia afuera con Pangolin por WireGuard, y Pangolin gestiona el enrutado, los certificados SSL y el control de acceso. Tus usuarios llegan al VPS de Pangolin, no a tu IP de casa.

Pangolin vs Cloudflare Tunnels

Característica Pangolin Cloudflare Tunnels
Autoalojado Sí No
Código abierto Sí (AGPL-3) No
Terminación TLS En tu VPS En la red de Cloudflare
Límite de tamaño de archivo Solo el ancho de banda del VPS 100 MB por petición
Streaming de vídeo Sin restricciones Restricciones de los ToS
Protocolos HTTP, HTTPS, TCP, UDP, SSH Solo HTTP/HTTPS
Cifrado WireGuard De extremo a extremo Cloudflare en medio
Auth integrada Sí + OIDC/SSO Sí (vía Cloudflare Access)
Protección DDoS CrowdSec (opcional) La red de Cloudflare
Coste Coste del VPS (3-5 $/mes) Nivel gratuito disponible
Complejidad de configuración Moderada Fácil

Qué necesitas

Antes de empezar, asegúrate de tener:

  • Un VPS con IP pública (se recomienda Ubuntu 22.04+ o Debian 11+). Hetzner o Hostinger funcionan bien.
  • Un nombre de dominio con el DNS apuntando a la IP de tu VPS
  • Docker y Docker Compose instalados en el VPS
  • Puertos abiertos en el firewall del VPS: 80 (TCP), 443 (TCP), 51820 (UDP), 21820 (UDP)
  • Una máquina ejecutando tus servicios autoalojados (servidor casero, otro VPS, etc.)

Los precios de los VPS subieron en general en 2026 — si estás reconsiderando una máquina alquilada, mira qué cambió y cuándo gana un mini PC.

El ancho de banda del VPS importa

Tu VPS se convierte en la puerta de enlace de todo el tráfico. Un VPS de 3-5 $/mes de Hetzner te da 1-2 TB de ancho de banda, suficiente para la mayoría de montajes. Si haces streaming de vídeo o transfieres archivos grandes con frecuencia, elige un plan con suficiente transferencia de datos.

Instala Pangolin en tu VPS

La forma más fácil de instalar Pangolin es con su script de instalación oficial. Gestiona los contenedores Docker, la configuración de Traefik y los certificados SSL por ti.

Paso 1: Descarga y ejecuta el instalador

Conéctate por SSH a tu VPS y ejecuta:

bash
curl -fsSL https://static.pangolin.net/get-installer.sh | bash

Primero colócate en el directorio deseado (instala todo en el directorio actual):

bash
mkdir -p /opt/pangolin && cd /opt/pangolin
curl -fsSL https://static.pangolin.net/get-installer.sh | bash
sudo ./installer

Paso 2: Configura el instalador

El instalador te hace algunas preguntas:

  1. Edición: Elige Community Edition (gratuita, de código abierto)
  2. Dominio base: Introduce tu dominio raíz (p. ej., example.com)
  3. Dominio del panel: Por defecto pangolin.example.com, o introduce uno personalizado
  4. Email de Let’s Encrypt: Tu correo para la emisión de certificados SSL
  5. Tunneling: Di que sí para instalar Gerbil (el componente de túnel WireGuard)
  6. Email/SMTP: Opcional, omítelo por ahora

Paso 3: Arranca los contenedores

Confirma la instalación y espera 2-3 minutos. El instalador descarga tres imágenes Docker:

  • pangolin - la aplicación principal
  • gerbil - el servidor de túnel WireGuard
  • traefik - el proxy inverso

Cuando termine, verás:

text
Installation complete!
To complete the initial setup, please visit:
https://pangolin.example.com/auth/initial-setup

Paso 4: Completa la configuración inicial

Abre la URL del panel en tu navegador. Introduce el token de configuración que muestra la salida del instalador. Crea tu cuenta de administrador con una contraseña segura.

Una vez dentro, crea tu primera organización. Es el contenedor de nivel superior para tus túneles, usuarios y reglas de acceso. Si eres el único usuario, una organización es suficiente.

Paso 5: Instala Newt en tu servidor casero

Newt es el agente cliente que se ejecuta donde viven tus servicios. Instálalo en tu servidor casero, NAS o donde tengas contenedores Docker en ejecución.

Con Docker:

bash
docker run -d \
  --name newt \
  --restart unless-stopped \
  -e PANGOLIN_ENDPOINT=https://pangolin.example.com \
  -e NEWT_TOKEN=your-token-from-dashboard \
  fosrl/newt:latest

Generas el token desde el panel de Pangolin en Sites > Add Site.

Con Docker Compose:

yml
services:
  newt:
    image: fosrl/newt:latest
    container_name: newt
    restart: unless-stopped
    environment:
      - PANGOLIN_ENDPOINT=https://pangolin.example.com
      - NEWT_TOKEN=your-token-from-dashboard

Una vez que Newt conecta, aparece como “Online” en el panel de Pangolin, en Sites.

Expón tu primer servicio

Con Newt en ejecución, ya puedes exponer servicios a través de Pangolin.

Añade un recurso

  1. Ve a Resources en el panel y haz clic en Add Resource
  2. Elige Public o Protected (protegido requiere iniciar sesión para acceder)
  3. Define el subdominio (p. ej., grafana para grafana.example.com)
  4. Define el destino con la dirección local de tu servicio (p. ej., localhost:3000)
  5. Selecciona el sitio Newt que creaste

Pangolin aprovisiona automáticamente un certificado SSL para el subdominio. Tu servicio ya es accesible en https://grafana.example.com.

Protege un recurso con autenticación

Para servicios que no quieres que sean públicamente accesibles:

  1. Edita el recurso y cambia la autenticación a Protected
  2. Asigna acceso a usuarios o roles específicos
  3. Los usuarios se autentican a través de la página de inicio de sesión integrada de Pangolin

También puedes conectar un proveedor de identidad externo como Authentik o Google para SSO.

Expón servicios TCP/UDP

Para SSH, bases de datos u otros servicios que no son HTTP:

  1. Crea un recurso de tipo TCP/UDP
  2. Define el puerto y la dirección de destino
  3. Pangolin gestiona el enrutado del túnel

Esto es útil para acceder a una base de datos PostgreSQL o a un servidor SSH en tu red doméstica sin abrir puertos.

Opcional: Añade CrowdSec para protección DDoS

La principal ventaja de Cloudflare es la protección DDoS. Puedes recuperar parte de eso con CrowdSec, que bloquea tráfico malicioso basándose en inteligencia de amenazas compartida por la comunidad.

Instala CrowdSec junto a Pangolin y configúralo para que funcione con Traefik. La documentación de Pangolin tiene una guía de CrowdSec con la configuración completa.

No igualará la red global de Cloudflare, pero detecta la mayoría de ataques automatizados e intentos de fuerza bruta.

Opcional: Conecta un proveedor de identidad externo

Si ya usas Authentik, Keycloak u otro proveedor OIDC, puedes conectarlo a Pangolin para SSO:

  1. Ve a Identity Providers en el panel
  2. Añade un nuevo proveedor OIDC con tu client ID, secret y discovery URL
  3. Mapea los roles de tu proveedor de identidad a roles de Pangolin

Los usuarios pueden entonces iniciar sesión con sus credenciales existentes en lugar de cuentas específicas de Pangolin.

Cómo rinde en la práctica

Después de unos meses usando Pangolin, esto es lo que he comprobado:

Lo bueno: las apps web (Grafana, Uptime Kuma, Portainer) cargan rápido sin latencia apreciable. El streaming de Jellyfin funciona sin preocuparse por violaciones de los ToS. Las transferencias de archivos grandes en Immich y Nextcloud simplemente funcionan, sin límite de 100 MB. Añadir nuevos servicios lleva menos de un minuto una vez configurado el túnel. Los certificados SSL se renuevan sin intervención.

Las contrapartidas: el ancho de banda de tu VPS es el cuello de botella. Un VPS barato con 1 TB/mes aguanta la mayoría del tráfico de un home lab, pero el streaming de vídeo intensivo puede agotarlo. El VPS se convierte en un punto único de fallo – si se cae, todos tus túneles se caen, así que elige un proveedor fiable. Eres responsable de mantener Pangolin actualizado, aunque la instalación basada en Docker lo hace sencillo. No hay CDN ni caché integrados, así que si necesitas eso, pon una CDN delante de tu VPS de Pangolin.

Comparación de costes

Montaje Coste mensual
Cloudflare Tunnels Gratis (pero Cloudflare es dueño de tus datos)
Pangolin en Hetzner CX22 ~5 $/mes (2 TB de ancho de banda)
Pangolin en Hostinger KVM1 ~6 $/mes (1 TB de ancho de banda)
Pangolin en Oracle Free Tier 0 $ (recursos limitados, solo ARM)

El Oracle Free Tier funciona si quieres probar Pangolin sin gastar dinero. Maneja un puñado de túneles, aunque la arquitectura ARM puede tener alguna peculiaridad de compatibilidad ocasional.

¿Deberías cambiarte?

Pangolin no es un reemplazo directo para todos los casos de uso de Cloudflare Tunnels. Si estás muy metido en el ecosistema de Cloudflare con DNS, CDN y WAF gestionados allí, el esfuerzo de migración probablemente no merezca la pena solo por principios.

Pero si autoalojas para ser dueño de tu infraestructura, Cloudflare Tunnels es la única pieza que realmente no posees. Pangolin te da la misma experiencia de túnel, con cifrado de extremo a extremo, sin límites de tamaño de archivo, sin preocupaciones de ToS y con control total sobre tus datos.

La configuración lleva aproximadamente una hora la primera vez. Después, añadir nuevos túneles es lo bastante rápido como para que deje de parecer trabajo de infraestructura. Las actualizaciones son indoloras ya que todo corre en Docker, y la comunidad es lo bastante activa como para que los problemas se resuelvan rápido.

Si quieres probarlo, el repositorio de GitHub tiene el script de instalación completo y la documentación cubre la mayoría de casos límite.

Si buscas una VPN de malla en lugar de un proxy de túnel, echa un vistazo a Headscale (Tailscale autoalojado) o a nuestra guía comparativa de VPN de malla que cubre NetBird, Headscale y Tailscale. Para desplegar los servicios que estás tunelando, Coolify hace que el despliegue de apps autoalojadas sea sencillo.

Cómo actualizar Pangolin

Como Pangolin corre en Docker, actualizarlo es sencillo. Conéctate por SSH a tu VPS y navega al directorio de instalación:

bash
cd /opt/pangolin
docker compose pull
docker compose up -d

Esto descarga las últimas imágenes de los tres contenedores (pangolin, gerbil, traefik) y los reinicia. Tu configuración y tus datos persisten entre actualizaciones porque se guardan en volúmenes Docker.

Revisa la página de releases de Pangolin antes de actualizar. Algunas versiones incluyen cambios que rompen compatibilidad y requieren ajustes manuales de configuración. El Discord de la comunidad es un buen sitio para comprobar si alguien ha tenido problemas con la última versión.

Haz copia de seguridad antes de actualizar

Antes de cualquier actualización importante, haz copia de seguridad del directorio de datos de Pangolin. La base de datos SQLite y los archivos de configuración se guardan en los volúmenes definidos en tu docker-compose.yml. Cópialos a un lugar seguro antes de ejecutar docker compose pull.

Preguntas frecuentes

¿Puedo ejecutar Pangolin junto a Cloudflare Tunnels?

Sí. Puedes usar Cloudflare Tunnels para algunos servicios y Pangolin para otros. Por ejemplo, mantén Cloudflare para los servicios que se benefician de su CDN y protección DDoS, y enruta Jellyfin o Nextcloud por Pangolin, donde el límite de 100 MB y los ToS son un problema. Solo configura subdominios diferentes para cada túnel.

¿Qué pasa si mi VPS se cae?

Todos tus túneles se caen con él. Esta es la principal contrapartida frente a la red globalmente distribuida de Cloudflare. Para mitigarlo: elige un proveedor de VPS fiable, configura monitorización con Uptime Kuma o Beszel, y considera tener un VPS secundario como respaldo en frío.

¿Puedo usar Pangolin sin el cliente Newt?

Sí. Puedes conectar cualquier cliente WireGuard directamente al servidor Gerbil de Pangolin. Esto te da acceso VPN a la red sin usar el agente Newt. Newt solo es necesario si quieres la experiencia de túnel de proxy inverso donde los servicios se exponen a través del navegador sin cliente VPN.

¿Funciona Pangolin detrás de CGNAT?

Sí. Newt conecta hacia afuera con tu VPS, así que no hace falta abrir puertos de entrada en tu red doméstica. Funciona igual que Cloudflare Tunnels – la conexión se inicia desde dentro de tu red.

¿Cómo se compara Pangolin con Tailscale?

Pangolin es un proxy inverso de túneles para exponer servicios concretos. Tailscale es una VPN de malla completa que conecta todos tus dispositivos. Resuelven problemas distintos. Si quieres que los usuarios accedan a los servicios por el navegador sin instalar nada, Pangolin es la opción correcta. Si quieres que todos tus dispositivos se vean entre sí en una red privada, elige Tailscale (o su alternativa autoalojada Headscale).