本文介绍了如何在 Home Assistant 中安装和配置 Mosquitto broker Add-on。该 Add-on 允许用户创建本地 MQTT 用户,配置 TLS 加密连接,并管理用户访问控制列表(ACL)以限制对 MQTT 主题的访问。同时,本文也提供了配置示例和支持资源链接。
按照以下步骤在你的系统上安装该插件:
该插件有几个选项可用。要使插件运行起来:
通过 Home Assistant 的前端 设置 -> 人员 -> 用户 为 MQTT 创建一个新用户(即,不在 Mosquitto 的 配置 选项卡上)。 注意:
homeassistant
或 addons
,这些是保留的用户名。要将 Mosquitto 用作 代理,请转到集成页面并一键安装配置:
如果你有旧的 MQTT 设置可用,请删除此旧的集成并重新启动 Home Assistant 以查看新的集成。
插件配置:
logins: []
customize:
active: false
folder: mosquitto
certfile: fullchain.pem
keyfile: privkey.pem
require_certificate: false
logins
(可选)将使用用户名和密码创建的本地用户列表。你不需要这样做,因为你也可以使用 Home Assistant 用户,而无需任何配置。如果特别需要本地用户:
logins:
- username: user
password: passwd
你还可以选择使用从 pw
命令(存在于 Mosquitto 容器内)获得的哈希密码设置 password
值。 如果这样做,你还必须在 username
和 password
值旁边指定 password_pre_hashed: true
:
$ pw -p "foo"
PBKDF2$sha512$100000$qsU7xQ8YCV/9nRuBBJVTxA==$jqw94Ej3aEr97UofY6rClmVCRkTdDiubQW0A6ZYmUI+pZjW9Hax+2w2FeYB3y5ut1SliB7+HAwIl2iONLKkohw==
logins:
- username: user
password: "PBKDF2$sha512$100000$qsU7xQ8YCV/9nRuBBJVTxA==$jqw94Ej3aEr97UofY6rClmVCRkTdDiubQW0A6ZYmUI+pZjW9Hax+2w2FeYB3y5ut1SliB7+HAwIl2iONLKkohw=="
password_pre_hashed: true
注意: 此插件不支持匿名登录; 所有连接都必须使用用户名/密码才能连接。allow_anonymous true
或任何匿名 ACL 将不适用于此插件。
customize.active
如果设置为 true
,将读取其他配置文件,请参见下一个选项。
默认值:false
customize.folder
从中读取其他配置文件 (*.conf
) 的文件夹。
cafile
(可选)包含根证书的文件。 将此文件放在 Home Assistant ssl
文件夹中。
certfile
包含证书(包括其链)的文件。 将此文件放在 Home Assistant ssl
文件夹中。
关于 certfile
和 keyfile
的说明
certfile
和 keyfile
1883
,1884
用于 websockets)certfile
和 keyfile
1883
,1884
用于 websockets)8883
,8884
用于 websockets)
keyfile
包含私钥的文件。 将此文件放在 Home Assistant ssl
文件夹中。
关于 certfile
和 keyfile
的说明
certfile
和 keyfile
1883
,1884
用于 websockets)certfile
和 keyfile
1883
,1884
用于 websockets)8883
,8884
用于 websockets)
require_certificate
如果设置为 false
:
cafile
选项将被忽略如果设置为 true
:
cafile
选项cafile
) 签名debug
如果设置为 true
,则为 mosquitto 及其 auth 插件启用调试日志记录。 这有助于追踪问题,但不建议长期运行,因为敏感信息将被记录。
此插件已附加到 Home Assistant 用户系统,因此 MQTT 客户端可以使用这些凭据。 也可以在插件的配置选项中独立设置本地用户。 对于内部 Home Assistant 生态系统,我们注册 homeassistant
和 addons
,因此这些名称不能用作用户名。
从插件页面网络卡中删除端口(将其设置为空白)以禁用它们。
可以根据登录到 Mosquitto 的用户来限制对主题的访问。 在这种情况下,建议为每个客户端创建单独的用户并创建适当的 ACL。
请参阅以下链接以获取更多信息:
添加以下配置以启用对 [YOUR_MQTT_USER]
的所有主题的无限制访问。
注意: Home Assistant 希望用户 homeassistant
和 addons
具有对所有主题的无限制读写访问权限。 如果选择启用 ACL,则应如以下示例所示,授予这些用户此访问权限。 否则,你将遇到问题。
启用自定义标志
customize:
active: true
folder: mosquitto
使用以下内容创建 /share/mosquitto/acl.conf
:
acl_file /share/mosquitto/accesscontrollist
使用以下内容创建 /share/mosquitto/accesscontrollist
:
user addons
topic readwrite #
user homeassistant
topic readwrite #
user [YOUR_MQTT_USER]
topic readwrite #
可以通过 SMB 访问 /share
文件夹,也可以在 /usr/share/hassio/share
下的主机文件系统上访问。
有问题吗?
你可以通过以下几种方式获得解答:
如果你发现了错误,请在 我们的 GitHub 上打开一个 issue。
- 原文链接: github.com/home-assistan...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!