// 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:
- Instalas una pequeña utilidad
cloudflareden tu equipo Linux. cloudflaredestablece una conexión HTTPS saliente con el servidor de Cloudflare más cercano, creando un túnel permanente.- 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.
- 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
- Nombre de dominio: Es obligatorio. Puedes comprarlo en cualquier registrador; el dominio debe delegarse a los servidores DNS de Cloudflare.
- Cuenta de Cloudflare: El plan gratuito es suficiente para la mayoría de los casos.
- 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.).
- 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:
- Entra en tu cuenta de Cloudflare.
- Haz clic en “Add a Site” (Agregar un sitio).
- Introduce tu nombre de dominio y elige el plan gratuito.
- 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.comyyyy.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.
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):
bashsudo 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/nullAñade el repositorio de Cloudflare a tu sistema:
- Para Debian/Ubuntu y derivados (que usan
apt):bashecho '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):bashcurl -fsSL https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
- Para Debian/Ubuntu y derivados (que usan
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
- Para Debian/Ubuntu:
Tras la instalación puedes comprobar rápidamente que cloudflared está instalado y accesible ejecutando:
cloudflared --versionPaso 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:
cloudflared tunnel loginEste 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.
cloudflared tunnel create my-website-tunnelEn 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):
sudo nano /etc/cloudflared/config.ymlEjemplo de contenido del archivo config.yml:
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 peticionesExplicació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 puerto3000, cámbialo ahttp://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 dehostnamereciba 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.
- Ve a la sección “DNS” de tu dominio en el panel de Cloudflare.
- Haz clic en “Add record” (Agregar registro).
- Selecciona el tipo de registro:
CNAME. - En el campo “Name” (Nombre) introduce:
@– para el dominio raíz (por ejemplo,your-domain.com).www– para el subdominiowww(por ejemplo,www.your-domain.com).
- En el campo “Target” (Objetivo) introduce:
<UUID вашего туннеля>.cfargotunnel.com.- Importante: Reemplaza
<UUID вашего туннеля>por el UUID real obtenido en el Paso 4.
- Importante: Reemplaza
- Asegúrate de que el ícono “Proxy status” (Estado de proxy) esté naranja (Full Proxy) — esto significa que el tráfico pasará por Cloudflare.
- 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:
sudo cloudflared tunnel service installEste 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:
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 8000y configuraservice: http://localhost:8000en 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)
Или оставьте заявку здесь:
// Related