容器方式安装HomeAssistant
前言
前文介绍了通过hassio_supervisor的方式安装homeassistant,hassio自带扩展市场,可以很方便的安装、配置扩展。但是屠龙者终成恶龙,随着hassio版本更新,引入了不少与openwrt不兼容的特性,而官方只打算维护与debian的兼容性,对于版本更新后在openwrt上运行出现的问题并不理会。在长达1年屏蔽更新用旧版本后,我终于下定决心,改为直接跑相应容器的方式安装HomeAssistant及其扩展。
操作
挂载
首先依然是建议把Docker分区挂载到/opt并开启btrfs透明压缩功能,缓解盒子内存太小的问题,改完重启生效。
homeassistant
docker pull homeassistant/home-assistant
docker rm -f homeassistant; docker run -d --name homeassistant --privileged --restart always -e TZ=Asia/Shanghai -v /opt/hassio/homeassistant:/config --network host homeassistant/home-assistant
安装和更新版本都可以通过以上两行命令完成,第一行命令是下载最新版,第二行命令是删除旧容器并重新运行。更新版本后记得用docker image prune删除旧版本释放空间。可以在第二行的命令里按自身需要自由添加文件映射,例如
docker rm -f homeassistant; docker run -d --name homeassistant --privileged
--restart always -e TZ=Asia/Shanghai -v /opt/hassio/homeassistant:/config
-v /opt/hassio/share:/share # 映射/share目录
-v /opt/hassio/media:/media # 映射/media目录
--network host homeassistant/home-assistant
安装后依然是访问http://ip:8123/完成后续配置和使用。
nodered
docker pull nodered/node-red
docker rm -f nodered; docker run -d --name nodered --restart always -u root -e TZ=Asia/Shanghai -v /opt/hassio/homeassistant/node-red:/data --network host nodered/node-red
同样套路,第一行命令下载最新版,第二行命令删除旧容器并重新运行。
默认配置下可访问http://ip:1880/进行使用。如果需要调整监听地址或者设置访问密码,参考Securing Node-RED修改/opt/hassio/homeassistant/node-red/settings.js文件。
使用hassio时,homeassistant与nodered扩展是自动关联好的,但容器方式需要我们手动关联。首先访问homeassistant侧边栏最下面的“用户资料”页面,“创建令牌”并记下其值(注意复制完整)。
然后访问nodered页面,安装home_assistant节点:右上角菜单 -> 节点管理 -> 安装 -> node-red-contrib-home-assistant-websocket -> 安装。
如果需要home_assistant节点排在最前面,可以修改/opt/hassio/homeassistant/node-red/settings.js文件,查找categories一行,取消注释并添加home_assistant到最前面,改完docker restart nodered重启生效:
categories: ['home_assistant', 'subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'],
再配置home_assistant节点:拖拽任意一个home_assistant节点 -> 双击 -> Server -> 编辑,“Access Token”输入前面记下的令牌值。配置好后跟用hassio时就没什么区别了。
zigbee2mqtt
docker pull koenkk/zigbee2mqtt
docker rm -f zigbee2mqtt; docker run -d --name zigbee2mqtt --restart always -e TZ=Asia/Shanghai --device=/dev/ttyACM0 -p 8080:8080 -v /opt/hassio/zigbee2mqtt:/app/data -v /run/udev:/run/udev:ro koenkk/zigbee2mqtt
同样套路。参考Configuration | Zigbee2MQTT修改/opt/hassio/zigbee2mqtt/configuration.yaml进行配置。
mqtt
docker pull iegomez/mosquitto-go-auth
docker rm -f mqtt; docker run -d --name mqtt --restart always -e TZ=Asia/Shanghai -v /opt/hassio/mosquitto:/etc/mosquitto -p 1883:1883 iegomez/mosquitto-go-auth
nginx
docker pull nginx
docker rm -f nginx; docker run -d --name nginx --restart always -e TZ=Asia/Shanghai -v /opt/hassio/nginx:/etc/nginx --net host nginx
总结
通过容器安装HomeAssistant及其他功能,优点一是解决hassio更新带来的各种问题,二是对于容器具有完全控制权,可以实现在hassio方式中做不到的自定义文件映射等功能,不再受限hassio;缺点当然也是有的,得自己维护扩展配置文件,相比hassio难一点点,但借助百度谷歌,都能从网上找到答案。搞定配置文件以后,安装更新都是两条命令完事,一劳永逸,相比hassio频繁引入新问题,值!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
凯斯旅程
校验提示文案
凯斯旅程
校验提示文案