技術共有

Linux で Docker を使用して chirpstack をデプロイする

2024-07-12

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

目次

I.はじめに

2. チャープスタック

1. チャープスタックとは何ですか?

2. チャープスタックコンポーネント

3. Docker デプロイメントを選択する理由は何ですか?

3. Linux での展開プロセス

4. Web インターフェースの導入プロセス


I.はじめに

この記事は Linux で使用していますドッカーchirpstack をデプロイするには、chirpstack は次を使用します。v4バージョン、v4 バージョンおよび v3 バージョン gRPC API と比較して、いくつかの変更が加えられており、互換性を考慮する必要があります。ただし、Docker を使用するのは chirpstack のデプロイにのみです。実際、ディレクトリと Web インターフェイスにはいくつかの変更が加えられており、構成ロジックは同じであり、あまり変更されていません。 v3 バージョンを使用している場合は、わからないことがあれば直接私に質問してください。

2. チャープスタック

1. チャープスタックとは何ですか?

ChirpStack は、プライベートまたはパブリック LoRaWAN ネットワークのセットアップに使用できるオープン ソースの LoRaWAN ネットワーク サーバーです。 ChirpStack は Web インターフェイスを提供しますゲートウェイ、デバイス、アプリケーションの管理に使用されます。ChirpStack は、ChirpStack の統合または拡張に使用できる gRPC ベースの API を提供します。

2. チャープスタックコンポーネント

(1)ChirpStackネットワークサーバー: 略してNS、その機能はLoRaWAN ネットワークの適切な動作を保証し、デバイスの通信を管理します。それ LoRaWAN ネットワークのコア ロジックを担当します。デバイスの参加プロセス、ダウンリンクのスケジューリング、デバイスのアクティビティ追跡などを処理します。また、LoRa ゲートウェイから受信したアップリンク データを処理し、ダウンリンク データをゲートウェイに送信する役割も果たします。

(2)ChirpStackアプリケーションサーバー:ASと略され、その機能はアプリケーション層データを管理および処理し、ユーザー インターフェイスと API インターフェイスを提供します。それ LoRaWAN アプリケーション層データの処理と管理を担当します。これにより、ユーザーはアプリケーション、デバイス構成、データ デコーダーを定義できます。また、デバイスの管理、ネットワーク トラフィックの監視、データ デコードの処理、およびアプリケーション層データの外部アプリケーションへの送信のための API と Web インターフェイスも提供します。

(3)ChirpStackゲートウェイブリッジ:それゲートウェイとWebサーバー間のミドルウェアとして機能します 。このコンポーネントは、LoRa ゲートウェイから送信される LoRa パケット トランスポンダー プロトコルを ChirpStack ネットワーク サーバーの共通データ形式 (JSON および Protobuf) に変換できます。

(4)PostgreSQL: これは、オープンソースのリレーショナル データベース管理システムです。永続ストレージ ChirpStackの設定データ、デバイス情報、ゲートウェイ情報、アプリケーションデータなど

(5)レディス: これはオープンソースのインメモリ データ構造ストレージ システムで、通常はデータベース、キャッシュ、メッセージ ブローカーとして使用される 。 ChirpStack は Redis を使用して一部のリアルタイム データをキャッシュおよび処理し、システムのパフォーマンスと応答速度を向上させます。

(6)モスキート:Mosquitto は、MQTT プロトコルのプロキシ サーバーです。デバイスと ChirpStack コンポーネント間の通信を処理します。LoRaWAN ゲートウェイと ChirpStack サービス間のメッセージングが可能になります。

Postgre SQL と Redis の違いに注意してください。Postgre SQL はディスクに基づいてデータを保存し、永続的なストレージをサポートします。データがディスクに保存されると、システムが再起動されてもデータは失われませんが、パフォーマンスは比較的遅くなります。 Redis はメモリに基づいてデータを保存し、効率的な読み取りおよび書き込み操作をサポートし、非常に高いパフォーマンスを備えています。

3. Docker デプロイメントを選択する理由は何ですか?

(1) 導入プロセスを簡素化します。前述したように、ChirpStack は複数のサービス コンポーネントで構成されており、Docker Compose を使用して構成ファイルを渡すことができます (docker-compose.yml) 1 つのコマンドだけで複数のコンテナーを定義して実行します (docker-compose up) すべてのサービスを開始します。

(2) 環境隔離:chirpstack の各サービスは独立したコンテナーで実行できるため、依存関係の競合や環境汚染を回避できます。

(3) 携帯性: Docker を使用すると、開発、テスト、運用環境で同じコードと構成を確実に実行できます。これにより、さまざまな環境で発生する「環境問題」を回避できます。

(4) 一元化された構成:すべてのサービス構成は 1 つに集中化されます docker-compose.yml ファイルの管理とバージョン管理が容易になります。構成を簡単に変更および更新できます。

