Skip to content

Instantly share code, notes, and snippets.

@oscarhugopaz
Last active November 10, 2025 13:25
Show Gist options
  • Select an option

  • Save oscarhugopaz/641e0a6a0782e36185199dae4b6d86e6 to your computer and use it in GitHub Desktop.

Select an option

Save oscarhugopaz/641e0a6a0782e36185199dae4b6d86e6 to your computer and use it in GitHub Desktop.
Cómo publicar tu servidor local de forma segura con Cloudflare Tunnels

Curso 2: Cómo publicar tu servidor local de forma segura con Cloudflare Tunnels

Descripción

En este curso aprenderás a exponer un servidor local a Internet de forma segura utilizando Cloudflare Tunnels, sin necesidad de abrir puertos en tu router o exponer tu IP pública.
Esto es especialmente útil para entornos de desarrollo, demostraciones o despliegues ligeros.

Partiremos de un servidor local con Nginx instalado y luego configuraremos Cloudflare Tunnels para que tu servicio sea accesible públicamente a través de un dominio o subdominio de Cloudflare.


Contenido

  1. Introducción
  2. Requisitos previos
  3. Instalación de Nginx
  4. Instalación y configuración de Cloudflare Tunnels
  5. Crear un “Hello World” con Nginx
  6. Configurar el túnel
  7. Conclusión y siguientes pasos

Desarrollo

1. Introducción

Cloudflare Tunnels permite conectar un servicio que corre en tu máquina local con Internet de forma segura, utilizando un túnel cifrado entre tu equipo y la red de Cloudflare.
Esto evita configuraciones complicadas de NAT o firewalls, y no requiere abrir puertos.


2. Requisitos previos

  • Acceso a un servidor Linux con privilegios sudo.
  • Una cuenta en Cloudflare.
  • Un dominio administrado en Cloudflare (o subdominio).
  • Conexión a Internet.
  • Conocimientos básicos de comandos en Linux.

3. Instalación de Nginx

Primero instalaremos Nginx con el siguiente comando:

curl -fsSL https://lemp.run/install/nginx.sh | sh

Verifica que Nginx esté corriendo:

sudo systemctl status nginx

4. Instalación de Cloudflare Tunnels

# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list

# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared

Y verifica la instalación con:

cloudflared --version

5. Crear un “Hello World” en Nginx

Vamos a crear una pequeña página de prueba en /var/www/html:

echo "<h1>Hello World desde mi servidor local con Cloudflare Tunnels 🚀</h1>" | sudo tee /var/www/html/index.html

Asegúrate de que el archivo index.html existe:

cat /var/www/html/index.html

Reinicia Nginx por si hiciste cambios en el conf:

sudo systemctl restart nginx

Puedes ver la página local en: http://localhost


6. Configurar el túnel

Una vez autenticado, puedes crear e instalar el túnel como un servicio con el token que te entrega Cloudflare en el dashboard (o usando “Zero Trust”):

sudo cloudflared service install <token>

Esto creará un túnel persistente que se inicia automáticamente cuando arranca tu máquina. Y terminamos configurando el tunnel en Cloudflare.


7. Conclusión y siguientes pasos

  • Has creado un túnel seguro con Cloudflare Tunnels sin abrir puertos.
  • Tu servidor local con Nginx ahora es accesible públicamente.
  • Puedes extender esta configuración para:
    • Aplicaciones PHP, Python o Node.js detrás de Nginx.
    • Certificados SSL automáticos gestionados por Cloudflare.
    • Exposición de múltiples servicios desde un mismo host.
    • Configuraciones personalizadas en Zero Trust.
  • Documentación oficial de Cloudflare Tunnels
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment