2020-01-21 Update
Fixed:
HassIO 是什么?
有很多人根本不清楚 hassio和 homeassistant到底什么关系(其实我刚入坑也搞的我迷迷糊糊,还有墨澜美女博客的高能警告更搞的我迷迷糊糊),这样理解吧,hassio是一个框架,他利用 docker 来部署 homeassistant,并且为homeassistant 提供各种插件(addons)。
而 homeassistant 在 hassio 中,homeassistant 是利用docker 部署起来,hassio 和homeassistant 是通过他们的API进行联系和沟通。
那么 hassio 到底做了什么,他作用是什么?
我的理解是:hassio 是利用Python写了一个类似 docker 管理器那样的程序,拥有 docker 的控制权,从而达到升级/降级 homeassistant 容器,安装/卸载 addons的目的。
详细请参考我另一个帖子 hassio 启动详解及群晖运行方法
HassOS 又是什么?
这个是 HomeAssistant 官方为了打造开箱即用运行 hassio 做的系统,他不基于任何一个 Linux 发行版,他的设计完全为了给 hassio 服务,我理解他为最小化的 docker 安装系统。
由于他不基于任何一个 Linux 发行版,所以他没有任何包管理工具,如果你想在宿主机安装某些工具,一切工具链都需要自己搞,或者给官方提 issue 等待他们更新。
另外,由于安全考虑, HassOS 默认是不开放 ssh 连接,所以需要后台管理的话比较麻烦。另外由于不能修改系统内部的 docker 源,pull 容器的时候特别的慢,需要旅游才可以顺畅。
HassOS 和自己安装的 Hassio 有何不同?
本质使用上没有什么不同,只是一个跑在他们高度定制工具链需要自己构建的系统,一个是已经安装在高度成熟的 Debian Ubuntu 这些系统上,并可以自己随意修改 docker 源,系统也有包管理器,丰富的应用可以一键安装。
另这是我对 HassOS 的刻板印象,有可能他现在已经修复,但 HA 官方团队的喜好变化无常,最开始是使用一款树莓派系统来魔改,后来又改名字叫 hassio 系统,现在又改名叫 hassos,而 hassio 目前又改名叫 supervisor。恩,不知道多久,会不会又把 hassos 干掉。
Docker 又是什么?
建议看一下我学习 docker 的教程写的很好《Docker — 从入门到实践》
Docker 你可以将其理解成一个类似虚拟机的系统(但内核是和宿主共用的,故此比传统的虚拟机更轻量)。他的初衷是为了给各个业务系统提供一个干净的隔离环境(我自己理解,可能比较片面与不准确)。
我称 Docker 为运维神器,为什么?因为Docker 可以让你实现开箱即用。举个例子,如果我的hassio要迁移,我只需要把 hassio文件夹拷走(默认路径 /usr/share/hassio),然后拷贝到新的机器上,再运行我的一键脚本,整个 hassio 的所有东西,包括addons插件都会按照原来的方式运行,这要归功于 docker 的便利性。
Addons 是什么
hassio 设计了一套他独有的 addons 容器编写规范,由于是hassio独有,所以这些 addons 只适配 hassio 使用。
我能不能在其他支持docker 的机器上安装 addons(不依赖 hassio)?
答案其实是可以的,因为 addons 其实都是跑在docker 上所以只要设备能安装docker,那么 addons 其实就可以跑。但是上面也说了,addons是基于 hassio规范来设计的容器,所以我们在无 hassio 的情况下使用 addons 就要手工按照 hassio 配置方式来启动 addons了,具体怎么启动可以参考 addons 官方制作文档Developing an add-on,和我另一个帖子 群晖部署天猫精灵网关 For Docker
hassio_install
hassio 一键安装脚本,实现以下功能。
- 自动更改系统源为清华源。(目前支持 Debian Ubuntu Raspbian 三款系统)
- 自动安装 Docker,可以选择切换 Docker 源为国内源,提高容器下载速度。
目前支持的系统
使用方法
以 root 身份运行以下命令。
wget https://code.aliyun.com/neroxps/hassio_install/raw/master/install.sh
chmod a+x install.sh
./install.sh
如果安装的是 64 位系统,脚本会自动筛选适配 64 位的设备列表
(1). 是否将系统源切换为中科大(USTC)源(目前支持 Debian Ubuntu Raspbian 三款系统)
请输入 y or n(默认 yes):y
(2). 在你系统内找到 nero 用户,是否将其添加至 docker 用户组。
请输入 yes 或者 no (默认 yes):y
将nero用户添加至 docker 用户组。
(3).是否需要替换 docker 默认源?
请输入 yes 或者 no(默认:yes):y
(4).请选择你设备类型(默认:qemux86-64)
[1]: raspberrypi3-64
[2]: qemuarm-64
[3]: qemux86-64
输入数字 (1-3):
你选择了 qemux86-64
################################################################################
# 1. 是否将系统源切换为中科大(USTC)源: 是
# 2. 是否将用户添加至 Docker 用户组: 是,添加用户为 nero
# 3. 是否将 Docker 源切换至国内源: 是
# 4. 您的设备类型为: qemux86-64
################################################################################
请确认以上信息,继续请按任意键,如需修改请输入 Ctrl+C 结束任务重新执行脚本。
如果安装的是 32 位系统,脚本会自动筛选适配32位的设备列表
(1). 是否将系统源切换为中科大(USTC)源(目前支持 Debian Ubuntu Raspbian 三款系统)
请输入 y or n(默认 yes):y
(2). 在你系统内找到 nero 用户,是否将其添加至 docker 用户组。
请输入 yes 或者 no (默认 yes):y
将nero用户添加至 docker 用户组。
(3).是否需要替换 docker 默认源?
请输入 yes 或者 no(默认:yes):y
(4).请选择你设备类型(默认:qemux86)
[1]: raspberrypi
[2]: raspberrypi2
[3]: raspberrypi3
[4]: qemuarm
[5]: qemux86
[6]: intel-nuc
输入数字 (1-6):
你选择了 qemux86
################################################################################
# 1. 是否将系统源切换为中科大(USTC)源: 是
# 2. 是否将用户添加至 Docker 用户组: 是,添加用户为 nero
# 3. 是否将 Docker 源切换至国内源: 是
# 4. 您的设备类型为: qemux86
################################################################################
请确认以上信息,继续请按任意键,如需修改请输入 Ctrl+C 结束任务重新执行脚本。
设备类型选型说明
- intel-nuc :英特尔的nuc小主机
- odroid-c2 :韩国odroid-c2
- odroid-xu :韩国odroid-xu
- orangepi-prime :香橙派
- qemuarm :通用arm设备(例如斐讯N1)
- qemuarm-64 :通用arm设备(例如斐讯N1) 64位系统
- qemux86 :通用X86 64位系统(普通的PC机电脑)
- qemux86-64 :通用X86(普通的PC机电脑)64位系统
- raspberrypi :树莓派一代
- raspberrypi2 :树莓派二代
- raspberrypi3 :树莓派三代
- raspberrypi4 :树莓派四代
- raspberrypi3-64 :树莓派三代64位系统
- raspberrypi4-64 :树莓派四代64位系统
- tinker :华硕tinker
操作说明
停止(但重启依然会自启动)
systemctl stop hassio-supervisor.service
重启
systemctl restart hassio-supervisor.service
禁用自启动
systemctl disable hassio-supervisor.service
启用自启动
systemctl enable hassio-supervisor.service
查询当前启动状态
systemctl status hassio-supervisor.service
查询当前是否自启动
systemctl is-enabled hassio-supervisor.service
查询 hassio 日志
docker logs -f hassio_supervisor
查询 hassio 日志最新20行信息
docker logs -f hassio_supervisor --tail 20
查询 ha 日志
docker logs -f homeassistant
查询 ha 日志最新20行信息
docker logs -f homeassistant --tail 20
systemctl 说明 : https://linux.cn/article-5926-1.html
docker logs 命令用法:https://docs.docker.com/engine/reference/commandline/logs
Homeassistant 版本切换脚本
此脚本可在宿主中切换homeassistant版本号
严重警告
- 切换版本的 home-assistant 请先备份好配置文件,虽然脚本会自动备份,但最好自己再备份一次,出现丢失配置情况恕不负责。
- 切换旧版本启动失败的,请查看 home-assistant 的日志来修复错误配置
- 切换过旧的版本会导致 hassio 加载 404,目前已知 0.77 以前版本都无法正常加载 hassio
- 启动失败可以到论坛带日志发帖求助,无日志发帖我将会扣分处理
使用方法
使用 root 运行一下命令
wget https://code.aliyun.com/neroxps/hassio_install/raw/master/homeassistant_ver_switch.sh
chmod u+x homeassistant_ver_switch.sh
./homeassistant_ver_switch.sh 0.92.2
鸣谢
感谢帮我测试脚本的:Yume戴迪、萝卜、咸味土豆