Despliegue general de la plataforma
Para el despliegue de la plataforma, se requiere contar con la instalación de
docker y docker-compose en la máquina virtual. Así mismo como parte de la
configuración se debe crear una red de docker denominada nginx-proxy
a la
cual se conectaran todos los contenedores de las diferentes aplicaciones a
desplegar. Finalmente, se pueden desplegar cada uno de los servicios que forman
parte de la plataforma.
Instalación de Docker
Para la instalación de Docker y docker-compose se ha creado un script que realiza dicha tarea, el cual se muestra a continuación:
#!/bin/bash -e
# Avoids prompting to accept update
export DEBIAN_FRONTEND=noninteractive
echo '* libraries/restart-without-asking boolean true' | sudo debconf-set-selections
sudo apt-get clean
sudo apt-get update
sudo apt-get -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef upgrade -yq
sudo apt-get install -yq apt-transport-https ca-certificates curl gnupg-agent software-properties-common
#Verify if docker exist, if not install it
if ! command -v docker &> /dev/null
then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
# the command $(lsb_release -cs) is not evaluated, version hardcoded
sudo add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable'
sudo apt-get -y update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
else
echo "Docker is installed in your system... Skipping"
fi
#Verify if docker-compose exist, if not install it
if ! command -v docker-compose &> /dev/null
then
#Same apply to docker compose, version hardcoded
#sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
else
echo "Docker-compose is installed in your system... Skipping"
exit
fi
Este script se puede ejecutar mediante:
sudo ./install-docker.sh
Creación de red nginx-proxy
Para la creación de la red de Docker, también se cuenta con un script:
#!/bin/bash -x
#Create external network to communicate thingsboard with chirpstack
sudo docker network create nginx-proxy
Luego, este script puede ser ejecutado mediante:
sudo ./create-network.sh
Despliegue de todos los servicios
Finalmente, se cuenta con un script para el despliegue de cada uno de los servicios y aplicaciones contemplados para la plataforma:
#!/bin/bash
BASEDIR=$PWD
echo "$BASEDIR directory"
#Check enviroment variables required
if [[ -z $DOMAIN_BASE ]]; then
echo "Using default DOMAIN_BASE"
DOMAIN_BASE=localhost
fi
if [[ -z $DOMAIN_EMAIL ]]; then
echo "Using default DOMAIN_EMAIL"
DOMAIN_EMAIL=mail@example.com
fi
export DOMAIN_BASE=$DOMAIN_BASE
export DOMAIN_EMAIL=$DOMAIN_EMAIL
#Nginx-proxy
echo "Nginx-proxy deployment..."
cd nginx-proxy
./deploy.sh
cd $BASEDIR
echo "$BASEDIR directory"
#Home-page
echo "Home-page deployment..."
cd home-page
./deploy.sh
cd $BASEDIR
echo "$BASEDIR directory"
#Thingsboard
echo "ThingsBoard deployment..."
cd thingsboard
./deploy.sh
cd $BASEDIR
echo "$BASEDIR directory"
#ChirpStack
echo "ChirpStack deployment..."
cd chirpstack-docker
./deploy.sh
cd $BASEDIR
echo "$BASEDIR directory"
#Prometheus
echo "Prometheus deployment..."
cd prometheus
./deploy.sh
cd $BASEDIR
echo "$BASEDIR directory"
#Grafana
echo "Grafana deployment..."
cd grafana
./deploy.sh
echo "Deployment has finished"
Este script requiere de dos variables de entorno que servirán para designar el dominio base y el correo electrónico de registro de dicho dominio para la generación de certificados mediante Let’s Encrypt.
Nombre | Ejemplo |
---|---|
DOMAIN_BASE |
localhost |
DOMAIN_EMAIL |
Estas variables pueden ser declaradas de forma global o en linea con el script, de tal manera que, para desplegar los servicios, se invoque de la siguiente manera:
DOMAIN_BASE=<dominio.com> DOMAIN_EMAIL=<mail@dominio.com> ./deploy-all.sh
Una vez definido esta dirección y es reconocida mediante el registro correspondiente en la zona DNS del dominio, se puede acceder a los servicios de la plataforma en la siguientes direcciones:
-
https://dominio.com, página de inicio del proyecto del proyecto
-
https://thingsboard.dominio.com, página de ThingsBoard
-
https://chirpstack.dominio.com, página de ChirpStack
-
https://grafana.dominio.com, página de Grafana