Page cover

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:

  1. cloudflared se ejecuta en tu máquina (Windows).

  2. Abre una conexión saliente cifrada hacia Cloudflare.

  3. Cloudflare asigna un subdominio o dominio tuyo.

  4. Cuando alguien accede a ese dominio:

    • Cloudflare recibe la petición

    • La envía por el túnel

    • cloudflared la 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

  1. Accede a tu Proxmox: https://tu-ip:8006

  2. Inicia sesión con tus credenciales

  3. En el menú lateral izquierdo, haz clic en tu nodo (nombre del servidor)

  4. Ve a SystemCertificates

Paso 2: Configurar cuenta ACME

  1. Haz clic en la pestaña ACME

  2. En la sección "ACME Account", haz clic en Add

  3. 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 V2

    • Accept TOS: marca la casilla para aceptar los términos

  4. 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:

  1. En SystemCertificates

  2. En la sección superior, haz clic en Add (junto a "ACME")

  3. Configura:

    • Challenge Type: Standalone HTTP

    • Domain: proxmox.tudominio.com

  4. Haz clic en Create

  5. Haz clic en Order Certificates Now

  6. Espera a que el proceso termine (verás los logs en tiempo real)

Método DNS (más seguro, sin abrir puertos)

Para Cloudflare:

  1. Obtén tu API Token de Cloudflare:

    • Haz clic en tu perfil → API Tokens

    • Create TokenEdit zone DNS (plantilla)

    • Configura permisos: Zone → DNS → Edit

    • Copia el token generado

  2. En Proxmox, ve a SystemCertificates → pestaña ACME

  3. En "Challenge Plugins", haz clic en Add

  4. Configura:

    • Plugin ID: cloudflare

    • DNS API: Cloudflare Managed DNS

    • CF_Token: pega tu token API

  5. Haz clic en Add

  6. Ahora, en la sección superior, haz clic en Add

  7. Configura:

    • Challenge Type: DNS

    • Plugin: cloudflare

    • Domain: proxmox.tudominio.com

  8. Haz clic en Create

  9. Haz clic en Order Certificates Now

Paso 4: Aplicar el certificado

  1. Ve a SystemServices

  2. Busca pveproxy en la lista

  3. Selecciónalo y haz clic en Restart

O desde consola SSH:

circle-info

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:

circle-exclamation

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 anterior

  • proxmox.tudominio.com → Tu subdominio con tu dominio real

Explicación de parámetros:

  • service: https://localhost:8006 → Proxmox usa HTTPS en el puerto 8006

  • noTLSVerify: 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:

circle-info

⏱️ 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:

circle-exclamation

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

  1. Selecciona tu dominio

  2. Ve a Zero Trust en el menú lateral

  3. Si es tu primera vez, activa el plan gratuito de Zero Trust

  4. Ve a AccessApplications

  5. Haz clic en Add an application

Paso 2: Crear política de acceso

  1. Selecciona Self-hosted

  2. Configura:

    • Application name: Proxmox

    • Session Duration: 24 hours (o lo que prefieras)

    • Application domain: proxmox.tudominio.com

  3. 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 email

  • Action: Allow

  • Configure rules:

    • Selector: Emails

    • Value: tuemail@ejemplo.com

  1. 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

chevron-rightEl túnel no se conectahashtag

Verificar:

  1. Estado del servicio:

  1. Ver logs de error:

  1. Comprobar que el archivo de configuración es correcto:

  1. Verificar que el UUID en config.yml coincide con el archivo .json:

chevron-rightError "connection refused" o "bad gateway"hashtag

Posibles causas:

  1. Proxmox no está corriendo:

  1. Puerto incorrecto en config.yml (debe ser 8006)

  2. Falta noTLSVerify: true en la configuración

chevron-rightEl dominio no resuelvehashtag
  1. Verifica que el registro DNS se creó correctamente en Cloudflare Dashboard

  2. Espera 5-10 minutos para propagación DNS

  3. Prueba con:

chevron-rightError "no such tunnel"hashtag

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