Exponer Proxmox públicamente con Cloudflare Tunnel
Esta guía te permitirá acceder a tu interfaz de Proxmox de forma segura desde internet usando Cloudflare Tunnel, sin necesidad de abrir puertos en tu router. Aunque esta práctica es para proxmox, se puede aplicar a cualquier servicio de navegador por puerto.
¿Cómo funciona Cloudflared Tunnel?
En lugar de que Internet se conecte directamente a tu servidor:
cloudflaredse ejecuta en tu máquina (Windows).Abre una conexión saliente cifrada hacia Cloudflare.
Cloudflare asigna un subdominio o dominio tuyo.
Cuando alguien accede a ese dominio:
Cloudflare recibe la petición
La envía por el túnel
cloudflaredla redirige a tu servicio local (Flask, por ejemplo)

📌 Ventajas:
No necesitas IP pública
No abres puertos
HTTPS automático
Protección DDoS y firewall de Cloudflare
Requisitos previos
Una cuenta de Cloudflare (gratuita)
Un dominio registrado y configurado en Cloudflare
Acceso SSH a tu servidor Proxmox
Proxmox funcionando en
https://localhost:8006
PARTE 1: Configurar certificado SSL en Proxmox (Opcional pero recomendado)
Aunque Cloudflare Tunnel funciona con certificados autofirmados usando noTLSVerify: true, es una buena práctica tener un certificado SSL válido en Proxmox.
Opción A: Certificado Let's Encrypt mediante interfaz web
Paso 1: Acceder a la configuración de certificados
Accede a tu Proxmox:
https://tu-ip:8006Inicia sesión con tus credenciales
En el menú lateral izquierdo, haz clic en tu nodo (nombre del servidor)
Ve a System → Certificates
Paso 2: Configurar cuenta ACME
Haz clic en la pestaña ACME
En la sección "ACME Account", haz clic en Add
Configura los siguientes campos:
Account Name:
default(o el nombre que prefieras)E-Mail: tu correo electrónico válido
ACME Directory: deja
Let's Encrypt V2Accept TOS: marca la casilla para aceptar los términos
Haz clic en Register
Paso 3: Agregar dominio para el certificado
Método HTTP (más simple)
Requisitos:
Puerto 80 debe estar abierto temporalmente hacia tu Proxmox
Tu dominio debe apuntar a tu IP pública
Configuración:
En System → Certificates
En la sección superior, haz clic en Add (junto a "ACME")
Configura:
Challenge Type:
Standalone HTTPDomain:
proxmox.tudominio.com
Haz clic en Create
Haz clic en Order Certificates Now
Espera a que el proceso termine (verás los logs en tiempo real)
Método DNS (más seguro, sin abrir puertos)
Para Cloudflare:
Obtén tu API Token de Cloudflare:
Ve a Cloudflare Dashboard
Haz clic en tu perfil → API Tokens
Create Token → Edit zone DNS (plantilla)
Configura permisos: Zone → DNS → Edit
Copia el token generado
En Proxmox, ve a System → Certificates → pestaña ACME
En "Challenge Plugins", haz clic en Add
Configura:
Plugin ID:
cloudflareDNS API:
Cloudflare Managed DNSCF_Token: pega tu token API
Haz clic en Add
Ahora, en la sección superior, haz clic en Add
Configura:
Challenge Type:
DNSPlugin:
cloudflareDomain:
proxmox.tudominio.com
Haz clic en Create
Haz clic en Order Certificates Now
Paso 4: Aplicar el certificado
Ve a System → Services
Busca
pveproxyen la listaSelecciónalo y haz clic en Restart
O desde consola SSH:
Opción B: Usar certificado autofirmado (predeterminado)
Si prefieres no configurar Let's Encrypt, Proxmox ya viene con un certificado autofirmado. En este caso, simplemente asegúrate de incluir noTLSVerify: true en la configuración del túnel (se explica más adelante).
PARTE 2: Instalar y configurar Cloudflare Tunnel
Paso 1: Instalar cloudflared en Proxmox
Conéctate por SSH a tu servidor Proxmox y elige uno de estos métodos:
Método A: Añadir repositorio (recomendado)
Método B: Descarga directa del paquete
Paso 2: Autenticarse en Cloudflare
Qué ocurre:
Se abre automáticamente tu navegador web
Te pide iniciar sesión en Cloudflare
Debes seleccionar el dominio donde quieres crear el túnel
Descarga un certificado en
~/.cloudflared/cert.pem
Si todo va bien, verás un mensaje de confirmación indicando que la autenticación fue exitosa.

