HostingMobile - Hostea servicios desde móviles y redes CG-NATHostea servicios directamente desde dispositivos móviles y redes CG-NAT con coste de infraestructura cero.
Descripción generalHostingMobile 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)
Esta guía no es para Windows, pero puedes seguirla y adaptarla
Paso 1: Adquisición de dominioOpción A: DigitalPlat (Recomendado - Aprobación instantánea)DigitalPlat proporciona dominios gratuitos tras el cierre de Freenom:
1. Regístrate en
DigitalPlat FreeDomain2. Completa la verificación con GitHub OAuth
3. Registra el dominio:
tuproyecto.dpdns.org4. 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.org2.
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.org2. Crea subdominio:
tuproyecto.duckdns.org3.
Limitación: No se puede usar proxy de Cloudflare (solo Tunnel directo)
Paso 2: Configuración DNS de Cloudflare1.
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 dominio5.
Espera la propagación: 2 minutos a 48 horas
6.
Verifica en Cloudflare: El estado muestra
"Active"
Paso 3: Instalar Cloudflared CLITermux (Android)# 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-Linuxcurl -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):
# Clonar repositorio
git clone https://github.com/stringmanolo/hostingmobile
cd hostingmobile
npm install
node index.js &
2.
Lanza un túnel temporal:
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 personalizado1. Autenticar Cloudflaredcloudflared tunnel login
# Sigue las instrucciones del navegador y selecciona tu dominio
2. Crear túnel nombradocloudflared 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 DNScloudflared 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# Usa tu editor de texto favorito.
vi ~/.cloudflared/config.yml
Pega esta configuración (reemplaza los valores por los tuyos):
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# 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
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 adicionalesCloudflare Tunnel soporta
cualquier servicio basado en TCP:
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.
_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.
Nota de seguridad: Para SSH/RDP, habilita
Cloudflare Access (Zero Trust) para prevenir ataques de fuerza bruta.
Paso 7: Verificación y monitorizaciónVerificar estado del túnel# Logs en tiempo real
journalctl -u cloudflared -f
# Información del túnel
cloudflared tunnel info hostingmobile-tunnel
Verificación externaPuedes usar servicios gratuitos como
urlscan.io para confirmar rápidamente la accesibilidad pública:
Monitorización de uptime (gratuita)Configura
UptimeRobot para monitorizar
tu-dominio.org y recibir alertas si el túnel cae.
Mejores prácticas de seguridad1. Habilitar Cloudflare Access (Zero Trust)Restrinje SSH/RDP a usuarios autenticados:
# Configura en Cloudflare Dashboard → Zero Trust → Applications
2. Forzar HTTPSCloudflare proporciona certificados SSL gratuitos. Habilita
"Always Use HTTPS":
# Cloudflare Dashboard → SSL/TLS → Edge Certificates
3. Ocultar cabeceras del servidorEn tu servicio, elimina las cabeceras de identificación:
response.headers.delete('x-powered-by');
response.headers.delete('server');
4. Rate LimitingCrea un Cloudflare Worker para proteger contra abusos:
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
// Lógica de rate limiting aquí
return fetch(request);
}
Solución de problemasDominio no resolviendo# 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# 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# 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