Home Assistant Add-on:Mosquitto broker

本文介绍了如何在 Home Assistant 中安装和配置 Mosquitto broker Add-on。该 Add-on 允许用户创建本地 MQTT 用户,配置 TLS 加密连接,并管理用户访问控制列表(ACL)以限制对 MQTT 主题的访问。同时,本文也提供了配置示例和支持资源链接。

Home Assistant 插件:Mosquitto broker

安装

按照以下步骤在你的系统上安装该插件:

  1. 在你的 Home Assistant 前端导航至 设置 -> 插件 -> 插件商店
  2. 找到 "Mosquitto broker" 插件并单击它。
  3. 点击 "安装" 按钮。

如何使用

该插件有几个选项可用。要使插件运行起来:

  1. 启动该插件。
  2. 耐心等待几分钟。
  3. 检查插件的日志输出以查看结果。

通过 Home Assistant 的前端 设置 -> 人员 -> 用户 为 MQTT 创建一个新用户(即,不在 Mosquitto 的 配置 选项卡上)。 注意:

  1. 此名称不能是 homeassistantaddons,这些是保留的用户名。
  2. 如果你没有看到创建新用户的选项,请确保在你的 Home Assistant 个人资料中启用了高级模式

要将 Mosquitto 用作 代理,请转到集成页面并一键安装配置:

  1. 在你的 Home Assistant 前端导航至 设置 -> 设备与服务 -> 集成
  2. MQTT 应该作为发现的集成出现在页面顶部
  3. 选择它并选中复选框以启用 MQTT 发现(如果需要),然后点击提交。

如果你有旧的 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 值。 如果这样做,你还必须在 usernamepassword 值旁边指定 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 文件夹中。

关于 certfilekeyfile 的说明

  • 如果 提供 certfilekeyfile
    • 可以通过未加密端口进行未加密连接(默认为:18831884 用于 websockets)
  • 如果提供了 certfilekeyfile
    • 可以通过未加密端口进行未加密连接(默认为:18831884 用于 websockets)
    • 可以通过加密端口进行加密连接(默认为:88838884 用于 websockets)
      • 在这种情况下,客户端必须信任服务器的证书

选项:keyfile

包含私钥的文件。 将此文件放在 Home Assistant ssl 文件夹中。

关于 certfilekeyfile 的说明

  • 如果 提供 certfilekeyfile
    • 可以通过未加密端口进行未加密连接(默认为:18831884 用于 websockets)
  • 如果提供了 certfilekeyfile
    • 可以通过未加密端口进行未加密连接(默认为:18831884 用于 websockets)
    • 可以通过加密端口进行加密连接(默认为:88838884 用于 websockets)
      • 在这种情况下,客户端必须信任服务器的证书

选项:require_certificate

如果设置为 false

  • 不要求 客户端提供证书才能连接,用户名/密码就足够了
  • cafile 选项将被忽略

如果设置为 true

  • 要求 客户端提供自己的证书才能连接,用户名/密码 不够
  • 必须提供证书颁发机构 (CA):cafile 选项
  • 客户端证书必须由提供的 CA (cafile) 签名

选项:debug

如果设置为 true,则为 mosquitto 及其 auth 插件启用调试日志记录。 这有助于追踪问题,但不建议长期运行,因为敏感信息将被记录。

Home Assistant 用户管理

此插件已附加到 Home Assistant 用户系统,因此 MQTT 客户端可以使用这些凭据。 也可以在插件的配置选项中独立设置本地用户。 对于内部 Home Assistant 生态系统,我们注册 homeassistantaddons,因此这些名称不能用作用户名。

禁用侦听不安全的 (1883/1884) 端口

从插件页面网络卡中删除端口(将其设置为空白)以禁用它们。

访问控制列表 (ACL)

可以根据登录到 Mosquitto 的用户来限制对主题的访问。 在这种情况下,建议为每个客户端创建单独的用户并创建适当的 ACL。

请参阅以下链接以获取更多信息:

添加以下配置以启用对 [YOUR_MQTT_USER] 的所有主题的无限制访问。

注意: Home Assistant 希望用户 homeassistantaddons 具有对所有主题的无限制读写访问权限。 如果选择启用 ACL,则应如以下示例所示,授予这些用户此访问权限。 否则,你将遇到问题。

  1. 启用自定义标志

      customize:
        active: true
        folder: mosquitto
  2. 使用以下内容创建 /share/mosquitto/acl.conf

    acl_file /share/mosquitto/accesscontrollist
  3. 使用以下内容创建 /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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
home-assistant
home-assistant
江湖只有他的大名,没有他的介绍。