替代方案

安装 Home Assistant 操作系统

下载合适的镜像

下载后,解压镜像。如果镜像是 ZIP 文件,请解压缩。

如果您已经运行了受支持的虚拟机管理程序,请按照本指南操作。如果您不熟悉虚拟机,请直接在 Home Assistant YellowRaspberry PiODROID 上安装 Home Assistant OS。

创建虚拟机

将设备镜像加载到您的虚拟机管理程序中。(注意:您可以自由分配任意数量的资源给虚拟机,请根据您的附加需求分配足够的资源)。

最低推荐配置:

  • 2 GB 内存
  • 32 GB 存储
  • 2vCPU

如果您的使用需要更多资源,所有这些都可以扩展。

虚拟机管理程序特定配置

  1. 创建一个新的虚拟机。
  2. 选择类型 Linux 和版本 Linux 2.6 / 3.x / 4.x (64 位)
  3. 硬件 下,选择内存量和 CPU 数量。然后选择 启用 EFI
    • 确保 EFI 已启用。如果 EFI 未启用,HAOS 将无法启动。
  4. 硬盘 下,选择 使用现有的虚拟硬盘文件,选择上面解压的 VDI 文件。
  5. 然后转到 网络 > 适配器 1。选择 桥接适配器 并选择您的网络适配器。
    请注意,桥接适配器 仅在有线以太网连接下工作。 在 VirtualBox 主机上使用 Wi-Fi 不受支持。
  6. 然后转到 音频 并选择 Intel HD Audio 作为音频控制器。

默认情况下,VirtualBox 不会 释放未使用的磁盘空间。要自动缩小 vdi 磁盘镜像,必须使用主机的终端启用 discard 选项:

VBoxManage storageattach <VM 名称> --storagectl "SATA" --port 0 --device 0 --nonrotational on --discard on

