Instalación de ChirpStack

La instalación efectuada en esta implementación es mediante el uso de contenedores. Para lo cual se ha empleado una versión modificada del repositorio sugerido por ChirpStack.

En este caso, ChirpStack provee un conjunto de imágenes de Docker para cada uno de los componentes del proyecto, los cuales se pueden encontrar en el siguiente enlace: https://hub.docker.com/u/chirpstack/.

No obstante, una mejor forma de orquestar los contenedores, se emplea Docker Compose, cuyo repositorio sugerido por ChirpStack es https://github.com/brocaar/chirpstack-docker.git.

Luego, para poder utilizar este repositorio es necesario realizar los siguientes pasos que se detallan a continuación.

Obtener el repositorio

En el presente caso, se está empleado una versión modificado del repositorio sugerido, el cual se puede encontrar en la siguiente dirección: https://gitlab.com/plataformaiot/chirpstack-docker.

Este repositorio constituye un submódulo del repositorio general para docker de este proyecto, el cual se puede apreciar también en la instalación de la plataforma.

git clone https://gitlab.com/plataformaiot/deployment-docker
cd deployment-docker
git submodule init
git submodule update
cd chirpstack-docker

Una vez que se encuentra en la carpeta del repositorio de ChirpStack puede realizar el despliegue, no obstante, primero se deberán realizar algunas configuraciones para adaptarlos a las características de los equipos.

Configurar los componentes de ChirpStack

ChirpStack cuenta con varios componentes que se deben desplegar a través de docker compose para lograr la conexión de dispositivos a través de la arquitectura de LoRaWAN.

En este caso, la configuración más importante es del servidor de red, que en el caso del repositorio que emplea este proyecto se encuentra adaptado para trabajar en la banda de frecuencias AU915, empleando los 16 primeros canales, debido a que los gateways con los que se trabaja en la institución donde se está aplicando este proyecto, operan dentro de estas bandas.

La configuración se puede encontrar en el folder configuration/chirpstack-network-sever/ en el archivo chirpstack-network-server.toml.

La modificación más importante se puede apreciar en la siguiente sección:

[network_server.band]
name="AU915"

  [network_server.network_settings]
  enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Despliegue mediante docker

Una vez que se ha configurado, es posible desplegar los contenedores mediante Docker compose para lo cual es necesario contar con docker y docker-compose instalados.

Adicionalmente, se requiere contar con una red externa para poder realizar la integración con Thingsboard, denominada nginx-proxy.

docker-compose.yml
version: "3"

services:
  chirpstack-network-server:
    image: chirpstack/chirpstack-network-server:3
    volumes:
      - ./configuration/chirpstack-network-server:/etc/chirpstack-network-server

  chirpstack-application-server:
    image: chirpstack/chirpstack-application-server:3
    ports:
      - 8080:8080
    volumes:
      - ./configuration/chirpstack-application-server:/etc/chirpstack-application-server

  chirpstack-gateway-bridge:
    image: chirpstack/chirpstack-gateway-bridge:3
    ports:
      - 1700:1700/udp
    volumes:
      - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge

  chirpstack-geolocation-server:
    image: chirpstack/chirpstack-geolocation-server:3
    volumes:
      - ./configuration/chirpstack-geolocation-server:/etc/chirpstack-geolocation-server

  postgresql:
    image: postgres:9.6-alpine
    environment:
      - POSTGRES_PASSWORD=root
    volumes:
      - ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d
      - postgresqldata:/var/lib/postgresql/data

  redis:
    image: redis:5-alpine
    volumes:
      - redisdata:/data

  mosquitto:
    image: eclipse-mosquitto:2
    ports:
      - 1883:1883
    volumes:
      - ./configuration/eclipse-mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf

volumes:
  postgresqldata:
  redisdata:

networks:
  default:
    external:
      name: nginx-proxy

Ahora para poder desplegar estos contenedores se emplea el siguiente comando:

docker-compose up -d