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做软路由。一台群晖。有以下几种安装方式可选,并且也分别作了尝试:

  1. List item
  2. 在unraid下通过docker安装。
  3. 在群晖下通过docker安装。
  4. 在unraid下建立虚拟机,安装haos
  5. 在unraid下建立虚拟机,安装debian,再通过supervised方式安装。
    当然,应该也可以在群晖的虚拟机下安装,但是群晖的虚拟机是性能堪忧,没有尝试。实在没有别的解决方案的可以尝试一下。

最终选择了unraid+debian+supervised方式安装。

  1. 下载最新debian镜像debian-11.1.0-amd64-netinst.iso,放到unraid的/mnt/user/isos目录下。
  2. 新建linux虚拟机,内存2G,挂载iso镜像。
    在这里插入图片描述
  3. 开机完成debian安装,可以选择shell方式,节省硬件开销。
  4. 按照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插件代理,代理成功。

具体操作:

  1. 按照上面的配置在configuration.yaml中开启use_x_forwarded_for: true等。
  2. 在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
  1. 准备证书。把证书放到/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/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