『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 24929|回复: 26

Hass.io Amd64 Debian 9 安装到配置插件全过程

  [复制链接]

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2017-12-1 22:10:01 | 显示全部楼层 |阅读模式
本帖最后由 neroxps 于 2017-12-3 14:15 编辑

概述

本文安装操作系统如下:

  • Debian 9
  • CPU 2核
  • 内存 2G


环境搭建




注意:本文写编写日期为2017年11月30日,以后更新可能出现增加依赖的情况,故建议先阅读上方参考文档再进行安装操作

依赖清单

  • docker
  • bash
  • socat
  • jq
  • curl
  • avahi-daemon
  • dbus-daemon



Docker 搭建

参考自Docker — 从入门到实践/Debian 安装 Docker CE/使用脚本自动安装


在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Debian 系统上可以使用这套脚本安装:



$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun


执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中。


启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker


建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:


$ sudo groupadd docker


将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER



测试 Docker 是否安装正确


$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1\. The Docker client contacted the Docker daemon.
 2\. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3\. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4\. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
  https://docs.docker.com/engine/userguide/



若能正常输出以上信息,则说明安装成功。

镜像加速器 Ubuntu 16.04+、Debian 8+、CentOS 7

对于使用 systemd 的系统,请在  /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}


之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker


修复  not support swap limit capabilities 错误

Adjust memory and swap accounting
When users run Docker, they may see these messages when working with an image:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.
To prevent these messages, enable memory and swap accounting on your system. To enable these on system using GNU GRUB (GNU GRand Unified Bootloader), do the following.

Log into Ubuntu as a user with sudo privileges.

Edit the /etc/default/grub file.

Set the GRUB_CMDLINE_LINUX value as follows:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
Save and close the file.

Update GRUB.

$ sudo update-grub
Reboot your system.

安装剩余依赖

  • bash
  • socat
  • jq
  • curl
  • avahi-daemon
  • dbus-daemon


$ sudo apt install socat jq curl avahi-daemon


dbus-daemon Debian 9 最小化安装默认也带了,所以不需要安装。

安装 Hass.io

切换到 root

$ sudo -s


执行以下命令

# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s

[INFO] Install supervisor docker
[INFO] Install generic HostControl
[INFO] Install startup scripts
[INFO] Init systemd
Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
[INFO] Start services


验证是否运行成功

# systemctl status hassio-supervisor

● hassio-supervisor.service - Hass.io supervisor

   Loaded: loaded (/etc/systemd/system/hassio-supervisor.service; enabled; vendor preset: enabled)

   Active: active (running) since Thu 2017-11-30 13:14:42 CST; 1min 9s ago

  Process: 4560 ExecStartPre=/usr/bin/docker stop hassio_supervisor (code=exited, status=1/FAILURE)

 Main PID: 4566 (hassio-start)

    Tasks: 9 (limit: 4915)

   Memory: 5.6M

      CPU: 84ms

   CGroup: /system.slice/hassio-supervisor.service

           ├─4566 /bin/bash /usr/bin/hassio-start

           └─4591 docker run --name hassio_supervisor -v /var/run/docker.sock:/var/run/docker.sock -v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock -v /usr/share/hassio:/data -v /var/log/supervisor-lo



11月 30 13:14:43 docker hassio-start[4566]: 17-11-30 05:14:43 INFO (MainThread) [__main__] Setup HassIO

11月 30 13:14:43 docker hassio-start[4566]: 17-11-30 05:14:43 INFO (SyncWorker_0) [hassio.dock.supervisor] Attach to supervisor homeassistant/amd64-hassio-supervisor with version 0.75

11月 30 13:14:53 docker hassio-start[4566]: 17-11-30 05:14:53 INFO (MainThread) [hassio.host_control] Send 'info' to HostControl.

