Partage de technologie

Déployer chirpstack à l'aide de Docker sous Linux

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Table des matières

Introduction

2. Chirpstack

1. Qu'est-ce que Chirpstack ?

2. composant chirpstack

3. Pourquoi choisir le déploiement Docker ?

3. Processus de déploiement sous Linux

4. Processus de déploiement de l'interface Web


Introduction

J'utilise cet article sous LinuxDockerPour déployer chirpstack, chirpstack utiliseversion 4, version v4 et version 3 Par rapport à l'API gRPC, certaines modifications ont été apportées et la compatibilité doit être prise en compte. Mais nous utilisons uniquement Docker pour déployer chirpstack. En fait, il y a eu quelques changements dans le répertoire et l'interface Web. La logique de configuration est la même et peu de choses ont changé. Si vous utilisez la version v3, vous pouvez me demander directement si vous ne comprenez rien.

2. Chirpstack

1. Qu'est-ce que Chirpstack ?

ChirpStack est un serveur réseau LoRaWAN open source qui peut être utilisé pour configurer des réseaux LoRaWAN privés ou publics. ChirpStack fournit une interface WebUtilisé pour gérer les passerelles, les appareils et les applications.ChirpStack fournit une API basée sur gRPC qui peut être utilisée pour intégrer ou étendre ChirpStack.

2. composant chirpstack

(1) Serveur réseau ChirpStack : NS pour faire court, sa fonction estAssure le bon fonctionnement du réseau LoRaWAN et gère les communications des appareils.Que Responsable de la logique de base du réseau LoRaWAN. Il gère le processus de connexion des appareils, la planification des liaisons descendantes, le suivi de l'activité des appareils, etc. Il est également responsable du traitement des données de liaison montante reçues de la passerelle LoRa et de l'envoi des données de liaison descendante à la passerelle.

(2)Serveur d'applications ChirpStack: Abrégé en AS, sa fonction estGérer et traiter les données de la couche application et fournir une interface utilisateur et une interface API.Que Responsable du traitement et de la gestion des données de la couche application LoRaWAN. Il permet aux utilisateurs de définir des applications, des configurations d'appareils et des décodeurs de données. Il fournit également des API et des interfaces Web pour gérer les appareils, surveiller le trafic réseau, gérer le décodage des données et envoyer les données de la couche application à des applications externes.

(3)Pont de passerelle ChirpStack:ilAgit comme un middleware entre la passerelle et le serveur Web . Ce composant peut convertir le protocole du transpondeur de paquets LoRa transmis depuis la passerelle LoRa au format de données commun (JSON et Protobuf) du serveur réseau ChirpStack.

(4)PostgreSQL: Il s'agit d'un système de gestion de base de données relationnelle open source pourstockage persistant Données de configuration de ChirpStack, informations sur l'appareil, informations sur la passerelle, données d'application, etc.

(5) Redis: Il s'agit d'un système de stockage de structure de données en mémoire open source, généralementUtilisé comme base de données, cache et courtier de messages . ChirpStack utilise Redis pour mettre en cache et traiter certaines données en temps réel afin d'améliorer les performances du système et la vitesse de réponse.

(6)Moustique:Mosquitto est un serveur proxy du protocole MQTT pourGère la communication entre les appareils et les composants ChirpStack.Il permet la messagerie entre la passerelle LoRaWAN et le service ChirpStack.

Faites attention à la différence entre Postgre SQL et Redis. Postgre SQL stocke les données sur le disque et prend en charge le stockage persistant lorsque les données sont stockées sur le disque, les données ne seront pas perdues même si le système est redémarré et les performances sont relativement lentes. Redis stocke les données basées sur la mémoire, prend en charge des opérations de lecture et d'écriture efficaces et offre des performances extrêmement élevées.

3. Pourquoi choisir le déploiement Docker ?

(1) Simplifiez le processus de déploiement :Comme mentionné ci-dessus, ChirpStack est composé de plusieurs composants de service Docker Compose nous permet de transmettre un fichier de configuration (docker-compose.yml) Définissez et exécutez plusieurs conteneurs avec une seule commande (docker-compose up) pour démarrer tous les services.

