bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Configuración de Cloudflare Tunnel (Ar

calendar_month Jun 19, 2026 schedule 22 min de lectura visibility 53 vistas
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Configuración de Cloudflare Tunnel (Argo Tunnel) en un VPS: acceso seguro a servicios locales

TL;DR

En esta guía detallada, configuraremos paso a paso Cloudflare Tunnel (anteriormente conocido como Argo Tunnel) en su VPS para proporcionar acceso seguro y privado a sus servicios internos (servidores web, SSH, bases de datos) sin necesidad de abrir puertos en el firewall o tener una dirección IP pública. Aprenderá a instalar y configurar el demonio cloudflared, crear túneles y enrutar el tráfico a través de la red global segura de Cloudflare, mejorando significativamente la seguridad y la facilidad de gestión del acceso a sus aplicaciones.

  • Acceso seguro: Sus servicios son accesibles a través de Cloudflare, no directamente desde internet, ocultando su dirección IP real y protegiéndolos de ataques directos.
  • Sin puertos abiertos: Todas las conexiones son salientes desde su VPS hacia Cloudflare, lo que elimina la necesidad de reenviar puertos en el firewall.
  • Configuración DNS sencilla: Cloudflare gestiona automáticamente los registros DNS para su túnel.
  • Integración con Zero Trust: Posibilidad de integración futura con Cloudflare Zero Trust para un control de acceso granular.
  • Versiones actuales: Todas las instrucciones se basan en las versiones actuales del software para 2026, incluyendo Ubuntu 24.04 LTS y las últimas versiones de cloudflared.

¿Qué configuramos y por qué?

En esta guía, configuraremos Cloudflare Tunnel, una potente herramienta de Cloudflare que permite conectar de forma segura redes y servicios locales o privados a la red global de Cloudflare. Su objetivo principal es hacer que sus servicios internos sean accesibles desde internet sin abrir ningún puerto en su VPS o firewall local. Esto aumenta radicalmente la seguridad, ya que su servidor no está expuesto a ataques directos desde el exterior.

Imagine la situación: tiene un servidor web (Nginx, Apache), un servidor de Minecraft, GitLab, Mattermost o cualquier otro servicio ejecutándose en su VPS. Normalmente, para hacerlo accesible desde internet, tendría que abrir los puertos correspondientes (por ejemplo, 80 y 443 para HTTP/S, 22 para SSH) en el firewall de su servidor. Esto crea posibles puntos de entrada para atacantes y requiere monitoreo y protección constantes.

Cloudflare Tunnel cambia este enfoque. En lugar de abrir puertos entrantes, instala un pequeño demonio llamado cloudflared en su VPS. Este demonio establece una conexión saliente y cifrada con el nodo de Cloudflare más cercano. Todo el tráfico a su servicio pasa a través de la red global de Cloudflare y luego a través de este túnel seguro hasta su servidor. Su VPS nunca revela su dirección IP pública, y todas las conexiones entrantes son bloqueadas por el firewall. Esto significa que obtiene todos los beneficios de Cloudflare (protección DDoS, almacenamiento en caché, WAF) para sus servicios, incluso si no tienen una IP pública.

En resumen, el lector obtendrá:

  • Mayor seguridad: Su servidor está protegido contra ataques DDoS directos y escaneo de puertos.
  • Facilidad de gestión: No es necesario configurar reglas de firewall complejas para cada servicio.
  • Ocultamiento de la dirección IP: La dirección IP real de su VPS permanece privada.
  • Fiabilidad y rendimiento: Uso de la red global de Cloudflare para el enrutamiento del tráfico.
  • Flexibilidad: Posibilidad de tunelizar prácticamente cualquier servicio TCP.

Alternativas y por qué autoalojado en un VPS

Existen varias formas de hacer que los servicios sean accesibles desde internet:

  • Proxy inverso tradicional (Nginx/Apache) con puertos abiertos: El método más común. Requiere una IP pública, configuración de DNS, emisión de certificados SSL (Certbot) y una configuración cuidadosa del firewall. Menos seguro, ya que los puertos están abiertos al exterior.
  • Servidor VPN (OpenVPN, WireGuard): Crea un túnel cifrado, pero requiere que cada usuario se conecte a la VPN, lo que no siempre es conveniente para servicios públicos o acceso mediante enlace. Adecuado para el acceso de un equipo o uso personal, pero no para una audiencia amplia.
  • Servicios gestionados en la nube (AWS Application Load Balancer, Google Cloud Load Balancer): Balanceadores de carga gestionados en la nube que ofrecen funcionalidades similares, pero suelen ser más caros y están vinculados a un proveedor de nube específico. Requieren un conocimiento profundo de las plataformas en la nube.
  • Ngrok o servicios similares: Ofrecen una funcionalidad de tunelización similar, pero a menudo tienen limitaciones de ancho de banda, tiempo de actividad o características en los planes gratuitos, y también pueden generar preocupaciones sobre la privacidad, ya que el tráfico pasa a través de un servicio de terceros.

La elección de una solución autoalojada en un VPS con Cloudflare Tunnel está justificada si usted:

  • Desea tener control total sobre su infraestructura y datos.
  • Busca una solución económica en comparación con los servicios gestionados en la nube.
  • Valora la seguridad y desea ocultar su IP real.
  • Ya utiliza Cloudflare para sus dominios y desea integrar nuevos servicios.
  • Planea utilizar Cloudflare Zero Trust para un control de acceso más avanzado.

La configuración en un VPS le brinda flexibilidad e independencia, y Cloudflare Tunnel añade un nivel de seguridad y simplicidad difícil de lograr con métodos tradicionales.

¿Qué configuración de VPS se necesita para esta tarea?

Cloudflare Tunnel (el demonio cloudflared) es una aplicación bastante ligera por sí misma. Los requisitos principales de recursos del VPS no dependerán del túnel, sino de los servicios que planee ejecutar detrás del túnel.

Requisitos mínimos para cloudflared (sin considerar los servicios tunelizados):

  • CPU: 1 vCPU (incluso el más básico, por ejemplo, Intel Xeon E3 o E5).
  • RAM: 512 MB – 1 GB (cloudflared consume mínimamente, pero el SO y otros procesos del sistema necesitan memoria).
  • Disco: 10 GB SSD (para el sistema operativo, registros y cloudflared mismo; HDD también funcionaría, pero SSD siempre es preferible para el rendimiento).
  • Red: Puerto de 100 Mbps (mínimo, pero cuanto mayor sea el ancho de banda, mejor). Cloudflare Tunnel utiliza conexiones salientes, por lo que una conexión de red estable y rápida a internet es crítica.

Si planea tunelizar servicios web ligeros, bases de datos pequeñas, acceso SSH o un servidor de Minecraft para algunos amigos, los requisitos mínimos mencionados serán suficientes para cloudflared y el SO. Sin embargo, si detrás del túnel se ejecutarán aplicaciones que consumen muchos recursos, como GitLab para un equipo grande, Mattermost para cientos de usuarios, un servidor web de alta carga o un nodo de Bitcoin/Ethereum, los requisitos de CPU, RAM y disco aumentarán significativamente.

Plan de VPS específico para la tarea (actualizado a 2026):

Para la mayoría de los escenarios, como configurar GitLab para un equipo pequeño (hasta 10-15 usuarios), Mattermost, un servidor de Minecraft para 10-20 jugadores o varios sitios web sencillos, se recomienda la siguiente configuración de VPS:

  • CPU: 2-4 vCPU (generaciones modernas, por ejemplo, Intel Xeon Scalable).
  • RAM: 4-8 GB RAM.
  • Disco: 80-200 GB NVMe SSD (para alto rendimiento de lectura/escritura, especialmente importante para bases de datos y sistemas de control de versiones).
  • Red: Puerto de 1 Gbps con volumen de tráfico ilimitado o grande (a partir de 1 TB al mes).

Se puede adquirir un VPS con las características indicadas para el funcionamiento cómodo de la mayoría de los servicios descritos.

Cuándo se necesita un servidor dedicado y no un VPS:

Un servidor dedicado se vuelve necesario cuando:

  • Alta carga: Se requiere el procesamiento de miles de solicitudes simultáneas, la ejecución de bases de datos de alto rendimiento o servidores de juegos muy activos.
  • Hardware específico: Se necesitan GPU para aprendizaje automático, volúmenes de almacenamiento muy grandes (terabytes) o arreglos RAID para tolerancia a fallos.
  • Rendimiento garantizado: Un VPS comparte recursos con otros usuarios en el mismo servidor físico; un servidor dedicado le proporciona todos los recursos de la máquina sin compartirlos.
  • Requisitos estrictos de seguridad/aislamiento: Para sistemas críticos donde el aislamiento completo de otros usuarios es una prioridad.
  • Gran cantidad de servicios: Si planea alojar decenas de servicios diferentes, cada uno con sus propios requisitos.

Para ejecutar un nodo de Bitcoin/Ethereum, que requiere un espacio en disco significativo (cientos de gigabytes o más) y una alta velocidad de lectura/escritura, así como un funcionamiento continuo, a menudo es preferible utilizar un servidor dedicado adecuado, especialmente si planea participar en staking o minería.

Ubicación: qué influencia tiene

La elección de la ubicación del VPS juega un papel importante:

  • Latencia: Cuanto más cerca esté su VPS de su audiencia objetivo o de usted, menor será la latencia. Para aplicaciones interactivas (servidores de juegos, videoconferencias) esto es crítico. Para sitios web, Cloudflare distribuirá el tráfico a través de su red global, pero la conexión inicial a su servidor seguirá teniendo latencia.
  • Jurisdicción: Las leyes de datos y privacidad varían en diferentes países. Elija una ubicación que cumpla con sus requisitos legales.
  • Disponibilidad de nodos de Cloudflare: Cloudflare tiene nodos en todo el mundo. Elija una ubicación con un buen peering con el nodo de Cloudflare más cercano para un rendimiento óptimo del túnel.

En general, elija una ubicación que esté geográficamente cerca de la mayoría de sus usuarios o de usted, si es el único usuario.

Preparación del servidor

Preparación del servidor

Antes de instalar Cloudflare Tunnel, es necesario realizar una configuración básica de su VPS. Utilizaremos Ubuntu 24.04 LTS, como sistema operativo actual y estable para el año 2026. Estos pasos mejorarán la seguridad y la facilidad de uso de su servidor.

1. Conexión por SSH

Conéctese a su nuevo VPS como usuario root o como el usuario proporcionado por el proveedor de alojamiento, utilizando SSH.


ssh root@ВАШ_IP_АДРЕС

Reemplace ВАШ_IP_АДРЕС con la IP real de su servidor.

2. Actualización del sistema

Primero, actualice la lista de paquetes y el sistema a las últimas versiones. Esto asegurará que tenga todas las correcciones de seguridad y estabilidad más recientes.


sudo apt update -y && sudo apt upgrade -y

Actualizamos la lista de paquetes e instalamos todas las actualizaciones disponibles.

3. Creación de un nuevo usuario con permisos sudo (recomendado)

Trabajar como usuario root no es seguro. Cree un nuevo usuario y concédale permisos sudo.


adduser ваш_пользователь

Creamos un nuevo usuario. Ingrese la contraseña y la información del usuario.


usermod -aG sudo ваш_пользователь

Agregamos al usuario al grupo sudo para que pueda ejecutar comandos con privilegios de administrador.


su - ваш_пользователь

Cambiamos al nuevo usuario. Ahora todos los comandos posteriores se ejecutarán en su nombre.

4. Configuración de claves SSH para el nuevo usuario (opcional, pero altamente recomendado)

El uso de claves SSH en lugar de contraseñas mejora significativamente la seguridad.


mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

Creamos el directorio .ssh, establecemos los permisos correctos y abrimos el archivo authorized_keys.

Pegue su clave SSH pública (generada en su máquina local) en este archivo y guarde (Ctrl+X, Y, Enter).


chmod 600 ~/.ssh/authorized_keys

Establecemos los permisos correctos para el archivo authorized_keys.

Después de esto, puede desconectarse y volver a conectarse por SSH, utilizando el nuevo usuario y la clave SSH.


exit && exit
ssh ваш_пользователь@ВАШ_IP_АДРЕС

Salimos de la sesión actual y nos conectamos como el nuevo usuario por SSH.

5. Configuración del firewall (UFW)

Ubuntu viene con UFW (Uncomplicated Firewall). Lo configuraremos para permitir solo las conexiones necesarias. Para Cloudflare Tunnel, no necesitamos abrir puertos entrantes para los servicios tunelizados, pero el acceso SSH debe estar permitido.


sudo apt install ufw -y

Instalamos UFW, si aún no está instalado.


sudo ufw default deny incoming
sudo ufw default allow outgoing

Denegamos todas las conexiones entrantes por defecto y permitimos todas las salientes (cloudflared necesita tráfico saliente).


sudo ufw allow ssh

Permitimos las conexiones entrantes por SSH (puerto 22). Si utiliza un puerto diferente para SSH, especifíquelo: sudo ufw allow 1234/tcp.


sudo ufw enable

Habilitamos el firewall. Confirme la acción presionando y.


sudo ufw status verbose

Verificamos el estado del firewall.

6. Instalación de Fail2Ban (recomendado)

Fail2Ban ayuda a proteger su servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se producen intentos de inicio de sesión fallidos.


sudo apt install fail2ban -y

Instalamos Fail2Ban.


sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Habilitamos e iniciamos el servicio Fail2Ban.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Creamos una copia local de la configuración para realizar cambios.

Ahora su servidor está listo para la instalación de Cloudflare Tunnel.

Instalación de software — paso a paso

Ahora que su VPS está preparado, podemos proceder con la instalación y configuración del demonio de Cloudflare Tunnel, llamado cloudflared. Utilizaremos el repositorio oficial de Cloudflare para Ubuntu, lo que garantizará una fácil actualización en el futuro.

Para el año 2026, Ubuntu 24.04 LTS será un sistema estable y compatible, y cloudflared estará en desarrollo activo. Las instrucciones utilizarán métodos actualizados.

1. Adición del repositorio de Cloudflare

Primero, es necesario agregar el repositorio APT oficial de Cloudflare para que el sistema pueda encontrar e instalar el paquete cloudflared.


sudo mkdir -p --mode=0755 /usr/share/keyrings

Creamos el directorio para las claves GPG, si no existe.


curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

Descargamos la clave GPG de Cloudflare y la agregamos a los llaveros de claves del sistema.


echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared jammy main' | sudo tee /etc/apt/sources.list.d/cloudflared.list

Agregamos el repositorio de Cloudflare a la lista de fuentes de APT. Tenga en cuenta que Cloudflare a menudo utiliza nombres en clave de versiones LTS anteriores de Ubuntu (por ejemplo, jammy para 22.04) para la compatibilidad con nuevas versiones, como 24.04.


sudo apt update -y

Actualizamos la lista de paquetes para que APT reconozca el nuevo repositorio.

2. Instalación de cloudflared

Ahora que el repositorio ha sido añadido, podemos instalar el paquete cloudflared.


sudo apt install cloudflared -y

Instalamos el demonio de Cloudflare Tunnel.


cloudflared --version

Verificamos la versión instalada de cloudflared. Asegúrese de que sea la versión actual (para 2026 será algo como 2026.x.x).

3. Autenticación de cloudflared con su cuenta de Cloudflare

Para que cloudflared pueda crear y gestionar túneles, debe autenticarse con su cuenta de Cloudflare. Este paso se realiza una sola vez.


cloudflared login

Ejecutamos el comando para la autenticación. Mostrará una URL en la consola.

Copie esta URL y ábrala en su navegador web. Se le pedirá que inicie sesión en su cuenta de Cloudflare y seleccione el dominio que desea utilizar para el túnel. Después de seleccionar el dominio, Cloudflare generará un certificado cert.pem y lo descargará automáticamente a su VPS en el directorio ~/.cloudflared/ (o /etc/cloudflared/, si se ejecuta como servicio).

Si ejecuta el comando como usuario ваш_пользователь, el certificado estará en /home/ваш_пользователь/.cloudflared/cert.pem. Si cambió a root o usó sudo, podría estar en /root/.cloudflared/cert.pem. Asegúrese de saber dónde se encuentra el archivo cert.pem.

4. Creación del túnel

Después de la autenticación, puede crear el túnel. Cada túnel debe tener un nombre único.


cloudflared tunnel create мой-первый-туннель

Creamos un nuevo túnel con el nombre "mi-primer-túnel".

Este comando mostrará un objeto JSON que contiene el id del túnel y la ruta al archivo de credenciales (credentials-file), por ejemplo: /home/ваш_пользователь/.cloudflared/ТУННЕЛЬ_ID.json. Este archivo contiene las credenciales únicas para su túnel y es muy importante. ¡Guárdelo de forma segura!

5. Configuración del registro DNS para el túnel

Para que el tráfico de internet pueda llegar a su túnel, es necesario crear un registro DNS en Cloudflare que apunte a su túnel.


cloudflared tunnel route dns мой-первый-туннель имя-хоста.ваш-домен.com

Enrutamos el registro DNS имя-хоста.ваш-домен.com a través de su túnel. Reemplace имя-хоста.ваш-домен.com con el nombre de subdominio deseado que apuntará a su servicio.

Por ejemplo, si su dominio es example.com y desea acceder a un servidor web en my-app.example.com, el comando será: cloudflared tunnel route dns mi-primer-túnel my-app.example.com. Cloudflare creará automáticamente un registro CNAME en su DNS que apuntará a su túnel.

Configuración

Después de instalar y crear el túnel, es necesario configurar cloudflared para que sepa qué servicios locales debe tunelizar. Esto se hace a través del archivo de configuración config.yml. También configuraremos cloudflared como un servicio del sistema para que se inicie automáticamente al arrancar el servidor.

1. Creación del archivo de configuración config.yml

El archivo de configuración config.yml define las reglas de enrutamiento para su túnel. Debe estar en el mismo directorio que el archivo cert.pem y el archivo .json con las credenciales del túnel (normalmente ~/.cloudflared/ o /etc/cloudflared/). Para mayor comodidad y uniformidad, se recomienda usar /etc/cloudflared/.

Si creó el túnel como un usuario normal, los archivos cert.pem y ТУННЕЛЬ_ID.json se encuentran en /home/ваш_пользователь/.cloudflared/. Muévalos a /etc/cloudflared/ y establezca los permisos correctos.


sudo mkdir -p /etc/cloudflared
sudo mv /home/ваш_пользователь/.cloudflared/cert.pem /etc/cloudflared/
sudo mv /home/ваш_пользователь/.cloudflared/ТУННЕЛЬ_ID.json /etc/cloudflared/

Creamos el directorio y movemos los archivos. Reemplace ТУННЕЛЬ_ID.json con el nombre real de su archivo.


sudo chown -R root:root /etc/cloudflared
sudo chmod 0700 /etc/cloudflared
sudo chmod 0600 /etc/cloudflared/

Establecemos los permisos de acceso correctos para la seguridad.

Ahora crearemos el archivo config.yml en /etc/cloudflared/.


sudo nano /etc/cloudflared/config.yml

Aquí hay un ejemplo del contenido de config.yml para tunelizar un servidor web (Nginx/Apache) que se ejecuta en el puerto 80 y acceso SSH:


# ID único de su túnel
tunnel: ТУННЕЛЬ_ID
# Ruta al archivo de credenciales del túnel
credentials-file: /etc/cloudflared/ТУННЕЛЬ_ID.json

# Lista de reglas de entrada (ingress) para el enrutamiento del tráfico
ingress:
  # Regla para el servidor web (HTTP)
  - hostname: my-app.ваш-домен.com
    service: http://localhost:80
    # Deshabilitar la verificación TLS para el servicio local si no usa HTTPS
    # noTLSVerify: true 
    # Si su servicio local ya usa HTTPS (por ejemplo, a través de Caddy/Nginx con Let's Encrypt),
    # use service: https://localhost:443 y asegúrese de que el certificado sea válido o agregue noTLSVerify: true
    # Si su servicio local usa HTTP, Cloudflare proporcionará HTTPS en su edge.

  # Regla para acceso SSH
  - hostname: ssh.ваш-домен.com
    service: ssh://localhost:22
    # Si desea usar Cloudflare Access para SSH, aquí habrá configuraciones adicionales.

  # Regla predeterminada (obligatoriamente debe ser la última)
  # Envía todo el tráfico restante a este servicio o devuelve un error
  - service: http_status:404

Reemplace ТУННЕЛЬ_ID con el ID real de su túnel (se puede encontrar en el nombre del archivo .json o en la salida del comando cloudflared tunnel create). Reemplace ваш-домен.com con su dominio real. Si está tunelizando otros servicios, agréguelos a la lista ingress.

Notas importantes sobre las reglas de ingress:

  • El orden importa: Las reglas se procesan de arriba a abajo. Se aplica la primera regla que coincide.
  • service: http://localhost:80: Indica que cloudflared proxyará las solicitudes al servidor HTTP local en el puerto 80. Cloudflare maneja automáticamente HTTPS en su borde, por lo que no necesita HTTPS en el servidor local si no desea cifrado de extremo a extremo.
  • service: ssh://localhost:22: Proxy el tráfico SSH. Para acceder a SSH a través de Cloudflare Tunnel, necesitará una configuración especial del cliente SSH o el uso de Cloudflare Access.
  • service: http_status:404: Esta es una regla "catch-all" obligatoria que debe estar al final de la lista. Devuelve un 404 para cualquier tráfico que no haya coincidido con las reglas anteriores.

2. Inicio de cloudflared como servicio del sistema

Para que cloudflared se inicie automáticamente al arrancar el servidor y funcione en segundo plano, lo configuraremos como un servicio systemd.


sudo cloudflared --config /etc/cloudflared/config.yml service install

Este comando instala cloudflared como un servicio systemd, utilizando su archivo de configuración. Creará el archivo /etc/systemd/system/cloudflared.service.


sudo systemctl start cloudflared

Iniciamos el servicio cloudflared.


sudo systemctl enable cloudflared

Habilitamos el inicio automático del servicio al arrancar el sistema.


sudo systemctl status cloudflared

Verificamos el estado del servicio. Debe estar activo (active (running)).


journalctl -u cloudflared --since "10 minutes ago"

Revisamos los registros del servicio cloudflared de los últimos 10 minutos para asegurarnos de que no haya errores.

3. Verificación de la funcionalidad

Después de iniciar el servicio, el túnel debería estar activo. Verifiquemos su funcionamiento:

  • A través del navegador: Abra en su navegador la dirección my-app.ваш-домен.com (o cualquier otra que haya configurado). Debería ver su servidor web local.
  • A través de curl: Ejecute el comando curl desde su computadora local.

curl https://my-app.ваш-домен.com

Debería recibir el código HTML de su servidor web.

  • Verificación de acceso SSH: Si ha configurado la tunelización SSH, intente conectarse. Cloudflare Tunnel ofrece varias formas de acceder a SSH:
    • Cloudflare Access (Zero Trust): La forma recomendada y más segura, que requiere configuración adicional en el panel de Cloudflare.
    • cloudflared CLI: Puede usar cloudflared access ssh --hostname ssh.ваш-домен.com desde su computadora local, donde también debe tener instalado cloudflared.

Asegúrese de que los registros DNS para sus nombres de host se hayan creado correctamente en el panel de Cloudflare. Deben ser registros CNAME que apunten a ТУННЕЛЬ_ID.cfargotunnel.com.

4. TLS/HTTPS a través de Cloudflare

Una de las ventajas clave de Cloudflare Tunnel es la gestión automática de TLS/HTTPS. Cuando el tráfico pasa por Cloudflare, se cifra entre el cliente y Cloudflare (Edge TLS) y entre Cloudflare y su servidor (Origin TLS). Para los túneles, Cloudflare proporciona cifrado de extremo a extremo.

  • Si su servicio local funciona con HTTP (por ejemplo, http://localhost:80), Cloudflare proporcionará automáticamente HTTPS en su borde, y los usuarios verán una conexión segura.
  • Si su servicio local ya está configurado para HTTPS (por ejemplo, a través de Caddy o Nginx con Certbot), puede especificar service: https://localhost:443. En este caso, asegúrese de que su certificado local sea válido, o agregue noTLSVerify: true a la configuración del túnel para que cloudflared no verifique el certificado del servidor local (esto reduce la seguridad del cifrado de extremo a extremo, pero puede ser útil para certificados autofirmados).

En la mayoría de los casos, para los servicios web, es suficiente configurar el servicio local en HTTP, y Cloudflare se encargará de HTTPS.

Copias de seguridad y mantenimiento

La configuración de Cloudflare Tunnel simplifica enormemente el acceso a los servicios, pero no elimina la necesidad de realizar copias de seguridad y mantenimiento regulares del servidor. Es importante garantizar la seguridad de los datos y la actualización del software.

1. Qué respaldar

Al usar Cloudflare Tunnel, lo principal que debe respaldar es:

  • Archivos de configuración de cloudflared:
    • /etc/cloudflared/cert.pem: Certificado de autenticación de Cloudflare.
    • /etc/cloudflared/TUNNEL_ID.json: Archivo de credenciales del túnel.
    • /etc/cloudflared/config.yml: Configuración del túnel (reglas de ingreso).

    Estos archivos son críticos para el funcionamiento del túnel. En caso de pérdida, deberán crearse de nuevo.

  • Datos de los servicios tunelizados:
    • Bases de datos: (PostgreSQL, MySQL, MongoDB, etc.) – los datos más importantes.
    • Archivos de configuración de aplicaciones: (por ejemplo, /etc/nginx/nginx.conf, /etc/gitlab/gitlab.rb, /opt/mattermost/config/config.json).
    • Datos/archivos de usuario: (por ejemplo, para GitLab: repositorios, para Mattermost: adjuntos, para Minecraft: mundos).
    • Configuraciones del sistema: (por ejemplo, /etc/ssh/sshd_config, configuraciones del firewall UFW).

2. Script simple de copia de seguridad automática

Crearemos un script simple que archivará archivos importantes y los enviará a una ubicación segura. Por ejemplo, usaremos tar para archivar y rsync para copiar a otro servidor o a un almacenamiento en la nube (por ejemplo, almacenamiento compatible con S3).


sudo nano /usr/local/bin/backup_cloudflared.sh

Contenido del script:


#!/bin/bash

# Directorio para el almacenamiento temporal de copias de seguridad
BACKUP_DIR="/var/backups/cloudflared"
# Nombre del archivo de copia de seguridad
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/cloudflared_config_${TIMESTAMP}.tar.gz"

# Directorio con las configuraciones de cloudflared
CLOUDFLARED_CONFIGS="/etc/cloudflared"

# Creamos el directorio para las copias de seguridad, si no existe
mkdir -p "${BACKUP_DIR}"

# Creamos un archivo con las configuraciones de cloudflared
echo "Creando copia de seguridad de los archivos de configuración de cloudflared..."
sudo tar -czf "${BACKUP_FILE}" "${CLOUDFLARED_CONFIGS}"
if [ $? -eq 0 ]; then
    echo "Copia de seguridad creada: ${BACKUP_FILE}"
else
    echo "Error al crear la copia de seguridad de cloudflared."
    exit 1
fi

# --- Agregue aquí comandos para la copia de seguridad de sus servicios ---
# Ejemplo para PostgreSQL:
# pg_dumpall -U postgres | gzip > "${BACKUP_DIR}/postgresql_all_dbs_${TIMESTAMP}.sql.gz"

# Ejemplo para configuraciones de Nginx:
# sudo tar -czf "${BACKUP_DIR}/nginx_config_${TIMESTAMP}.tar.gz" /etc/nginx

# --- Copiando la copia de seguridad a un servidor remoto o a S3 ---
# Para Rsync a otro VPS (será necesario configurar claves SSH sin contraseña):
# rsync -avz "${BACKUP_FILE}" user@remote_server:/path/to/backups/

# Para S3 (será necesario instalar awscli/s3cmd y configurar las credenciales):
# aws s3 cp "${BACKUP_FILE}" s3://your-s3-bucket/cloudflared/

# Eliminando copias de seguridad antiguas (por ejemplo, de más de 7 días)
find "${BACKUP_DIR}" -type f -name "*.tar.gz" -mtime +7 -delete
echo "Copias de seguridad antiguas eliminadas."

echo "Copia de seguridad completada."

Haga el script ejecutable:


sudo chmod +x /usr/local/bin/backup_cloudflared.sh

Configure la ejecución del script usando cron. Por ejemplo, diariamente a las 3:00 de la mañana:


sudo crontab -e

Agregue la siguiente línea al final del archivo:


0 3 * * * /usr/local/bin/backup_cloudflared.sh >> /var/log/cloudflared_backup.log 2>&1

Esto ejecutará el script cada día a las 3 de la mañana y registrará la salida en un archivo de registro.

3. Dónde almacenar las copias de seguridad

  • Almacenamiento externo compatible con S3: Recomendado. Pueden ser AWS S3, Backblaze B2, DigitalOcean Spaces o cualquier otro almacenamiento de objetos. Esto proporciona alta disponibilidad y tolerancia a fallos, así como una separación geográfica de las copias de seguridad del servidor principal.
  • VPS separado: Puede usar un segundo VPS, menos potente, exclusivamente para almacenar copias de seguridad. Esto también proporciona separación, pero requiere la gestión de dos servidores.
  • Ordenador local: Para proyectos muy pequeños, puede copiar las copias de seguridad a su ordenador local a través de scp o rsync.

¡Nunca almacene las copias de seguridad en el mismo servidor que los datos originales! En caso de fallo de hardware o compromiso del servidor, perderá tanto los datos como las copias de seguridad.

4. Actualizaciones: rolling vs maintenance window

Las actualizaciones regulares de software son críticas para la seguridad y la estabilidad. Para Cloudflare Tunnel y el SO:

  • Actualizaciones del SO (Ubuntu):
    • Rolling updates: Para servicios no críticos, se pueden configurar actualizaciones de seguridad automáticas. Sin embargo, para servidores de producción, se recomienda realizar las actualizaciones manualmente o dentro de una ventana de mantenimiento programada.
    • Maintenance window: Planifique ventanas de mantenimiento regulares (por ejemplo, una vez al mes) para una actualización completa del sistema (sudo apt update && sudo apt upgrade -y) y un reinicio, si es necesario. Esto permite controlar el proceso y minimizar el riesgo de fallos.
  • Actualizaciones de cloudflared:
    • cloudflared se actualiza a través del mismo repositorio APT. Puede incluirlo en sus actualizaciones regulares del SO. Cloudflare lanza actualizaciones con bastante frecuencia, por lo que es importante mantener la versión actualizada.
    • Después de actualizar cloudflared, generalmente se requiere reiniciar el servicio: sudo systemctl restart cloudflared.
  • Actualizaciones de aplicaciones tunelizadas:
    • Actualice sus aplicaciones (GitLab, Mattermost, Nginx, etc.) de acuerdo con las recomendaciones de sus desarrolladores, respetando las ventanas de mantenimiento.

Siempre realice una copia de seguridad antes de actualizaciones importantes o cambios de configuración.

Solución de problemas + Preguntas frecuentes

En esta sección, abordaremos problemas típicos que pueden surgir al configurar Cloudflare Tunnel y responderemos a preguntas frecuentes.

No se puede conectar al servicio a través del dominio de Cloudflare

Problema: Ha configurado el túnel, pero al intentar acceder a my-app.su-dominio.com en el navegador, ve un error (por ejemplo, 502 Bad Gateway, 503 Service Unavailable, o "Origin connection failed").

Qué verificar:

  1. Estado del servicio cloudflared:
    sudo systemctl status cloudflared
    Asegúrese de que el servicio esté activo y en funcionamiento.
  2. Registros de cloudflared:
    journalctl -u cloudflared --since "5 minutes ago"
    Busque errores relacionados con la conexión al servicio local (origin connection failed, dial tcp).
  3. Disponibilidad del servicio local: Asegúrese de que su servicio (por ejemplo, Nginx en el puerto 80) realmente esté funcionando en el VPS y sea accesible desde localhost. Intente
    curl http://localhost:80
    en el propio VPS. Si el servicio no responde, el problema está en él, no en el túnel.
  4. Configuración de config.yml: Verifique la exactitud de hostname y service en el archivo /etc/cloudflared/config.yml. Asegúrese de que el puerto esté especificado correctamente (por ejemplo, http://localhost:80).
  5. Registro DNS en Cloudflare: Asegúrese de que en el panel de Cloudflare para su dominio my-app.su-dominio.com exista un registro CNAME que apunte a TUNNEL_ID.cfargotunnel.com.
  6. Archivos de credenciales: Verifique la existencia y la corrección de las rutas a cert.pem y TUNNEL_ID.json en config.yml.

Cómo solucionar: Corrija los errores encontrados en los registros o la configuración. Reinicie cloudflared:

sudo systemctl restart cloudflared
.

cloudflared login no funciona o no carga cert.pem

Problema: Después de ejecutar cloudflared login y navegar a la URL en el navegador, el archivo cert.pem no aparece en ~/.cloudflared/ o /etc/cloudflared/.

Qué verificar:

  1. Conexión a internet: Asegúrese de que su VPS tenga acceso a internet (ping google.com).
  2. Permisos de acceso: Asegúrese de que el usuario bajo el cual ejecuta cloudflared login tenga permisos de escritura en ~/.cloudflared/.
  3. Firewall: Asegúrese de que las conexiones salientes estén permitidas (sudo ufw status debe mostrar Status: active y Default: deny (incoming), allow (outgoing)).
  4. Selección de dominio en el navegador: Asegúrese de haber seleccionado correctamente el dominio en la interfaz web de Cloudflare después de iniciar sesión.

Cómo solucionar: Verifique los permisos, la conexión de red. Intente eliminar el directorio ~/.cloudflared/ y repita cloudflared login. Asegúrese de iniciar sesión en la cuenta correcta de Cloudflare y de seleccionar el dominio administrado por esa cuenta.

¿Qué configuración mínima de VPS es adecuada?

Para Cloudflare Tunnel en sí y el sistema operativo (por ejemplo, Ubuntu 24.04 LTS), la configuración mínima puede ser muy modesta: 1 vCPU, 512 MB de RAM, 10-20 GB de SSD y un canal de red de 100 Mbps. Esto es suficiente para que cloudflared funcione y para tunelizar uno o dos servicios muy ligeros. Sin embargo, si planea ejecutar algo más intensivo en recursos, como un servidor web con carga moderada o un pequeño servidor de juegos, necesitará al menos 2 vCPU, 2-4 GB de RAM y más de 50 GB de SSD para un funcionamiento cómodo de la aplicación tunelizada.

¿Qué elegir: VPS o dedicado para esta tarea?

La elección entre un VPS y un servidor dedicado depende de la escala de sus necesidades. Para la mayoría de los usuarios individuales, equipos pequeños y proyectos ligeros/medianos (un sitio web personal, Mattermost para 10-20 personas, un servidor de Minecraft para amigos), un VPS será la opción óptima y económica. Proporciona suficiente potencia y flexibilidad. Un servidor dedicado es necesario cuando se requiere el máximo rendimiento, recursos garantizados, un enorme espacio en disco (por ejemplo, para un nodo de blockchain con archivo completo), un ancho de banda muy alto o hardware específico (GPU). Cloudflare Tunnel funciona perfectamente en ambos tipos de servidores, pero los requisitos del hardware base no están determinados por el túnel, sino por los servicios que este atiende.

¿Cómo actualizar cloudflared?

Dado que cloudflared se instaló desde el repositorio APT oficial de Cloudflare, se actualiza como cualquier otro programa del sistema en Ubuntu:


sudo apt update -y && sudo apt upgrade -y
sudo systemctl restart cloudflared

El comando apt upgrade actualizará cloudflared a la última versión disponible, y luego será necesario reiniciar el servicio para que los cambios surtan efecto.

¿Cómo tunelizar SSH sin Cloudflare Access?

Si no desea usar Cloudflare Access (Zero Trust), aún puede tunelizar SSH. Para ello, cloudflared también debe estar instalado en su ordenador local. Puede usarlo para proxy la conexión SSH:


cloudflared access ssh --hostname ssh.su-dominio.com

Este comando creará un túnel temporal desde su cloudflared local hacia Cloudflare Edge, y luego a través de su Cloudflare Tunnel en el VPS hacia su servidor SSH. Esto requiere autenticación en Cloudflare desde la máquina local. Para un uso más conveniente, puede configurar el cliente SSH para usar cloudflared como ProxyCommand.

¿Puedo tunelizar varios servicios a través de un solo túnel?

Sí, absolutamente. Esta es una de las principales ventajas de Cloudflare Tunnel. Simplemente agregue nuevas reglas ingress a su archivo /etc/cloudflared/config.yml, especificando diferentes hostname y el service correspondiente (por ejemplo, http://localhost:8080 para otra aplicación web). Después de modificar config.yml, no olvide reiniciar el servicio cloudflared:

sudo systemctl restart cloudflared
.

Conclusiones y próximos pasos

Hemos configurado con éxito Cloudflare Tunnel en su VPS, proporcionando acceso seguro y privado a sus servicios locales sin necesidad de abrir puertos en el firewall. Ahora su servidor está protegido contra ataques directos, y todo el tráfico pasa a través de la red global y segura de Cloudflare, lo que aumenta significativamente la seguridad y simplifica la gestión de la infraestructura.

Esta solución es ideal para desarrolladores, solo-fundadores de SaaS, jugadores y criptoentusiastas que necesitan una forma fiable de publicar sus servicios en internet, manteniendo el control y la seguridad.

Próximos pasos:

  • Integración con Cloudflare Zero Trust: Explore Cloudflare Zero Trust (anteriormente Cloudflare Access) para implementar un control de acceso granular a sus servicios tunelizados. Podrá configurar la autenticación a través de SSO (Google, GitHub, etc.) y aplicar políticas de acceso basadas en la identidad del usuario, el dispositivo o la dirección IP.
  • Monitorización y registro: Configure el registro centralizado para cloudflared y sus servicios, así como la monitorización del rendimiento del VPS, para responder rápidamente a cualquier problema.
  • Adición de nuevos servicios: Amplíe el uso del túnel, añadiendo nuevos servicios (por ejemplo, GitLab, Mattermost, Grafana, Prometheus) a su config.yml, utilizando diferentes subdominios.
  • Optimización del rendimiento: Para servicios de alta carga, considere la optimización de la configuración de Cloudflare (almacenamiento en caché, Argo Smart Routing) y la configuración de su VPS (ajuste del kernel de Linux, optimización de bases de datos).

¿Te fue útil esta guía?

Configuración de Cloudflare Tunnel (Argo Tunnel) en VPS: acceso seguro a servicios locales
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.