Docker安装Home Assistant (Hassio Supervisor)
目前尝试过安装在arm64和x64的Ubuntu上,Openwrt上,Pve母机的Debian上,openwrt直接跑会出现内存溢出的情况,本文最后说说如何从根本上解决,顺便鄙视一下某个每篇文章都要1.99元的网站
虽然官方有安装脚本,但等于没有一样,并用不了,不要尝试
下载
删掉冒号后面的去访问就能知道最新stable
版本是多少,点下面View all tagged versions
可以展开
不下载也行,启动的时候会下载
arm64
docker pull ghcr.io/home-assistant/aarch64-hassio-supervisor:2023.11.2
docker pull ghcr.io/home-assistant/qemuarm-64-homeassistant:2023.11.2
x64
docker pull ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.2
docker pull ghcr.io/home-assistant/qemux86-64-homeassistant:2023.11.2
启动
不要看官方文档安装他所需要的依赖,因为那些依赖确实没有也行,并且如果在Pve下安装networkmanager会导致网络崩坏
此处 /opt/apps/hassio 是Home Assistant的所有数据,可以改到你想要的地方,迁移的时候也只需要迁移这个文件夹,并卸载重新安装所有插件(插件即容器,数据不会丢)
不要问为什么不加--privileged
问就是启不来
arm64
docker run -d --name hassio_supervisor --privileged \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /opt/apps/hassio:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/aarch64-hassio-supervisor:2023.11.2
x64
docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /opt/apps/hassio:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.2
然后需要耐心等待,按网速和性能需要蛮长时间的,用这个命令来看安装情况或者直接去portainer看log
docker logs -f hassio_supervisor
另外有人说装完之后找不到Supervisor的菜单,新版的菜单在设置里而不是左边菜单栏上,如果实在找不到,访问路径/hassio/dashboard
更新
发布了新版本,怎么可能不更新呢
# 这里的容器镜像名记住了替换下面的
docker stop hassio_supervisor
docker stop homeassistant
docker rm hassio_supervisor
docker rm homeassistant
docker images | grep supervisor
# 上面输出的都挨个删掉
docker rmi ghcr.io/home-assistant/amd64-hassio-supervisor:2022.04.0
docker images | grep 4-homeassistant
# 上面输出的都挨个删掉
docker rmi ghcr.io/home-assistant/qemux86-64-homeassistant:2022.3.6
# 这里下载最新版 删掉冒号后面的去访问就能知道最新版本是多少,替换掉
docker pull ghcr.io/home-assistant/amd64-hassio-supervisor:2023.08.1
docker pull ghcr.io/home-assistant/qemux86-64-homeassistant:2022.11.2
# 然后用上面安装的方式去运行,最后一行用上面pull的代替,SUPERVISOR_SHARE必须是同一个地方,迁移也只需要迁移他
错误和解决方案
'AddonManager.install' blocked from execution, system is not healthy
hassio文件夹下新建jobs.json并在里面写入
{"ignore_conditions": ["healthy"]}
在Openwrt下,hassio_audio会以肉眼可见的速度拼命吃内存,原因是因为Openwrt没有/dev/fd
解决方案1(推荐)ln -s /proc/self/fd /dev/fd
并且写到启动项中(因为是tmpfs所以需要每次开机都建一次软连接)
解决方案2(虽然说这东西没啥用,但hassio_supervisor有守护进程,会自动重启它,起起停停浪费资源)
在计划任务写入* * * * * docker kill hassio_audio
path /opt/apps/hassio/share is mounted on /opt but it is not a shared or slave mount
新版hass对所在分区挂载有要求,需要增加一条开机启动(尚不清楚怎么写fstab)
mount --make-shared /opt
升级,homeassistant 等很久也没有启动,没有 homeassistant 容器
先检查下下来的两个镜像是不是最新的稳定版本(没有dev字样),换成稳定版。
如果出现[supervisor.docker.interface] Attaching to ghcr.io/home-assistant/qemux86-64-homeassistant with version
的错误
或是卡在[supervisor.jobs] 'MountManager.reload' blocked from execution, mounting not supported on system
的时候
这是supervisor的问题,我也不知道怎么修,但是在升级2022.11.3的时候遇到了,并且找到了解决方案:# 全删掉 docker stop hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant docker rm hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant # 按上面的方式启动,但是去掉 -v /opt/apps/hassio:/data 这个目录映射,SUPERVISOR_SHARE 维持不变,或者换个目录,比如这样: docker run -d --name hassio_supervisor --privileged \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/dbus:/var/run/dbus \ -v /opt/apps/hassio222:/data \ -e SUPERVISOR_SHARE=/opt/apps/hassio -e SUPERVISOR_MACHINE=qemux86-64 \ -e SUPERVISOR_NAME=hassio_supervisor \ -e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \ ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.3 # 等待 homeassistant启动成功 # 删除除了homeassistant以外的容器 docker stop hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant docker rm hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor # 再按上面的方式正常启动一次,这样就完美修复了 docker run -d --name hassio_supervisor --privileged \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/dbus:/var/run/dbus \ -v /opt/apps/hassio:/data \ -e SUPERVISOR_SHARE=/opt/apps/hassio -e SUPERVISOR_MACHINE=qemux86-64 \ -e SUPERVISOR_NAME=hassio_supervisor \ -e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \ ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.3
附加组件
既然都用到hassio了,那肯定会用到mqtt吧,那就启动一个emqx吧
docker run -d --name emqx -v /etc/localtime:/etc/localtime -p 1883:1883 -p 18083:18083 emqx/emqx
然后发现启动报错,因为Openwrt没有/etc/localtime和/etc/timezone
opkg install zoneinfo-asia
/etc/init.d/system reload
如果咩咩的文章对你有帮助,您可以 请我喝牛奶
现在好像不行了,不知有没有办法解决?看网上这个链接好像也没有好的办法。https://github.com/istoreos/istoreos/issues/815
有一说一,咩咩装好他能用,就没再更新过
我去看了下,怎么不行了,我现在跑着2023.08.1工作正常
'AddonManager.install' blocked from execution, supervisor needs to be updated first 安装扩展的时候错误提示 请问一下怎么解决
重新安装来更新supervisor
我也遇到这个了,安装的时候用的是latest,下载下来的是23.10.0装好后就提示要更新23.10.1,不然不能装东西
23-10-03 03:19:46 ERROR (SyncWorker_4) [supervisor.docker.manager] Can't create container from hassio_observer: 400 Client Error for http+docker://localhost/v1.41/containers/create?name=hassio_observer: Bad Request ("invalid mount config for type "bind": bind source path does not exist: /run/docker.sock")
23-10-03 03:19:46 ERROR (MainThread) [supervisor.plugins.observer] Can't start observer plugin
23-10-03 03:19:46 ERROR (MainThread) [supervisor.misc.tasks] Observer watchdog reanimation failed!
因为找不到/run/docker.sock这个文件,这是用来跟Docker通讯的,Docker生成的
我需要如何去解决呢,大佬,
建议Google搜索,我没遇到过
好的,大佬
23-10-03 11:25:02 ERROR (MainThread) [supervisor.plugins.dns] Can't start CoreDNS plugin
23-10-03 11:25:02 INFO (MainThread) [supervisor.plugins.dns] Updated /etc/resolv.conf
23-10-03 11:25:02 INFO (MainThread) [supervisor.docker.interface] Attaching to ghcr.io/home-assistant/amd64-hassio-audio with version 2023.06.0
23-10-03 11:25:02 INFO (MainThread) [supervisor.plugins.audio] Starting Audio plugin
23-10-03 11:25:02 ERROR (SyncWorker_0) [supervisor.docker.manager] Can't create container from hassio_audio: 400 Client Error for http+docker://localhost/v1.42/containers/create?name=hassio_audio: Bad Request ("invalid mount config for type "bind": bind source path does not exist: /run/dbus")
23-10-03 11:25:02 ERROR (MainThread) [supervisor.plugins.audio] Can't start Audio plugin
23-10-03 11:25:02 INFO (MainThread) [supervisor.docker.interface] Attaching to ghcr.io/home-assistant/amd64-hassio-observer with version 2023.06.0
23-10-03 11:25:02 INFO (MainThread) [supervisor.plugins.observer] Starting observer plugin
23-10-03 11:25:02 ERROR (SyncWorker_0) [supervisor.docker.manager] Can't create container from hassio_observer: 400 Client Error for http+docker://localhost/v1.42/containers/create?name=hassio_observer: Bad Request ("invalid mount config for type "bind": bind source path does not exist: /run/docker.sock")
23-10-03 11:25:02 ERROR (MainThread) [supervisor.plugins.observer] Can't start observer plugin
请问这种怎么解决,重安装很多次了
因为找不到/run/docker.sock这个文件,这是用来跟Docker通讯的,Docker生成的
好嘛都是这个问题,我也是这个问题。
23-10-16 00:17:42 ERROR (SyncWorker_0) [supervisor.docker.manager] Can't create container from hassio_audio: 400 Client Error for http+docker://localhost/v1.42/containers/create?name=hassio_audio: Bad Request ("invalid mount config for type "bind": bind source path does not exist: /run/udev")
23-10-16 00:17:42 ERROR (MainThread) [supervisor.plugins.audio] Can't start Audio plugin
我解决了, 不要/var 直接指向/run文件夹就行了。
docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /run/docker.sock:/run/docker.sock \
-v /run/dbus:/run/dbus \
-v /run/udev:/run/udev \
-v /root/docker/hassio:/data \
-e SUPERVISOR_SHARE=/root/docker/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2023.10.0
我看了一下,你这个镜像没有10月10号的呀,有10月1号稳定版
反正进链接里找最新版复制那个tag就可以了,毕竟是官方仓库
请问大佬,
mount --make-shared /opt
这个命令写在哪里?
开机启动
咩咩,我遇到path /opt/apps/hassio/share is mounted on /opt but it is not a shared or slave mount这个问题了,那个mount那句加在哪儿
在/etc/fstab里给挂载点加个参数即可
是在这个文件最后面加一行这个代码,然后把/opt换成我hassio文件夹的位置吗,mount --make-shared /volume1这样对吗
是的哟
大佬,这个是什么原因。环境是R2s装的istore
23-11-14 10:54:58 INFO (MainThread) [supervisor.updater] Fetching update data from https://version.home-assistant.io/stable.json
23-11-14 10:54:59 WARNING (MainThread) [supervisor.updater] Can't process version data: 'aarch64'
23-11-14 10:54:59 WARNING (MainThread) [supervisor.plugins.cli] Error on install cli plugin. Retry in 30sec
我看了下,他把架构删了,所以只能改成qemuarm-64拉了
改成qemuarm-64的安装代码怎么写,下面这一段能安装,不能运行:docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /run/docker.sock:/run/docker.sock \
-v /run/dbus:/run/dbus \
-v /run/udev:/run/udev \
-v /root/docker/hassio:/data \
-e SUPERVISOR_SHARE=/root/docker/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemuarm-64-homeassistant \
ghcr.io/home-assistant/qemuarm-64-homeassistant:2023.11.3
我改了上面下面忘改了,已经改好了
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: open /proc/sys/kernel/domainname: permission denied: unknown
查了好久不知道该如何解决,我才用的是电视盒子安装pve8后启动lxc来搞HA的
我推荐是docker装在外面而不是装在lxc里面,感觉有一种脱裤子放屁的感觉
rom hassio_observer: 400 Client Error for http+docker://localhost/v1.41/containers/create?name=hassio_observer: Bad Request ("invalid mount config for type "bind": bind source path does not exist: /run/docker.sock")
23-11-29 20:45:44 ERROR (MainThread)
你docker的管道在其他地方,你得把它改成你配置的位置
openwrt docker下
还是卡到'MountManager.reload' blocked from execution, mounting not supported on system 这个地方了, 按照大佬的方法还是不行 ,不知道是不是 不支持openwrt了啊
那说明你根本没照我说的做,我就是在op上跑最新的hass,不信你可以看这个视频https://www.bilibili.com/video/BV1Cj41177Tg
我一直会出现报错 :[supervisor.core] Update '2023.11.2' of Supervisor '2023.12.0' failed!
试一下错误和解决方案的4的解决方案
按照方案4已经成功安装了,但我重启机器后hassio没自动运行起来,只有hassio_observer。然后我使用docker start $(docker ps -aq)来启动全部容器,能正常启动ha,但还是无法启动hassio_supervisor,我手动启动他之后过几秒又没了。
(输出内容略)
这是我已经下载好的镜像和重启后自动开启的docker容器,我应该怎么设置才能开机自启动hassio的全部服务啊?
你需要看看hassio_supervisor的日志,docker logs hassio_supervisor ,然后修复他的问题,hassio_supervisor会管理开机启动,开机只需要启动他就行
我看了docker logs hassio_supervisor有两处报错:
23-12-27 13:57:55 ERROR (MainThread) [supervisor.homeassistant.api] Error on call http://172.30.32.1:8123/api/config: Cannot connect to host 172.30.32.1:8123 ssl:False [Connect call failed ('172.30.32.1', 8123)]
和
23-12-27 14:06:52 ERROR (MainThread) [supervisor.api.ingress] Ingress error: Cannot connect to host 172.30.32.1:65409 ssl:default [Connect call failed ('172.30.32.1', 65409)]
这么看咩咩也不知道是什么问题,可以试试不带目前的映射目录看看能不能起得来,就像方案4那样的,如果那样能起,那就要看看挂载目录里的什么配置有问题了
咩咩大佬,再请教一些问题,我在安装过程中查看hassio supervisor的日志,发现23-12-28 17:42:33 WARNING (MainThread) [supervisor.resolution.evaluations.base] Found containers with unsupported restart policy: {'hassio_supervisor'} (more-info: https://www.home-assistant.io/more-info/unsupported/restart_policy)
说docker 不支持我的重启策略,我配置的是--restart always
这个没问题的
请问您这个x64的docker语句可以直接在centos上docker执行吗,我看到官方教程有加载项的ha必须在debian系统或者基于这个系统的
这个教程就是为了突破这个限制
可是我把您这个放进去,下载速度感人啊......ghcr.io/home-assistant/amd64-hassio-supervisor就这个路径可以去掉ghcr.io,使用国内镜像源,有用吗
问题他没有镜像源,要不你整个服务器做一个?
ip+8123进不去 怎么回事
笑死,你倒是看log啊,你这样问谁都不知道为什么进不去
搞了半天终于在arm64机器上部署成功了 相关服务也都起来了 ,HA面板进去后, 有10来个异常项目提示....太难了
当没看到就行
分享一下我的更新方法,每次core有更新都可以在HA界面里直接更新,如果是supervisor有更新,就是
1.更新前备份系统,然后下载备份包
2.清空HA的工作目录,下载新镜像
3.删除所有HA容器,然后启动supervisor
docker run -d --name hassio_supervisor \
--restart always \
--privileged \
-v /run/docker.sock:/run/docker.sock \
-v /run/dbus:/run/dbus \
-v /run/udev:/run/udev \
-v /mnt/nvme0n1-4/HomeAssistant:/data \
-e TZ=Asia/Shanghai \
-e SUPERVISOR_MACHINE=qemux86-64 \
-e SUPERVISOR_SHARE=/mnt/nvme0n1-4/HomeAssistant \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2024.03.1
4.恢复备份
之前用博主的方法解决更新后HomeAssistant容器不出现的问题发现还是无法解决,或解决后bug很多,这个方法会简单很多,只要备份一下
这种方式之前也有想过,但是他这备份很难创建成功,而且还不全
啊,我这里备份是100%创建成功的,工作目录下的文件都会备份好像都会备份
装完了,配置那提示有10项需要修复。能解决吗?
当没看到就行