(2) Isolement environnemental :Chaque service de chirpstack peut fonctionner dans des conteneurs indépendants, évitant ainsi les conflits de dépendance et la pollution de l'environnement.

(3) Portabilité : Grâce à Docker, nous pouvons garantir que nous exécutons le même code et la même configuration dans les environnements de développement, de test et de production. Cela permet d'éviter les « problèmes environnementaux » qui surviennent dans différents environnements.

(4) Configuration centralisée :Toutes les configurations de services sont centralisées en un seul docker-compose.yml fichiers pour une gestion et un contrôle de version faciles. Nous pouvons facilement modifier et mettre à jour la configuration.

3. Processus de déploiement sous Linux

1. Extrayez le code source de github

Version v4 : (La version v4 sera expliquée ensuite)

git clone https://github.com/chirpstack/chirpstack-docker.git

version v3 :

git clone https://github.com/chirpstack/chirpstack-docker/tree/v3

2. Modifierdocker-compose.yml Fichier de configuration

Le fichier est unApplication multi-conteneurs configurée à l'aide de Docker Compose pour le déploiement de la plateforme IoT ChirpStack. Couvre tous les principaux composants nécessaires à un système ChirpStack pour garantir qu'ils fonctionnent ensemble dans un conteneur Docker. (Notez que ce fichier de configuration n'a généralement besoin que de modifier la bande de fréquence et le port souhaités, et aucune autre modification n'est nécessaire)

(1) pile de chirps

Il s'agit du serveur d'applications ChirpStack (généralement aucune modification n'est requise).

  1. chirpstack:
  2. image: chirpstack/chirpstack:4
  3. command: -c /etc/chirpstack
  4. restart: unless-stopped
  5. volumes:
  6. - ./configuration/chirpstack:/etc/chirpstack
  7. - ./lorawan-devices:/opt/lorawan-devices
  8. depends_on:
  9. - postgres
  10. - mosquitto
  11. - redis
  12. environment:
  13. - MQTT_BROKER_HOST=mosquitto
  14. - REDIS_HOST=redis
  15. - POSTGRESQL_HOST=postgres
  16. ports:
  17. - 8080:8080
  • image : utiliser chirpstack/chirpstack:4 Miroir.
  • commande : spécifiez le chemin du fichier de configuration comme /etc/chirpstack
  • redémarrage : réglé sur unless-stopped, c'est-à-dire que le conteneur redémarrera automatiquement à moins qu'il ne soit arrêté manuellement.
  • volumes : monter le répertoire local ./configuration/chirpstack dans le conteneur/etc/chirpstack,ainsi que ./lorawan-devices dans le conteneur/opt/lorawan-devices
  • depend_on : dépendance postgres, mosquitto, redis Trois prestations.
  • environnement : définissez les variables d'environnement, y compris MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • ports : ports exposés 8080, mettez le contenu dans le récipient 8080 Port mappé à l'hôte8080 port.

(2) passerelle-chirpstack

Il s'agit du service de pont de passerelle ChirpStack (la bande cn470_10 que j'utilise ici).

  1. chirpstack-gateway-bridge:
  2. image: chirpstack/chirpstack-gateway-bridge:4
  3. restart: unless-stopped
  4. ports:
  5. - 1700:1700/udp
  6. volumes:
  7. - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
  8. environment:
  9. - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/event/{{ .EventType }}
  10. - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/state/{{ .StateType }}
  11. - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/command/#
  12. depends_on:
  13. - mosquitto
  • estart : réglé sur unless-stopped
  • ports : exposer les ports UDP 1700
  • volumes : monter le répertoire local ./configuration/chirpstack-gateway-bridge dans le conteneur/etc/chirpstack-gateway-bridge
  • environnement : définissez les variables d'environnement et spécifiez le modèle de sujet MQTT.
  • depend_on : dépendance mosquitto Servir.

(3)chirpstack-passerelle-pont-station-de-base

