Berbagi teknologi

Menyebarkan chirpstack menggunakan Docker di Linux

2024-07-12

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

Daftar isi

I. Pendahuluan

2. Tumpukan kicauan

1. Apa itu chirpstack?

2. komponen chirpstack

3. Mengapa memilih penerapan Docker?

3. Proses penerapan di Linux

4. Proses penerapan antarmuka web


I. Pendahuluan

Saya menggunakan artikel ini di LinuxBuruh pelabuhanUntuk menyebarkan chirpstack, chirpstack menggunakanversi v4, versi v4 dan versi v3 Dibandingkan dengan gRPC API, beberapa perubahan telah dilakukan dan kompatibilitas perlu dipertimbangkan. Namun kami hanya menggunakan Docker untuk menyebarkan chirpstack. Faktanya, ada beberapa perubahan pada direktori dan antarmuka web. Logika konfigurasinya sama dan tidak banyak yang berubah. Jika Anda menggunakan versi v3, Anda bisa bertanya langsung kepada saya jika ada yang kurang paham.

2. Tumpukan kicauan

1. Apa itu chirpstack?

ChirpStack adalah server jaringan LoRaWAN sumber terbuka yang dapat digunakan untuk mengatur jaringan LoRaWAN pribadi atau publik. ChirpStack menyediakan antarmuka webDigunakan untuk mengelola gateway, perangkat, dan aplikasi.ChirpStack menyediakan API berbasis gRPC yang dapat digunakan untuk mengintegrasikan atau memperluas ChirpStack.

2. komponen chirpstack

(1)Server Jaringan ChirpStack: NS singkatnya, fungsinya adalahMemastikan pengoperasian jaringan LoRaWAN dengan benar dan mengelola komunikasi perangkat.Itu Bertanggung jawab atas logika inti jaringan LoRaWAN. Ini menangani proses penggabungan perangkat, penjadwalan downlink, pelacakan aktivitas perangkat, dll. Ia juga bertanggung jawab untuk memproses data uplink yang diterima dari gateway LoRa dan mengirimkan data downlink ke gateway.

(2)Server Aplikasi ChirpStack: Disingkat AS, fungsinya adalahMengelola dan memproses data lapisan aplikasi dan menyediakan antarmuka pengguna dan antarmuka API.Itu Bertanggung jawab untuk memproses dan mengelola data lapisan aplikasi LoRaWAN. Hal ini memungkinkan pengguna untuk menentukan aplikasi, konfigurasi perangkat dan decoder data. Ini juga menyediakan API dan antarmuka web untuk mengelola perangkat, memantau lalu lintas jaringan, menangani decoding data, dan mengirim data lapisan aplikasi ke aplikasi eksternal.

(3) Jembatan Gerbang ChirpStack:diaBertindak sebagai middleware antara gateway dan server web . Komponen ini dapat mengubah protokol transponder paket LoRa yang dikirimkan dari gateway LoRa ke format data umum (JSON dan Protobuf) dari server jaringan ChirpStack.

(4) Bahasa Inggris PostgreSQL: Ini adalah sistem manajemen basis data relasional open source untukpenyimpanan persisten Data konfigurasi ChirpStack, informasi perangkat, informasi gateway, data aplikasi, dll.

(5) Merah: Biasanya ini adalah sistem penyimpanan struktur data dalam memori sumber terbukaDigunakan sebagai database, cache, dan perantara pesan . ChirpStack menggunakan Redis untuk menyimpan cache dan memproses beberapa data real-time guna meningkatkan kinerja sistem dan kecepatan respons.

(6) Nyamuk:Mosquitto adalah server proxy protokol MQTT untukMenangani komunikasi antar perangkat dan komponen ChirpStack.Ini memungkinkan pengiriman pesan antara gateway LoRaWAN dan layanan ChirpStack.

Perhatikan perbedaan antara Postgre SQL dan Redis. Postgre SQL menyimpan data berdasarkan disk dan mendukung penyimpanan persisten. Saat data disimpan di disk, data tidak akan hilang meskipun sistem di-restart, dan kinerjanya relatif lambat. Redis menyimpan data berdasarkan memori, mendukung operasi baca dan tulis yang efisien, dan memiliki kinerja yang sangat tinggi.

3. Mengapa memilih penerapan Docker?

(1) Menyederhanakan proses penerapan:Seperti disebutkan di atas, ChirpStack terdiri dari beberapa komponen layanan. Docker Compose memungkinkan kita meneruskan file konfigurasi (docker-compose.yml) Tentukan dan jalankan beberapa container hanya dengan satu perintah (docker-compose up) untuk memulai semua layanan.

(2) Isolasi lingkungan:Setiap layanan chirpstack dapat berjalan dalam wadah independen, menghindari konflik ketergantungan dan pencemaran lingkungan.

(3) Portabilitas: Dengan menggunakan Docker, kami dapat memastikan bahwa kami menjalankan kode dan konfigurasi yang sama di lingkungan pengembangan, pengujian, dan produksi. Hal ini membantu menghindari "masalah lingkungan" yang muncul di lingkungan yang berbeda.

(4) Konfigurasi terpusat:Semua konfigurasi layanan terpusat dalam satu docker-compose.yml file untuk memudahkan manajemen dan kontrol versi. Kita dapat dengan mudah memodifikasi dan memperbarui konfigurasi.

