Acceder desde una Ip a IIS Express


Aunque IIS Express está diseñado principalmente para ser utilizado por desarrolladores en  un equipo de trabajo usando simplemente «localhost:puerto» como punto de pruebas pruebas, quizás no sepa que haciendo un par de cambios en la configuración , también es posible utilizarlo desde equipos externos, por ejemplo para poder hacer pruebas de una web o servicio desde otros dispositivos conectados a la misma red  como terminales móviles .

Partiremos de un proyecto ASP.NET  Core  creado en Visual Studio , da igual si se trata de una aplicación MVC, Web Forms, Web API o lo que sea. Para desarrollar el ejemplo, imaginemos que al ejecutarlo en local estamos usando la URL http://localhost:44342/.

Veamos paso a paso cómo acceder a esta aplicación desde otro equipo conectado a la red local, y cómo solucionar algunos de los problemas que podemos encontrar por el camino.

1. Averiguamos con qué dirección está visible nuestro equipo desde el exterior
Esto podemos hacerlo con cierta facilidad ejecutando el comando «ipconfig | find «IPv» » en la terminal (cmd)  de la siguiente forma:

C:\WINDOWS\system32>ipconfig | find "IPv4"
Dirección IPv4. . . . . . . . . . . . . . : 192.168.56.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.99.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.1.46
Dirección IPv4. . . . . . . . . . . . . . : 172.17.117.209
Dirección IPv4. . . . . . . . . . . . . . : 172.17.177.129

C:\WINDOWS\system32>

El número de resultados que veremos ahí dependerá de los adaptadores de red (físicos o virtuales) que tengamos configurados en nuestro equipo. De ellos tendremos que seleccionar la dirección que se encuentre en el rango de red usado por los equipos externos desde los cuales queremos acceder a nuestra web.

En el jemplo  como  todos los equipos de la red local usan direcciones del tipo 192.168.56.*,  el nombre de host que deberían usar para acceder a mi equipo de trabajo sería la 192.168.56.1

2. Localizamos el archivo de configuración de IIS Express del proyecto

Este archivo se llama «applicationhost.config» y en proyectos de Visual Studio se encuentra en una carpeta llamada «.vs\nombre de proyecto\config» que encontramos en el directorio  de la solución, en la subcarpeta del nombre del proyecto  y dentro de ella, en la subcarpeta «config».

En otros casos, el archivo de configuración se puede  encontrar en la carpeta de configuración de IIS Express de vuestro usuario en el equipo: %userprofile%\documents\iisexpress\config.

3. Localizamos las líneas donde se especifica la URL por defecto del proyecto

En el archivo «applicationhost.config«, debemos localizar la parte de la configuración donde se indica la URL de acceso al proyecto en la máquina local. Por ejemplo, podría ser algo como esto:

<bindings>
<binding protocol=»http» bindingInformation=»*:53980:localhost» />
<binding protocol=»https» bindingInformation=»*:44342:localhost» />
</bindings>

 

Observe que este binding está limitando el acceso a vuestro sitio web, permitiendo únicamente el uso del host «localhost» para acceder al mismo. Para habilitar el acceso desde equipos externos, lo primero que tenemos que hacer es añadir otros bindings con el nombre de host que se utilizará desde fuera.

4. Añadimos a la configuración de IIS Express el nuevo binding con la dirección de nuestro equipo

En la sección de configuración <bindings>, añadimos una nueva línea en la que indicaremos que la aplicación también será accesible utilizando como host nuestra IP, de forma que quedaría más o menos como aparece a continuación.

 Ojo, ¡deberiamos elegir un puerto distinto al que usamos en localhost para que no haya conflictos !

Bien, pues si ahora intentamos ejecutar sin depuración sin permisos de administrador  nos aparecera el error de que no es posible iniciar IIS Express, pero no se preocupe pues este error aparece siempre que no hayamos lanzado Visual Studio como administrador, pues el nivel de permisos del proceso bajo el que se lanza IIS Express no es suficiente como para «apropiarse» de una dirección y puerto TCP/IP del equipo y utilizarla para escuchar peticiones.

En cambio, si iniciamos Visual Studio como administrador veremos que arranca correctamente y que, de hecho, podemos acceder a la aplicación utilizando tanto localhost:44342 como con permisos de administrador 192.168.1.46:44342, lo que quiere decir que, si no existen problemas de permisos, el binding está bien hecho.

 

