Hoy vamos a hablar de cómo podemos exponer nuestros dashboard o web local a Internet.
Durante el curso de IOT e Industria 4.0 hemos visto cómo crear dashboard de forma local o directamente en la nube.
En el caso de que el dashboard esté creado directamente en un servicio de Internet, no hay problema, ya que…¡¡ya está en Internet!! Solo tendrás que conectar con el servicio y ya está.
Por otro lado, muchas veces las páginas web o dashboards que crees en local no las necesitarás ver fuera de la fábrica porque será para ver valores de producción, OEE, tiempos.. ese tipo de cosas.
Pero ¿qué pasa si quiero ver estos datos desde un móvil a cientos de kilómetros de la fábrica?
Ahí la cosa se complica.
Contenido
La forma más segura: una VPN
Lo mejor, es crear una VPN de tal forma que te conectes a la web como si estuvieras dentro de la oficina.
Eso implicará que hables con los chicos de IT para que creen el túnel y se pueda acceder desde el exterior a dicho dashboard.
Ahora bien. Te puedes estar preguntando… ¿hay otras formas?
Pues sí, se puede exponer a Internet una web local de una forma bastante sencilla usando servicios externos.
Disclaimer – Descargo de responsabilidad
Lo siguiente que te voy a contar, al igual que todo lo que te cuento en otras ocasiones, está bajo tu responsabilidad.
Porque si tienes que tener cuidado al programar los PLC, el exponer cualquier dato a Internet tiene muchos riesgos ya que hay mucha gente ahí fuera queriendo hacer el mal, por el simple hecho de hacer el mal.
Por tanto, analiza los servicios que te voy a enseñar, y si no te convence su seguridad, es mejor que no los uses.
Ni que decir tiene que los datos sensibles no deberían estar expuestos a Internet, pero como digo, eso ya es cosa tuya.
Además, dependiendo de tu empresa, puede que no funcione porque el acceso este restringido por los cortafuegos que han puesto los chicos de IT que impiden el acceso desde el exterior. Ahí, como comprenderás tampoco te puedo ayudar.
Dicho esto, al lío.
Servicios para exponer servidores locales a Internet
Lo primero que hay que decir que estos servicios los usaría para una exposición temporal a Internet (al menos en su versión gratuita). Para pruebas de funcionamiento, o situaciones puntuales, puede estar bien. Para algo a largo plazo, creo que lo suyo es servicios directos en la nube como vemos en el curso.
He probado Ngrok, Serveo y Localtunnel, aunque hay más como luego te comentaré.
Ngrok.com
Es estable, y funciona bastante bien.
Tan solo tienes que crearte una cuenta, bajar la versión de ngrok de tu sistema operativo y seguir las instrucciones que son bastantes sencillas.
Puedes trabajar con él con la cuenta gratuita, con la que te genera una url del estilo: https://f8ah5j78.ngrok.io
Como ves, te crea una url poco sencilla de recordar, pero para realizar pruebas, es más que suficiente.
Puedes también dar autenticación de tal forma que pida usuario y contraseña para poder acceder a la web.
Pero ojo, porque tiene otra parte negativa: cada vez que lances el servicio, te creará una url diferente, por lo que se vuelve un poco insostenible usando solamente la versión gratuita.
La versión de pago (y ahí es donde esta la gracia y de lo que viven) tiene la posibilidad de crear tu subdominio que sea fijo, es decir, que siempre sea un https://programacionsiemens.ngrok.io por ejemplo.
Incluso puedes añadir tu dominio quitando el ngrok.io y usando tu propio dominio del estilo tudominio.com
Todo depende de la versión de pago que elijas. Pero como ves, la cosa cambia bastante ¿verdad?
Como digo, lo he probado con una Raspberry, y sin mayores problemas.
Tiene otra ventaja, que puedes exponer un equipo de forma remota, es decir, puede lanzar el servicio en un PC, pero que el equipo que quieras exponer esté en otra IP dentro del subdominio.
Actualmente tiene la opción en fase beta de levantar el servicio vía SSH como hace Serveo. Siguiendo un par de pasos sencillos, lo tienes funcionando usando SSH en vez de la aplicación propia de Ngrok.
Serveo.net
Serveo es una aplicación gratuita que según ellos, es la alternativa a Ngrok.
La verdad, es que la he probado, y funcionar, funciona… al menos por un rato. Porque lo he encontrado muy inestable y se ha caído el servicio en varias ocasiones.
¿Lo bueno?
¡No hay que instalar nada! Trabaja usando SSH, por lo que no tienes que instalar nada adicional si tienes SSH en el equipo.
Con un simple comando del estilo: ssh -R 80:localhost:3000 serveo.net pones la web que tengas en el puerto 3000.
Tendrás algo así:
root@odroidxu4:~# ssh -R 80:localhost:1880 serveo.net
Forwarding HTTP traffic from https://pyga.serveo.net
Press g to start a GUI session and ctrl-c to quit.
Como ves, te crea la url por https, que además, no cambia cada vez que reinicies
Localtunnel.me
Finalmente tenemos otra alternativa gratuita, que puedes encontrar en el repositorio de GitHub.
Tiene la ventaja de ser muy fácil de instalar:
npm install -g localtunnel
Además, puedes crear tu subdominio estilo https://programacionsiemens.localtunnel.me lo cual está muy bien respecto a ngrok o Serveo, ya que seleccionas tú mismo el subdominio a usar.
Lo he probado, y aparentemente funciona bastante bien.
Además, puedes usar certificados y otras opciones que puedes ver en la ayuda:
root@odroidxu4:~# lt –help
Usage: lt –port [num] <options>Options:
-p, –port Internal HTTP server port [required]
-h, –host Upstream server providing forwarding [default: «https://localtunnel.me»]
-s, –subdomain Request this subdomain
-l, –local-host Tunnel traffic to this host instead of localhost, override Host header to this host
–local-https Tunnel traffic to a local HTTPS server [boolean]
–local-cert Path to certificate PEM file for local HTTPS server
–local-key Path to certificate key file for local HTTPS server
–local-ca Path to certificate authority file for self-signed certificates
–allow-invalid-cert Disable certificate checks for your local HTTPS server (ignore cert/key/ca options) [boolean]
-o, –open Opens the tunnel URL in your browser
–print-requests Print basic request info [boolean]
–help Show this help and exit [boolean]
–version Show version number [boolean]
¿Hay más opciones?
Pues parece que sí.
He estado buscando un poco, y he encontrado este post en el que hablan de otras alternativas como :
- localhost.run (gratuita)
- Telebit (gratuita)
- pagekite.net (pago)
- forwardhq.com (pago)
¿Cual elegir?
Lo primero que he de decir es que como ya he comentado, solo he probado Ngrok, Localtunnel y Serveo.
Tendrás que probarlos, y comprobarlo por ti mismo.
Porque por lo que he leido, ngrok parece la más robusta, pero si no coges la opción de pago tal vez no sea la mejor alternativa.
Por otro lado con serveo no hay que instalar absolutamente nada, pero no parece demasiado estable. Al menos a mi me ha fallado bastante durante las pruebas.
Localhost, muy fácil de instalar, admite subdominios, y he de decir, que no he tenido problemas el poco tiempo que he jugueteado con ello.
¿Con cual me quedo yo?
A mi la que más confianza me da, es Ngrok.
Edito: Estoy probando Remote.it que ha comentado uno de los alumnos del curso de IOT e Industria 4.0, y ciertamente, tiene muy buena pinta. En cuanto vea con detenimiento como funciona, tal vez haga una entrada, porque parece realmente potente.
¿Y tú, conocías estos servicios?
Si has usado alguno de estos servicios y tienes buena o mala experiencia, estaría genial que la compartieras en los comentarios, para que así, todos tengamos referencia de otros usuarios.
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
5 Comentarios
Hola Iñigo, excelente, ¿has probado remote.it? Cuando hicettu curso indagando encontré dicha herramienta, puedes exponer un servidor web, ssh, vnc y accesos personalizados tienen una aplicación para móvil y también para windows donde accedes con tu cuenta y puedes abrir la comunicación con el servicio deseado, ottambién desde la misma webdde remote.it generas los links para el acceso. Te recomiendo lo pruebes.
Pues no, no la conocía. La pruebo y completaré el post.
¡Muchas gracias por el aporte!
Lo que no he logrado es, generar un acceso de tal manera que por medio de la pasarela (raspberry) utilizando remote.it pueda conectarme al PLC desde el TIA PORTAL. Con el objetivo de no meterse con la habilitación de puertos y permisos del sistema local.
Saludos
Moooola mucho Juan la aplicación Remote.it A ver si puedo ver como hacer el vpn. Pero funciona realmente bien.
Sí Iñigo, cuando probé las funcionalidades, tanto SSH, VNC, Node-red, las dashboards, etc. quedé muy contento con lo que se puede hacer, se tiene control completo vía remota de una pasarela con linux.
Saludos