Skip to content

Mosquitto Broker 部署与配置

Eclipse Mosquitto 是一个开源的 MQTT 代理,轻量且高性能。

部署方式

Docker (推荐)

使用 Docker 快速启动 Mosquitto 服务。

```bash docker run -d
--name mosquitto
-p 1883:1883
-p 8883:8883
-v $(pwd)/mosquitto/config:/mosquitto/config
-v $(pwd)/mosquitto/data:/mosquitto/data
-v $(pwd)/mosquitto/log:/mosquitto/log
eclipse-mosquitto ```

目录结构

建议的目录结构:

```text mosquitto/ ├── config/ │ ├── mosquitto.conf │ └── password_file (可选) ├── data/ └── log/ ```

配置文件 (mosquitto.conf)

以下是一个生产环境的配置示例,包含了监听器、持久化和安全设置。

```conf

持久化设置

persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log

-------------

监听器配置

-------------

1. 默认 TCP 监听器 (内网使用)

listener 1883

允许匿名访问 (生产环境建议设为 false)

allow_anonymous false password_file /mosquitto/config/password_file

2. SSL/TLS 监听器 (公网推荐)

listener 8883 certfile /mosquitto/config/certs/chain.pem keyfile /mosquitto/config/certs/privkey.pem cafile /mosquitto/config/certs/chain.pem

3. WebSocket 监听器 (供 Web 客户端使用)

listener 9001 protocol websockets certfile /mosquitto/config/certs/chain.pem keyfile /mosquitto/config/certs/privkey.pem ```

用户认证

Mosquitto 使用密码文件进行认证。

  1. 进入容器:

    ```bash docker exec -it mosquitto sh ```

  2. 创建用户:

    ```bash

    创建并覆盖文件 (如果是第一个用户)

    mosquitto_passwd -c /mosquitto/config/password_file admin

    添加第二个用户

    mosquitto_passwd -b /mosquitto/config/password_file client1 secret_password ```

  3. 重启服务:

    ```bash docker restart mosquitto ```

SSL/TLS 证书

在生产环境,建议使用 SSL 加密通信。你可以将 Let's Encrypt 生成的证书挂载到容器中。

确保文件权限正确,mosquitto 用户(uid 1883)需要有权限读取证书文件。

```bash

示例挂载

-v /etc/letsencrypt/live/mqtt.example.com:/mosquitto/config/certs:ro ```