5. Reservar la URL y conceder permisos de uso (sólo no administradores)

Como hemos comentado antes, este paso no será necesario si estamos ejecutando Visual Studio (y por tanto IIS Express) como administrador. Pero si no es así, debemos abrir una la línea de comandos con permisos elevados y utilizar la siguiente instrucción para reservar la URL y darle derechos de uso a determinados usuarios del equipo, por ejemplo como sigue desde la terminal de windows (cmd)  con permisos de administrador (no lo intente desde PowerShell porque le dara error) :

Pero antes de hacerlo tened en cuenta unos detalles:

  • Primero, la URL debe estar completa, incluida la barra del final.
  • El usuario puede ser cualquier grupo del sistema o nombre de usuario con dominio.
  • Los nombres de grupo son sensibles al idioma de instalación de Windows. Es decir, si vuestro Windows está instalado en inglés, debéis usar el nombre «everyone» en lugar de «todos».

Tras ejecutar el comando, ya debería ser posible acceder a la aplicación desde el equipo utilizando tanto la URL interna (localhost) como la externa (192…), cada una con su puerto correspondiente.

Pero el acceso externo aún no está garantizado: el firewall impedirá el acceso a no ser que le indiquemos lo contrario.

6. Abrir el firewall

Por defecto, el firewall de Windows rechazará cualquier intento de acceso a la máquina desde el exterior, por lo que debemos configurar una regla de entrada que asegure que las peticiones hacia nuestra web podrán entrar sin que el firewall rechaze ese trafico.

Esto lopodemos hacer dede el intrefaz graficos en configuracion avanzada en reglas del Cortafuegois  o bien desde la  consola de comandos con permisos de administrador, ejecutando la siguiente orden :netsh advfirewall firewall add rule name=»Acceso externo a mi aplicacion web» dir=in action=allow protocol=TCP localport=44342

Por supuesto, recuerde que:

  • El parámetro localport debe ser el puerto que haya elegido para el acceso externo, el mismo que usamos en el archivo de configuración de IIS Express, y más adelante al reservar la URL.
  • Es conveniente poner un nombre reconocible a la regla, de forma que más adelante podamos identificarla con facilidad.

Como ultima nota, si  desea probar su aplicacion desde un  dispositivo android , aseguresea antes qeu este esta dentro de su red, y no olvide escribir la direcccion completa (con https)  y desde un navegador diferente al usado como navegador interna ( por ejemplo con Chrome o Firefox)

¡Y eso es todo! Si ha llegado hasta aquí, ya podra ejecutar o depurar vuestra aplicación en Visual Studio, y acceder a ella desde cualquier equipo de la red local usando la dirección que hayas elegido en los pasos anteriores.

Instalación de Node-Red, InfuxDB y Grafana


La Raspberry Pi  es una placa ideal para monitorear todo tipo de cosas. Hoy usaremos Node-Red, InfluxDB y Grafana para monitorizar diferentes  entidades , así como habilitar  alarmas hacia nuestro  smartphone o  en el  correo.

Resumidamente estos son los tres componentes que usaremos

  • Grafana es un software libre basado en licencia de Apache 2.0,que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB y OpenTSDB.​ Originalmente comenzó como un componente de Kibana y que luego le fue realizado una bifurcación
  • InfluxDB es una base de datos de series de tiempo de código abierto (TSDB) desarrollada por InfluxData. Está escrito en Go y optimizado para el almacenamiento y la recuperación rápidos y de alta disponibilidad de datos de series de tiempo en campos como el monitoreo de operaciones, métricas de aplicaciones, datos de sensores de Internet de las cosas y análisis en tiempo real. También tiene soporte para procesar datos desde Graphite . 
  • Node-RED es una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte del Internet de las cosas .Proporciona un editor de flujo basado en navegador web , que se puede utilizar para crear funciones de JavaScript . Los elementos de las aplicaciones se pueden guardar o compartir para su reutilización. El tiempo de ejecución se basa en Node.js . Los flujos creados en Node-RED se almacenan mediante JSON . Desde la versión 0.14, los nodos MQTT pueden realizar conexiones TLS configuradas correctamente . En 2016, IBM contribuyó con Node-RED como un proyecto de JS Foundation de código abierto .

