Technologieaustausch

Bereitstellung von Chirpstack mit Docker unter Linux

2024-07-12

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

Inhaltsverzeichnis

I. Einleitung

2. Chirpstack

1. Was ist Chirpstack?

2. Chirpstack-Komponente

3. Warum sollten Sie sich für die Docker-Bereitstellung entscheiden?

3. Bereitstellungsprozess unter Linux

4. Bereitstellungsprozess der Webschnittstelle


I. Einleitung

Ich verwende diesen Artikel unter LinuxDockerUm Chirpstack bereitzustellen, verwendet Chirpstackv4-Version, v4-Version und v3-Version Im Vergleich zur gRPC-API wurden einige Änderungen vorgenommen und die Kompatibilität muss berücksichtigt werden. Aber wir verwenden Docker nur zum Bereitstellen von Chirpstack. Tatsächlich gab es einige Änderungen im Verzeichnis und in der Weboberfläche. Die Konfigurationslogik ist dieselbe und es hat sich nicht viel geändert. Wenn Sie die v3-Version verwenden, können Sie mich direkt fragen, wenn Sie etwas nicht verstehen.

2. Chirpstack

1. Was ist Chirpstack?

ChirpStack ist ein Open-Source-LoRaWAN-Netzwerkserver, der zum Aufbau privater oder öffentlicher LoRaWAN-Netzwerke verwendet werden kann. ChirpStack bietet eine WeboberflächeWird zur Verwaltung von Gateways, Geräten und Anwendungen verwendet.ChirpStack bietet eine gRPC-basierte API, die zur Integration oder Erweiterung von ChirpStack verwendet werden kann.

2. Chirpstack-Komponente

(1) ChirpStack-Netzwerkserver: NS kurz gesagt, seine Funktion istStellt den ordnungsgemäßen Betrieb des LoRaWAN-Netzwerks sicher und verwaltet die Gerätekommunikation.Das Verantwortlich für die Kernlogik des LoRaWAN-Netzwerks. Es übernimmt den Gerätebeitrittsprozess, die Downlink-Planung, die Geräteaktivitätsverfolgung usw. Es ist auch für die Verarbeitung der vom LoRa-Gateway empfangenen Uplink-Daten und das Senden von Downlink-Daten an das Gateway verantwortlich.

(2)ChirpStack-Anwendungsserver: Abgekürzt als AS, seine Funktion istVerwalten und verarbeiten Sie Daten auf Anwendungsebene und stellen Sie eine Benutzeroberfläche und eine API-Schnittstelle bereit.Das Verantwortlich für die Verarbeitung und Verwaltung von LoRaWAN-Anwendungsschichtdaten. Es ermöglicht Benutzern, Anwendungen, Gerätekonfigurationen und Datendecoder zu definieren. Es bietet außerdem APIs und Webschnittstellen für die Verwaltung von Geräten, die Überwachung des Netzwerkverkehrs, die Datendekodierung und das Senden von Daten auf Anwendungsebene an externe Anwendungen.

(3)ChirpStack Gateway-Brücke:EsFungiert als Middleware zwischen dem Gateway und dem Webserver . Diese Komponente kann das vom LoRa-Gateway übertragene LoRa-Pakettransponderprotokoll in das gemeinsame Datenformat (JSON und Protobuf) des ChirpStack-Netzwerkservers konvertieren.

(4) PostgreSQL: Dies ist ein relationales Open-Source-Datenbankverwaltungssystem fürDauerspeicher Konfigurationsdaten, Geräteinformationen, Gateway-Informationen, Anwendungsdaten usw. von ChirpStack.

(5) Redis: Dies ist normalerweise ein Open-Source-In-Memory-DatenstrukturspeichersystemWird als Datenbank, Cache und Nachrichtenbroker verwendet . ChirpStack verwendet Redis zum Zwischenspeichern und Verarbeiten einiger Echtzeitdaten, um die Systemleistung und Reaktionsgeschwindigkeit zu verbessern.

