// DevOps

Publicar un sitio web desde el ordenador de casa: Cloudflare Tunnel sin IP pública

Publicado el 22.09.2026

Cloudflare Tunnel — el servicio de Cloudflare que publica en internet un servidor web que se ejecuta en tu casa u oficina, sin una IP pública y sin reenviar puertos en el router. En el equipo se instala la utilidad cloudflared: ella misma establece una conexión saliente cifrada con la red de Cloudflare, y los visitantes abren tu sitio por nombre de dominio a través de esa conexión. Antes el servicio se llamaba Argo Tunnel.

Esto es conveniente para un blog personal, un proyecto de pruebas o un servicio pequeño: el proveedor a menudo no asigna una IP pública, y si lo hace, suele ser dinámica y hay que actualizarla vía DDNS. Abajo — cómo configurar el túnel en Linux y qué tener en cuenta si el sitio se abre desde Rusia.

Importante para la audiencia desde Rusia. Desde el 9 de junio de 2025 los proveedores rusos ralentizan el acceso a servicios detrás de Cloudflare: según la propia Cloudflare, los usuarios reciben solo los primeros 16 KB de cada recurso, y la mayoría de los sitios en la práctica no se cargan (blog de Cloudflare). Si el sitio está dirigido a visitantes desde Rusia, publícalo a través de un VPS con IP pública y un proxy inverso — por ejemplo, Caddy. Más detalles sobre CDN y su disponibilidad — en el artículo sobre reserva de salida a internet.


¿Qué es Cloudflare Tunnel y cómo funciona?

Cloudflare Tunnel conecta tu servidor web local a la red global de Cloudflare sin necesidad de abrir puertos entrantes en tu router. Crea un túnel saliente cifrado entre tu equipo doméstico y el servidor de Cloudflare más cercano. Todo el tráfico entrante hacia tu sitio pasará por la infraestructura de Cloudflare, proporcionándote múltiples ventajas: desde su CDN y caché hasta protección contra DDoS y certificado SSL/TLS gratuito.

¿Cómo funciona esto:

  1. Instalas una pequeña utilidad cloudflared en tu equipo Linux.
  2. cloudflared establece una conexión HTTPS saliente con el servidor de Cloudflare más cercano, creando un túnel permanente.
  3. Cuando alguien solicita tu sitio mediante el nombre de dominio, Cloudflare dirige esa petición a través del túnel establecido hacia tu servidor web local.
  4. Tu servidor web procesa la petición y envía la respuesta de vuelta por el mismo túnel, y Cloudflare la entrega al usuario.

Qué necesitaremos

  1. Nombre de dominio: Es obligatorio. Puedes comprarlo en cualquier registrador; el dominio debe delegarse a los servidores DNS de Cloudflare.
  2. Cuenta de Cloudflare: El plan gratuito es suficiente para la mayoría de los casos.
  3. Servidor web instalado en tu equipo Linux: Puede ser Nginx, Apache, Caddy, un servidor Node.js, Python Simple HTTP Server u otro que pueda escuchar peticiones HTTP en un puerto local (por ejemplo, 80, 8000, 3000, etc.).
  4. Equipo con Linux donde se alojará el sitio.

Parte 1: Preparar el dominio e instalar Cloudflared

Esta sección cubre los pasos iniciales para integrar tu dominio con Cloudflare e instalar el software necesario.

Paso 1: Añadimos tu dominio a Cloudflare

Si tu dominio aún no está gestionado por Cloudflare, este es el primer y más importante paso:

  1. Entra en tu cuenta de Cloudflare.
  2. Haz clic en “Add a Site” (Agregar un sitio).
  3. Introduce tu nombre de dominio y elige el plan gratuito.
  4. Cloudflare escaneará tus registros DNS actuales. Luego se te pedirá cambiar los servidores DNS de tu dominio a los que proporcione Cloudflare (por ejemplo, xxx.ns.cloudflare.com y yyy.ns.cloudflare.com). Este es un punto crítico: sin esto Cloudflare no podrá gestionar tu nombre de dominio. Las instrucciones para cambiar los servidores DNS las encontrarás en el panel de tu registrador de dominios.

Después de actualizar los servidores DNS, espera un tiempo (de unos minutos a unas horas) hasta que los cambios se propaguen por internet. El estado de tu dominio en Cloudflare debería cambiar a “Active” (Activo).

