LAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げる
データアナリティクス事業本部のueharaです。
今回はLAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げてみたいと思います。
はじめに
MQTTブローカーであるMosquittoについて、1.x
から2.0
への移行に伴い、デフォルトの実行ではローカルホストからの接続のみが許可される設定になっています。
「検証用にLAN上の別の端末からもMQTTブローカーにアクセスしたい」というケースはあるかと思うので、以下でDockerを利用したLAN内からアクセス可能なMosquitto 2.0の立ち上げ方法を紹介したいと思います。
環境設定
compose.yaml
とmosquitto.conf
の2ファイルを、以下のフォルダ構成で配置します。
. ├ compose.yaml └ config └ mosquitto.conf
それぞれのファイルの中身は、以下のように設定します。
services: mosquitto: container_name: mosquitto image: eclipse-mosquitto:2 volumes: - ./config:/mosquitto/config ports: - 1883:1883
listener 1883 0.0.0.0 allow_anonymous true
mosquitto.conf
に設定している2行の項目により、LAN内の他のデバイスからの接続が可能になります。(※1, ※2)
※1. ただし、起動を実施する端末がLAN内の他デバイスから1883番ポートへのアクセスを許可している必要があります。必要があればFWの設定等を適宜確認してください。
※2. またここではユーザー名を指定せずに接続するクライアントの接続を許可するかどうかを決定するallow_anonymous
をtrue
に設定していますが、あくまで今回はローカル検証用のためこのような形としており、実運用においてはセキュリティ上のリスクがあることをご承知おきください。
Mosquitto起動時に/mosquitto/config/mosquitto.conf
の設定ファイルが参照されるため、コンテナ内の/mosquitto/config
に対して冒頭で作成した./config
をバインドしています。
コンテナの起動
compose.yaml
があるディレクトリ上で以下のコマンドを実行することで、コンテナを起動することができます。
docker compose up
以下のようになっていれば起動成功です。
最後に
今回はLAN内からアクセス可能なMosquitto 2.0版をDockerで立ち上げてみました。
どなたかの参考になりましたら幸いです。