Guía para Exponer Servicios Locales en ServBay de Forma Segura con Cloudflare Tunnel
Cloudflare Tunnel (anteriormente conocido como Argo Tunnel) es un servicio de red Zero Trust ofrecido por Cloudflare que le permite exponer de manera segura servicios web, SSH u otras aplicaciones locales a Internet sin abrir puertos públicos ni configurar reglas de firewall complejas. Esta guía detalla cómo utilizar la potente herramienta cliente cloudflared
dentro del robusto entorno de desarrollo local ServBay para establecer túneles seguros y así permitir el acceso externo a sus servicios ServBay locales.
Ventajas principales:
- Mayor seguridad: Disfrute de la protección de la red global de Cloudflare, que incluye mitigación de DDoS y WAF (firewall de aplicaciones web).
- Configuración de red simplificada: No necesita preocuparse por reenvío de puertos, NAT ni reglas de firewall.
- Modelo Zero Trust: Todas las conexiones son salientes, lo que reduce significativamente la superficie de ataque.
- Potencial de integración con Cloudflare: Aproveche funciones de caché, optimización, análisis y otros servicios de Cloudflare.
Descripción General
ServBay proporciona a los desarrolladores un entorno local integrado y fácil de administrar, compatible con numerosos lenguajes (PHP, Node.js, Python, Go, Java, Ruby, Rust, entre otros), bases de datos (MySQL, PostgreSQL, MongoDB, Redis, etc.) y servidores web (Caddy, Nginx, Apache). Por defecto, los sitios y aplicaciones desarrollados en ServBay solo son accesibles localmente. Al integrar Cloudflare Tunnel, puede compartir fácilmente su progreso con miembros del equipo o exponer servicios de forma temporal o permanente a usuarios externos, todo ello disfrutando de las ventajas de rendimiento y seguridad de Cloudflare.
Principios Técnicos
El mecanismo de Cloudflare Tunnel consiste en ejecutar el cliente cloudflared
en su red local (la máquina donde corre ServBay), que establece proactivamente una o varias conexiones encriptadas —basadas en el protocolo QUIC— con el nodo de periferia más cercano de Cloudflare. Estas conexiones son salientes, eliminando la necesidad de configurar reglas entrantes en su router o firewall. Cuando un usuario accede al servicio vía el dominio vinculado al túnel, el tráfico llega primero al edge de Cloudflare, luego se reenvía de manera segura por el túnel hasta el cliente cloudflared
, y este lo entrega a su servicio local en ServBay (por ejemplo, el sitio en https://servbay.local
o http://localhost:8000
). La respuesta se retorna a través del mismo canal.
Requisitos Previos
Antes de iniciar la configuración, asegúrese de cumplir con lo siguiente:
- ServBay instalado y operativo: Debe tener configurado ServBay y en funcionamiento el sitio web o servicio local que desea exponer (por ejemplo, el sitio asociado al dominio local por defecto
servbay.local
debe ser accesible). - Cuenta de Cloudflare: Debe disponer de una cuenta en Cloudflare.
- Dominio gestionado en Cloudflare: Debe poseer un dominio agregado a su cuenta Cloudflare, y la gestión de DNS debe estar bajo Cloudflare.
- Cliente
cloudflared
instalado: Es necesario instalar la herramienta de línea de comandoscloudflared
en su Mac con ServBay.
1. Instalación del cliente cloudflared
En macOS se recomienda usar Homebrew para instalar el cliente. Si no tiene Homebrew, siga la documentación oficial de Homebrew para instalarlo primero.
Instalación con Homebrew (recomendado):
bash
brew update
brew install cloudflared
1
2
2
Descarga e instalación manual (para arquitecturas ARM de macOS):
bash
# Descargar el binario para macOS ARM (Apple Silicon)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Mover el binario descargado a la ruta de sistema
sudo mv cloudflared /usr/local/bin/
1
2
3
4
2
3
4
Verificar la instalación: Ejecute el siguiente comando para comprobar que cloudflared
se ha instalado correctamente y visualizar la versión:
bash
cloudflared --version
# Ejemplo de salida: cloudflared version 2024.5.0 (built 2024-05-01)
1
2
2
La versión puede variar; si se muestra información de la versión, la instalación fue exitosa.
2. Inicie sesión en su cuenta de Cloudflare
Ejecute en la terminal el siguiente comando para autorizar su cuenta de Cloudflare:
bash
cloudflared tunnel login
1
Al ejecutar este comando, cloudflared
abrirá su navegador para que complete la autenticación en Cloudflare. Seleccione la cuenta correspondiente al dominio y autorice el acceso de cloudflared
. Tras la autorización, el navegador mostrará un mensaje de éxito y en la terminal se confirmará la creación del archivo cert.pem
en el directorio predeterminado (~/.cloudflared/
).
Configuración del Túnel
A continuación crearemos un túnel y lo configuraremos para dirigir el tráfico hacia su servicio local en ServBay.
Flujo de Configuración Esencial
Crear el túnel
En la terminal, cree un nuevo túnel asignándole un nombre fácil de identificar, por ejemplo,
servbay-demo-tunnel
.bashcloudflared tunnel create servbay-demo-tunnel
1Al finalizar, se mostrará el ID del túnel (un UUID) y la ruta del archivo de credenciales. Guarde este ID, por ejemplo,
a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. En el directorio~/.cloudflared/
se creará un archivo JSON de credenciales (por ejemplo,a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json
) que contiene los datos necesarios para iniciar el túnel. Proteja este archivo.Configuración del registro DNS
Para que Cloudflare dirija el tráfico del dominio a su túnel, debe crear un registro CNAME en DNS. Use el siguiente comando:
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.sudominio.com
1Sustituya
servbay-demo-tunnel
por el nombre del túnel creado, yservbay-demo.sudominio.com
por el subdominio que desee usar para acceder (asegúrese de que su dominio esté gestionado en Cloudflare).Tras ejecutar,
cloudflared
creará en el panel DNS de Cloudflare un registro CNAME que apunta deservbay-demo.sudominio.com
a<ID_TUNEL>.cfargotunnel.com
.Crear el archivo de configuración
cloudflared
utiliza un archivo YAML para definir el comportamiento del túnel: qué servicios locales exponer y bajo qué dominios. El archivo por defecto es~/.cloudflared/config.yml
. Si no existe, créelo.Edite el archivo
~/.cloudflared/config.yml
como sigue:yaml# tunnel: UUID del túnel, reemplace por el suyo tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: ruta al archivo de credenciales, debe concordar con la suya credentials-file: /Users/usuariotu/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Reemplace con el nombre de usuario y la ruta correctos ingress: # Reglas de enrutamiento para el túnel - hostname: servbay-demo.sudominio.com # Dominio externo a usar, debe coincidir con el registro DNS service: https://servbay.local # Dirección local de ServBay. Por defecto, ServBay proporciona servbay.local con SSL. originRequest: # noTLSVerify: true # Si su servicio local usa un certificado autofirmado (por ejemplo, de la User CA de ServBay), active para omitir la verificación TLS # Si su sitio tiene un certificado válido emitido a través de ACME (Let's Encrypt, vía ServBay), puede omitir esta opción. # Para simplificar, es habitual usar el certificado User CA de ServBay junto con noTLSVerify: true. - service: http_status:404 # Regla de fallback, devuelve 404 si ningún hostname coincide
1
2
3
4
5
6
7
8
9
10
11
12
13
14Notas importantes:
- Cambie los valores de
tunnel
ycredentials-file
por el UUID y la ruta real. - Ajuste
hostname
al subdominio que configuró en el paso 2. service: https://servbay.local
apunta al sitio HTTPS por defecto de ServBay. Si su servicio local opera en otro puerto o dirección (p.ej., una app Node.js enhttp://localhost:3000
), modifique el valor en consecuencia.- La opción
originRequest.noTLSVerify: true
desactiva la comprobación del certificado SSL para el servicio local, necesaria si usa certificados autofirmados. Si su sitio ServBay utiliza un certificado válido reconocido por su sistema, no es necesario activar esta opción.
- Cambie los valores de
Iniciar el Túnel
Una vez finalizada la configuración, puede iniciar el túnel ejecutando:
bash
cloudflared tunnel run servbay-demo-tunnel
1
Recuerde sustituir servbay-demo-tunnel
por el nombre de su túnel.
cloudflared
se conectará a la red de Cloudflare y establecerá el túnel, mostrando el estado y los logs en terminal. Mientras el comando se ejecute en primer plano, el túnel estará disponible. Si desea que funcione en segundo plano de forma permanente, configure cloudflared como servicio del sistema (por ejemplo, con launchctl
en macOS; consultar la documentación específica para más detalles).
Validación del Servicio
Una vez iniciado el túnel, podrá acceder a su servicio local de ServBay desde el exterior usando el dominio configurado.
Acceda a su dominio: Ingrese en su navegador la URL configurada, por ejemplo,
https://servbay-demo.sudominio.com
.Puntos de verificación:
- Su navegador debería cargar correctamente el sitio, con el mismo contenido que al acceder localmente a
https://servbay.local
. - La barra de direcciones debe mostrar un certificado SSL válido (emitido por Cloudflare para su dominio; el certificado local se usa solo entre ServBay y
cloudflared
). - Revise los encabezados HTTP usando las herramientas de desarrollo; debería encontrar cabeceras como
CF-RAY
indicando que el tráfico pasa por Cloudflare.
- Su navegador debería cargar correctamente el sitio, con el mismo contenido que al acceder localmente a
Consejos Avanzados de Configuración
Enrutamiento para Múltiples Servicios
Puede definir varias reglas en la sección ingress
de config.yml
para dirigir distintos dominios/subdominios a diferentes servicios locales (por ejemplo, sitios web distintos o APIs separadas):
yaml
ingress:
- hostname: api.sudominio.com
service: http://localhost:8080 # API local en el puerto 8080
- hostname: app.sudominio.com
service: https://servbay.local # Su sitio principal
- service: http_status:404
1
2
3
4
5
6
2
3
4
5
6
Monitoreo y Logs de Tráfico
cloudflared
ofrece varios comandos útiles para monitorizar y depurar:
- Ver estadísticas en tiempo real:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Obtener logs detallados: El comando
cloudflared tunnel run
muestra logs directamente en la terminal. Puede, además, configurar el nivel de logs o su salida a archivo.
Integración con Cloudflare Access
Para reforzar todavía más la seguridad, integre Cloudflare Access y sume capas de autenticación y autorización a los servicios expuestos. Cloudflare Access, parte de la plataforma Zero Trust de Cloudflare, ofrece controles de acceso más potentes y flexibles que una VPN tradicional. Este ajuste se realiza desde el panel de Cloudflare.
Resolución de Problemas
Si encuentra dificultades durante la configuración o el uso, aquí algunas situaciones frecuentes y sus soluciones:
Síntoma | Solución |
---|---|
502 Bad Gateway al acceder | Verifique que el servicio local de ServBay esté en marcha y accesible (por ejemplo, acceda por navegador a https://servbay.local o la dirección/puerto configurados).Compruebe que la dirección y puerto indicados en service de config.yml sean correctos.Si utiliza HTTPS local y noTLSVerify: true no está activo, revise el certificado local o pruebe activar la opción. |
Error en la resolución DNS | Confirme que haya creado correctamente el registro CNAME en Cloudflare DNS hacia <ID_TUNEL>.cfargotunnel.com . Use dig o nslookup para verificar la resolución. |
Error de certificado al acceder | Si el certificado mostrado es de Cloudflare, compruebe que el valor hostname en config.yml coincida exactamente con el dominio accedido.Si el error proviene de la conexión TLS local entre cloudflared y el servicio, asegúrese de haber indicado bien la dirección y si es necesario active originRequest.noTLSVerify: true . |
Error al ejecutar cloudflared tunnel run | Verifique que el archivo ~/.cloudflared/config.yml exista y sea válido en formato YAML.Mire que los valores de tunnel y credentials-file sean los correctos.Compruebe que cloudflared tenga permisos sobre los archivos de credenciales y configuración. |
Lento o conexión inestable | Compruebe la estabilidad de su red local. Cloudflare Tunnel usa QUIC, asegúrese de que su red soporte adecuadamente este protocolo. Considere la configuración regional de Cloudflare o contacte con soporte en caso necesario. |
Resumen de Ventajas
Integrando Cloudflare Tunnel en ServBay, los desarrolladores pueden:
- Compartir progresos locales de forma segura: Demostrar a clientes o al equipo los sitios/apps en desarrollo.
- Testear callbacks externos: Probar webhooks u otros servicios que requieren acceso público a su entorno local.
- Beneficiarse de protección de nivel empresarial: Disfrutar de mitigación DDoS, WAF y otras defensas de Cloudflare para servicios expuestos.
- Simplificar la configuración de red: Olvidarse de reenvíos de puertos o reglas de firewall.
- Optimizar velocidad y fiabilidad a escala global: Hacer uso de la red Anycast de Cloudflare para acceso distribuido y rápido.
ServBay, en combinación con la exposición segura de Cloudflare Tunnel, proporciona a los desarrolladores un flujo de trabajo productivo y seguro.
Conclusión
En esta guía se explica detalladamente cómo instalar y configurar cloudflared
en un entorno ServBay, cómo crear y ejecutar un túnel Cloudflare para exponer con seguridad servicios web locales a Internet. Siguiendo estos pasos, aprovechará la compatibilidad multi-stack de ServBay y las ventajas de seguridad de Cloudflare Tunnel, optimizando así su colaboración y eficiencia de desarrollo. Recuerde que Cloudflare Tunnel es parte del ecosistema Zero Trust de Cloudflare; le animamos a explorar funciones adicionales como Cloudflare Access para alcanzar un mayor grado de seguridad y control de acceso.