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/aarch64-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拉了
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