AGLAIA en internet: cómo la dejé accesible desde fuera de casa IA local con acceso a Internet
AGLAIA en internet: cómo la dejé accesible desde fuera de casa
Cuando escribí la primera entrada sobre AGLAIA, la aplicación solo existía dentro de mi wifi de casa: para probarla había que estar físicamente conectado a la misma red que ROCKY, el ordenador donde vive el modelo de IA. Eso funcionaba para mí, pero tenía dos problemas si quería enseñársela a alguien sin liarme una tarde entera: primero, que yo mismo quería poder abrirla desde el móvil con datos, para probarla sin estar en casa; y segundo, que si algún día quiero que un alumno la pruebe sin tener que traerse el portátil a mi wifi, necesito que la dirección funcione desde cualquier sitio.
Aquí cuento cómo lo resolví — solo el camino que de verdad funcionó, sin las vueltas previas que le di antes de encontrarlo.
Por qué no valía con “subirlo a mi web”
Mi primera idea, la más intuitiva, fue: tengo un hosting en montesteam.org, pues subo AGLAIA ahí y ya está en internet. No funciona, y merece la pena explicar por qué, porque es un error fácil de cometer si no se piensa dos veces.
AGLAIA no es una página estática: en cada pregunta que se le hace al “paciente”, el programa tiene que hablar con LM Studio, que es quien de verdad ejecuta el modelo de lenguaje. Y LM Studio solo vive en ROCKY, mi ordenador de casa — no es un servicio en la nube, es un programa corriendo en mi máquina, con mi tarjeta gráfica y mi hardware. Aunque hubiera subido todo el código de AGLAIA a un servidor en otro sitio del mundo, ese servidor seguiría sin tener forma de llegar hasta LM Studio. El problema nunca fue dónde vive el código de la aplicación: es que el ordenador que tiene el modelo cargado tiene que quedar alcanzable desde fuera, se suba el código donde se suba.
Dicho de otra forma: no hacía falta un sitio nuevo donde poner AGLAIA. Hacía falta una puerta hacia el sitio donde ya estaba.
La solución: un túnel con ngrok
La forma más simple de entenderlo es como un túnel de verdad, de los de carretera: en vez de tener que rodear toda la montaña (abrir puertos en el router, montar un servidor intermedio, pedir certificados…), se abre un paso directo de un lado al otro. ngrok hace justo eso, pero con conexiones de red: mi ordenador inicia una conexión cifrada hacia los servidores de ngrok (nunca al revés — nadie se conecta a mi ordenador desde fuera, es ROCKY quien llama), y a cambio ngrok me da una dirección pública, con https://, que reenvía todo lo que llega ahí directo a lo que tengo corriendo en local. No hay que tocar el router, no hay que instalar nada en ningún servidor propio, no hace falta entender de redes ni de certificados.
Paso 1: Crear la cuenta e instalar ngrok en ROCKY
En ngrok.com, a la pregunta “¿Dónde quieres empezar?”, elegí Share Localhost (“pon tu aplicación local en una URL pública”). Las otras dos opciones que ofrece la web (Gateway, AI Gateway) son para cosas distintas — exponer APIs de producción, conectar con proveedores de IA de pago — y no venían a cuento aquí.
Elegí la plataforma Windows, y para instalarlo usé el botón de Microsoft Store: es la opción que la propia ngrok recomienda como más segura (“for the most secure experience”), porque queda con actualizaciones automáticas y no hay que descomprimir ni añadir nada a mano a las rutas del sistema, que es donde más se suele liar la gente con herramientas de línea de comandos en Windows.
Paso 2: Vincular la instalación a mi cuenta
Cada cuenta de ngrok tiene un código propio, el “authtoken”, que identifica que ese ordenador es mío. La propia web, nada más crear la cuenta, te da el comando ya con tu código puesto — solo hay que copiarlo y pegarlo en una ventana de cmd:
ngrok config add-authtoken TU_TOKEN_PERSONAL_AQUI
Ese código es tuyo y privado, como una contraseña: no se comparte ni se publica en ningún sitio, ni siquiera en una entrada de blog como esta (por eso aquí solo pongo un marcador de posición en vez del real).
Paso 3: Arrancar AGLAIA como siempre
Con LM Studio abierto y el modelo cargado, en una ventana arranco la API tal cual la tengo siempre montada, sin nada distinto:
uvicorn main:app --host 0.0.0.0 --port 8008 --reload
El túnel no sustituye a nada de esto — solo añade una puerta pública hacia lo que ya estaba corriendo.
Paso 4: Levantar el túnel
En otra ventana aparte, el comando que la propia web de ngrok me dio ya preparado, con un cambio importante que hay que hacer a mano: el puerto tiene que ser el 8008, el de AGLAIA, no el 80 que trae por defecto el ejemplo (80 es un puerto típico de páginas web normales, y AGLAIA no corre ahí):
ngrok http 8008 --url https://tu-dominio-asignado.ngrok-free.dev
tu-dominio-asignado.ngrok-free.dev es un nombre con palabras al azar (tipo “defection-ageless-unmoved”) que ngrok asigna en automático a cada cuenta gratuita — no se puede elegir el nombre en el plan gratuito, eso sí es de pago — pero es fijo para la cuenta: no cambia cada vez que se arranca el túnel, así que la dirección no varía de una sesión a otra. Eso es una ventaja pequeña pero real: no hay que andar avisando de una URL nueva cada vez que se prueba.
En cuanto esa ventana se queda corriendo (deja de mostrar texto nuevo y parece “colgada” — es normal, esa quietud es justo la señal de que el túnel está activo y funcionando), la aplicación pasa a ser alcanzable desde cualquier sitio con internet, no solo desde mi wifi de casa.
Probarlo
Con datos móviles, sin conectarme a la wifi de casa, abrí la URL que da ngrok desde el navegador del móvil. Primero aparece un aviso propio de ngrok (una página intermedia que avisa de que se está accediendo a un túnel, con un botón para continuar), y después la pantalla de acceso de siempre de AGLAIA, pidiendo el código (AGLAIA_TOKEN). Nada de eso cambia por pasar por el túnel: sigue siendo la misma puerta de entrada de siempre, solo que ahora alcanzable desde cualquier sitio.
Como detalle curioso, ngrok tiene también un panel (“Traffic Inspector”) donde se puede ver, en tiempo real, cada petición que llega por el túnel — útil si algún día algo no responde como se espera y hay que ver qué está pasando de verdad, sin adivinar.
Cuando termino de probar
Cierro la ventana del túnel (Ctrl+C, o cerrarla sin más). En ese instante la URL deja de llevar a ningún sitio: ngrok ya no tiene a quién reenviar las peticiones. No queda nada abierto de forma permanente en mi red ni en mi router — el túnel solo existe mientras esa ventana sigue viva.
Cosas a tener en cuenta
- El plan gratuito de ngrok tiene límites (1 GB de tráfico y unas 20.000 peticiones al mes) — de sobra para probarlo yo solo, pero algo que habría que vigilar si esto pasara a usarse de forma más continuada.
- Los visitantes ven primero esa página intermedia de aviso de ngrok antes de llegar a AGLAIA — es normal, y hasta funciona como un pequeño filtro extra frente a quien llegue por casualidad.
- El código de acceso de AGLAIA (
AGLAIA_TOKEN) sigue siendo la única barrera de entrada real, la misma de siempre. Mientras esto sea “para probarlo yo”, es suficiente. Si en algún momento decido que lo use un grupo de alumnos a la vez desde fuera de clase, ese modelo de un único código compartido para todo el mundo es lo primero que tendría que repensar — pero esa es una decisión aparte, para cuando llegue el momento, no algo que haya que resolver hoy.
Al final, lo que más me ha gustado de esta parte no es la solución técnica en sí — es lo poco que ha hecho falta tocar para conseguirla. AGLAIA sigue siendo exactamente la misma aplicación pequeña y honesta que era antes de esta entrada: lo único que ha cambiado es la puerta por la que se entra.

Etiqueta:AGLAIA, AIDARAC, exponer localhost, HTTPS, ia local, ies monterroso, lm studio, montesteam, ngrok, túnel