有关该命令的更多详细信息可以在这里找到。

  1. 下载上面的 .qcow2 镜像并解压。(在 Windows 中 全部解压
  2. 将镜像存储在服务器上的 isos 共享中。
  3. 确保在 设置 > 虚拟机管理器 中启用了 启用虚拟机
  4. 创建一个新的虚拟机:虚拟机 > 添加虚拟机
  5. 选择类型 Linux 并为虚拟机命名和描述。
  6. 选择您希望虚拟机使用的 CPU 核心数并分配一些内存。
  7. 主虚拟磁盘位置 下,选择 手动 然后选择 qcow2 镜像。
  8. 虚拟机控制台键盘 下选择您的键盘语言。
  9. 网络源 下选择 br0
  10. 网络模型 下选择 virtio
  11. 选择您要传递给 Home Assistant 的任何 USB 设备,例如 Zigbee 或 Z-Wave 控制器。
  12. 取消选择 创建后启动虚拟机
  13. 选择 创建
  14. 选择新虚拟机的名称并选择磁盘的容量号。在这里,您可以根据需要扩展磁盘。默认值为 32 GB。
  15. 选择新虚拟机的图标并选择 使用控制台启动 (VNC)
  1. virt-manager 中创建一个新的虚拟机。
  2. 选择 导入现有磁盘镜像,提供上面 QCOW2 镜像的路径。
  3. 选择 通用默认 作为操作系统。
  4. 下载上面的 .qcow2 镜像并解压。(在 Windows 中 全部解压
  5. 将镜像存储在服务器上的 isos 共享中。
  6. 确保在 设置 > 虚拟机管理器 中启用了 启用虚拟机
  7. 创建一个新的虚拟机:虚拟机 > 添加虚拟机
  8. 选择类型 Linux 并为虚拟机命名和描述。
  9. 选择您希望虚拟机使用的 CPU 核心数并分配一些内存。
  10. 主虚拟磁盘位置 下,选择 手动 然后选择 qcow2 镜像。
  11. 虚拟机控制台键盘 下选择您的键盘语言。
  12. 网络源 下选择 br0
  13. 网络模型 下选择 virtio
  14. 选择您要传递给 Home Assistant 的任何 USB 设备,例如 Zigbee 或 Z-Wave 控制器。
  15. 取消选择 创建后启动虚拟机
  16. 选择 创建
  17. 选择新虚拟机的名称并选择磁盘的容量号。在这里,您可以根据需要扩展磁盘。默认值为 32 GB。
  18. 选择新虚拟机的图标并选择 使用控制台启动 (VNC)
  1. virt-manager 中创建一个新的虚拟机。
  2. 选择 导入现有磁盘镜像,提供上面 QCOW2 镜像的路径。
  3. 选择 通用默认 作为操作系统。
  4. 勾选 在安装前自定义配置
  5. 网络选择 下,选择您的网桥。
  6. 在自定义中选择 概述 > 固件 > UEFI x86_64: …。确保选择非安全启动版本的 OVMF(不包含 securesecboot 等字样),例如 /usr/share/edk2/ovmf/OVMF_CODE.fd
  7. 点击 添加硬件(左下角),然后选择 通道
  8. 选择设备类型:unix
  9. 选择名称:org.qemu.guest_agent.0
  10. 最后,选择 开始安装(左上角)。
virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk <QCOW2 文件路径>,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi

如果您有 USB 适配器要连接,需要添加选项 --hostdev busID.deviceId。您可以通过 lsusb 命令发现这些 ID。例如,如果 lsusb 输出为:

   Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
   Bus 003 Device 004: ID 30c9:0052 Luxvisions Innotech Limited Integrated RGB Camera
   Bus 003 Device 003: ID 1a86:55d4 QinHeng Electronics SONOFF Zigbee 3.0 USB Dongle Plus V2
   Bus 003 Device 002: ID 06cb:00fc Synaptics, Inc. 
   Bus 003 Device 005: ID 8087:0033 Intel Corp. 
   Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
   Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
   Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

您可以在 Bus 003 Device 003 处识别 Sonoff 适配器。因此安装虚拟机的命令将变为:

virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk <QCOW2 文件路径>,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi --hostdev 003.003

请注意,此配置(总线 003,设备 003)只是一个示例,您的适配器可能位于其他总线和/或具有其他设备 ID。 请使用 lsusb 检查您的 USB 适配器的正确 ID。

使用“E1001”或“E1001E”虚拟网络适配器。使用 VMware 的“VMXnet3”虚拟网络适配器时存在已确认的 mDNS/多播发现问题。

启动您的虚拟机

  1. 启动虚拟机。
  2. 观察 Home Assistant 操作系统的启动过程。
  3. 完成后,您将能够在 homeassistant.local:8123 访问 Home Assistant。如果您运行的是较旧的 Windows 版本或具有更严格的网络配置,您可能需要通过 homeassistant:8123http://X.X.X.X:8123(将 X.X.X.X 替换为您的虚拟机的 IP 地址)访问 Home Assistant。

帮助我们改进 Home Assistant

您刚刚安装了 Home Assistant 吗?Home Assistant 团队希望与您交流,了解安装过程的情况。

立即帮助

安装并可以访问 Home Assistant 操作系统后,您可以继续完成入门设置。

  Onboarding

安装 Home Assistant Container

Synology NAS

Synology 的 DSM 现在通过 Container Manager 包支持容器管理,允许您无需命令行即可安装 Home Assistant。有关该包的详细信息(包括兼容性信息,如果您的 NAS 受支持),请参阅 https://www.synology.com/en-us/dsm/packages/ContainerManager 步骤如下:

  • 在您的 Synology NAS 上安装 Docker “Container Manager” 包
  • 启动 Container Manager 应用并转到 “Registry” 部分
  • 在注册表中找到 “homeassistant/home-assistant” 并点击 “Download”。选择 “stable” 标签。
  • 等待一段时间,直到您的 NAS 拉取完镜像
  • 转到 “Container Manager” 应用的 “Image” 部分
  • 点击 “Launch”
  • 在 “Network” 中选择 “Use same network as Docker Host” 并点击 Next
  • 选择您想要的容器名称(例如,“homeassistant”)
  • 如果需要,设置 “Enable auto-restart”
  • 点击 “Advanced Settings”。为确保 Home Assistant 显示正确的时区,请转到 “Environment” 选项卡,点击加号,然后添加 variable = TZvalue = Europe/London,选择您的正确时区。点击 Save 退出高级设置。
  • 点击 Next
  • 在 “Volume Settings” 中点击 “Add Folder”,选择现有文件夹或添加新文件夹(例如,在 “docker” 共享文件夹中,添加名为 “homeassistant” 的新文件夹,然后在该新文件夹中添加另一个新文件夹 “config”),然后点击 Select。然后将 “mount path” 编辑为 “/config”。这将配置 Home Assistant 存储配置和日志的位置。
  • 确保 “Run this container after the wizard is finished” 已勾选,然后点击 Done
  • 您的 Docker 中的 Home Assistant 现在应该运行,并将从 Docker 主机的 8123 端口提供 Web 界面(这将是您的 Synology NAS IP 地址 - 例如 http://192.168.1.10:8123

如果您使用内置防火墙,还必须将端口 8123 添加到允许列表中。这可以在 “控制面板 -> 安全” 中找到,然后转到防火墙选项卡。点击防火墙配置文件下拉框旁边的 “编辑规则”。创建新规则并选择 “自定义” 端口并添加 8123。如果需要,可以编辑源 IP 或保留默认的 “全部”。操作应保持为 “允许”。

要使用 Z-Wave USB 棒进行 Z-Wave 控制,HA Docker 容器需要额外的配置来访问 USB 棒。虽然有多种方法可以做到这一点,但在撰写本文时,授予访问权限的最低权限方式只能通过终端执行。请参阅此页面以配置对 Synology NAS 的终端访问:

https://www.synology.com/en-global/knowledgebase/DSM/help/DSM/AdminCenter/system_terminal

按如下方式调整以下终端命令:

  • /PATH_TO_YOUR_CONFIG 替换为要存储配置的文件夹 - 确保保留 :/config 部分
  • /PATH_TO_YOUR_USB_STICK 替换为 USB 棒的路径(例如,对于大多数 Synology 用户为 /dev/ttyACM0
  • 将 “Australia/Melbourne” 替换为您的时区

在终商中运行.

sudo docker run --restart always -d --name homeassistant -v /PATH_TO_YOUR_CONFIG:/config --device=/PATH_TO_YOUR_USB_STICK -e TZ=Australia/Melbourne --net=host ghcr.io/home-assistant/home-assistant:stable

完成 Z-Wave 的剩余配置,请按照此处的说明操作

备注:要在 Synology NAS 的 Docker 中更新 Home Assistant,您只需执行以下操作:

  • 打开 “Container Manager” 应用并转到 “Image” 部分
  • 在镜像中找到 “homeassistant/home-assistant” 并点击 “Update”
  • 等待系统消息/通知出现,表示下载已完成(没有进度条)
  • 转到 “Container” 部分
  • 如果容器正在运行,请先停止它
  • 右键点击容器并选择 “Action”->“Reset”。您不会丢失任何数据,因为所有文件都存储在配置目录中
  • 再次启动容器 - 它将使用新的 Home Assistant 镜像启动

备注:要在 Synology NAS 中重启 Home Assistant,您只需执行以下操作:

  • 打开 “Container Manager” 应用并转到 “Container” 部分
  • 右键点击容器并选择 “Action”->“Restart”

Note

如果您想在 Synology Docker 上使用 USB 蓝牙适配器或 Z-Wave USB 棒,这些说明无法正确配置容器以访问 USB 设备。要配置这些设备,您可以按照 Phil Hawthorne 提供的此处的说明进行操作。

QNAP NAS

QNAP 的 QTS 系统支持 Docker,允许您无需命令行即可安装 Home Assistant。有关该包的详细信息(包括兼容性信息,如果您的 NAS 受支持),请参阅 https://www.qnap.com/solution/container_station/en/index.php

步骤如下:

  • 在 Qnap NAS 上安装 “Container Station” 包
  • 启动 Container Station 并转到 “Create Container” 部分
  • 在 Docker Hub 中搜索镜像 “homeassistant/home-assistant” 并点击 “Install” 请注意 NAS 的 CPU 架构。对于 ARM CPU 类型,正确的镜像是 “homeassistant/armhf-homeassistant”
  • 选择 “stable” 版本并点击下一步
  • 选择您想要的容器名称(例如,“homeassistant”)
  • 点击 “Advanced Settings”
  • 在 “Shared Folders” 中点击 “Volume from host” > “Add”,选择现有文件夹或添加新文件夹。“mount point” 必须为 /config,以便 Home Assistant 将其用于配置和日志
  • 在 “Network” 中选择 Network Mode 为 “Host”
  • 为确保 Home Assistant 显示正确的时区,请转到 “Environment” 选项卡,点击加号,然后添加 variable = TZvalue = Europe/London,选择您的正确时区
  • 点击 “Create”
  • 等待一段时间,直到 NAS 创建完容器
  • 您的 Docker 中的 Home Assistant 现在应该运行,并将从 Docker 主机的 8123 端口提供 Web 界面(这将是您的 Qnap NAS IP 地址 - 例如 http://192.xxx.xxx.xxx:8123

备注:要在 Qnap NAS 的 Docker 中更新 Home Assistant,您只需删除容器和镜像并重新执行上述步骤(不要删除 “config” 文件夹)。

社区笔记

请注意,一些用户报告在使用 Container Station 3 在 ARM QNAP 系统(例如 TS-233)上创建 Home Assistant 容器时遇到问题。一个可能的解决方法是基于 YAML 文件的 “Docker compose” 方法(参见 “Docker compose” 部分)。在 QNAP Container Station 3 界面中,可以通过转到 “Applications” 部分并点击 “Create” 来访问此功能。然后系统会提示您输入 YAML 代码,可以从 “Docker compose” 部分显示的代码中复制。请注意以两种方式修改此代码:首先,添加第一行 “version: ‘3’”;其次,将文本 “/PATH_TO_YOUR_CONFIG” 替换为 NAS 系统上的有效路径,例如 “/share/Container/HomeAssistant/config”。

一旦 Home Assistant Container 运行,您应该可以使用 http://<host>:8123 访问 Home Assistant(将 替换为系统的主机名或 IP)。您可以继续 onboarding。

  Onboarding

重启 Home Assistant

如果您更改了配置,则必须重启服务器。为此,您有 3 个选项。

  1. 在 Home Assistant UI 中,转到 设置 > 系统 并点击 重启 按钮。
  2. 您可以转到 开发者工具 > 操作,选择 homeassistant.restart 并选择 执行操作
  3. 从终端重启。
docker restart homeassistant
docker compose restart

Docker compose

Tip

docker compose 应该已经安装在您的系统上。如果没有,您可以手动安装它。

随着 Docker 命令变得越来越复杂,切换到 docker compose 可能更可取,并支持在失败或系统重启时自动重启。创建一个 compose.yml 文件:

  services:
    homeassistant:
      container_name: homeassistant
      image: "ghcr.io/home-assistant/home-assistant:stable"
      volumes:
        - /PATH_TO_YOUR_CONFIG:/config
        - /etc/localtime:/etc/localtime:ro
        - /run/dbus:/run/dbus:ro
      restart: unless-stopped
      privileged: true
      network_mode: host

通过以下命令启动:

docker compose up -d

一旦 Home Assistant Container 运行,您应该可以使用 http://<host>:8123 访问 Home Assistant(将 替换为系统的主机名或 IP)。您可以继续 onboarding。

  Onboarding

暴露设备

为了使用 Zigbee 或其他需要访问设备的集成,您需要将适当的设备映射到容器中。确保运行容器的用户具有访问 /dev/tty* 文件的正确权限,然后将设备映射添加到您的容器指令中:

docker run ... --device /dev/ttyUSB0:/dev/ttyUSB0 ...
services:
  homeassistant:
    ...
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0

优化

Home Assistant Container 使用替代的内存分配库 jemalloc 来实现更好的内存管理和 Python 运行时加速。

由于使用的 jemalloc 配置可能会在某些具有大于 4K 页面大小的硬件(如某些特定的 ARM64 架构 SoC)上导致问题,可以通过传递环境变量 DISABLE_JEMALLOC 来禁用它,例如:

docker run ... -e "DISABLE_JEMALLOC=true" ...
services:
  homeassistant:
  ...
    environment:
      DISABLE_JEMALLOC: true

错误信息 <jemalloc>: Unsupported system page size 是一个已知的指示器。

社区提供的指南

其他安装指南可以在我们的 社区论坛 找到。

这些社区指南是按原样提供的。这些安装方法中的某些方法可能比上述方法更加有限。由于平台的限制,一些集成可能无法工作。