Paso 2: Instalamos cloudflared en tu equipo Linux

Cloudflare recomienda usar su repositorio oficial para instalar cloudflared. Esto garantiza que siempre tendrás la versión más reciente de la utilidad y que puedas recibir actualizaciones automáticas.

  1. Para Debian/Ubuntu añade la clave GPG de Cloudflare (para CentOS/RHEL/Fedora basta con añadir el archivo de repositorio del paso 2):

    bash
    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
  2. Añade el repositorio de Cloudflare a tu sistema:

    • Para Debian/Ubuntu y derivados (que usan apt):
      bash
      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
    • Para CentOS/RHEL/Fedora y derivados (que usan yum/dnf):
      bash
      curl -fsSL https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
  3. Actualiza la lista de paquetes e instala cloudflared:

    • Para Debian/Ubuntu:
      bash
      sudo apt update
      sudo apt install cloudflared
    • Para CentOS/RHEL/Fedora:
      bash
      sudo yum install cloudflared
      # O para Fedora: sudo dnf install cloudflared

Tras la instalación puedes comprobar rápidamente que cloudflared está instalado y accesible ejecutando:

bash
cloudflared --version

Paso 3: Autorizamos cloudflared con tu cuenta de Cloudflare

Ahora es necesario vincular la utilidad cloudflared instalada con tu cuenta de Cloudflare. Abre una terminal en tu equipo Linux y ejecuta:

bash
cloudflared tunnel login

Este comando abrirá automáticamente el navegador web. Tendrás que iniciar sesión en tu cuenta de Cloudflare y seleccionar el dominio para el que estás creando el túnel. Tras la autorización verás un mensaje indicando que el certificado se ha guardado en tu directorio personal (normalmente en /root/.cloudflared/cert.pem o /home/youruser/.cloudflared/cert.pem). Este certificado se utiliza para autenticar tu agente cloudflared con Cloudflare.


Parte 2: Creación y configuración del Cloudflare Tunnel

En esta etapa crearemos el túnel y configuraremos su enrutamiento.

Paso 4: Creamos el Cloudflare Tunnel

¡Es hora de crear tu primer túnel! Elige un nombre único y fácil de recordar, por ejemplo, my-website-tunnel.

bash
cloudflared tunnel create my-website-tunnel

En respuesta recibirás el UUID de tu túnel (una cadena larga como a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6) y la ruta al archivo de credenciales (por ejemplo, /root/.cloudflared/a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6.json). Guarda ese UUID y la ruta al archivo, los necesitaremos en el siguiente paso.

Paso 5: Configuramos el túnel (archivo config.yml)

Ahora vamos a crear el archivo de configuración para nuestro túnel, que definirá cómo Cloudflare debe dirigir el tráfico hacia tu servidor web local. Cloudflare recomienda colocar este archivo en /etc/cloudflared/.

Crea un archivo llamado config.yml (o cualquier otro con extensión .yml):

bash
sudo nano /etc/cloudflared/config.yml

Ejemplo de contenido del archivo config.yml:

yaml
tunnel: <UUID вашего туннеля>
credentials-file: /root/.cloudflared/<UUID вашего туннеля>.json # Indica la ruta completa al archivo JSON del Paso 4

ingress:
  - hostname: your-domain.com # Reemplaza por tu dominio, por ejemplo, myblog.ru
    service: http://localhost:80 # Puerto en el que tu servidor web escucha localmente
  - hostname: www.your-domain.com # Si quieres que funcione también con www, por ejemplo, www.myblog.ru
    service: http://localhost:80
  - service: http_status:404 # Regla obligatoria para capturar todas las demás peticiones

Explicación de config.yml:

  • tunnel: Es el UUID que obtuviste en el paso anterior.
  • credentials-file: La ruta completa al archivo JSON que contiene las credenciales del túnel. Verifica dos veces y especifica la ruta correcta a este archivo en tu sistema.
  • ingress: Es un arreglo de reglas que determinan cómo Cloudflare enrutará las peticiones entrantes. Las reglas se procesan de arriba a abajo.
    • hostname: El nombre de dominio (o subdominio) al que aplica la regla.
    • service: La dirección de tu servidor web local y el puerto en el que escucha. Por ejemplo, si tu servidor escucha en el puerto 3000, cámbialo a http://localhost:3000.
    • service: http_status:404: Esta es la última regla obligatoria en la lista. Garantiza que cualquier petición que no coincida con las reglas anteriores de hostname reciba un error HTTP 404 (Not Found), evitando accesos no deseados.

