Loading... ## HassIO 是什么? 有很多人根本不清楚 hassio和 homeassistant到底什么关系,这样理解吧,hassio是一个框架,他利用 docker 来部署 homeassistant,并且为homeassistant 提供各种插件(addons)。 而 homeassistant 在 hassio 中,homeassistant 是利用docker 部署起来,hassio 和homeassistant 是通过他们的API进行联系和沟通。 ### 那么 hassio 到底做了什么,他作用是什么? 我的理解是:hassio 是利用Python写了一个类似 docker 管理器那样的程序,拥有 docker 的控制权,从而达到升级/降级 homeassistant 容器,安装/卸载 addons的目的。 ### 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 — 从入门到实践](https://docker_practice.gitee.io/)》 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](https://developers.home-assistant.io/docs/en/hassio_addon_index.html) ### hassio_install hassio 一键安装脚本,实现以下功能。 1. 自动更改系统源为中科大源。(目前支持 Debian Ubuntu Raspbian 三款系统) 2. 自动安装 Docker,可以选择切换 Docker 源为国内源,提高容器下载速度。 3. 避开 Hassio 因亚马逊连接超时导致无法拉取最新版本的 Homeassistant 容器。 ### 目前支持的系统 * [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) * [Ubuntu](https://www.ubuntu.com/download/server) 测试版本 18.04 LTS通过,但按道理 16 以上都可以。 * [Debian](https://www.debian.org/distrib/netinst) 测试版本 9.5 通过。 ## 安装过程 ### Ubuntu系统安装略过就不必介绍了吧 ### 安装SSH服务远程登录(本地操作该步可以略过) #### 检查SSH服务是否已启动 打开**终端**输入以下指令: ``` $ ps -e | grep ssh 00:00:00 sshd pts/1 00:00:00 ssh ``` 若输入指令后显示类似于上图所示,则说明SSH服务已启动 其中sshd表示ssh-server已启动,ssh表示ssh-client已启动 #### 安装SSH服务 安装SSH的客户端和服务端: ``` $ sudo apt-get install openssh-client $ sudo apt-get install openssh-server ``` #### 启动SSH服务 安装完成后通过以下指令启动: ``` $ sudo /etc/init.d/ssh start ``` 启动后通过以下指令判断SSH服务是否正确启动: ```$ $ ps -e | grep ssh ``` 若启动成功,则终端内会出现类似于第一步出现的结果 #### 修改SSH端口号 SSH默认端口号为22,若有修改SSH端口号的需求,则运行以下指令打开SSH配置文件 ``` $ sudo gedit /etc/ssh/sshd_config ``` 可以看到如下图所示:  ``` $ sudo /etc/init.d/ssh restart ``` #### 数据传输 完成SSH服务配置之后即可实现基于SSH的数据传输,最常用方便的指令便是scp,以下是常用scp指令: ``` $ scp -r usr@43.224.34.73:/home/lk /root //将远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的所有文件拷贝到本地 /root 文件夹中 $ scp usr@43.224.34.73:/home/lk/test.jar /root //将远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的test.jar文件拷贝到本地 /root 文件夹中 $ scp -r /root usr@43.224.34.73:/home/lk //将本地 /root 中的所有文件拷贝到远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的文件夹中 $ scp /root/test.jar usr@43.224.34.73:/home/lk //将本地 /root 中的test.jar文件拷贝到远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的文件夹中 ``` scp的通用指令格式为:scp [参数] [原路径] [目标路径] 其中-r参数意为:递归复制整个目录 ## 安装HASSIO 以 root 身份运行以下命令。 ``` wget https://code.aliyun.com/neroxps/hassio_install/raw/master/install.sh chmod a+x install.sh ./install.sh ``` #### 操作说明 ##### 停止(但重启依然会自启动) `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](https://linux.cn/article-5926-1.html) > docker logs 命令用法:[https://docs.docker.com/engine/reference/commandline/logs](https://docs.docker.com/engine/reference/commandline/logs) #### 如果安装的是 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 结束任务重新执行脚本。 ``` > 引用自:「Hass-neroxps」 > 引用自:「cnblogs-HM巧克力酱」 Last modification:September 6, 2020 © Allow specification reprint Support Appreciate the author WeChat Like 0 如果觉得我的文章对你有用,请帮忙点一下上面的广告