11月 30 13:14:54 docker hassio-start[4566]: 17-11-30 05:14:54 INFO (MainThread) [hassio.host_control] Receive from HostControl: { "type": "generic", "version": "0.3", "last_version": "0.3", "hostname": "

11月 30 13:14:54 docker hassio-start[4566]: 17-11-30 05:14:54 INFO (MainThread) [hassio.homeassistant] No HomeAssistant docker homeassistant/qemux86-64-homeassistant found.

11月 30 13:14:54 docker hassio-start[4566]: 17-11-30 05:14:54 INFO (MainThread) [hassio.homeassistant] Setup HomeAssistant landingpage

11月 30 13:14:54 docker hassio-start[4566]: 17-11-30 05:14:54 INFO (SyncWorker_2) [hassio.dock.interface] Pull image homeassistant/qemux86-64-homeassistant tag landingpage.

11月 30 13:14:57 docker hassio-start[4566]: 17-11-30 05:14:57 INFO (SyncWorker_2) [hassio.dock.interface] Tag image homeassistant/qemux86-64-homeassistant with version landingpage as latest

11月 30 13:14:57 docker hassio-start[4566]: 17-11-30 05:14:57 INFO (SyncWorker_1) [hassio.dock.homeassistant] Start homeassistant homeassistant/qemux86-64-homeassistant with version landingpage

11月 30 13:14:57 docker hassio-start[4566]: 17-11-30 05:14:57 INFO (MainThread) [hassio.addons.git] Clone addon https://github.com/home-assistant/hassio-addons repository



设置开机启动及管理命令

开机启动命令

$ sudo systemctl enable hassio-supervisor



重启命令

$ sudo systemctl restart hassio-supervisor


停止命令


$ sudo systemctl stop hassio-supervisor



配置文件及目录介绍

如果用一键安装脚本安装的 Hass.io,那么配置文件目录会在 /usr/share/hassio

nero@docker:/usr/share/hassio$ ll
总用量 48
drwxr-xr-x  6 root root  4096 11月 30 13:14 addons
-rw-r--r--  1 root root 10997 12月  1 11:33 addons.json
drwxr-xr-x  2 root root  4096 11月 30 13:14 backup
-rw-r--r--  1 root root   191 12月  1 10:21 config.json
drwxr-xr-x 10 root root  4096 11月 30 14:40 homeassistant
-rw-r--r--  1 root root   125 11月 30 14:57 homeassistant.json
drwxr-xr-x  2 root root  4096 11月 30 13:14 share
drwxr-xr-x  2 root root  4096 11月 30 15:36 ssl
drwxr-xr-x  2 root root  4096 11月 30 13:14 tmp
-rw-r--r--  1 root root    76 12月  1 06:27 updater.json


  • addons:所有插件的共享目录都在这里
  • addons.json:所有插件的配置文件都在这里
  • backup:应该是升级备份目录
  • config.json: hassio 主配置文件
  • homeassistant: HomeAssistant 的配置文件目录
  • homeassistant.json: HomeAssistant的信息,猜测是hassio来连接 homeassistant api 的参数,里面包含密码端口等
  • share: 外部磁盘挂载地,可以将U盘挂载到这个目录让homeassistant能读取
  • ssl: SSL证书目录
  • tmp:临时目录
  • updater.json:记录了当前的hassio和homeassistant版本



如果你是从 hassbian 之类的自搭建环境下迁移过来,那么可以将 ~/.homeassistant 目录直接覆盖掉上述的 homeassistant 目录。

注意如果你的HomeAssistant配置文件是设置了密码,请到homeassistant.json文件里面填写自己的密码格式如下:


{
  "boot": true,
  "devices": [],
  "watchdog": true,
  "ssl": false,
  "port": 8123,
  "password": "你的密码"
}


插件安装

Mariadb

Mariadb 是 Mysql 的分支,自从被 Oracle 收购后发行版提供的免费安装包全部都转到 Mariadb,据说性能比 Mysql 要好。

如果机器内存足够,可以给 HomeAssistant 部署上,默认的 Sqlite 性能如果数据大了的话(比如一年的记录量什么的)可能读取速度会比较慢。

下面是步骤截图,由于我已经部署了一遍,后面再写的记录,所以界面会有所不同。但是操作是一样的。


安装 Mariadb

mariadb_01.png

mariadb_02.png

mariadb_03.png


配置 Mariadb

安装完后可以到回 Hass.io 首页找到 Mariadb,点进去,我们在 **Options** 下修改下配置文件如下:


{
  "databases": [
    "homeassistant"
  ],
  "logins": [
    {
      "username": "hass",
      "host": "homeassistant",
      "password": "你的密码"
    }
  ],
  "rights": [
    {
      "username": "hass",
      "host": "homeassistant",
      "database": "homeassistant",
      "grant": "ALL PRIVILEGES ON"
    }
  ]
}


注意:要修改数据库密码。

注意:配置文件格式有可能根据版本更新而更新,最终配置文件格式请到官网上参考https://home-assistant.io/addons/mariadb/

最后因为我们的数据库只是给 HomeAssistant 使用所以 Network 里面把端口删掉,让 mysql 全程走 Docker 内部网络。

mariadb_04.png

修改 configuration.yaml 应用 Mariadb

在没有安装 Samba 插件之前,我们可以在终端上用 VIM 编辑 configuration.yaml 文件添加如下配置:



recorder:
  purge_interval: 2
  purge_keep_days: 5
  db_url: mysql://hass:数据库密码@addon_core_mariadb/homeassistant?charset=utf8


最后重启 HomeAssistant 的 Docker



$ docker restart homeassistant


如果 HomeAssistant 页面没有报错的话,那么就代表设置正常,在页面查看历史数据正常的话就代表设置已经完成了。

这时候你可以将你的 `homeassistant_v2.sql` 这个文件删除了,和 Sqlite 说拜拜。




Samba

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。

可以通过网络共享访问 Hass.io 的配置文件目录方便管理和修改配置文件。

安装方法和 Mariadb 雷同,我这边就不一一截图直接跳到配置文件编写部分。


设置 Samba


{
  "workgroup": "WORKGROUP",
  "name": "hassio",
  "guest": false,
  "map": {
    "config": true,
    "addons": true,
    "ssl": false,
    "share": true,
    "backup": true
  },
  "username": "用户名",
  "password": "密码",
  "interface": "网络接口"
}


注:网络接口可以通过 ifconfig命令获得。
注2:如果输入 ifconfig 显示找不到该文件或文件夹可以使用如下命令安装。



$ sudo apt-get install net-tools


map 里面的参数可以调整 hassio 里面的文件夹是否显示在 Samba 里,一般按照默认设置就可以了。

配置好后按 Start 即可。

然后在 Windows 资源管理器中输入 //hassio 输入用户名密码即可访问,我们就可以像本地一样编辑配置文件了。


Let's Encrypt

Let's Encrypt 是一个免费的 SSL 证书提供机构,他们可以免费为你签发 SSL 证书使用,为你提供 SSL 加密服务。

而这个插件就是为你自动签发 SSL 证书并且自动更新证书。


设置 Let's Encrypt


设置之前请将 Hass.io 主机的 443 端口映射到公网,而且您的域名必须指向你的公网IP。

安装好插件后我们只需写入如下配置文件。



{
  "challenge": "https",
  "email": "你的邮箱",
  "domains": [
    "你的域名"
  ],
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem"
}


保存后点击 Start 即可。

此时你可以发现 ssl 目录下会出现 `fullchain.pem` 和 `privkey.pem`两个证书文件。

为我们部署 nginx 做准备。


NGINX Home Assistant SSL proxy

Nginx(发音同engine x)是一个 Web服务器,也可以用作反向代理,负载平衡器和 HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。同名公司成立于2011年,以提供支持。

Nginx 是免费的开源软件,根据类似 BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为负载均衡器。

我刚学 Linux 的时候就学了它,然后就没法再学习 Apache 了,因为 Nginx 的配置实在太简单了。


设置 NGINX Home Assistant SSL proxy


注:部署 NGINX Home Assistant SSL proxy 之前必须先获得 SSL 证书。


获取证书不一定要用 Let's Encrypt,如果你的域名购买的时候有证书,也可以,甚至你可以买证书,但是证书必须放到 `/usr/share/hassio/ssl`目录下。

在 Options 写下如下配置


{
  "domain": "你的域名",
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem"
}



注意:这里的域名必须与你签发的证书域名一致

点 Save 保存后,点 Start 运行。

这时候我们在浏览器输入 `https://你的域名` 这时候就能够访问到 HomeAssistant 的页面了。

部署 Nginx 后,访问的速度会比原先的速度要好一些,而且页面是使用 HTTP2 协议,会对网页元素进行压缩传输,效率比传统的 HTTP 1.0 协议快很多。


Mosquitto broker

使用 Sonoff 开关的话,我们就必须部署 Mosquitto broker 了,安装后写入如下配置。

配置 Mosquitto broker


{
  "plain": true,
  "ssl": false,
  "anonymous": true,
  "logins": [
    {
      "username": "mqtt的用户名",
      "password": "mqtt的密码"
    }
  ],
  "customize": {
    "active": false,
    "folder": "mosquitto"
  },
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem"
}


点击 SAVE 保存,再点击 START 即可。

在 Configuration.yaml 添加 mqtt 服务信息


mqtt:
  broker: addon_core_mosquitto
  port: 1883
  client_id: home-assistant-1
  keepalive: 60
  username: mqtt用户名
  password: mqtt密码


配置好后重启 HomeAssistant。


$ docker restart homeassistant


Homebridge

首先点击 Hass.io 页面右上角的购物袋图标,在Add-On Repositories输入https://github.com/hassio-addons/repository后点SAVE,点击右上角刷新按钮。

刷新完后找到 Homebridge 点击 install。


配置 Homebridge

Options输入一下配置

{
  "log_level": "info",
  "avahi_interfaces": "ens192",
  "avahi_hostname": "",
  "avahi_domainname": "local",
  "enable_ipv6": false,
  "packages": [],
  "init_commands": [
    "npm config set registry https://registry.npm.taobao.org",
    "sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories  && apk update"
  ],
  "plugins": []
}


  • log_level:日志等级,默认即可。
  • avahi_interfaces:监听的网络接口,建议通过 ifconfig 找到主宿机器的网络接口名称写上,官方说法不写也是没问题的。
  • avahi_hostname:保持默认即可。
  • avahi_domainname:保持默认即可
  • enable_ipv6:一般家庭网络没有 IPv6 建议使用`false`关闭此选项。(默认true)
  • packages:自动 Alpine 的软件包,可以装类似 ffmpeg 等。但是由于默认的源太慢了,而 packages 动作比下面的 init_commands 要前,所以导致初始化过程十分长,我建议在下一个选择再安装包
  • init_commands:可以运行用户自定义的 shell 命令,我在此添加了阿里云的源方便安装软件。并且将 npm 的源也切换到淘宝源,为下面的插件安装做准备。
  • plugins:可以安装自定义的 npm 插件。仅需写上插件名称即可。


下面是我安装 ffmpeg 插件的范例。


{
  "log_level": "info",
  "avahi_interfaces": "ens192",
  "avahi_hostname": "",
  "avahi_domainname": "local",
  "enable_ipv6": false,
  "packages": [],
  "init_commands": [
    "npm config set registry https://registry.npm.taobao.org",
    "sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update && apk add ffmpeg"
  ],
  "plugins": [
    "homebridge-camera-ffmpeg"
  ]
}


完成配置后点击 SAVE 保存,点击上方的 START 运行即可。

IPhone 添加 Homebridge

点击下方的 Logs,不断点击等待刷出八位 code 为止。

Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    ┌────────────┐     
    │ 123-45-678 │     
    └────────────┘

至此可以在 iphone 或者 ipad 中的 HomeKit 添加配件了。

评分

参与人数 6金钱 +72 收起 理由
jyz_0501 + 7 膜拜大神!
咸味土豆 + 10 现在回过头来看,终于基本能看懂了,好帖子.
Change + 1 有个疑问,hB那个配置里加插件每次重启都要.
FrankLv + 16 在下对你的景仰犹如滔滔长江之水,连绵不绝.
antsunzj + 20 在下对你的景仰犹如滔滔长江之水,连绵不绝.
+ 18 这排版治好了我的强迫症!

查看全部评分

回复

使用道具 举报

123

主题

4664

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16442
金钱
11693
HASS币
45
发表于 2017-12-1 22:41:19 | 显示全部楼层
这排版,舒服!!!
回复

使用道具 举报

62

主题

603

帖子

6428

积分

论坛元老

Rank: 8Rank: 8

积分
6428
金钱
5750
HASS币
240

教程狂人论坛风云人物

发表于 2017-12-2 01:16:08 | 显示全部楼层
amd64版本的hassio真好用。
尝试过萝卜,我想你一定会忘记青瓜
回复

使用道具 举报

0

主题

113

帖子

679

积分

论坛积极会员

积分
679
金钱
566
HASS币
0
发表于 2017-12-3 00:23:52 | 显示全部楼层
本帖最后由 tiantian 于 2017-12-3 01:40 编辑

首先,非常感谢楼主的分享,根据帖子已成功安装
在照做的同时,发现帖子中有两处小问题,为避免像我这样的小白再次中招
一个是安装 Hass.io命令,
原命令
curl -sL [url=https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install]https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install[/url] | bash -s

直接复制执行发现没反应,仔细看了下 链接有问题
应该是
QQ截图20171203013856.jpg

第二个是配置 Homebridge配置文件第九行
 "npm config set registry [url=https://registry.npm.taobao.org]https://registry.npm.taobao.org[/url]",


正确的应该为
    "npm config set registry=https://registry.npm.taobao.org",



PS:不是楼主的问题论坛编辑器自动识别url并且加上了超链接

评分

参与人数 1金钱 +5 收起 理由
neroxps + 5 感谢指正

查看全部评分

回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
 楼主| 发表于 2017-12-3 12:38:35 | 显示全部楼层
tiantian 发表于 2017-12-3 00:23
首先,非常感谢楼主的分享,根据帖子已成功安装
在照做的同时,发现帖子中有两处小问题,为避免像我这样的 ...

啊,确实是我疏忽了。
笔记是用markdown写的,调格式没注意。
待会我修改下。谢谢提醒。
回复

使用道具 举报

30

主题

997

帖子

4153

积分

论坛元老

Rank: 8Rank: 8

积分
4153
金钱
3151
HASS币
0

活跃会员

发表于 2017-12-11 22:52:06 | 显示全部楼层
写的很详细,谢谢分享
回复

使用道具 举报

3

主题

135

帖子

895

积分

论坛积极会员

积分
895
金钱
760
HASS币
20
发表于 2017-12-13 00:07:31 | 显示全部楼层
楼主,我时cenos7里安装了,最后homekit配对码也出来了,就是手机家庭不能发现配件
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
 楼主| 发表于 2017-12-13 19:38:15 | 显示全部楼层
hzjackboy 发表于 2017-12-13 00:07
楼主,我时cenos7里安装了,最后homekit配对码也出来了,就是手机家庭不能发现配件 ...

homebridge 有时候会这样,尝试直接扫描弹出的二维码来添加设备。

二维码可以使用 docker logs addon_a0d7b954_homebridge 获得

docker的名字可能和我的不一样,你自己docker ps 看看
回复

使用道具 举报

3

主题

135

帖子

895

积分

论坛积极会员

积分
895
金钱
760
HASS币
20
发表于 2017-12-13 20:54:36 | 显示全部楼层
neroxps 发表于 2017-12-13 19:38
homebridge 有时候会这样,尝试直接扫描弹出的二维码来添加设备。

二维码可以使用 docker logs addon_a0 ...

好的,我尝试下
回复

使用道具 举报

3

主题

135

帖子

895

积分

论坛积极会员

积分
895
金钱
760
HASS币
20
发表于 2017-12-14 00:38:13 | 显示全部楼层
neroxps 发表于 2017-12-13 19:38
homebridge 有时候会这样,尝试直接扫描弹出的二维码来添加设备。

二维码可以使用 docker logs addon_a0 ...

虚拟机拆了,重新做了debian9的系统,搞定了可以hi siri了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 04:29 , Processed in 0.087421 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表