Paso 3: Crear el túnel
Salida esperada:
IMPORTANTE: Donde pone UUID debería aparecer un conjunto de letras y números, guarda el UUID que aparece, lo necesitarás en el siguiente paso.
Paso 4: Configurar el túnel
Crea el archivo de configuración:
Pega el siguiente contenido (reemplaza los valores según tu configuración):
Reemplaza:
TU-UUID-AQUI→ El UUID que obtuviste en el paso anteriorproxmox.tudominio.com→ Tu subdominio con tu dominio real
Explicación de parámetros:
service: https://localhost:8006→ Proxmox usa HTTPS en el puerto 8006noTLSVerify: true→ Permite certificados autofirmados (necesario si no configuraste Let's Encrypt)
Guarda el archivo: Ctrl + O, Enter, Ctrl + X
Paso 5: Crear el registro DNS
Este comando crea automáticamente un registro CNAME en Cloudflare:
Salida esperada:
⏱️ Nota: Este cambio DNS puede tardar 5-10 minutos en propagarse completamente.
Paso 6: Probar el túnel manualmente
Antes de configurarlo como servicio permanente, prueba que funciona:
Si todo está correcto, verás mensajes como:
Abre tu navegador y accede a:
Deberías ver la pantalla de login de Proxmox.
Si funciona correctamente, presiona Ctrl + C para detener el túnel y continúa al siguiente paso.
Paso 7: Crear servicio systemd para inicio automático
Para que el túnel se inicie automáticamente con el sistema, crea un servicio:
Pega el siguiente contenido:
Nota sobre la ruta: Si instalaste cloudflared con el repositorio, la ruta es /usr/bin/cloudflared.
Si usaste descarga directa, verifica la ruta con:
Y ajusta la línea ExecStart si es necesario.
Guarda el archivo: Ctrl + O, Enter, Ctrl + X
Paso 8: Activar y arrancar el servicio
Salida esperada al verificar estado:
Paso 9: Verificar logs en tiempo real
Si quieres ver los logs del túnel:
Presiona Ctrl + C para salir.
PARTE 3: Seguridad adicional con Cloudflare Access (OPCIONAL pero muy recomendado)
Para proteger el acceso a tu Proxmox con autenticación adicional:
Paso 1: Configurar Cloudflare Access
Ve a Cloudflare Dashboard
Selecciona tu dominio
Ve a Zero Trust en el menú lateral
Si es tu primera vez, activa el plan gratuito de Zero Trust
Ve a Access → Applications
Haz clic en Add an application
Paso 2: Crear política de acceso
Selecciona Self-hosted
Configura:
Application name:
ProxmoxSession Duration:
24 hours(o lo que prefieras)Application domain:
proxmox.tudominio.com
Haz clic en Next
Paso 3: Configurar reglas de autenticación
Elige uno o varios métodos:
One-time PIN: código enviado por email
Login with Google: autenticación con cuenta Google
Login with GitHub: autenticación con cuenta GitHub
Email addresses: lista específica de emails permitidos
Ejemplo de configuración simple:
Policy name:
Allow my emailAction:
AllowConfigure rules:
Selector:
EmailsValue:
tuemail@ejemplo.com
Haz clic en Next y luego en Add application
Ahora, cuando alguien intente acceder a https://proxmox.tudominio.com, primero deberá autenticarse con el método que configuraste.
Comandos útiles para gestionar el túnel
Solución de problemas
El túnel no se conecta
Verificar:
Estado del servicio:
Ver logs de error:
Comprobar que el archivo de configuración es correcto:
Verificar que el UUID en
config.ymlcoincide con el archivo.json:
Error "connection refused" o "bad gateway"
Posibles causas:
Proxmox no está corriendo:
Puerto incorrecto en
config.yml(debe ser8006)Falta
noTLSVerify: trueen la configuración
El dominio no resuelve
Verifica que el registro DNS se creó correctamente en Cloudflare Dashboard
Espera 5-10 minutos para propagación DNS
Prueba con:
Error "no such tunnel"
Verifica el nombre exacto del túnel:
Y asegúrate de que coincide con el nombre en config.yml y en el servicio systemd.
Última actualización