majordomus:mosquitto

Toto je starší verze dokumentu!


Mosquitto

Instalaci Mosquitto jsem provedl skrz Docker. Tady je docker-compose.yml:

version: '3.6'

networks:
  default:
    driver: bridge
    ipam:
      driver: default
  nextcloud:
    driver: bridge
    internal: true
    ipam:
      driver: default

services:
  mosquitto:
    container_name: mosquitto
    build:
      context: ./.templates/mosquitto/.
      args:
      - MOSQUITTO_BASE=eclipse-mosquitto:latest
    restart: unless-stopped
    environment:
    - TZ=${TZ:-Etc/UTC}
    ports:
    - "8883:8883"
    volumes:
    - ./volumes/mosquitto/config:/mosquitto/config
    - ./volumes/mosquitto/data:/mosquitto/data
    - ./volumes/mosquitto/log:/mosquitto/log
    - ./volumes/mosquitto/pwfile:/mosquitto/pwfile

Warning

V rámci instalace řeším rovnou SSL certifikáty a tomu odpovídá i porty v docker-compose.yml. Pokud bych chtěl nainstalovat verzi bez SSL, tak volím porty 1883:1883.

Protože budu Mosquitto provozovat pouze v domácí síti, budu potřebovat self signed certifikát. Podrobnosti jsem rozepsal zde, nicméně omezím se nyní na postup pouze pro náš účel.

K vytvoření nezbytných certifikátů pomůže tento skript, ve kterém je potřeba změnit IP adresu na IP adresu zařízení, na kterém MQTT server Mosquitto poběží.

#!/bin/bash
 
IP="192.168.1.22"
SUBJECT_CA="/C=CZ/ST=Brno/L=Brno/O=majordomus/OU=CA/CN=$IP"
SUBJECT_SERVER="/C=CZ/ST=Brno/L=Brno/O=majordomus/OU=Server/CN=$IP"
SUBJECT_CLIENT="/C=CZ/ST=Brno/L=Brno/O=majordomus/OU=Client/CN=$IP"
 
function generate_CA () {
   echo "$SUBJECT_CA"
   openssl req -x509 -nodes -sha256 -newkey rsa:2048 -subj "$SUBJECT_CA"  -days 3650 -keyout ca.key -out ca.crt
}
 
function generate_server () {
   echo "$SUBJECT_SERVER"
   openssl req -nodes -sha256 -new -subj "$SUBJECT_SERVER" -keyout server.key -out server.csr
   openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
}
 
generate_CA
generate_server

Platnost certifikátu jsem raději nastavil na 10 let. Po spuštění kódu budu mít ve více souborů. Nicméně pro MQTT server Mosquitto budu potřebovat:

  • ca.crt
  • server.crt
  • server.key

Pro klienta (aby se připojil k MQTT serveru) mi bude stačit soubor:

  • ca.crt
  • majordomus/mosquitto.1729435506.txt.gz
  • Poslední úprava: 2024/10/20 14:45
  • autor: Petr Nosek