3. Proses penerapan di Linux

1. Tarik kode sumber dari github

versi v4: (Versi v4 akan dijelaskan selanjutnya)

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

versi v3:

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

2. Ubahdocker-compose.yml Berkas konfigurasi

Filenya adalah aAplikasi multi-kontainer dikonfigurasi menggunakan Docker Compose untuk menyebarkan platform ChirpStack IoT. Mencakup semua komponen utama yang diperlukan untuk sistem ChirpStack guna memastikan komponen tersebut bekerja bersama dalam container Docker. (Perhatikan bahwa file konfigurasi ini biasanya hanya perlu mengubah pita frekuensi dan port yang Anda inginkan, dan tidak ada perubahan lain yang perlu dilakukan)

(1) tumpukan kicauan

Ini adalah server aplikasi ChirpStack (umumnya tidak diperlukan modifikasi).

  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
  • gambar: gunakan chirpstack/chirpstack:4 cermin.
  • perintah: Tentukan jalur file konfigurasi sebagai /etc/chirpstack
  • mulai ulang: atur ke unless-stopped, yaitu container akan otomatis dimulai ulang kecuali dihentikan secara manual.
  • volume: pasang direktori lokal ./configuration/chirpstack ke dalam wadah/etc/chirpstack,sebaik ./lorawan-devices ke dalam wadah/opt/lorawan-devices
  • depend_on: ketergantungan postgres, mosquitto, redis Tiga layanan.
  • lingkungan: Tetapkan variabel lingkungan, termasuk MQTT_BROKER_HOST, REDIS_HOST, POSTGRESQL_HOST
  • port: port terbuka 8080, masukkan isinya ke dalam wadah 8080 Port dipetakan ke host8080 pelabuhan.

(2) jembatan gerbang chirpstack

Ini adalah layanan jembatan gateway ChirpStack (band cn470_10 yang saya gunakan di sini).

  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: diatur ke unless-stopped
  • port: Buka port UDP 1700
  • volume: pasang direktori lokal ./configuration/chirpstack-gateway-bridge ke dalam wadah/etc/chirpstack-gateway-bridge
  • lingkungan: Tetapkan variabel lingkungan dan tentukan templat topik MQTT.
  • depend_on: ketergantungan mosquitto Melayani.

(3)chirpstack-gateway-jembatan-stasiun-dasar

Ini adalah layanan stasiun dasar dari jembatan gateway ChirpStack (perhatikan modifikasi bagian perintah).

  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
  • gambar: gunakan chirpstack/chirpstack-gateway-bridge:4 cermin.
  • mulai ulang: atur ke unless-stopped
  • perintah: gunakan file konfigurasi chirpstack-gateway-bridge-basicstation-cn470_10.toml
  • port: port terbuka 3001
  • volume: pasang direktori lokal ./configuration/chirpstack-gateway-bridge ke dalam wadah/etc/chirpstack-gateway-bridge
  • depend_on: ketergantungan mosquitto Melayani.

(4)chirpstack-rest-api

Ini adalah layanan REST API 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
  • gambar: gunakan chirpstack/chirpstack-rest-api:4 cermin.
  • mulai ulang: atur ke unless-stopped
  • perintah: Tentukan server ChirpStack sebagai chirpstack:8080, alamat pengikatannya adalah 0.0.0.0:8090, dan aktifkan mode tidak aman.
  • port: port terbuka 8090
  • depend_on: ketergantungan chirpstack Melayani.

(5)postgres

Ini adalah layanan basis data 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
  • gambar: gunakan postgres:14-alpine cermin.
  • mulai ulang: atur ke unless-stopped
  • volume: pasang direktori lokal ./configuration/postgresql/initdb ke dalam wadah/docker-entrypoint-initdb.d, dan pasang volume Docker postgresqldata ke dalam wadah/var/lib/postgresql/data
  • lingkungan: mengatur variabel lingkungan POSTGRES_PASSWORD untukroot

(6)merah

Ini adalah layanan database dalam memori 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
  • gambar: gunakan redis:7-alpine cermin.
  • mulai ulang: atur ke unless-stopped
  • perintah: lari redis-server, dan tentukan strategi penyimpanan.
  • volume: Pasang volume Docker redisdata ke dalam wadah/data

(7)nyamuk

Ini adalah layanan perantara pesan 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) Volume

Tentukan volume data.

  1. volumes:
  2. postgresqldata:
  3. redisdata:
  • postgresqldata: digunakan untuk menyimpan data PostgreSQL.
  • redisdata: digunakan untuk menyimpan data Redis.

3. Penulisan Docke dimulai

sudo docker-compose up -d

4. Proses penerapan antarmuka web

1. Kunjungi chirpstack (IP): 8080, kata sandi akun default adalah admin

2. Buat gerbang

Selanjutnya, beri nama gateway seperti biasa, tetapi ingat ID gateway. ID yang sesuai perlu diubah dalam konfigurasi gateway.

3. Tambahkan file perangkat

Isilah sesuai dengan kebutuhan Anda sendiri.

4. Konfigurasikan AS

Setelah menambahkan aplikasi play, tambahkan perangkat dan pengaturan multicast di aplikasi secara bergantian.

 

Terakhir, jalankan gateway untuk melihat apakah gateway dapat terhubung ke server cloud dan berhasil meneruskan pesan.