Hostea servicios directamente desde dispositivos móviles y redes CG-NAT con coste de infraestructura cero.

Descripción general
HostingMobile te permite exponer servicios locales (HTTP/HTTPS, SSH, RDP, TCP, ...) desde cualquier dispositivo detrás de Carrier-Grade NAT (CG-NAT) u otras redes sin necesidad de port forwarding, IPs públicas o infraestructura de servidores. Todo el tráfico se enruta a través de la red edge de Cloudflare con cifrado extremo a extremo. Solo 5 pasos.
Características principales
- Bypass CG-NAT: Funciona con datos móviles, restricciones de ISP y cortafuegos corporativos
- Infraestructura cero: Sin VPS, sin servidor dedicado, sin cuotas de suscripción
- Protocolo agnóstico: Soporte nativo para HTTP, SSH, RDP, TCP y UDP vía QUIC
- Producción-ready: Soporte para dominios personalizados con certificados SSL gratuitos
- Multiplataforma: Termux, Android, Linux, Raspberry Pi
Requisitos previos
- Cuenta de Cloudflare (gratuita, no requiere tarjeta de crédito)
- Nombre de dominio (se proporcionan opciones gratuitas a continuación)
- Entorno de terminal Linux (Termux + proot-distro, o Linux nativo o Windows)
- Node.js (opcional, para el servidor de ejemplo)
Citar
Esta guía no es para Windows, pero puedes seguirla y adaptarla
Paso 1: Adquisición de dominio
Opción A: DigitalPlat (Recomendado - Aprobación instantánea)
DigitalPlat proporciona dominios gratuitos tras el cierre de Freenom:
1. Regístrate en DigitalPlat FreeDomain
2. Completa la verificación con GitHub OAuth
3. Registra el dominio: tuproyecto.dpdns.org
4. Configura los nameservers a Cloudflare (obtenidos en el Paso 2)
¿Por qué DigitalPlat?
✅ Activación instantánea (sin espera)
✅ Control total de DNS
✅ Compatible con CG-NAT
✅ No requiere tarjeta de crédito
Opción B: EU.org (Estable pero lento)
Para proyectos a largo plazo:
1. Envía solicitud en nic.eu.org
2. Espera ~2 meses para procesamiento manual
3. Configura nameservers de Cloudflare tras aprobación
Opción C: DuckDNS (Subdominio alternativo)
Si no puedes obtener un TLD:
1. Regístrate en DuckDNS.org
2. Crea subdominio: tuproyecto.duckdns.org
3. Limitación: No se puede usar proxy de Cloudflare (solo Tunnel directo)
Paso 2: Configuración DNS de Cloudflare
1. Añade tu dominio al Dashboard de Cloudflare
2. Selecciona el Plan Gratuito y continúa
3. Copia los dos nameservers asignados (formato: name.ns.cloudflare.com)
4. Configura los nameservers en tu registrador de dominio
5. Espera la propagación: 2 minutos a 48 horas
6. Verifica en Cloudflare: El estado muestra "Active"
Paso 3: Instalar Cloudflared CLI
Termux (Android)
Código
# Descargar el último binario ARM # Para arquitectura ARM de 64 bits curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64" -o cloudflared # Para arquitectura ARM de 32 bits (smartphones antiguos) curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm" -o cloudflared # Dar permisos de ejecución chmod +x cloudflared # Convertirlo en un comando global mv cloudflared ~/../usr/bin/ # Probar que funciona cloudflared --version
Debian/Ubuntu/GNU-Linux
Código
curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64" -o cloudflared chmod +x cloudflared sudo mv cloudflared /usr/local/bin/
Paso 4: Prueba rápida (URL temporal)
Propósito: Verificar la conectividad antes de la configuración permanente.
1. Inicia el servidor de ejemplo (o tu propio servicio):
Código
# Clonar repositorio git clone https://github.com/stringmanolo/hostingmobile cd hostingmobile npm install node index.js &
2. Lanza un túnel temporal:
Código
cloudflared tunnel --url http://localhost:3000
3. Accede a la URL proporcionada (formato: https://random-words.trycloudflare.com)
4. Resultado esperado: "Hello World from behind CG-NAT!"
⚠️ CRÍTICO: Las URLs de trycloudflare.com cambian en cada reinicio. Procede al Paso 5 para una solución permanente.
Paso 5: Túnel persistente con dominio personalizado
1. Autenticar Cloudflared
Código
cloudflared tunnel login # Sigue las instrucciones del navegador y selecciona tu dominio
2. Crear túnel nombrado
Código
cloudflared tunnel create hostingmobile-tunnel # cambia hostingmobile por el nombre de tu proyecto/web/servicio # Guarda el UUID: a1b2c3d4-e5f6-7890... y nunca lo compartas
3. Enrutar DNS
Código
cloudflared tunnel route dns hostingmobile-tunnel tu-dominio.org # o hazlo usando la web en https://dash.cloudflare.com/173763727228282828/tu.domain.dpdns/dns/records # Ve a tu dominio, haz clic en los puntos y crea un nuevo registro DNS para tu dominio. # Selecciona CNAME y añade el subdominio (ejemplo: cgnat-bypass.stringmanolo.dpdns) y pon tu UUID.cfargotunnel.com como destino y crea el registro. # Por ejemplo: 1a11111a-11a1-1a11-a1a1-aa1aa11a11aa.cfargotunnel.com
4. Crear archivo de configuración
Código
# Usa tu editor de texto favorito. vi ~/.cloudflared/config.yml
Pega esta configuración (reemplaza los valores por los tuyos):
Código
tunnel: cgnat-bypass credentials-file: /root/.cloudflared/1a11111a-11a1-1a11-a1a1-aa1aa11a11aa.json ingress: - hostname: cgnat-bypass.stringmanolo.dpdns service: http://localhost:3000 - service: http_status:404
5. Ejecutar el servicio
Código
# Inicia tu servidor en segundo plano si hiciste el paso 4. node index.js & # Esto iniciará un servidor HTTP básico HelloWorld en el puerto 3000 # Inicia el enrutamiento con el archivo de configuración cloudflared tunnel --config config.yml run
Citar
Has terminado: Tu servicio debería ser accesible. Puedes instalar apache, nginx, postgresql, etc. y configurarlo como un servidor de hosting normal.
Paso 6: Exponer protocolos adicionales
Cloudflare Tunnel soporta cualquier servicio basado en TCP:
Código
ingress: - hostname: ssh.tu-dominio.org service: ssh://localhost:22 - hostname: rdp.tu-dominio.org service: rdp://localhost:3389 - hostname: tcp.tu-dominio.org service: tcp://localhost:8080 - hostname: tu-dominio.org service: http://localhost:3000 - service: http_status:404
Asegúrate de crear el registro CNAME para cada subdominio.
Citar
_Puedes usar tcp:// para cualquiera de ellos, pero usando el nombre del protocolo (ejemplo ssh://) permite a Cloudflare ayudarte a proteger un poco el protocolo por defecto_
Creo que Cloudflare no soporta el protocolo UDP en el plan gratuito. Puedes usar herramientas como Chisel para encapsular el tráfico sobre tcp. Asegúrate de que no viola las TOS de Cloudflare para no recibir un ban.
Creo que Cloudflare no soporta el protocolo UDP en el plan gratuito. Puedes usar herramientas como Chisel para encapsular el tráfico sobre tcp. Asegúrate de que no viola las TOS de Cloudflare para no recibir un ban.
Nota de seguridad: Para SSH/RDP, habilita Cloudflare Access (Zero Trust) para prevenir ataques de fuerza bruta.
Paso 7: Verificación y monitorización
Verificar estado del túnel
Código
# Logs en tiempo real journalctl -u cloudflared -f # Información del túnel cloudflared tunnel info hostingmobile-tunnel
Verificación externa
Puedes usar servicios gratuitos como urlscan.io para confirmar rápidamente la accesibilidad pública:
Citar
Puedes comprobar el mío para ver cómo debería verse: https://urlscan.io/result/019b3f06-2816-7068-8904-456b13c9fd90/
Monitorización de uptime (gratuita)
Configura UptimeRobot para monitorizar tu-dominio.org y recibir alertas si el túnel cae.
Mejores prácticas de seguridad
1. Habilitar Cloudflare Access (Zero Trust)
Restrinje SSH/RDP a usuarios autenticados:
Código
# Configura en Cloudflare Dashboard → Zero Trust → Applications
2. Forzar HTTPS
Cloudflare proporciona certificados SSL gratuitos. Habilita "Always Use HTTPS":
Código
# Cloudflare Dashboard → SSL/TLS → Edge Certificates
3. Ocultar cabeceras del servidor
En tu servicio, elimina las cabeceras de identificación:
Código
response.headers.delete('x-powered-by'); response.headers.delete('server');
4. Rate Limiting
Crea un Cloudflare Worker para proteger contra abusos:
Código
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { // Lógica de rate limiting aquí return fetch(request); }
Solución de problemas
Dominio no resolviendo
Código
# Verificar propagación DNS dig +short ns tu-dominio.dpdns # Si está atascado, vuelve a crear la ruta o intenta usar la web para crear un nuevo registro cloudflared tunnel route dns hostingmobile-tunnel tu-dominio.org
Conexión del túnel rechazada
Código
# Verifica que el servicio local está escuchando introduciendo la siguiente dirección en tu navegador http://localhost:3000 # Verifica logs de cloudflared journalctl -u cloudflared -n 50 --no-pager
Problemas de permisos
Código
# Arreglar permisos chown -R ~/.cloudflared
Desglose de costes
| Componente | Coste | Notas |
| Dominio (DigitalPlat) | €0 | Gratuito con verificación de GitHub |
| Cloudflare | €0 | Tier gratuito (túneles ilimitados) |
| Cloudflared | €0 | Open-source |
| Certificado SSL | €0 | Auto-provisionado |
| Ancho de banda | €0 | 100GB/mes incluido |
TOTAL: €0 de infraestructura permanente
Contribuciones
¡Las contribuciones son bienvenidas! Áreas de enfoque:
- Scripts de configuración automatizados para múltiples plataformas
- Ejemplos de protocolos adicionales (UDP, QUIC)
- Guías de endurecimiento de seguridad
- Integración con registradores alternativos
Objetivo del proyecto: Permitir que cualquiera pueda hostear servicios desde redes móviles/CG-NAT con coste de infraestructura cero.
Creado por StringManolo | Repositorio en GitHub





Autor





En línea