Después de editar, guarda y cierra el archivo (para nano: Ctrl+O, Enter, luego Ctrl+X).

Paso 6: Configuramos los registros DNS en Cloudflare para el túnel

Para que Cloudflare sepa que tu dominio debe usar el túnel creado, necesitas crear un registro DNS especial de tipo CNAME.

  1. Ve a la sección “DNS” de tu dominio en el panel de Cloudflare.
  2. Haz clic en “Add record” (Agregar registro).
  3. Selecciona el tipo de registro: CNAME.
  4. En el campo “Name” (Nombre) introduce:
    • @ – para el dominio raíz (por ejemplo, your-domain.com).
    • www – para el subdominio www (por ejemplo, www.your-domain.com).
  5. En el campo “Target” (Objetivo) introduce: <UUID вашего туннеля>.cfargotunnel.com.
    • Importante: Reemplaza <UUID вашего туннеля> por el UUID real obtenido en el Paso 4.
  6. Asegúrate de que el ícono “Proxy status” (Estado de proxy) esté naranja (Full Proxy) — esto significa que el tráfico pasará por Cloudflare.
  7. Haz clic en “Save” (Guardar).

Repite este paso para el subdominio www si quieres que tu sitio sea accesible tanto por www.your-domain.com como por your-domain.com.


Parte 3: Ejecución y verificación del túnel

Los pasos finales son ejecutar cloudflared como servicio del sistema y comprobar que funciona.

Paso 7: Ejecutamos el túnel como servicio del sistema

Cloudflare recomienda ejecutar cloudflared como un servicio del sistema (systemd en la mayoría de sistemas Linux modernos). Esto asegura que se inicie automáticamente al arrancar y que funcione de forma estable en segundo plano.

En la terminal ejecuta el siguiente comando:

bash
sudo cloudflared tunnel service install

Este comando instalará cloudflared como servicio del sistema, usando el archivo de configuración que creaste en /etc/cloudflared/config.yml.

Tras la instalación puedes gestionar el servicio con los comandos estándar de systemctl:

bash
sudo systemctl start cloudflared     # Iniciar el túnel
sudo systemctl status cloudflared    # Comprobar el estado actual del túnel
sudo systemctl enable cloudflared    # Habilitar el inicio automático del túnel al arrancar el sistema
sudo systemctl stop cloudflared      # Detener el túnel
sudo systemctl restart cloudflared   # Reiniciar el túnel (útil después de cambios en config.yml)

Paso 8: ¡Comprobamos que funciona!

¡Todo está listo! Tu servidor web local debería estar en ejecución, cloudflared debería funcionar como servicio, y los registros DNS en Cloudflare deberían apuntar a tu túnel.

Abre un navegador e introduce tu nombre de dominio (por ejemplo, your-domain.com). Si todos los pasos se realizaron correctamente, deberías ver tu sitio funcionando directamente desde tu equipo Linux doméstico.


Puntos importantes y recomendaciones

  • Servidor web local: Asegúrate de que tu servidor web en la máquina Linux esté en marcha y escuche en el puerto indicado en config.yml. Por ejemplo, si usas Python para pruebas rápidas: python3 -m http.server 8000 y configura service: http://localhost:8000 en el config.
  • Seguridad: Cloudflare Tunnel mejora significativamente la seguridad al evitar la apertura de puertos. Sin embargo, siempre vigila la seguridad del propio servidor Linux.
  • Monitorización: Cloudflare ofrece estadísticas básicas de tráfico. Para un monitoreo más detallado de tu servidor local utiliza herramientas estándar de Linux (htop, netstat, logs del servidor web).
  • Velocidad de internet: El rendimiento de tu sitio dependerá de la velocidad de la conexión saliente en tu equipo doméstico. La CDN de Cloudflare ayudará a cachear contenido estático, pero las solicitudes dinámicas pasarán por el túnel.

Cloudflare Tunnel es adecuado para proyectos personales, entornos de prueba y servicios pequeños cuando no hay IP pública. Para sitios dirigidos a visitantes desde Rusia, ten en cuenta la ralentización de Cloudflare y considera publicar a través de tu propio VPS.

// Contact

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Respondo en un día laborable (03:00-13:00 GMT)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida