在Linux下使用Docker部署chirpstack

目錄

一、前言

二、chirpstack

1、chirpstack是什么

2、chirpstack組件

3、為什么選擇Docker部署

三、Linux下部署過程

四、web界面部署過程


一、前言

? ? ? ? 本篇文章我是在Linux下使用?Docker?進行部署chirpstack,chirpstack采用的是v4 版本,v4 版本 與 v3版本 相比,gRPC API 等做了一些改變,需要考慮兼容性。但是我們僅僅使用Docker部署chirpstack 其實就目錄和web 界面發生了一些改變,配置邏輯是一樣的,并沒有太大改變。如果大家用的是 v3版本,哪里不懂也可以直接問我。

二、chirpstack

1、chirpstack是什么

????????ChirpStack 是一個開源的 LoRaWAN 網絡服務器,可用于 設置私有或公共 LoRaWAN 網絡。ChirpStack 提供了一個 Web 界面 用于管理網關、設備和應用程序。ChirpStack 提供了一個基于 gRPC 的 API,可以 用于集成或擴展 ChirpStack。

2、chirpstack組件

(1)ChirpStack Network Server: 簡稱NS,作用是確保 LoRaWAN 網絡的正常運行和管理設備通信。負責 LoRaWAN 網絡的核心邏輯。它處理設備的加入過程、下行鏈路調度、設備活動狀態跟蹤等。它還負責處理從 LoRa 網關接收到的上行數據,并將下行數據發送到網關。

(2)ChirpStack Application Server: 簡稱AS,作用是管理和處理應用層數據,提供用戶界面和 API 接口。負責處理和管理 LoRaWAN 應用層數據。它允許用戶定義應用程序、設備配置和數據解碼器。它還提供 API 和 Web 界面,用于管理設備、監控網絡流量、處理數據解碼和發送應用層數據到外部應用程序。

(3)ChirpStack Gateway Bridge:它充當網關和網絡服務器之間的中間件。該組件可以將LoRa網關傳輸來的LoRa數據包轉發器協議轉換成ChirpStack網絡服務器通用的數據格式(JSON和Protobuf)。

(4)PostgreSQL:這是一個開源的關系型數據庫管理系統,用于持續化存儲 ChirpStack 的配置數據、設備信息、網關信息、應用程序數據等。

(5)Redis:這是一個開源的內存中數據結構存儲系統,通常用作數據庫、緩存和消息代理。ChirpStack 使用 Redis 來緩存和處理一些實時數據,提高系統性能和響應速度。

(6)Mosquitto:Mosquitto是一個MQTT協議的代理服務器,用于處理設備和ChirpStack組件之間的通信。它允許LoRaWAN網關和ChirpStack服務之間的消息傳遞。

? ? ? ? 注意一下Postgre SQL和 Redis 的區別,Postgre SQL基于磁盤存儲數據,支持持久化存儲,數據在磁盤上存儲即使系統重啟數據也不會丟失,性能相對較慢。Redis基于內存存儲數據,支持高效的讀寫操作,性能極高。

3、為什么選擇Docker部署

(1)簡化部署過程:上文已講過ChirpStack 是由多個服務組件組成的,Docker Compose 允許我們通過一個配置文件(docker-compose.yml)定義和運行多個容器,只需要一條命令(docker-compose up)即可啟動所有服務。

(2)環境隔離:chirpstack的各個服務可以在獨立的容器中運行,避免了依賴沖突和環境污染。

(3)可移植性:?使用 Docker,我們可以確保在開發環境、測試環境和生產環境中運行相同的代碼和配置。這有助于避免在不同環境中出現的“環境問題”。

(4)集中配置:所有的服務配置集中在一個 docker-compose.yml 文件中,便于管理和版本控制。我們可以輕松地修改和更新配置。

三、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?配置文件

? ? ? ? 該文件是一個使用 Docker Compose 配置的多容器應用程序,用于部署 ChirpStack 物聯網平臺。涵蓋了 ChirpStack 系統所需的所有主要組件,確保它們在 Docker 容器中協同工作。(注意,該配置文件通常只需要修改你想要的頻段和端口,其他不用改變)

(1)chirpstack

????????這是 ChirpStack 應用服務器(一般不用進行修改)。

  chirpstack:image: chirpstack/chirpstack:4command: -c /etc/chirpstackrestart: unless-stoppedvolumes:- ./configuration/chirpstack:/etc/chirpstack- ./lorawan-devices:/opt/lorawan-devicesdepends_on:- postgres- mosquitto- redisenvironment:- MQTT_BROKER_HOST=mosquitto- REDIS_HOST=redis- POSTGRESQL_HOST=postgresports:- 8080:8080
  • image: 使用 chirpstack/chirpstack:4 鏡像。
  • command: 指定配置文件路徑為 /etc/chirpstack
  • restart: 設置為 unless-stopped,即除非手動停止,否則容器會自動重啟。
  • volumes: 掛載本地目錄 ./configuration/chirpstack 到容器內的 /etc/chirpstack,以及 ./lorawan-devices 到容器內的 /opt/lorawan-devices
  • depends_on: 依賴 postgres, mosquitto, redis 三個服務。
  • environment: 設置環境變量,包括 MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • ports: 暴露端口 8080,將容器內的 8080 端口映射到主機的 8080 端口。

(2)chirpstack-gateway-bridge

????????這是 ChirpStack 網關橋接器服務(我這里采用的cn470_10頻段)。

chirpstack-gateway-bridge:image: chirpstack/chirpstack-gateway-bridge:4restart: unless-stoppedports:- 1700:1700/udpvolumes:- ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridgeenvironment:- INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/event/{{ .EventType }}- INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/state/{{ .StateType }}- INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=cn470_10/gateway/{{ .GatewayID }}/command/#depends_on:- mosquitto
  • estart: 設置為 unless-stopped
  • ports: 暴露 UDP 端口 1700
  • volumes: 掛載本地目錄 ./configuration/chirpstack-gateway-bridge 到容器內的 /etc/chirpstack-gateway-bridge
  • environment: 設置環境變量,指定 MQTT 主題模板。
  • depends_on: 依賴 mosquitto 服務。

(3)chirpstack-gateway-bridge-basicstation

????????這是 ChirpStack 網關橋接器的基本站服務(注意修改command部分)。

 chirpstack-gateway-bridge-basicstation:image: chirpstack/chirpstack-gateway-bridge:4restart: unless-stoppedcommand: -c /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge-basicstation-cn470_10.tomlports:- 3001:3001volumes:- ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridgedepends_on:- mosquitto
  • image: 使用 chirpstack/chirpstack-gateway-bridge:4 鏡像。
  • restart: 設置為 unless-stopped
  • command: 使用配置文件 chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • ports: 暴露端口 3001
  • volumes: 掛載本地目錄 ./configuration/chirpstack-gateway-bridge 到容器內的 /etc/chirpstack-gateway-bridge
  • depends_on: 依賴 mosquitto 服務。

(4)chirpstack-rest-api

????????這是 ChirpStack 的 REST API 服務。

chirpstack-rest-api:image: chirpstack/chirpstack-rest-api:4restart: unless-stoppedcommand: --server chirpstack:8080 --bind 0.0.0.0:8090 --insecureports:- 8090:8090depends_on:- chirpstack
  • image: 使用 chirpstack/chirpstack-rest-api:4 鏡像。
  • restart: 設置為 unless-stopped
  • command: 指定 ChirpStack 服務器為 chirpstack:8080,綁定地址為 0.0.0.0:8090,并啟用不安全模式。
  • ports: 暴露端口 8090
  • depends_on: 依賴 chirpstack 服務。

(5)postgres

????????這是 PostgreSQL 數據庫服務。

postgres:image: postgres:14-alpinerestart: unless-stoppedvolumes:- ./configuration/postgresql/initdb:/docker-entrypoint-initdb.d- postgresqldata:/var/lib/postgresql/dataenvironment:- POSTGRES_PASSWORD=root
  • image: 使用 postgres:14-alpine 鏡像。
  • restart: 設置為 unless-stopped
  • volumes: 掛載本地目錄 ./configuration/postgresql/initdb 到容器內的 /docker-entrypoint-initdb.d,以及掛載 Docker 卷 postgresqldata 到容器內的 /var/lib/postgresql/data
  • environment: 設置環境變量 POSTGRES_PASSWORDroot

(6)redis

????????這是 Redis 內存數據庫服務。

redis:image: redis:7-alpinerestart: unless-stoppedcommand: redis-server --save 300 1 --save 60 100 --appendonly novolumes:- redisdata:/data
  • image: 使用 redis:7-alpine 鏡像。
  • restart: 設置為 unless-stopped
  • command: 運行 redis-server,并指定保存策略。
  • volumes: 掛載 Docker 卷 redisdata 到容器內的 /data

(7)mosquitto

????????這是 MQTT 消息代理服務。

  mosquitto:image: eclipse-mosquitto:2restart: unless-stoppedports:- 1883:1883volumes: - ./configuration/mosquitto/config/:/mosquitto/config/

(8)Volumes

????????定義數據卷。

volumes:postgresqldata:redisdata:
  • postgresqldata: 用于存儲 PostgreSQL 數據。
  • redisdata: 用于存儲 Redis 數據。

四、web界面部署過程

1、訪問 chirpstack(IP):8080,默認賬號密碼是admin

2、創建網關

? ? ? ? ?接下來就正常給網關起名字,但是網關ID要記住,網關配置中需要修改相對應的ID。

3、添加設備文件

? ? ? ? 根據自己的要求進行填寫。

4、配置AS

? ? ? ? 添加玩應用后,依次在應用中添加設備和多播設置等。

?

? ? ? ? ?最后,運行網關,看網關是否能夠連接到云服務器,并成功轉發消息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42280.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Logstash常用的filter四大插件

以博客<ELK日志分析系統概述及部署>中實驗結果為依據 補充&#xff1a;如何用正則表達式匹配一個ipv4地址 &#xff08;[0-9] | [1-9][0-9] | 1[0-9][0-9] | 2[04][0-9] | 25[0-5]&#xff09;\.&#xff08;[0-9] | [1-9][0-9] | 1[0-9][0-9] | 2[04][0-9] | 25[0-5]&a…

C++基礎語法:嵌套類(內部類)

前言 "打牢基礎,萬事不愁" .C的基礎語法的學習 引入 嵌套類的理解和使用 嵌套類(內部類)的特征 嵌套類是在類里面定義的類.class里嵌套另一個class,又稱內部類(這種說法更形象) 1>內部類除了定義在外部類內部,和其他類沒有太大區別.內部類對于外部類自動"可…

基于Java的數碼論壇系統設計與實現

你好&#xff0c;我是計算機領域的研究者。如果你對數碼論壇系統開發感興趣或有相關需求&#xff0c;歡迎聯系我。 開發語言&#xff1a; Java 數據庫&#xff1a; MySQL 技術&#xff1a; Java技術、MySQL數據庫、B/S架構、SpringBoot框架 工具&#xff1a; Eclipse、MySQ…

HJ41 稱砝碼下

接上文&#xff0c;HJ41 稱砝碼 更新acd代碼&#xff0c;牛客代碼如下 #include <stdio.h> #include <stdlib.h> #include <string.h>int calculateWeight(int *weight, int weightLen, int *num, int numLen) {int array[20001] {0};int hash[300001] {0…

css 文件重復類樣式刪除

上傳文件 進行無關 className 刪除 <div style"display: flex;"><input type"file" change"handleFileUpload" /><el-button click"removeStyles" :disabled"!fileContent">Remove Styles and Download&…

navigation運動規劃學習筆記

DWA 動態窗口算法(Dynamic Window Approaches, DWA) 是基于預測控制理論的一種次優方法,因其在未知環境下能夠安全、有效的避開障礙物, 同時具有計算量小, 反應迅速、可操作性強等特點。 DWA算法屬于局部路徑規劃算法。 DWA算法的核心思想是根據移動機器人當前的位置狀態和速…

antd a-select下拉框樣式修改 vue3 親測有效

記錄一下遇到的問題 1.遇到問題&#xff1a; 使用到Vue3 Ant Design of Vue 3.2.20&#xff0c;但因為項目需求樣式&#xff0c;各種查找資料都未能解決; 2.解決問題&#xff1a; ①我們審查元素可以看到&#xff0c;下拉框是在body中的; ①在a-select 元素上添加dropdownCla…

運行時異常與一般異常的異同

運行時異常與一般異常的異同 1、運行時異常&#xff08;Runtime Exception&#xff09;1.1 特點 2、 一般異常&#xff08;Checked Exception&#xff09;2.1 特點 3、異同點總結3.1 相同點3.2 不同點 4、總結 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷…

【全網最全最詳細】Tomcat 面試題大全

目錄 一、說一說Tomcat的啟動流程 二、Tomcat中有哪些類加載器? 三、為什么Tomcat可以把線程數設置為200,而不是N+1? 四、Tomcat處理請求的過程怎樣的? 五、說一說Servlet的生命周期 六、過濾器和攔截器的區別? 七、介紹一下Tomcat的IO模型 八、說一說Tomcat的類加…

大語言模型系列-Transformer介紹

