LAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げる

2023.05.15

データアナリティクス事業本部のueharaです。

今回はLAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げてみたいと思います。

はじめに

MQTTブローカーであるMosquittoについて、1.xから2.0への移行に伴い、デフォルトの実行ではローカルホストからの接続のみが許可される設定になっています。

「検証用にLAN上の別の端末からもMQTTブローカーにアクセスしたい」というケースはあるかと思うので、以下でDockerを利用したLAN内からアクセス可能なMosquitto 2.0の立ち上げ方法を紹介したいと思います。

環境設定

compose.yamlmosquitto.confの2ファイルを、以下のフォルダ構成で配置します。

.
├ compose.yaml
└ config
   └ mosquitto.conf

それぞれのファイルの中身は、以下のように設定します。

compose.yaml

services:
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:2
    volumes:
      - ./config:/mosquitto/config
    ports:
      - 1883:1883

mosquitto.conf

listener 1883 0.0.0.0
allow_anonymous true

mosquitto.confに設定している2行の項目により、LAN内の他のデバイスからの接続が可能になります。(※1, ※2)

※1. ただし、起動を実施する端末がLAN内の他デバイスから1883番ポートへのアクセスを許可している必要があります。必要があればFWの設定等を適宜確認してください。

※2. またここではユーザー名を指定せずに接続するクライアントの接続を許可するかどうかを決定するallow_anonymoustrueに設定していますが、あくまで今回はローカル検証用のためこのような形としており、実運用においてはセキュリティ上のリスクがあることをご承知おきください。

Mosquitto起動時に/mosquitto/config/mosquitto.confの設定ファイルが参照されるため、コンテナ内の/mosquitto/configに対して冒頭で作成した./configをバインドしています。

コンテナの起動

compose.yamlがあるディレクトリ上で以下のコマンドを実行することで、コンテナを起動することができます。

docker compose up

以下のようになっていれば起動成功です。

最後に

今回はLAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げてみました。

どなたかの参考になりましたら幸いです。

参考文献