说明
提供一个不使用官方一键安装脚本的部署方法,适用于x86_64 平台、树莓派或可以运行 Docker 的 arm 设备。也可以用于在现有的可运行 Docker 的设备上进行安装,比如 OMV。
缺点是由于没有 generic-hc
,所以不能通过 hass.io 面板重启,升级需要手动。
晒一下在 Orange Pi Zero 上跑的 Hass.io。
PS:纯好玩,这玩意内存只有 512MB,性能也很差,发热感人,不推荐,实在想要建议加钱买 Orange Pi Zero Plus H5。
环境依赖
Docker
直接看官方文档:
添加源的步骤时,可以修改成国内镜像地址,以 Ubuntu 为例:
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
avahi-daemon & dbus-daemon
不同发行版的包名可能略有差别,不行就百度解决吧。
镜像加速
Docker 中国官方镜像加速
$ sudo nano /etc/docker/daemon.json
添加以下内容:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
然后重启 Docker 服务:
$ sudo systemctl restart docker
Portainer
可选操作,不需要 Web UI 来管理 Docker 的话,可以跳过。
$ sudo docker volume create portainer_data
下一步需要根据运行环境做修改
$ sudo docker run -d --restart unless-stopped -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:linux-arm
$ sudo docker run -d --restart unless-stopped -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:linux-amd64
然后打开 Web 页面 http://your_device_ip:9000
。
添加帐号:
选择 Local 本地模式:
拉取镜像
终端
homeassistant 镜像可用版本可以以下地址查看:
https://hub.docker.com/r/homeassistant/armhf-homeassistant/tags/
https://hub.docker.com/r/homeassistant/qemux86-64-homeassistant/tags/
需要将 homeassistant 的标签替换为对应的版本
$ sudo docker pull homeassistant/armhf-hassio-supervisor:latest
$ sudo docker pull homeassistant/armhf-homeassistant:tag
$ sudo docker pull homeassistant/amd64-hassio-supervisor:latest
$ sudo docker pull homeassistant/qemux86-64-homeassistant:tag
Portainer
进入 Images
管理页面,在 Pull image
中的 Name
中根据你的平台输入镜像名
-
树莓派
homeassistant/armhf-hassio-supervisor:latest
homeassistant/armhf-homeassistant:tag
-
x86_64
homeassistant/amd64-hassio-supervisor:latest
homeassistant/qemux86-64-homeassistant:tag
注意:Portainer 中拉取镜像没有进度条,而 homeassistant
镜像还比较大,慢慢等,实在不行就用终端操作。
运行 Hass.io
首次运行hassio_supervisor
容器时会创建一个名为 hassio 的 Docker Network ,但是有可能不会拉起 homeassistant
容器。
执行下面的的命令删除已经存在的 hassio-supervisor
容器。
$ sudo docker stop hassio_supervisor
$ sudo docker rm hassio_supervisor
然后重新运行hassio_supervisor
容器。
Portainer 则只要在 hassio_supervisor
容器管理页面点击 Restart
按钮即可。
终端
$ sudo docker run -d --name hassio_supervisor \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /usr/share/hassio:/data \
-e SUPERVISOR_SHARE=/usr/share/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/armhf-homeassistant \
homeassistant/armhf-hassio-supervisor:latest
$ sudo docker run -d --name hassio_supervisor \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /usr/share/hassio:/data \
-e SUPERVISOR_SHARE=/usr/share/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
homeassistant/amd64-hassio-supervisor:latest
Portainer
在 Containers
管理页面,点击 Add Container
,进入创建容器页面。
第一个 Name
是容器名, 填写 hassio_supervisor
。
Image configuration
下的 Name
是指的镜像名,需要根据平台输入
-
树莓派
homeassistant/armhf-hassio-supervisor:latest
-
x86_64
homeassistant/amd64-hassio-supervisor:latest
在 Advanced container settings
中配置运行参数
-
挂载参数,类型选择 bind
然后根据命令行中的 -v
参数内容填写,如图所示:
-
环境变量,根据命令行中的 -e
参数填写,如图:
注意:HOMEASSISTANT_REPOSITORY
需要根据不同平台来决定值
-
重启策略:
Always 或者 Unless stopped 都行。
升级
这里手动 hassio-supervisor
升级操作会造成 homeassistant
无法访问 hassio-supervisor
提供的 API,会出现 Web 页面菜单没有 Hass.io 的情况。
首先需要等待hassio-supervisor
自己加入 hassio 的 Docker Network,然后重启 homeassistant
容器基本都能解决。
实际测试的结果,hass-supervisor 升级需要手动重建容器,homeassistant 升级正常,如果 supervisor 无法拉起 homeassistant 容器,可以通过重启 docker 服务,或者干脆直接重启系统解决。
终端
重新执行获取最新的 hassio-supervisor
镜像,停止并删除旧 hassio_supervisor
容器,然后重新运行 hassio_supervisor
。
Portainer
操作参考命令行的步骤。
问题
最大的问题就是 hassio_supervisor
拉不起来 homeassistant
,由于原因比较复杂(其实是没完全弄明白),只讲一下无脑处理方案。
这个两个网络服务很重要,没有的话肯定会有问题的。
- 查看
hassio_supervisor
容器日志
$ sudo docker logs -f hassio_supervisor
启动时有个拉取官方插件仓库的动作,这一步可能会卡住,可以选择等待或者重启容器。
$ sudo docker restart hassio_supervisor
- 删除已经运行的容器,删除
/usr/share/hassio
目录然后重新启动容器
就是实在不行的话就全部删掉重来。
$ sudo docker stop hassio_supervisor homeassistant
$ sudo docker rm hassio_supervisor homeassistant
$ sudo rm -rf /usr/share/hassio
其他
由于近期忙于找工作,有其他问题只会不定期回复。在 Portainer 查看容器日志、进入容器内部终端可以看我以前在张大妈的投稿: 树莓派+Docker—轻松打造自己的智能家居控制中心
如果觉得内容能帮助到你,愿意的话可以通过赞赏码对我赞赏: