Appearance
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 使用密码文件进行认证。
进入容器:
```bash docker exec -it mosquitto sh ```
创建用户:
```bash
创建并覆盖文件 (如果是第一个用户)
mosquitto_passwd -c /mosquitto/config/password_file admin
添加第二个用户
mosquitto_passwd -b /mosquitto/config/password_file client1 secret_password ```
重启服务:
```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 ```