MQTTサーバー · 2 min read · Oct 31, 2025

Ubuntu 22.04にMosquitto MQTTサーバーをインストールする方法

Mosquittoは、MQTTプロトコルの無料でオープンソースの軽量サーバー実装です。低電力のシングルボードコンピュータからフルサーバーまで、すべてのデバイス向けに設計されています。MQTTはTCP/IPプロトコルの上で動作し、既存のインターネット家庭ネットワークを使用してIoTデバイスにメッセージを送信し、それらのメッセージに応答します。C言語で書かれているため、他のMQTTブローカーよりも高速で効率的です。

この投稿では、Ubuntu 22.04にMosquittoサーバーをインストールする方法を示します。

前提条件

  • Ubuntu 22.04を実行しているサーバー。
  • サーバーに設定されたルートパスワード。

必要な依存関係をインストールする

始める前に、すべてのシステムパッケージを最新バージョンに更新およびアップグレードすることをお勧めします。次のコマンドを実行して更新できます。

apt update -y  
apt upgrade -y

すべてのパッケージをアップグレードした後、次のコマンドを実行して他の必要なパッケージをインストールします。

apt-get install curl gnupg2 wget git apt-transport-https ca-certificates -y

すべての必要なパッケージがインストールされたら、次のステップに進むことができます。

Mosquittoサーバーをインストールする

デフォルトでは、MosquittoパッケージはUbuntu 22.04のデフォルトリポジトリにはありません。したがって、APTにMosquittoの公式リポジトリを追加する必要があります。次のコマンドで追加できます。

add-apt-repository ppa:mosquitto-dev/mosquitto-ppa -y

リポジトリがAPTに追加されたら、次のコマンドでインストールできます。

apt install mosquitto mosquitto-clients -y

インストールが完了したら、次のコマンドでMosquittoのステータスを確認できます。

systemctl status mosquitto

次の出力が表示されるはずです。

? mosquitto.service - Mosquitto MQTT Broker
     Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-12-06 04:50:33 UTC; 8s ago
       Docs: man:mosquitto.conf(5)
             man:mosquitto(8)
    Process: 5491 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5492 ExecStartPre=/bin/chown mosquitto:mosquitto /var/log/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5493 ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto (code=exited, status=0/SUCCESS)
    Process: 5494 ExecStartPre=/bin/chown mosquitto:mosquitto /run/mosquitto (code=exited, status=0/SUCCESS)
   Main PID: 5495 (mosquitto)
      Tasks: 1 (limit: 2242)
     Memory: 1.3M
        CPU: 23ms
     CGroup: /system.slice/mosquitto.service
             ??5495 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Dec 06 04:50:32 ubuntu2204 systemd[1]: Starting Mosquitto MQTT Broker...
Dec 06 04:50:33 ubuntu2204 systemd[1]: Started Mosquitto MQTT Broker.

MQTT管理者パスワードを作成する

セキュリティ上の理由から、MQTTのパスワード認証を設定することをお勧めします。

次のコマンドで管理者ユーザーとパスワードを設定しましょう。

mosquitto_passwd -c /etc/mosquitto/passwd hitesh

以下のようにパスワードを設定します。

Password: 
Reenter password: 

次に、MQTT設定ファイルを編集し、ポートとパスワードファイルを定義します。

nano /etc/mosquitto/conf.d/default.conf

次の行を追加します。

listener 1883
password_file /etc/mosquitto/passwd

ファイルを保存して閉じたら、Mosquittoサービスを再起動して変更を適用します。

systemctl restart mosquitto

MQTTを使用してメッセージを送受信する方法

Mosquittoクライアントを使用してMosquittoサーバーに接続し、異なるトピックでメッセージを送受信する必要があります。

メッセージを送受信する前に、トピックにサブスクライブする必要があります。ホームオートメーションアプリケーションで使用できるトピックの1つを使用できます。

  • home/lights/sitting_room
  • home/lights/kitchen
  • home/lights/master_bedroom
  • home/lights/kids_bedroom

次のコマンドを実行して、home/lights/kids_bedroomトピックにサブスクライブします。

mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"

次に、新しいターミナルインターフェースを開き、次のコマンドでhome/lights/kids_bedroomトピックにメッセージを公開します。

mosquitto_pub -u hitesh -P password -m "ON" -t "home/lights/kids_bedroom"

最初のターミナルでは、ONペイロードが表示されます。