Preparar imagen en tarjeta SD

Descargar imagen: http://bit.ly/2GdZbPe
Agregar archivo ssh vacío al directorio raíz de la tarjeta
Agregar wpa_supplicant.conf al directorio raíz

Contenido del archivo wpa_supplicant.conf:

country = CH
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1
network = {
  ssid = ”…”
  psk = ”…”
}

Inserte la tarjeta SD en su Raspberry, arranque y encuentre su dirección IP por ejemplo usando https://www.advanced-ip-scanner.com   o simplemente con el comando sudo ifconfig
Inicie sesión desde un terminal usando Putty https://www.putty.org/ usando  las credecniales por defcto: Pi/raspberry  

Ahora debe actualizar su Raspberry a la versión más reciente :

 sudo apt-get update && sudo apt-get upgrade 

Configuración en la  Raspbery

Configuración de Mosquitto

Tenemos que modificar el fichero mosquito,conf , para lo cual;

sudo nano /etc/mosquitto/mosquitto.conf 

Insertaremos el siguiente comando  al finala del fichero  y salivar  los cambios:
allow_anonymous true

Reiniciar Mosquitto

 sudo systemctl reiniciar mosquitto 

Configuración de influxDB

Crear usuario:

CREATE USER "pi" WITH PASSWORD 'raspberry' WITH ALL PRIVILEGES
exit

Cambiar archivo de configuración:

sudo nano /etc/influxdb/influxdb.conf

En [http] descomente:
enabled = true y bind-address =: 8086

en [monitor] descomente y cambie a:
store-enabled = false

sudo service influxdb restart

Configuración de Node-Red

Importar flujos desde: https://drive.google.com/open?id=1kECuykSaFO7Qb_67QqIHtlpvElpVWDMI

Instalar correo

sudo apt-get install ssmtp 
sudo apt-get install mailutils
sudo nano /etc/ssmtp/ssmtp.conf

Para Gmail, ingrese este texto:

mailhub = smtp.gmail.com: 587
AuthUser = [yourmailaddress] @ gmail.com
AuthPass = [emailPassword]
UseSTARTTLS = YES
UseTLS = YES

Pruebe su correo

echo "Hola mundo cuerpo del correo electrónico" | mail -s "Prueba asunto "   [email protected]

Agregue soporte para aplicaciones menos seguras en Gmail: https://myaccount.google.com/lesssecureapps

Crear una base de datos influxDB

influx

Create database [su nombre de la base de datos]
Show DATABASES
Use [ su nombre de la base de dato]
Show series

exit

Instalar y preparar Telegram

Instale Telegram en su PC https://desktop.telegram.org/

Inicie el telegrama y busque «botfather»

Ingrese el nombre de su bot deseado anotando la ficha.
Envíe un mensaje de texto al bot.

Vaya a: https://api.telegram.org/bot[Token]/getUpdates   y tome nota de la identificación (ID) pues lo usaremos más tarde:

Prepare Grafana

Ejemplos:
Presión de cerveza: https://drive.google.com/open?id=1beKyu4WuGErAHeYKyE3-8wtpyZJ8yHkZ
Clima: https://drive.google.com/open?id=18326_tjcVln0xBLRJINJn2ZwP0lNlyHX
YouTube: https://drive.google.com / open? id = 1TrZAGnxn4zRfyO_X8RXw4ZtQIvJi8JnQ

Agregar canal de notificación por correo

sudo nano /etc/grafana/grafana.ini

enabled=true
host = smtp.gmail.com:587
user =[receivingEmail]@gmail.com
password =”[emailPassword]”
skip_verify = true
from_address = [sendingEmail]@gmail.com
from_name = [whateverName]

Agregar canal de notificación de Telegram

Añada ahora el nuevo canal de notificaciones de Telegram. Insertar chatID y token obtenidos anteriormente

Y presione «Enviar prueba»

 

Contraseñas por defecto usadas

Dónde Usuario Contraseña
Raspberry Pi raspberry
Flujos de node-red admin admin
IU Node-Red User user
Usuario de InfluxDB Pi raspberry
Grafana admin admin

 

 

 

Fuente: sensoriot.org