Il s'agit du service station de base du pont passerelle ChirpStack (notez la modification de la partie commande).

  1. chirpstack-gateway-bridge-basicstation:
  2. image: chirpstack/chirpstack-gateway-bridge:4
  3. restart: unless-stopped
  4. command: -c /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge-basicstation-cn470_10.toml
  5. ports:
  6. - 3001:3001
  7. volumes:
  8. - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
  9. depends_on:
  10. - mosquitto
  • image : utiliser chirpstack/chirpstack-gateway-bridge:4 Miroir.
  • redémarrage : réglé sur unless-stopped
  • commande : utiliser le fichier de configuration chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • ports : ports exposés 3001
  • volumes : monter le répertoire local ./configuration/chirpstack-gateway-bridge dans le conteneur/etc/chirpstack-gateway-bridge
  • depend_on : dépendance mosquitto Servir.

(4)API de repos de chirpstack

Il s'agit du service API REST de ChirpStack.

  1. chirpstack-rest-api:
  2. image: chirpstack/chirpstack-rest-api:4
  3. restart: unless-stopped
  4. command: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecure
  5. ports:
  6. - 8090:8090
  7. depends_on:
  8. - chirpstack
  • image : utiliser chirpstack/chirpstack-rest-api:4 Miroir.
  • redémarrage : réglé sur unless-stopped
  • commande : Spécifiez le serveur ChirpStack comme chirpstack:8080, l'adresse de liaison est 0.0.0.0:8090et activez le mode non sécurisé.
  • ports : ports exposés 8090
  • depend_on : dépendance chirpstack Servir.

(5)postgres

Il s'agit du service de base de données PostgreSQL.

  1. postgres:
  2. image: postgres:14-alpine
  3. restart: unless-stopped
  4. volumes:
  5. - ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d
  6. - postgresqldata:/var/lib/postgresql/data
  7. environment:
  8. - POSTGRES_PASSWORD=root
  • image : utiliser postgres:14-alpine Miroir.
  • redémarrage : réglé sur unless-stopped
  • volumes : monter le répertoire local ./configuration/postgresql/initdb dans le conteneur/docker-entrypoint-initdb.d, et montez le volume Docker postgresqldata dans le conteneur/var/lib/postgresql/data
  • environnement : définir les variables d'environnement POSTGRES_PASSWORD pourroot

(6) redis

Il s'agit d'un service de base de données en mémoire Redis.

  1. redis:
  2. image: redis:7-alpine
  3. restart: unless-stopped
  4. command: redis-server --save 300 1 --save 60 100 --appendonly no
  5. volumes:
  6. - redisdata:/data
  • image : utiliser redis:7-alpine Miroir.
  • redémarrage : réglé sur unless-stopped
  • commande : exécuter redis-serveret spécifiez la stratégie de sauvegarde.
  • volumes : monter les volumes Docker redisdata dans le conteneur/data

(7)moustique

Il s'agit du service de courtier de messages MQTT.

  1. mosquitto:
  2. image: eclipse-mosquitto:2
  3. restart: unless-stopped
  4. ports:
  5. - 1883:1883
  6. volumes:
  7. - ./configuration/mosquitto/config/:/mosquitto/config/

(8)Volumes

Définir les volumes de données.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata : utilisé pour stocker les données PostgreSQL.
  • redisdata : utilisé pour stocker les données Redis.

3. Docke-compose démarre

sudo docker-compose up -d

4. Processus de déploiement de l'interface Web

1. Visitez chirpstack (IP) : 8080, le mot de passe du compte par défaut est admin

2. Créez une passerelle

Ensuite, donnez normalement un nom à la passerelle, mais n'oubliez pas l'ID de la passerelle. L'ID correspondant doit être modifié dans la configuration de la passerelle.

3. Ajouter des fichiers de périphérique

Remplissez-le selon vos propres besoins.

4. Configurer AS

Après avoir ajouté l'application Play, ajoutez tour à tour les appareils et les paramètres de multidiffusion dans l'application.

 

Enfin, exécutez la passerelle pour voir si la passerelle peut se connecter au serveur cloud et transférer avec succès le message.