homeassistant 在虚拟机中通过supervised方式安装
homeassistant可以有很多种安装方式
- 直接安装HAOS,可以在树莓派等物理设备上安装,也可以在虚拟机上安装。
- 使用docker安装
- 在物理机或虚拟机上安装debian系统,再在上面通过supervised方式安装。
各种安装方式的区别:
- docker方式安装最方便,也最轻量,但是不支持supervisor(有两个主要功能1.可以直接监控和控制宿主机;2.附带一个插件商店)
- 第一种和第三种方案支持supervisor。
- 直接安装haos操作简便,直接去官网下载对应硬件或虚拟机的镜像安装即可。但是最新版本安装完成后,登录后台shell是homeassistant 的command line(ha cli)。没有找到返回系统shell的方法,一直开不了ssh,所以放弃了,有知道怎么处理的小伙伴可以留言告知。
- 通过supervised方式安装,需要先下载安装debian(我用的最新的debian11),然后根据官网的说明运行相应的命令即可。这种方式有操作系统的所有权限,配置ssh访问啥的更灵活。
我的硬件环境是一个7200U的工控机,宿主机安装了unraid,在上面安装了爱快和openwrt做软路由。一台群晖。有以下几种安装方式可选,并且也分别作了尝试:
- List item
- 在unraid下通过docker安装。
- 在群晖下通过docker安装。
- 在unraid下建立虚拟机,安装haos
- 在unraid下建立虚拟机,安装debian,再通过supervised方式安装。
当然,应该也可以在群晖的虚拟机下安装,但是群晖的虚拟机是性能堪忧,没有尝试。实在没有别的解决方案的可以尝试一下。
最终选择了unraid+debian+supervised方式安装。
- 下载最新debian镜像debian-11.1.0-amd64-netinst.iso,放到unraid的/mnt/user/isos目录下。
- 新建linux虚拟机,内存2G,挂载iso镜像。
- 开机完成debian安装,可以选择shell方式,节省硬件开销。
- 按照homeassistant官网步骤,安装supervised。具体参照https://www.home-assistant.io/installation/linux
安装完成后,浏览器打开http://ha服务器的ip:8123访问。可以直接进入但是需要等待一段时间进行安装,具体步骤参照网上相关教程。
安装hacs
参照网上相关文章。
需要注意的是,采用supervised方式安装时,configuration.yaml所在的目录为:/usr/share/hassio/homeassistant。
通过https方式访问
基本思路:通过nginx代理的方式将http代理为https。
- hassio默认不允许被代理,代理后会报400错误。需要修改configuration.yaml文件,添加如下代码
http:
use_x_forwarded_for: true
trusted_proxies:
- nginx服务所在系统的ip地址
ip_ban_enabled: true
login_attempts_threshold: 5
然后再在nginx下配置https代理,具体方式不再赘述。
我用的是群晖的反向代理服务一直无法登录,获取token的接口一直报400错误。
但是使用hass自带的NGINX Home Assistant SSL proxy插件代理,代理成功。
具体操作:
- 按照上面的配置在configuration.yaml中开启use_x_forwarded_for: true等。
- 在supervisor的addon中添加NGINX Home Assistant SSL proxy,具体配置如下:
certfile: fullchain.pem
cloudflare: false
customize:
active: false
default: nginx_proxy_default*.conf
servers: nginx_proxy/*.conf
domain: 你的域名
hsts: max-age=31536000; includeSubDomains
keyfile: privkey.pem
- 准备证书。把证书放到/usr/share/hassio/homeassistant/ssh目录下
我是通过群晖的定时任务从lets encrypt获取证书的,证书在群晖中通过反向代理代理所有的内网服务为https。但是反向代理homeassistant总是不成功。但是为了保证证书的通用,需要把群晖的证书拷贝到homeassistant的宿主机上(我是通过supervised方式安装的)。
可以使用nfs挂载的方式将证书映射到目标服务器。
#安装cifs-utils
apt-get install cifs-utils
mount -t cifs -o username=群晖用户名,password=群晖密码,iocharset=utf8 //群晖IP/证书所在路径 /usr/share/hassio/homeassistant/ssh
其他问题
supervisor中找不到Node-RED:
在supervisor的仓库中添加如下项:https://github.com/hassio-addons/repository
自定义侧边栏
新版本的supervisor不在侧边栏上了,而是放到了“配置”菜单下。可以借用panel-redirect.js把很多常用的图标配置到侧边栏。
首先从https://gist.github.com/balloob/580deaf8c3fc76948559c5963ed4d436下载panel-redirect.js
将这个js文件放到/usr/share/hassio/homeassistant/www目录下
在configuration.yaml中配置想要的侧边栏,举例如下
panel_custom:
- name: panel-redirect
url_path: redirect-server-controls
sidebar_title: 服务控制
sidebar_icon: mdi:server
module_url: /local/panel-redirect.js
config:
target: /config/server_control
- name: panel-redirect
url_path: redirect-logs
sidebar_title: 日志
sidebar_icon: mdi:math-log
module_url: /local/panel-redirect.js
config:
target: /config/logs
- name: panel-redirect
url_path: redirect-devices
sidebar_title: 设备列表
sidebar_icon: mdi:devices
module_url: /local/panel-redirect.js
config:
target: /config/integrations
- name: panel-redirect
url_path: redirect-supervisor
sidebar_title: Supervisor
sidebar_icon: mdi:home-assistant
module_url: /local/panel-redirect.js
config:
target: /hassio/dashboard
- name: panel-redirect
url_path: redirect-NodeRED
sidebar_title: Node-RED
sidebar_icon: mdi:cube-send
module_url: /local/panel-redirect.js
config:
target: /hassio/ingress/a0d7b954_nodered
挂载带密码的NFS
http://blog.joylau.cn/2020/09/29/Linux-Mount-Auth-NetDisk/