Guía PES

Desplegad el backend en virtech en diez minutos

Escribid la IP de la máquina y el tipo de servidor: tenéis cada comando con los puertos ya calculados, un servicio que sobrevive a los reinicios y un setup.sh para descargar. Todo pasa en el navegador y no se envía nada.

virtech, la nube privada de la FIB

Un servicio de autoservicio de máquinas virtuales para las asignaturas que lo piden, en virtech.fib.upc.edu. Las cuentas os las dan los profesores.

  • Máquinas Ubuntu con el usuario alumne, que puede usar sudo. Sois responsables de todo lo que pase en ellas.
  • El número de máquinas y su tamaño los fija la cuota de la asignatura. No hay cortafuegos.
  • No hay copias de seguridad y se borran al final del cuatrimestre. El código, en GitHub; la configuración, documentada.
  • Si perdéis el acceso a una máquina, no se puede recuperar: se borra y se crea otra. Un motivo más para tener la instalación escrita en un script.
Plantilla con VPN

Solo red de la FIB

Accesible desde el campus o desde casa con la VPN de la UPC (UPClink). Pero la VPN es personal y solo admite una conexión: no podéis tener a la vez el ordenador y el móvil, ni dar la app a nadie de fuera.

Recomendada para apps

Plantilla sin VPN

Tiene 10 puertos abiertos a Internet a través de nattech.fib.upc.edu, y SSH desde la UPC o con VPN. Cualquier móvil llega, también los de los stakeholders.

Crear la máquina y poner el servicio

  1. VMs → +, elegid la plantilla, ponedle un nombre y la contraseña del usuario, y Create. Esperad a que pase de DEPLOYING a RUNNING.
  2. Abrid la Consola (VNC) e iniciad sesión. El mensaje de bienvenida os dice la IP y los puertos. Podéis volver a verlo con /etc/update-motd.d/99-info-nat.
  3. A partir de aquí, mejor por SSH (desde la UPC o con VPN): los comandos, abajo.
  4. Arrancad el servicio escuchando en 0.0.0.0 y en un puerto del 8080 al 8089. Si escucha en localhost, desde fuera no se llega.
  5. Probadlo desde fuera con el puerto público: http://nattech.fib.upc.edu:40330.

Vuestros comandos, ya calculados

Los datos se quedan en este navegador. Cambiad cualquier campo y los comandos se actualizan.

La que sale en virtech o en el mensaje de bienvenida.

El setup.sh hace la instalación, el servicio y el arranque. Copiadlo a la máquina con scp y ejecutad bash setup.sh.

Cómo se calculan los puertos

Todas las máquinas salen a Internet por la misma dirección, nattech.fib.upc.edu, y cada una tiene su rango de puertos según el último número de la IP (172.16.4.XXX):

  • SSH: puerto 22000 + XXX.
  • Servicios: desde el puerto 40000 + XXX·10, diez puertos seguidos que van al 8080-8089 de la máquina.
¿Cómo compruebo que la conexión funciona, antes de tener ningún servicio?

En la máquina, nc -l -p 8080. En vuestro ordenador, nc nattech.fib.upc.edu 40330 (con vuestro puerto) y escribid cualquier cosa: tiene que aparecer en la máquina.

¿Por qué no me responde el ping?

Por cómo está montado el NAT, el ping no funciona desde fuera de la red de las máquinas, ni siquiera con VPN. Usad curl o nc.

¿Puedo entrar por SSH desde casa sin VPN?

No. Por seguridad, el SSH desde fuera de la UPC solo funciona con la VPN. Los 10 puertos de servicios sí están abiertos a todo el mundo.

He olvidado la contraseña de la máquina.

No se puede recuperar: borrad la máquina y cread una nueva. La contraseña de virtech (no la de la máquina) se cambia en el menú de usuario → Settings → Change password.

La app móvil y el HTTP sin cifrar

nattech sirve HTTP, no HTTPS. Android (desde la versión 9) e iOS bloquean este tráfico por defecto, y la llamada falla sin muchas pistas. Permitidlo solo para este dominio.

<!-- res/xml/network_security_config.xml (en Flutter: android/app/src/main/res/xml/) -->
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">nattech.fib.upc.edu</domain>
        <domain includeSubdomains="false">10.0.2.2</domain>
    </domain-config>
</network-security-config>

<!-- AndroidManifest.xml -->
<application
    android:networkSecurityConfig="@xml/network_security_config"
    ... >

Las contraseñas viajan en claro por HTTP. Para PES basta con la excepción por dominio, pero no pongáis contraseñas reales y explicadlo en la documentación como limitación conocida.