ON

次に、2番目のターミナルに移動し、同じトピックにOFFメッセージを送信します。

mosquitto_pub -u hitesh -P password -m "OFF" -t "home/lights/kids_bedroom"

最初のターミナルで次のメッセージが表示されるはずです。

ON
OFF

完了したら、次のステップに進むことができます。

Let’s Encrypt SSLでMosquittoを保護する

MosquittoをSSLで保護するには、サーバーにCertbotクライアントパッケージをインストールする必要があります。

まず、次のコマンドを使用してSnapパッケージマネージャーをインストールします。

apt install snapd

次に、次のコマンドを使用してSnapパッケージを更新します。

snap install core   
snap refresh core

次に、次のコマンドでCertbotパッケージをインストールします。

snap install --classic certbot

次に、Certbotバイナリのシンボリックリンクをシステムの場所に作成します。

ln -s /snap/bin/certbot /usr/bin/certbot

次に、次のコマンドを実行してSSL証明書を生成します。

certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d mosquitto.linuxbuz.com

次の出力が表示されるはずです。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for mosquitto.linuxbuz.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem
This certificate expires on 2023-03-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

次のコマンドを使用して、生成されたすべての証明書ファイルを確認できます。

ls /etc/letsencrypt/live/mosquitto.linuxbuz.com/

次の出力が得られます。

cert.pem  chain.pem  fullchain.pem  privkey.pem  README

次に、次のコマンドを使用してDiffie-Hellman証明書を生成します。

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

完了したら、次のステップに進むことができます。

MQTTをLet’s Encrypt SSLを使用するように構成する

まず、次のコマンドを使用して生成されたすべての証明書をMosquittoディレクトリにコピーします。

cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/fullchain.pem /etc/mosquitto/certs/server.pem  
cp /etc/letsencrypt/live/mosquitto.linuxbuz.com/privkey.pem /etc/mosquitto/certs/server.key

次に、Mosquitto証明書に適切な所有権を設定します。

chown -R mosquitto: /etc/mosquitto/certs

次に、Mosquitto設定ファイルを編集し、Let’s Encrypt SSLを定義します。

nano /etc/mosquitto/conf.d/default.conf

次の行を追加します。

listener 8883
certfile /etc/mosquitto/certs/server.pem
cafile  /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem

ファイルを保存して閉じたら、Mosquittoサービスを再起動して変更を適用します。

systemctl restart mosquitto

次に、次のコマンドを使用してMosquitto接続を確認します。

mosquitto_pub -h mosquitto.linuxbuz.com -t "home/lights/kids_bedroom" -m "hello" -p 8883 --capath /etc/ssl/certs/ -u hitesh -P password

完了したら、Webブラウザを介してMosquitto接続をテストできます。

Mosquitto Websocketsを構成する

次に、ブラウザ内からMQTTプロトコルを使用するためにWebsocketsを構成する必要があります。Mosquittoのデフォルト設定ファイルを編集することで有効にできます。

nano /etc/mosquitto/conf.d/default.conf

次の行を追加します。

listener 8083
protocol websockets
certfile /etc/mosquitto/certs/server.pem
cafile  /etc/ssl/certs/ISRG_Root_X1.pem
keyfile /etc/mosquitto/certs/server.key
dhparamfile /etc/ssl/certs/dhparam.pem

ファイルを保存して閉じたら、Mosquittoサービスを再起動して変更を適用します。

systemctl restart mosquitto

次に、ターミナルインターフェースを開き、次のコマンドを実行します。

mosquitto_sub -u hitesh -P password -t "home/lights/kids_bedroom"

次に、Webブラウザを開き、ブラウザベースのMQTTクライアントを使用してWebSockets機能をテストします。次の画面が表示されるはずです。

Mosquittoサーバーのホスト、ポート、ユーザー名、パスワードを入力し、Connectボタンをクリックします。次の画面が表示されるはずです。

次に、任意のトピック、メッセージを入力し、Publishボタンをクリックします。

次に、ターミナルインターフェースに戻ります。次の出力にあなたの公開したメッセージが表示されるはずです。

Hi

結論

この投稿では、Ubuntu 22.04にMosquittoサーバーをインストールし、Let’s Encrypt SSLで保護する方法を説明しました。また、ブラウザベースのクライアントを介してMosquittoをテストしました。質問があればお気軽にお尋ねください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。