3. Linux での展開プロセス

1. github からソースコードを取得します。

v4 バージョン: (v4 バージョンについては次に説明します)

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

v3 バージョン:

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

2. 変更docker-compose.yml 設定ファイル

ファイルはChirpStack IoT プラットフォームをデプロイするために Docker Compose を使用して構成されたマルチコンテナー アプリケーション。 ChirpStack システムが Docker コンテナ内で確実に連携できるようにするために必要なすべての主要コンポーネントをカバーしています。 (この設定ファイルは通常、必要な周波数帯域とポートを変更するだけでよく、その他の変更は必要ないことに注意してください)

(1)チャープスタック

これは ChirpStack アプリケーション サーバーです (通常、変更は必要ありません)。

  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
  • 画像: 使用 chirpstack/chirpstack:4 鏡。
  • コマンド: 構成ファイルのパスを次のように指定します。 /etc/chirpstack
  • 再起動: に設定 unless-stoppedつまり、手動で停止しない限り、コンテナーは自動的に再起動します。
  • ボリューム: ローカル ディレクトリをマウントする ./configuration/chirpstack コンテナに/etc/chirpstack、同様に ./lorawan-devices コンテナに/opt/lorawan-devices
  • depend_on: 依存関係 postgres, mosquitto, redis 3つのサービス。
  • 環境: 環境変数を設定します。 MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • ポート:公開ポート 8080、中身を容器に入れます 8080 ホストにマッピングされたポート8080 ポート。

(2)chirpstackゲートウェイブリッジ

これは ChirpStack ゲートウェイ ブリッジ サービス (ここで使用する cn470_10 バンド) です。

  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: に設定 unless-stopped
  • ポート: UDP ポートを公開する 1700
  • ボリューム: ローカル ディレクトリをマウントする ./configuration/chirpstack-gateway-bridge コンテナに/etc/chirpstack-gateway-bridge
  • 環境: 環境変数を設定し、MQTT トピック テンプレートを指定します。
  • depend_on: 依存関係 mosquitto 仕える。

(3)chirpstack-gateway-bridge-basicstation

これは ChirpStack ゲートウェイ ブリッジの基本ステーション サービスです (コマンド部分の変更に注意してください)。

  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
  • 画像: 使用 chirpstack/chirpstack-gateway-bridge:4 鏡。
  • 再起動: に設定 unless-stopped
  • コマンド: 設定ファイルを使用する chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • ポート:公開ポート 3001
  • ボリューム: ローカル ディレクトリをマウントする ./configuration/chirpstack-gateway-bridge コンテナに/etc/chirpstack-gateway-bridge
  • depend_on: 依存関係 mosquitto 仕える。

(4)chirpstack-rest-api

これは ChirpStack の REST API サービスです。

  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
  • 画像: 使用 chirpstack/chirpstack-rest-api:4 鏡。
  • 再起動: に設定 unless-stopped
  • コマンド: ChirpStack サーバーを次のように指定します。 chirpstack:8080、バインディングアドレスは 0.0.0.0:8090、アンセーフモードを有効にします。
  • ポート:公開ポート 8090
  • depend_on: 依存関係 chirpstack 仕える。

(5)ポストグル

これは 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
  • 画像: 使用 postgres:14-alpine 鏡。
  • 再起動: に設定 unless-stopped
  • ボリューム: ローカル ディレクトリをマウントする ./configuration/postgresql/initdb コンテナに/docker-entrypoint-initdb.d、Docker ボリュームをマウントします postgresqldata コンテナに/var/lib/postgresql/data
  • 環境: 環境変数を設定する POSTGRES_PASSWORD のためにroot

(6)レディス

これは 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
  • 画像: 使用 redis:7-alpine 鏡。
  • 再起動: に設定 unless-stopped
  • コマンド: 実行 redis-serverをクリックし、保存方法を指定します。
  • ボリューム: Docker ボリュームをマウントする redisdata コンテナに/data

(7)蚊

これは、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)巻

データボリュームを定義します。

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: PostgreSQL データの保存に使用されます。
  • redisdata: Redis データを保存するために使用されます。

3. Docke-compose が起動します

sudo docker-compose up -d

4. Web インターフェースの導入プロセス

1. chirpstack (IP): 8080 にアクセスします。デフォルトのアカウントのパスワードは admin です。

2. ゲートウェイを作成する

次に、通常どおりゲートウェイに名前を付けますが、ゲートウェイ構成で対応する ID を変更する必要があることを覚えておいてください。

3. デバイスファイルの追加

独自の要件に従って入力してください。

4. AS の設定

再生アプリケーションを追加した後、アプリケーションにデバイスとマルチキャスト設定を順番に追加します。

 

最後に、ゲートウェイを実行して、ゲートウェイがクラウド サーバーに接続し、メッセージを正常に転送できるかどうかを確認します。