Guía práctica para compartir localhost
Expón localhost con Cloudflare y GhostlyShare
Cuando un cliente necesita una vista previa, un proveedor de webhook necesita una URL de callback o quieres abrir tu servidor de desarrollo en un móvil, necesitas una URL pública para algo que sigue corriendo localmente. Esta guía muestra primero el camino con Cloudflare en terminal y luego el flujo de GhostlyShare para compartir repetidamente.
Decisión rápida
Usa la herramienta que se adapte al volumen de compartir
El error es tratar cada vista previa local como hosting. Un túnel es mejor para acceso temporal. GhostlyShare es mejor para flujos regulares. Un despliegue real es mejor cuando los usuarios dependen de la URL.
Usar cloudflared.exe
Instala el cliente de túnel de Cloudflare una vez, ejecuta un comando, copia la URL temporal y detén con Ctrl+C.
Usar GhostlyShare
Deja que la app de escritorio detecte servicios locales, inicie el compartir, muestre estado, copie la URL y detenga el acceso sin buscar en la terminal.
Desplegar la app
Si la URL necesita disponibilidad, monitorización, copias, lanzamientos estables o soporte, un túnel en portátil no es el límite de fiabilidad adecuado.
Método 1
Cloudflare EXE: el flujo más rápido y limpio por línea de comandos
El cliente de túnel de Cloudflare se llama cloudflared. En Windows puedes instalarlo con winget o descargar el EXE manualmente. Para una vista previa corta de desarrollo, Quick Tunnel ofrece una URL HTTPS aleatoria sin redirección de puertos, zona DNS de Cloudflare ni dominio personalizado.
Iniciar la app local
Abre primero la URL local en tu navegador. Si la app no funciona localmente, un túnel público no lo arreglará.
npm run dev
Instalar cloudflared en Windows
Use winget when it is available. If you download the EXE manually, place it in a folder such as C:\Cloudflared\bin and call it cloudflared.exe.
winget install --id Cloudflare.cloudflared
Crear la URL pública
Use the exact local HTTP URL and port. In PowerShell from the EXE folder, use .\cloudflared.exe if the executable is not on PATH.
cloudflared.exe tunnel --url http://localhost:5173
Prueba antes de compartir
Abre la URL generada trycloudflare.com en una ventana privada o en otro dispositivo. Verifica login, recursos, redirecciones y llamadas API antes de compartirla.
https://example-random-name.trycloudflare.com
Detener el túnel deliberadamente
Cuando la demo o prueba de webhook termine, detén el proceso en terminal. Si tu máquina entra en suspensión o se desconecta, el túnel rápido dejará de funcionar igualmente.
Ctrl+C
Nombres estables para vistas previas
¿URL aleatoria o nombre de host personalizado en Cloudflare?
Las URLs aleatorias son perfectas cuando el enlace puede desaparecer tras una prueba. Los dominios personalizados tienen sentido cuando la vista previa debe parecer estable, por ejemplo demo.example.com, y ya gestionas el dominio en Cloudflare.
| Necesidad | Usar | Por qué encaja |
|---|---|---|
| Una demo de cinco minutos o una llamada de webhook | URL aleatoria | No se necesita cuenta ni configuración DNS, y el enlace es fácil de desechar tras la prueba. |
| Una revisión de cliente que debe parecer personalizada | Dominio personalizado | Un nombre de host que controlas es más fácil de reconocer, pero necesita tu zona de Cloudflare, permisos de token, DNS y enrutamiento del túnel. |
| Una vista previa que no debe abrirse de forma casual | Enlace protegido con contraseña | Añade una contraseña antes de hacer público, luego comparte la URL y la contraseña por separado con el grupo reducido que necesita acceso. |
Otras opciones
Otras formas de exponer localhost
No necesitas una herramienta para cada situación. La mejor opción depende de si quieres un enlace desechable, un flujo de escritorio, una vista previa con marca, una herramienta de red privada o un entorno autoalojado reforzado deliberadamente.
| Herramienta | Comando o acción típica | Ideal para | Atención |
|---|---|---|---|
| Cloudflare Quick Tunnel | cloudflared tunnel --url http://localhost:5173
|
URLs públicas HTTPS rápidas y desechables sin cambios en el router. | Solo desarrollo y pruebas; URL aleatoria; ciclo de vida en terminal. |
| GhostlyShare | Selecciona 'Hacer público' en la app de escritorio
|
Vistas previas locales repetidas, pruebas de webhook, demos protegidas con contraseña y dominios personalizados opcionales de Cloudflare. | No es hosting de producción; tu app local y máquina deben seguir activas mientras el enlace funcione. |
| ngrok | ngrok http 5173
|
Equipos que ya usan ngrok, dominios reservados, inspección de tráfico y funciones de enrutamiento específicas del proveedor. | Los detalles de cuenta y plan importan; requiere más configuración del proveedor que un túnel rápido desechable. |
| Tailscale Funnel | tailscale funnel 3000
|
Personas que ya usan Tailscale y quieren un endpoint HTTPS público para un dispositivo tailnet. | Requiere configuración de Tailscale y Funnel activado para el tailnet. |
| localtunnel | npx localtunnel --port 3000
|
Compartir localhost rápido basado en Node para pruebas simples. | Útil para vistas previas simples; piensa bien antes de usarlo para algo sensible. |
| Redirección de puertos en router | Configurar router, DNS, TLS y proxy inverso
|
Autoalojamiento permanente cuando gestionas la infraestructura intencionadamente. | Mayor superficie de ataque expuesta; parcheo, reglas de firewall, registros y TLS pasan a ser tu responsabilidad. |
Pruebas de webhook
Detalles que ahorran tiempo con webhooks
Los proveedores de webhook no pueden llamar a http://localhost en tu portátil. Pueden llamar a la URL pública del túnel. Trata esa URL como una integración externa real: mantén firmas activadas, usa la ruta exacta de callback y verifica redirecciones y CORS.
Usa la ruta completa de callback
Si tu receptor escucha en /api/webhooks/stripe, pega la URL pública con esa ruta exacta, no solo el dominio.
Mantén la validación de firmas activada
Un túnel público facilita probar firmas reales de webhooks. No es motivo para desactivar la verificación de firmas.
Vigila URLs base y encabezados reenviados
Si la URL pública redirige a localhost, configura URLs base públicas, encabezados reenviados, proxies confiables o ajustes del host del framework.
Prueba desde una sesión limpia del navegador
Usa una ventana privada o un segundo dispositivo para que el estado cacheado de localhost no oculte problemas con cookies, CORS, redirecciones o contenido mixto.
Solución de problemas
Soluciona primero los problemas comunes del túnel
El túnel inicia, pero la página está en blanco
Abre la URL local directamente y comprueba si recursos, URLs API, URLs WebSocket o variables de entorno siguen apuntando a localhost.
La URL pública redirige a localhost
Muchos frameworks crean redirecciones desde el host de la petición. Corrige encabezados reenviados, proxies confiables, origen público o redirecciones forzadas en desarrollo.
El enlace aparece antes de funcionar
El enrutamiento de Cloudflare, DNS, el proxy local de GhostlyShare y la app origen pueden tardar un momento en sincronizarse. Espera unos segundos, actualiza y prueba de nuevo.
Certificados HTTPS en localhost causan errores
Para vistas previas cortas, tuneliza el endpoint HTTP local si está disponible. Para configuraciones largas, configura TLS de origen intencionadamente en vez de adivinar.
Fallo en recarga en caliente o WebSockets
Usa una herramienta que soporte WebSockets y asegúrate de que la app construya URLs ws o wss desde el host público, no desde un valor localhost fijo.
Seguridad
Antes de enviar la URL pública
Una URL de vista previa pública sigue siendo acceso público. La protección con contraseña reduce accesos accidentales, pero no hace seguro un servicio local riesgoso. Comparte la URL más específica, usa datos de prueba y detén el enlace tras la revisión o prueba de webhook.
Usa datos de prueba
No expongas datos reales de clientes, pantallas de administración de bases de datos, paneles internos, secretos de semillas ni datos privados de la empresa.
Mantén la autenticación de la app activada
Si una función requiere login normalmente, debe seguir requiriéndolo en la vista previa pública.
Usa protección con contraseña para vistas previas privadas
Para grupos pequeños de revisión, añade una contraseña en GhostlyShare antes de hacer público y compártela separadamente del enlace.
Detener y rotar enlaces
Detén los enlaces temporales tras usarlos. Si una URL o contraseña se filtra en un ticket o chat, crea una vista previa nueva en vez de reutilizarla.
Preguntas frecuentes
Preguntas frecuentes
¿Cuál es el comando exacto en Windows?
Tras instalar cloudflared, ejecuta cloudflared.exe tunnel --url http://localhost:PORT, sustituyendo PORT por el puerto local de tu app, por ejemplo 5173, 3000, 5080 o 8080.
¿Es GhostlyShare solo una interfaz para cloudflared?
No. GhostlyShare usa túneles con Cloudflare, pero añade un flujo de trabajo de escritorio con detección de apps, enlaces públicos aleatorios o personalizados, estado de disponibilidad, detención de acceso y protección opcional con contraseña.
¿Puede GhostlyShare proteger un enlace público con contraseña?
Sí. Activa la protección con contraseña antes de hacer público. Los visitantes deben introducirla antes de que GhostlyShare redirija al app local seleccionado, pero no reemplaza la seguridad adecuada de la app.
¿Necesito redirección de puertos en el router?
No para los flujos de túnel en esta guía. cloudflared, GhostlyShare, ngrok, Tailscale Funnel y similares abren conexiones salientes desde tu máquina, por lo que normalmente no necesitas redirección entrante en el router.
¿Puedo probar webhooks a través de un túnel local?
Sí. Inicia el receptor local de webhook, expónlo por el túnel, pega la URL pública HTTPS con la ruta de callback correcta en el proveedor, envía un evento de prueba e inspecciona la petición localmente.
¿Debo exponer herramientas administrativas o bases de datos?
Normalmente no. No expongas consolas de bases de datos, paneles administrativos, infraestructuras, endpoints de depuración o servicios internos a menos que estén reforzados y diseñados para ser accesibles desde internet.
¿Debo usar un túnel en portátil para tráfico de producción?
No. Usa un despliegue real o un túnel gestionado en infraestructura diseñada para estar siempre online, recibir actualizaciones, ser monitorizada y recuperarse tras fallos.