(6) Mücke:Mosquitto ist ein Proxyserver des MQTT-Protokolls fürVerwaltet die Kommunikation zwischen Geräten und ChirpStack-Komponenten.Es ermöglicht die Nachrichtenübermittlung zwischen dem LoRaWAN-Gateway und dem ChirpStack-Dienst.

Beachten Sie den Unterschied zwischen Postgre SQL und Redis. Postgre SQL speichert Daten basierend auf der Festplatte und unterstützt die dauerhafte Speicherung. Wenn Daten auf der Festplatte gespeichert werden, gehen die Daten auch bei einem Neustart des Systems nicht verloren. Redis speichert Daten speicherbasiert, unterstützt effiziente Lese- und Schreibvorgänge und weist eine extrem hohe Leistung auf.

3. Warum sollten Sie sich für die Docker-Bereitstellung entscheiden?

(1) Vereinfachen Sie den Bereitstellungsprozess:Wie oben erwähnt, besteht ChirpStack aus mehreren Servicekomponenten und ermöglicht uns die Übergabe einer Konfigurationsdatei (.docker-compose.yml) Definieren und führen Sie mehrere Container mit nur einem Befehl aus (docker-compose up), um alle Dienste zu starten.

(2) Umweltisolation:Jeder Chirpstack-Dienst kann in unabhängigen Containern ausgeführt werden, wodurch Abhängigkeitskonflikte und Umweltverschmutzung vermieden werden.

(3) Portabilität: Mit Docker können wir sicherstellen, dass wir in Entwicklungs-, Test- und Produktionsumgebungen denselben Code und dieselbe Konfiguration ausführen. Dies hilft, „Umweltprobleme“ zu vermeiden, die in verschiedenen Umgebungen auftreten.

(4) Zentralisierte Konfiguration:Alle Servicekonfigurationen sind zentralisiert docker-compose.yml Dateien zur einfachen Verwaltung und Versionskontrolle. Wir können die Konfiguration problemlos ändern und aktualisieren.

3. Bereitstellungsprozess unter Linux

1. Ziehen Sie den Quellcode von Github

v4-Version: (Die v4-Version wird als nächstes erklärt)

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

v3-Version:

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

2. Änderndocker-compose.yml Konfigurationsdatei

Die Datei ist eineMit Docker Compose konfigurierte Multi-Container-Anwendung für die Bereitstellung der ChirpStack IoT-Plattform. Deckt alle wichtigen Komponenten ab, die für ein ChirpStack-System erforderlich sind, um sicherzustellen, dass sie in einem Docker-Container zusammenarbeiten. (Beachten Sie, dass diese Konfigurationsdatei normalerweise nur das gewünschte Frequenzband und den gewünschten Port ändern muss und keine weiteren Änderungen vorgenommen werden müssen.)

(1)Chirpstapel

Dies ist der ChirpStack-Anwendungsserver (im Allgemeinen sind keine Änderungen erforderlich).

  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
  • Bild: Verwendung chirpstack/chirpstack:4 Spiegel.
  • Befehl: Geben Sie den Pfad der Konfigurationsdatei an als /etc/chirpstack
  • Neustart: eingestellt auf unless-stoppedDas heißt, der Container wird automatisch neu gestartet, sofern er nicht manuell gestoppt wird.
  • Volumes: Lokales Verzeichnis mounten ./configuration/chirpstack in den Behälter/etc/chirpstack,sowie ./lorawan-devices in den Behälter/opt/lorawan-devices
  • depend_on: Abhängigkeit postgres, mosquitto, redis Drei Dienste.
  • Umgebung: Umgebungsvariablen festlegen, einschließlich MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • Ports: exponierte Ports 8080, den Inhalt in den Behälter geben 8080 Port dem Host zugeordnet8080 Hafen.

(2)Chirpstack-Gateway-Brücke

