0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MQTTブローカーの構築 - Amazon Linux 2023へmosquittoをインストール

0
Last updated at Posted at 2026-06-10

以前の記事でMQTTプロトコルについて説明しました。
今回は実際にMQTT通信を行うためのブローカー(サーバ)の構築について紹介します。
とある案件でAmazon Linux 2023上にMQTT(ブローカー/クライアント)ソフトウェアのmosquittoをインストールし、ブローカーを構築したのでその時の記録を記載します。

dnfによるmosquittoインストール → 失敗

Amazon Linux 2023ではyumの代わりにdnfを使ってソフトウェアをインストールしますが、mosquittoはインストールできないようでした。
その他の方法はないか確認していたところ、mosquittoのダウンロードページ(https://mosquitto.org/download/) に「Linux distributions with snap support」とあったのでsnapを使ってインストールすることにしました。

snapによるmosquittoインストール

snapはyumやdnf同様パッケージマネージャーで、様々なLinuxディストリビューションで動作します。

まず、snapdをインストールします。(参考: https://github.com/bboozzoo/snapd-amazon-linux)

sudo wget -O /etc/yum.repos.d/snapd.repo https://bboozzoo.github.io/snapd-amazon-linux/al2023/snapd.repo
sudo dnf install snapd -y

snapからmosquittoをインストールするため以下のコマンドを実行します。

sudo snap install mosquitto

これでmosquittoのインストールは完了しました。
次に設定ファイルを作成します。

mosquittoの設定

設定ファイルは以下の場所に作成・配置します。
/var/snap/mosquitto/common/mosquitto.conf

内容は以下のとおりです。

listener 1883
allow_anonymous false
password_file /var/snap/mosquitto/common/password.txt
log_dest file /var/log/mosquitto.log

listenerは通信を行うポート番号です。通常1883番ポートを利用します。
allow_anonymousは不特定多数の接続を許可するかの設定です。falseの場合、通信時にユーザ名とPasswordを要求します。
password_fileはアクセス時に参照するIDとパスワードのリストが記載されたファイルのパスを指定します。
log_destはログファイルの出力先を指定します。ここではfile形式の/var/log/mosquitto.logを指定しています。

ユーザ・パスワード登録

パスワードファイルは以下の手順で作成します。
まず、以下のようにユーザ名と平文のパスワードの組を記載したファイルを用意します。

test:password
sekappy:sekappypassword
admin:adminpassword

次にmosquitto_passwdを実行します。この時-Uオプションに先ほど作ったファイルを指定します。

sudo mosquitto_passwd -U password.txt

実行後、パスワードファイル内のパスワードが暗号化されます。

% cat password.txt
test:$7$101$KGoGpnw/M8XSUezk$3+z9q7aUxPC3jeXEZQjeXH/3IMeqaZua57MbDz2KTsW+6bzvM4fRmlNXwYrUMgn+gVjXhTCSCLrF+7XHw4o04w==
sekappy:$7$101$E8/KibHeO2kbO1ja$MPQE7FzSTQ2q/DS8DW3rOC1Rn34ebAblPzacfqjbSxxlr14v3w+pBrL3tVWTGfcUVZecC5r4e6aRZG9XNE4iYA==
admin:$7$101$RG8Ik5G3SNTiKSQC$HLo9XEOLaxFGzJYsQ4c1CRjR/mjDS0lqDoSnVTHOdzGsq7HR1GK2Nk3LWxk7KQ0N71aVxfZ2d2wZn1OA7Y3Zlg==

暗号化したパスワードファイルを設定ファイルのpassword_fileで指定したパスに移動させ、以下のコマンドでmosquittoを再起動し、設定を反映させます。

sudo snap restart mosquitto

動作確認

mosquittoをインストールしたサーバ上でMQTT通信の動作確認をしてみます。
ターミナルのウィンドウを2つ用意して片方でサブスクライブ(メッセージ受信)、もう片方でパブリッシュ(メッセージ送信)をしてみます。

サブスクライブ

サブスクライブは以下のコマンドを実行します。

mosquitto_sub -h localhost -t topic/test -u test -P password

-hにブローカーのアドレス(ホスト名・IPアドレス)、-tに通信を行うトピック名、-uにユーザ名、-Pにパスワードを設定します。
ブローカーに接続できなかったり、ユーザ名やパスワードが正しくない場合はエラーになります。
接続成功した場合は、受信待機状態になります。

パブリッシュ

パブリッシュは以下のコマンドで実行します。

mosquitto_pub -h localhost -t topic/test -m "Hello, MQTT" -u test -P password

-mにメッセージの内容を記述します。

正しく処理されれば、パブリッシュ実行後に、サブスクライブしているウィンドウに「Hello, MQTT」が出力されます。

まとめ

今回はAmazon Linux 2023にMQTTソフトウェアのmosquitteをインストールする方法と、初期設定そして実際のMQTT通信の動作について紹介しました。

MQTTにはTLSによる通信の暗号化など他にも機能がありますので、別の機会に紹介したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?