云服务器 Docker 安装 HomeAssistant 集成米家到Homekit


[{“source”:{“position”:0,“lines”:[“

前期准备

我购买的是腾讯云的轻量云服务器,上面自己装了国产运维面板 1Panel,docker 环境都配置好了。

安装HomeAssistant

可以直接在 1Panel 的应用商店中找到 Home Assistant。

安装需要一段时间,安装完之后需要在防火墙打开8123端口。

然后在浏览器中输入你的公网IP:8123就可以进入 HomeAssistant ,注册完之后,就可以关闭了。

安装 Hacs

按照上图进入 HomeAssistant 的容器内部(前面忘加 sudo 了)

sudo docker exec -it homeassistant bash #类似这样的命令

进入之后输入以下命令安装:

wget -O - https://get.hacs.xyz | bash -

安装命令可能变动,具体参考官方文档:https://hacs.xyz/docs/setup/download

以上命令可能需要代理,但容器内部无法访问到外部的代理。刚好 HA 的安装需要 Host 模式,可以直接使用宿主机的网络,所以可以先在容器外部创建好代理,然后再去执行命令。

  • 在宿主机上运行 ip addr showifconfig,查找 Docker 网络接口(通常是名为 docker0 的接口)的 IP 地址。

  • 使用这个 IP 地址替换 127.0.0.1 设置代理,例如 export HTTP_PROXY=\"http://docker0-ip-address:7890\"

# 设置代理示例"]},"target":{"position":0,"lines":["前期准备我购买的是腾讯云的轻量云服务器,上面自己装了国产运维面板 1Panel,docker 环境都配置好了。安装HomeAssistant可以直接在 1Panel 的应用商店中找到 Home Assistant。安装需要一段时间,安装完之后需要在防火墙打开8123端口。然后在浏览器中输入你的公网IP:8123就可以进入 HomeAssistant ,注册完之后,就可以关闭了。安装 Hacs按照上图进入 HomeAssistant 的容器内部(前面忘加 sudo 了)sudo docker exec -it homeassistant bash #类似这样的命令进入之后输入以下命令安装:wget -O - https://get.hacs.xyz | bash -安装命令可能变动,具体参考官方文档:https://hacs.xyz/docs/setup/download以上命令可能需要代理,但容器内部无法访问到外部的代理。刚好 HA 的安装需要 Host 模式,可以直接使用宿主机的网络,所以可以先在容器外部创建好代理,然后再去执行命令。在宿主机上运行 ip addr show 或 ifconfig,查找 Docker 网络接口(通常是名为 docker0 的接口)的 IP 地址。使用这个 IP 地址替换 127.0.0.1 设置代理,例如 export HTTP_PROXY=\"http://docker0-ip-address:7890\"。# 设置代理示例"]},"type":"CHANGE"},{"source":{"position":5,"lines":["unset https_proxy但这样尝试之后并没有设置代理,发现可以 ping 通宿主机,但无法 curl 到主机的服务,十分奇怪。折腾半天后换了一个办法,直接修改 docker-compose ,为容器设置代理。然后发现还是不行,有可能是 1Panel 的问题。又一个解决方法直接访问 wget 中的网址:https://get.hacs.xyz,把脚本的内容复制下来#!/bin/bash"]},"target":{"position":5,"lines":["unset https_proxy但这样尝试之后并没有设置代理,发现可以 ping 通宿主机,但无法 curl 到主机的服务,十分奇怪。折腾半天后换了一个办法,直接修改 docker-compose ,为容器设置代理。然后发现还是不行,有可能是 1Panel 的问题。又一个解决方法直接访问 wget 中的网址:https://get.hacs.xyz,把脚本的内容复制下来#!/bin/bash"]},"type":"CHANGE"},{"source":{"position":142,"lines":["fi然后在容器内:vi install_hacs.sh把脚本复制进去,再bash install_hacs.sh下载速度有点缓慢,但至少进度条动了等了一会到了83%又给我停了。。看来这还是一个玄学问题。后来连接 github 还是失败了。最终解决方案直接在 https://github.com/hacs/integration/releases/ 中下好 zip 文件。然后点这个进入容器安装目录:再然后 /data/custom_components ,把 zip 解压复制到该文件夹中。在 Home Assistant 中添加集成搜索之后发现什么都没有,经过上网查询得知还需要修改 manifest 。但是是21年的老博客了,我这里没有 manifest 文件。哦草,我忘记重启 HA 服务了。重启之后就有了。但是的但是,他给我报错了。。为什么会报错呢,官方脚本的逻辑也就是简单地下好了 zip 包,然后放到自定义组件的文件夹中。我打算重新弄一个容器。重复操作,记得打开高级模式。然后成功了。但是这次又有另一个报错信息:太逆天了,最开始不能用命令一键安装就是因为网络的问题,现在手动给它装好了,还是遇到了网络问题。看来还是得折腾一个 docker 容器内的代理。又试了一下,成了。也不知道是运气好突然可以连上 github 还是因为配置好了代理。开始配置Hacs上来就当头一棒。但在这个 issue 中找到了解决办法:https://github.com/al-one/hass-xiaomi-miot/issues/1248找到里面提到的博客:https://www.ququ123.top/2023/09/homeassistant_xiaomi_login/根据它的原理,首先修改云服务器的 ssh 配置文件,在 /etc/ssh/sshd_config ,把AllowTcpForwarding yes 前面的#删除,保存并重启服务:systemctl reload sshd 然后终端中输入 ssh -ND 3600 username@your-remote-server.com ,注意这个时候终端输入密码(如果要输入密码)之后没有反应,这是正常的。然后配置浏览器,我使用的是 chrome ,但它没有原生的代理功能,所以需要一个插件:Proxy SwitchyOmega之后这样设置,然后在浏览器中启用之后再去 HA 中进行登录,然后点击链接验证,还是无果。这时候去登录 mi.com ,再回来登录 HA 。就成功了。集成米家设备到Homekit先安装 Homekit :安装完之后,选择区域,然后在通知栏中用你的 iPhone 扫描二维码,进入家庭应用,就实现了把米家家居导入到 Homekit 中了!来来回回折腾了几个小时,总算是成了。坑查看 hacs 官方的安装脚本,发现一个坑:这里似乎会检查版本,而我发现 1Panel 的 HA 版本是2023.8,比较老了。看来即使是有网络代理,也无法使用官方的脚本运行。"]},"target":{"position":142,"lines":["fi

然后在容器内:

vi install_hacs.sh

把脚本复制进去,再

bash install_hacs.sh

下载速度有点缓慢,但至少进度条动了

等了一会到了83%又给我停了。。看来这还是一个玄学问题。

后来连接 github 还是失败了。

最终解决方案

直接在 https://github.com/hacs/integration/releases/ 中下好 zip 文件。

然后点这个进入容器安装目录:

再然后 /data/custom_components ,把 zip 解压复制到该文件夹中。

在 Home Assistant 中添加集成

搜索之后发现什么都没有,经过上网查询得知还需要修改 manifest 。但是是21年的老博客了,我这里没有 manifest 文件。

哦草,我忘记重启 HA 服务了。重启之后就有了

但是的但是,他给我报错

为什么会报错呢,官方脚本的逻辑也就是简单地下好了 zip 包,然后放到自定义组件的文件夹中。我打算重新弄一个容器。

重复操作,记得打开高级模式。然后成功了。

但是这次又有另一个报错

息:

太逆天了,最开始不能用命令一键安装就是因为网络的问题,现在手动给它装好了,还是遇到了网络问题。

看来还是得折腾一个 docker 容器内的代理。又试了一下,成了。也不知道是运气好突然可以连上 github 还是因为配置好了代理。

问题开端

上来就当头一棒。但在这个 issue 中找到了解决办法:https://github.com/al-one/hass-xiaomi-miot/issues/1248

找到里面提到的博客:https://www.ququ123.top/2023/09/homeassistant_xiaomi_login/

根据它的原理,首先修改云服务器的 ssh 配置文件,在 /etc/ssh/sshd_config ,把AllowTcpForwarding yes 前面的#删除,保存并重启服务:systemctl reload sshd

然后终端中输入 ssh -ND 3600 username@your-remote-server.com ,注意这个时候终端输入密码(如果要输入密码)之后没有反应,这是正常的。

然后配置浏览器,我使用的是 chrome ,但它没有原生的代理功能,所以需要一个插件:Proxy SwichyOmega

之后这样设

,然后在浏览器启用之后再去 HA 中进行登录,然后点击链接验证,还是无果。这时候去登录 mi.com ,再回来登录 HA 。就成功了。

集成米家设备到Homekit

安装完之后,选择区域,然后在通知栏中用你的 iPhone 扫描二维码,进入家庭应用,就实现了把米家家居导入到 Homekit 中了!

来来回回折腾了几个小时,总算是成了。

查看hacs 官方安装脚本,发现一个坑

这里似乎会检查版本,而我发现 1Panel 的 HA 版本是2023.8,比较老了。

看来即使是有网络代理,也无法使用官方的脚本运行。

”]},“type”:“CHANGE”}]