Lo que quieres hacer no es trivial, pero si ajustas algunas cosillas es posible.
Lo más importante, para responder a tu pregunta es que el problema radica en que actualmente tu servidor Apache en Ubuntu solo está accesible dentro de la red local, pero no desde fuera de ella. Para permitir el acceso externo, debes hacer varias cosas.
Primero, Verificar la IP Pública: Si tu teléfono no está en la misma red WiFi, necesitarás acceder a la IP pública de tu red. Para conocerla, en el servidor o en cualquier PC de la red, ejecuta:
curl ifconfig.me
Esto te devolverá la IP pública de tu conexión a Internet.
Sin embargo esa IP no siempre estará asignada a ti solamente, depende del proveedor y q facilidades te de para eso.
Si todo ha ido bien, solamente tendrías que configurar el Firewall (UFW) (Si es q tienes el firewall UFW activado)
En Ubuntu asegúrate de que permite el tráfico en el puerto 80 (HTTP) y 443 (HTTPS) con estos comandos:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
Para verificar si está activo, usa:
sudo ufw status
Si dice "inactive", no necesitas cambiar nada.
Lueogo es lo más complicado: Habilitar el Puerto en el Router (NAT / Port Forwarding). esto es necesario xq tu router bloquea conexiones externas por defecto. Para solucionarlo, debes redirigir el puerto 80 y/o 443 a la IP local de tu servidor.
Esto depende mucho de como sea el router pero tendrías que acceder a la configuración del router.
No sé como se hará en tu caso pero generalmente se hace desde un navegador emtrando en la ip del router http://192.168.1.1
o http://192.168.0.1
.
Allí Busca "Port Forwarding", "Redirección de puertos" o "NAT".
Entonces Agrega una regla nueva:
-
Puerto externo:
80
-
IP interna: La IP de tu servidor (puedes verla con
ip a
) -
Puerto interno:
80
-
Protocolo:
TCP
Guarda y reinicia el router.
Entonces puedes probar el acceso desde tu teléfono (con datos móviles activados), intenta acceder a:
http://TU_IP_PUBLICA
Si todo está bien, deberías ver la página de Apache o tu sitio.
Si quieres que se pueda acceder con un dominio puedes probar algún servicio como DynDNS.
Si tu IP pública cambia constantemente (lo normal en conexiones residenciales), puedes usar un servicio como No-IP o DuckDNS para asociar tu IP a un dominio.
De todos modos, todo esto es un poco lío y para trastear está bien pero si quieres hacer algo más serio no es muy recomendable. De hecho yo no me animaría a cambiar la config del router. Lo que solemos hacer es crear un túnel SSH para esto mismo.
Crear un túnel SSH
Mira a ver si la opción de crear un túnel de ssh, q es más práctico.
Busca en google esta alternativa y encontrarás varios tutoriales.
Yo he usado alguna vez este servicio https://github.com/exposedev/expose y me ha ido bien.