/
Dashboard de servicios
Search
Try Notion
Dashboard de servicios
Fecha publicación
2021/12/20
#
26
Dificultad
Básico
3 more properties
Descripción
Ya empezamos a tener algunos servicios en nuestro IoT Gateway y más de uno tiene interficie de gestión Web. Así pues, nada más útil que hacer una página que los liste todos y a través de un enlace nos permita acceder de forma transparente y sencilla a los mismos.
Esto también será muy práctico cuando empecemos a desarrollar soluciones y funciones para nuestros clientes. Ya que podremos referenciar los dashboards, sinópticos y otros elementos desde esta única página web.
Proxy inverso con NGINX
NGINX permitirá acceder a nuestros servicios desde un único punto de acceso.
Directorios y extracción de ficheros
Descarga el siguiente fichero y lo copiamos al directorio /docker-data de nuestro IoT Gateway:
y ejecuta los siguientes parámetros:
cd /docker-data # asumimos que el fichero nginx.tar.gz esta en este directorio tar xvfz nginx.tar.gz
Copy
Bash
si este proceso ha funcionado adecuadamente al entrar en el directorio nginx y ejecutar el comando tree deberíamos ver esta estructura de ficheros.
. ├── data ├── docker-compose.yml ├── etc │   ├── conf.d │   │   └── default.conf │   ├── fastcgi_params │   ├── koi-utf │   ├── koi-win │   ├── mime.types │   ├── nginx.conf │   ├── scgi_params │   ├── uwsgi_params │   └── win-utf ├── html │   └── index.html └── logs
Copy
YAML
Fichero /docker-data/nginx/docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
volumes:
- ./etc:/etc/nginx:ro
- ./logs:/var/logs/nginx
- ./html:/usr/share/nginx/html:ro
- /etc/localtime:/etc/localtime:ro
environment:
- TZ="CET"
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
ports:
- 80:80
extra_hosts:
# pon aquí la IP de tu host
host: 10.2.0.54
networks:
- i40sys
networks:
i40sys:
external:
name: i40sys
Modificación de los servicios web ya instalados para trabajar con el proxy inverso
Cambios en Grafana
⚠️
Importante tener parado Grafana para hacer este cambio
cd /docker-data/grafana docker-compose down
Copy
Shell
En el fichero de configuración de Grafana (/docker-data/grafana/etc/grafana.ini) hay que localizar este trozo de código:
# The full public facing url you use in browser, used for redirects and emails # If you use reverse proxy and sub path specify full url (with sub path) ;root_url = %(protocol)s://%(domain)s:%(http_port)s/ # Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons. ;serve_from_sub_path = false
Copy
YAML
y añadimos una línia como esta
# The full public facing url you use in browser, used for redirects and emails # If you use reverse proxy and sub path specify full url (with sub path) ;root_url = %(protocol)s://%(domain)s:%(http_port)s/ root_url = %(protocol)s://%(domain)s:%(http_port)s/board # Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons. serve_from_sub_path = true
Copy
YAML
volver a levantar Grafana
cd /docker-data/grafana docker-compose up -d
Copy
Shell
Cambios en Node-RED
⚠️
Importante tener parado Node-RED para hacer este cambio
cd /docker-data/node-red docker-compose down
Copy
Shell
Cambios en /docker-data/node-red/docker-compose.yml
Básicamente dejamos de usar el stack de red del host para poner NodeRED en nuestra red de contenedores privada llamada i40sys.
version: "3.7"
services:
node-red:
container_name: node-red
image: nodered/node-red:latest
environment:
- TZ=Europe/Madrid
volumes:
- /dev:/host/dev
- /etc/localtime:/etc/localtime:ro
- ./data:/data
- ./known_hosts:/usr/src/node-red/.ssh/known_hosts
#network_mode: host
healthcheck:
#test: ["CMD", "curl", "--fail", "http://localhost:1880", "||","exit 1" ]
test: ["CMD-SHELL","node /healthcheck.js"]
interval: 60s
timeout: 3s
retries: 3
start_period: 30s
restart: unless-stopped
privileged: true
networks:
- i40sys
networks:
i40sys:
external:
name: i40sys
Cambios en el fichero de configuración
En el fichero de configuración de NodeRED (/docker-data/node-red/data/settings.js) localizamos estas líneas:
// The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. //httpRoot: '/red',
Copy
JSON
y añadimos una nueva línia para que quede exactamente así:
// The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. //httpRoot: '/red', httpRoot: '/flows',
Copy
JSON
volver a levantar Node-red
cd /docker-data/node-red docker-compose up -d
Copy
Shell
Instalación y configuración del dashboard de servicios
El dashboard que hemos creado es como este:
Y el proyecto que hemos usado para esto es:
Creamos los directorios de trabajo:
Descarga el siguiente fichero y lo copiamos al directorio /docker-data de nuestro IoT Gateway:
y ejecuta los siguientes parámetros:
cd /docker-data # asumimos que el fichero nginx.tar.gz esta en este directorio tar xvfz dashboard.tar.gz
Copy
Bash
si este proceso ha funcionado adecuadamente al entrar en el directorio dashboard y ejecutar el comando tree deberíamos ver esta estructura de ficheros.
. ├── assets │   ├── additionnal-page.yml.dist │   ├── config.yml │   ├── config.yml.dist │   ├── config.yml.dist.sample-sui │   ├── custom.css │   ├── icons │   │   ├── favicon-16x16.png │   │   ├── favicon-16x16.png_ │   │   ├── favicon-32x32.png │   │   ├── favicon-32x32.png_ │   │   ├── icon-any.png │   │   ├── icon-any.svg │   │   ├── icon-maskable.png │   │   └── safari-pinned-tab.svg │   ├── logo_i40_systems_fondo_blanc.png │   ├── manifest.json │   └── tools │   ├── sample2.png │   └── sample.png └── docker-compose.yml
Copy
JSON
Fichero /docker-data/dashboard/docker-compose.yml
version: "3"
services:
homer:
image: b4bz/homer
container_name: homer
volumes:
- ./assets/:/www/assets
environment:
- UID=1000
- GID=100
restart: unless-stopped
networks:
- i40sys
networks:
i40sys:
external:
name: i40sys