Dies ist der ChirpStack-Gateway-Bridge-Dienst (das cn470_10-Band, das ich hier verwende).

  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: eingestellt auf unless-stopped
  • ports: UDP-Ports verfügbar machen 1700
  • Volumes: Lokales Verzeichnis mounten ./configuration/chirpstack-gateway-bridge in den Behälter/etc/chirpstack-gateway-bridge
  • Umgebung: Umgebungsvariablen festlegen und MQTT-Themenvorlage angeben.
  • depend_on: Abhängigkeit mosquitto Aufschlag.

(3)Chirpstack-Gateway-Bridge-Basisstation

Dies ist der grundlegende Stationsdienst der ChirpStack-Gateway-Bridge (beachten Sie die Änderung des Befehlsteils).

  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
  • Bild: Verwendung chirpstack/chirpstack-gateway-bridge:4 Spiegel.
  • Neustart: eingestellt auf unless-stopped
  • Befehl: Konfigurationsdatei verwenden chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • Ports: exponierte Ports 3001
  • Volumes: Lokales Verzeichnis mounten ./configuration/chirpstack-gateway-bridge in den Behälter/etc/chirpstack-gateway-bridge
  • depend_on: Abhängigkeit mosquitto Aufschlag.

(4) Chirpstack-Rest-API

Dies ist der REST-API-Dienst von 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
  • Bild: Verwendung chirpstack/chirpstack-rest-api:4 Spiegel.
  • Neustart: eingestellt auf unless-stopped
  • Befehl: Geben Sie den ChirpStack-Server an als chirpstack:8080, die verbindliche Adresse ist 0.0.0.0:8090, und aktivieren Sie den unsicheren Modus.
  • Ports: exponierte Ports 8090
  • depend_on: Abhängigkeit chirpstack Aufschlag.

(5) postgres

Dies ist der PostgreSQL-Datenbankdienst.

  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
  • Bild: Verwendung postgres:14-alpine Spiegel.
  • Neustart: eingestellt auf unless-stopped
  • Volumes: Lokales Verzeichnis mounten ./configuration/postgresql/initdb in den Behälter/docker-entrypoint-initdb.d, und mounten Sie das Docker-Volume postgresqldata in den Behälter/var/lib/postgresql/data
  • Umgebung: Umgebungsvariablen festlegen POSTGRES_PASSWORD fürroot

(6) Redis

Dies ist ein Redis-In-Memory-Datenbankdienst.

  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
  • Bild: Verwendung redis:7-alpine Spiegel.
  • Neustart: eingestellt auf unless-stopped
  • Befehl: ausführen redis-server, und geben Sie die Speicherstrategie an.
  • Volumes: Mounten Sie Docker-Volumes redisdata in den Behälter/data

(7) Mücke

Dies ist der MQTT-Nachrichtenbrokerdienst.

  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) Bände

Datenmengen definieren.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: Wird zum Speichern von PostgreSQL-Daten verwendet.
  • redisdata: Wird zum Speichern von Redis-Daten verwendet.

3. Docke-Compose startet

sudo docker-compose up -d

4. Bereitstellungsprozess der Webschnittstelle

1. Besuchen Sie Chirpstack (IP): 8080, das Standardkontokennwort ist admin

2. Erstellen Sie ein Gateway

Als nächstes geben Sie dem Gateway normalerweise einen Namen, aber merken Sie sich die Gateway-ID. Die entsprechende ID muss in der Gateway-Konfiguration geändert werden.

3. Gerätedateien hinzufügen

Füllen Sie es entsprechend Ihren eigenen Anforderungen aus.

4. AS konfigurieren

Fügen Sie nach dem Hinzufügen der Play-Anwendung der Reihe nach Geräte und Multicast-Einstellungen in der Anwendung hinzu.

 

Führen Sie abschließend das Gateway aus, um zu sehen, ob das Gateway eine Verbindung zum Cloud-Server herstellen und die Nachricht erfolgreich weiterleiten kann.