大語言模型系列&#xff1a;Transformer介紹 引言 在自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;Transformer模型已經成為了許多任務的標準方法。自從Vaswani等人在2017年提出Transformer以來&#xff0c;它已經徹底改變了NLP模型的設計。本文將介紹Transforme…

圖形學各種二維基礎變換,原來線性代數還能這么用,太牛了

縮放變換 均勻縮放 若想將一個圖形縮小0.5倍 若x乘上縮放值s等于x撇&#xff0c;y同理&#xff0c;則 x ′ s x y ′ s y \begin{aligned} & x^{\prime}s x \\ & y^{\prime}s y \end{aligned} ?x′sxy′sy?&#xff0c;這樣就表示了x縮小了s倍&#xff0c;y也是…

UML中用例之間的可視化表示

用例除了與參與者有關聯關系外&#xff0c;用例之間也存在著一定的關系&#xff0c;如泛化關系、包含關系、擴展關系等。 4.2.1 包含關系 包含關系指的是兩個用例之間的關系&#xff0c;其中一個用例&#xff08;稱為基本用例&#xff0c;Base Use Case&#xff09;的行為包…

溫度傳感器的常見故障及處理方法

溫度傳感器作為現代工業、科研及日常生活中不可或缺的重要元件&#xff0c;其穩定性和準確性直接影響到設備的運行效率和安全。然而&#xff0c;由于各種因素的影響&#xff0c;溫度傳感器在使用過程中常會遇到一些故障。本文將針對這些常見故障進行分析&#xff0c;并提出相應…

如果你想手寫Linux系統

哈嘍&#xff0c;我是子牙老師。今天咱們聊聊這個話題吧&#xff0c;Linux作為當今科技世界的地基&#xff0c;我們越來越接近真理了&#xff0c;有木有&#xff1f; 這個文章的角度&#xff0c;你可能全網都很難找到第二篇如此系統講透這個問題的文章 你可能想問&#xff1a…

LabVIEW電滯回線測試系統

鐵電材料的性能評估依賴于電滯回線的測量&#xff0c;這直接關系到材料的應用效果和壽命。傳統的電滯回線測量方法操作復雜且設備成本高。開發了一種基于LabVIEW的電滯回線測試系統&#xff0c;解決傳統方法的不足&#xff0c;降低成本&#xff0c;提高操作便捷性和數據分析的自…

spring boot 3.x版本中集成spring security 6.x版本進行實現動態權限控制解決方案

一、背景 最近在進行項目從jdk8和spring boot 2.7.x版本技術架構向jdk17和spring boot 3.3.x版本的代碼遷移&#xff0c;在遷移過程中&#xff0c;發現spring boot 3.3.x版本依賴的spring security版本已經升級6.x版本了&#xff0c;語法上和spring security 5.x版本有很多地方…

Mysql中存儲引擎簡介、修改、查詢、選擇

場景 數據庫存儲引擎 數據庫存儲引擎是數據庫底層軟件組件&#xff0c;數據庫管理系統&#xff08;DBMS &#xff09;使用數據引擎進行創建、查詢、更新和刪除數據的操作。 不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能&#xff0c;使用不同的存儲引擎還可以…

【C++報錯已解決】Invalid Use of ‘this’ Pointer

&#x1f3ac; 鴿芷咕&#xff1a;個人主頁 &#x1f525; 個人專欄: 《C干貨基地》《粉絲福利》 ??生活的理想&#xff0c;就是為了理想的生活! 文章目錄 引言 一、問題描述1.1 報錯示例1.2 報錯分析1.3 解決思路 二、解決方法2.1 方法一&#xff1a;修正‘this’指針使用2…

React+TS前臺項目實戰(二十六)-- 高性能可配置Echarts圖表組件封裝

文章目錄 前言CommonChart組件1. 功能分析2. 代碼詳細注釋3. 使用到的全局hook代碼4. 使用方式5. 效果展示 總結 前言 Echarts圖表在項目中經常用到&#xff0c;然而&#xff0c;重復編寫初始化&#xff0c;更新&#xff0c;以及清除實例等動作對于開發人員來說是一種浪費時間…

LVS-DR負載均衡

LVS-DR負載均衡 LVS—DR工作模式 原理 客戶端訪問調度器的VIP地址&#xff0c;在路由器上應該設置VIP跟調度器的一對一的映射關系&#xff0c;調度器根據調度算法將該請求“調度“到后端真實服務器&#xff0c;真實服務器處理完畢后直接將處理后的應答報文發送給路由器&#xf…