Bandera: Русский Русский Bandera: English English

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

Publicado el 16.06.2025

A menudo surge la necesidad de alojar tu sitio, ya sea un blog personal, un proyecto de prueba o un pequeño servicio, directamente en tu ordenador doméstico. Es cómodo, económico y te da control total. Sin embargo, muchos se enfrentan al problema de no tener una IP “blanca” (pública) por parte del proveedor, lo que hace que el acceso directo desde fuera sea prácticamente imposible. Y si la hay, a menudo es dinámica y requiere actualización constante mediante DDNS.

¡No te preocupes! Hoy nos sumergiremos en el mundo de las tecnologías de red y explicaremos cómo sortear esta limitación y publicar tu sitio en Internet usando la potente y gratuita herramienta de Cloudflare: Cloudflare Tunnel (anteriormente conocido como Argo Tunnel). Ya no necesitarás una IP blanca, abrir puertos en el router ni otras configuraciones complejas.


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

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

¿Cómo funciona “bajo el capó”?

  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 persistente.
  3. Cuando alguien solicita tu sitio mediante el nombre de dominio, Cloudflare dirige esa petición a través del túnel hacia tu servidor web local.
  4. Tu servidor procesa la petición y envía la respuesta de vuelta por el mismo túnel, y Cloudflare la entrega al usuario.

Suena genial, ¿verdad? ¡Vamos a empezar!


Qué necesitaremos

  1. Un nombre de dominio: Es requisito imprescindible. Puedes comprarlo en cualquier registrador u obtener un dominio gratuito (por ejemplo, a través de Freenom, aunque ten en cuenta sus posibles limitaciones).
  2. Cuenta en Cloudflare: El plan gratuito suele ser suficiente para la mayoría de tareas.
  3. Servidor web instalado en tu ordenador Linux: Puede ser Nginx, Apache, Caddy, un servidor Node.js, Python Simple HTTP Server o cualquier otro que escuche peticiones HTTP en un puerto local (por ejemplo, 80, 8000, 3000, etc.).
  4. Un equipo con sistema operativo Linux donde se alojará el sitio.

Parte 1: Preparación del dominio e instalación de 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. Accede a tu cuenta de Cloudflare.
  2. Haz clic en “Add a Site” (Agregar un sitio).
  3. Introduce tu nombre de dominio y selecciona el plan gratuito.
  4. Cloudflare escaneará tus registros DNS actuales. Luego se te pedirá que cambies los servidores DNS de tu dominio por los que te proporcione Cloudflare (por ejemplo, xxx.ns.cloudflare.com y yyy.ns.cloudflare.com). Este es un paso crítico: sin ello Cloudflare no podrá gestionar tu dominio. Encontrarás instrucciones para cambiar los servidores DNS en la web de tu registrador.

Después de actualizar los servidores DNS, espera un tiempo (desde unos minutos hasta varias horas) para 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 ordenador Linux

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

  1. Añade la clave GPG de Cloudflare:

    sudo mkdir -p --mode=0755 /usr/share/keyrings
    curl -fsSL [https://pkg.cloudflare.com/cloudflare-main.gpg](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 (usando apt):
      echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] [https://pkg.cloudflare.com/cloudflared](https://pkg.cloudflare.com/cloudflared) stable main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
      
    • Para CentOS/RHEL/Fedora y derivados (usando yum/dnf):
      echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] [https://pkg.cloudflare.com/cloudflared](https://pkg.cloudflare.com/cloudflared) stable main' | sudo tee /etc/yum.repos.d/cloudflared.repo
      
  3. Actualiza la lista de paquetes e instala cloudflared:

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

Después de la instalación puedes verificar rápidamente que cloudflared está instalado y disponible ejecutando:

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 un terminal en tu equipo Linux y ejecuta:

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 exitosa verás un mensaje indicando que el certificado se ha guardado en tu directorio home (normalmente en /root/.cloudflared/cert.pem o /home/tuusuario/.cloudflared/cert.pem). Este certificado se usa para autenticar tu agente cloudflared con Cloudflare.


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

En este paso crearemos el túnel y lo configuraremos.

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-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). Asegúrate de guardar este UUID y la ruta al archivo, los necesitaremos en el siguiente paso.

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

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

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

sudo nano /etc/cloudflared/config.yml

Ejemplo de contenido del archivo config.yml:

tunnel: <UUID de tu túnel>
credentials-file: /root/.cloudflared/<UUID de tu túnel>.json # Indica la ruta completa al archivo JSON del Paso 4

ingress:
  - hostname: your-domain.com # Reemplázalo 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](https://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

Explicaciones sobre config.yml:

  • tunnel: Este es el UUID que obtuviste en el paso anterior.
  • credentials-file: Ruta completa al archivo JSON que contiene las credenciales del túnel. Verifica dos veces y asegúrate de indicar la ruta correcta a ese archivo en tu sistema.
  • ingress: Es un array de reglas que determinan cómo Cloudflare enrutará las peticiones entrantes. Las reglas se procesan de arriba hacia abajo.
    • hostname: Nombre de dominio (o subdominio) al que aplica la regla.
    • service: Dirección de tu servidor web local y el puerto en el que escucha. Por ejemplo, si tu servidor escucha en el puerto 3000, cambia a http://localhost:3000.
    • service: http_status:404: Esta es la última regla obligatoria en la lista. Asegura que cualquier petición que no coincida con las reglas anteriores hostname reciba un error HTTP 404 (Not Found), previniendo posibles 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, es necesario crear un registro DNS especial de tipo CNAME.

  1. Ve a la sección “DNS” de tu dominio en el panel de control de Cloudflare.
  2. Haz clic en “Add record” (Agregar registro).
  3. Selecciona el tipo de registro: CNAME.
  4. En el campo “Name” 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” introduce: <UUID de tu túnel>.cfargotunnel.com.
    • Importante: Sustituye <UUID de tu túnel> por el UUID real obtenido en el Paso 4.
  6. Asegúrate de que el icono “Proxy status” (Estado del proxy) esté naranja (Full Proxy) – esto indica 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: Arranque y verificación del túnel

Los últimos pasos 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 distribuciones Linux modernas). Esto garantizará que se inicie automáticamente al arrancar y que funcione de forma estable en segundo plano.

En el terminal ejecuta:

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.

Después de 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 tras cambios en config.yml)

Paso 8: ¡Comprobamos que funciona!

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

Abre el navegador y escribe tu nombre de dominio (por ejemplo, your-domain.com). Si todos los pasos se han realizado 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 ejecución y escuchando en el puerto especificado en config.yml. Por ejemplo, si usas Python para pruebas rápidas: python3 -m http.server 8000 y ajusta service: http://localhost:8000 en el config.
  • Seguridad: Cloudflare Tunnel mejora mucho la seguridad al evitar abrir puertos, pero siempre vigila la seguridad del propio servidor Linux.
  • Monitorización: Cloudflare ofrece estadísticas básicas de tráfico. Para monitorizar más detalladamente tu servidor local, usa las 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 de tu equipo doméstico. La CDN de Cloudflare ayudará a cachear contenido estático, pero las peticiones dinámicas pasarán por el túnel.

Espero que esta guía detallada te haya ayudado a entender el proceso para publicar tu propio sitio desde un equipo Linux doméstico mediante Cloudflare Tunnel. Esto abre muchas posibilidades para proyectos personales, pruebas e incluso pequeños sitios comerciales.

Si tienes preguntas, ¡hazlas en los comentarios!

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas