Homeassistant docker配置

Homeassistant docker配置

【说明】本系列为自用教程,记录以便下次使用
【背景】一台J1900 4G+64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。
【参考】主要基于GPT生成的教程,并基于自己的测试,进行配置。如有特殊参考,会在文中备注。
【通用账号】:能修改的使用root,不能修改的一般为admin

零、只用docker-compose运行

在N5105机器上,安装了unraid,然后使用docker-compose将下面的docker全部安装

  1. 创建根文件夹/mnt/user/appdata/hass-all/,docker容器映射的文件夹都在这个下面,并且给予777权限,否则nodered和mariadb会报错。
sudo chmod -R 777 hass-all/
  1. 配置 mosquitto.conf 文件:
cd /mnt/user/appdata/hass-all/mosquitto/config
touch mosquitto.conf
chmod 777 mosquitto.conf
nano mosquitto.conf

写入以下内容:

persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
  1. docker-compose文件如下,注意修改数据库的两个password为你自己的:
version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: homeassistant/home-assistant:stable
    volumes:
      - /mnt/user/appdata/hass-all/homeassistant:/config
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    restart: unless-stopped
    depends_on:
      - mosquitto
      - mariadb

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    volumes:
      - /mnt/user/appdata/hass-all/mosquitto/config:/mosquitto/config
      - /mnt/user/appdata/hass-all/mosquitto/data:/mosquitto/data
      - /mnt/user/appdata/hass-all/mosquitto/log:/mosquitto/log
    restart: always
    ports:
      - "1883:1883"
      - "9001:9001"

  mariadb:
    container_name: mariadb
    image: mariadb:latest
    volumes:
      - /mnt/user/appdata/hass-all/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=homeassistant
      - MYSQL_USER=root
      - MYSQL_PASSWORD=password
    restart: always
    ports:
      - "3306:3306"

  nodered:
    container_name: nodered
    image: nodered/node-red:latest
    volumes:
      - /mnt/user/appdata/hass-all/nodered:/data
    user: "node-red"
    restart: always
    ports:
      - "1880:1880"

  esphome:
    container_name: esphome
    image: esphome/esphome
    volumes:
      - /mnt/user/appdata/hass-all/esphome:/config
    network_mode: host
    restart: always
    ports:
      - "6052:6052"
      - "6123:6123"

  1. 启动上述后,补充/mnt/user/appdata/hass-all/homeassistant/configuration.yaml文件,加入如下内容,其中password和url自己修改
recorder:
  db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8

panel_iframe:
 nodered:
   title: 'Node-Red'
   icon: 'mdi:shuffle-variant'
   #填写node-red的地址
   url: 'http://192.168.10.149:1880/'

 esphome:
   title: 'ESPHome'
   icon: 'mdi:car-esp'
   #填写node-red的地址
   url: 'http://192.168.10.149:6052/'
  1. 后续一些操作,如hass则参考下面的内容

一、配置Portainer

Portainer 是一个用于 Docker 容器管理的可视化界面工具。方便管理容器和卷。

  1. 创建 Portainer 数据卷:
docker volume create portainer_data
  1. 运行 Portainer 容器:
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

指令的解释:
-d:表示在后台模式运行容器。
-p 9000:9000:这将宿主机的 9000 端口映射到容器的 9000 端口。
–name portainer:为容器指定一个名称。
–restart always:确保容器在任何情况下都会重新启动。
-v /var/run/docker.sock:/var/run/docker.sock:这允许 Portainer 直接访问 Docker API。
-v portainer_data:/data:将前面创建的数据卷挂载到容器内。
完成上述步骤后,你可以通过浏览器访问 http://<你的服务器IP>:9000 来使用 Portainer 界面进行 Docker 容器的管理。

  1. 配置
    访问http://<你的服务器IP>:9000,进行账密配置。

二、配置HA的docker

要在 Docker 中安装 Home Assistant,你可以使用官方的 Home Assistant Docker 映像。

  1. 创建一个数据卷 (用于存储 Home Assistant 的配置和数据):
docker volume create homeassistant_data
  1. 运行 Home Assistant 容器:
docker run -d --name="home-assistant" -v homeassistant_data:/config -e "TZ=Asia/Shanghai" --net=host homeassistant/home-assistant:stable

指令的解释:
-d:表示在后台模式运行容器。
–name=“home-assistant”:为容器指定一个名称。
-v homeassistant_data:/config:将前面创建的数据卷挂载到容器内,用于存储 Home Assistant 的配置。
-e “TZ=Asia/Shanghai”:设置时区为上海 (你可以根据需要修改为其他时区)。
–net=host:这允许 Home Assistant 使用宿主机的网络,有助于自动发现和控制本地网络上的设备。
homeassistant/home-assistant:stable:使用稳定版的 Home Assistant 映像。
完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:8123 来访问 Home Assistant 的界面,并进行初始设置。

  1. 配置
    访问http://<你的服务器IP>:8123 ,进行账密配置。其他配置在后续说明

三、配置MQTT服务器(Eclipse Mosquitto)

对于 MQTT 服务器,经常推荐使用的是 Eclipse Mosquitto。Mosquitto 是一个开源的 MQTT 代理,非常轻量级且可靠,可以很好地与 Home Assistant 和 Node-RED 配合使用。
额外参考:https://zhuanlan.zhihu.com/p/452896841

  1. 创建 Mosquitto 数据卷:
docker volume create mosquitto_config
docker volume create mosquitto_data
docker volume create mosquitto_log
  1. 配置 mosquitto.conf 文件:
    mosquitto_config下创建文件mosquitto.conf,特别注意,由于使用docker volume创建,应该是在mosquitto_config的_data文件夹下。实际路径如下:
cd /opt/docker/volumes/mosquitto_config/_data
touch mosquitto.conf
chmod 755 mosquitto.conf		# 需要给权限,因为容器可能要读写
nano mosquitto.conf

写入以下内容:

persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
  1. 运行 Mosquitto 容器:
docker run -d \
  --name mosquitto \
  --privileged \
  -p 1883:1883 \
  -p 9001:9001 \
  -v mosquitto_config:/mosquitto/config \
  -v mosquitto_data:/mosquitto/data \
  -v mosquitto_log:/mosquitto/log \
  --restart always \
  eclipse-mosquitto

三、配置MariaDB数据库

Home Assistant 默认使用 SQLite 数据库,但在大型设置或长时间使用后,使用 MariaDB 或 PostgreSQL 可能更高效。
为了长时间运行的稳定,那还是设置吧

  1. 创建一个持久化存储数据的 Docker 卷:
    MariaDB 将其数据存储在 /var/lib/mysql,所以为了确保数据的持久性,我们应该为这个路径创建一个 Docker 卷。
docker volume create mariadb_data
  1. 启动 MariaDB 容器:
    使用以下命令运行 MariaDB 容器,注意替换 password 为您自己的值。
docker run -d \
  --name mariadb \
  --privileged \
  --restart always \
  -e MYSQL_ROOT_PASSWORD=password \
  -e MYSQL_DATABASE=homeassistant \
  -e MYSQL_USER=root \
  -e MYSQL_PASSWORD=password \
  -v mariadb_data:/var/lib/mysql \
  -p 3306:3306 \
  mariadb:latest
  1. 配置 Home Assistant 使用 MariaDB:
    如之前所述,您需要更新 Home Assistant 的 configuration.yaml 文件,指向这个新的 MariaDB 实例。修改password。
recorder:
  db_url: mysql://root:password@127.0.0.1/homeassistant?charset=utf8
  1. 之后重启HA
    使用数据库工具DBeaver,连接这个数据库进行查看,可以看到正常。

四、配置Node-RED

Node-RED 是一个基于流的开发工具,用于连接硬件设备、API 和在线服务。

  1. 创建 Node-RED 数据卷 (用于存储 Node-RED 的配置和数据):
docker volume create nodered_data
  1. 运行 Node-RED 容器:
docker run -d --name nodered -p 1880:1880 -v nodered_data:/data --user node-red --restart always nodered/node-red:latest

指令的解释:
-d: 表示在后台模式运行容器。
–name nodered: 为容器指定一个名称。
-p 1880:1880: 这将宿主机的 1880 端口映射到容器的 1880 端口。
-v nodered_data:/data: 将前面创建的数据卷挂载到容器内,用于存储 Node-RED 的配置。
–user node-red: 以 node-red 用户身份运行 Node-RED,增加安全性。
–restart always: 确保容器在任何情况下都会重新启动。
nodered/node-red:latest: 使用最新版本的 Node-RED Docker 映像。

完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:1880 来访问 Node-RED 的界面并开始构建你的流。

五、配置ESPHome

ESPHome 是一个很好的选择,尤其是如果你计划使用 ESP8266 或 ESP32 微控制器来扩展你的 Home Assistant 设置。

  1. 创建 ESPHome 数据卷 (用于存储 ESPHome 的配置和数据):
docker volume create esphome_data
  1. 运行 ESPHome 容器:
docker run -d \
  --privileged \
  --net=host \
  --name esphome \
  -p 6052:6052 \
  -v esphome_data:/config \
  --restart always \
  esphome/esphome

完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:6052 来访问 ESPHome 的界面,并开始创建和管理你的设备配置。
必须使用host和privileged ,否则esphome无法发现设备。

六、配置Duplicati

Duplicati 是一个备份软件,用于存储加密的、增量的、压缩的备份到云或本地存储。下面是在 Docker 中安装 Duplicati 的步骤:

  1. 创建 Duplicati 的数据卷 (用于存储配置和备份数据):
docker volume create duplicati_backups
docker volume create duplicati_config
docker volume create duplicati_data
  1. 运行 Duplicati 容器:
    注意替换/opt/docker/volumes为你需要备份的文件夹。
docker run -d \
  --name duplicati \
  -p 8200:8200 \
  -v duplicati_backups:/backups \
  -v duplicati_config:/config \
  -v duplicati_data:/data \
  -v /opt/docker/volumes:/source:ro \
  --restart unless-stopped \
  duplicati/duplicati
  1. 配置
    首先在设置中设置密码。
    随后创建备份,使用onedrive或其他进行备份。

七、配置HA的HACS

参考官方:https://hacs.xyz/docs/setup/download/,使用container的教程

  1. 打开HA的bash,输入如下指令即可
wget -O - https://get.hacs.xyz | bash -
  1. 打开HA中的高级模式
  2. 添加集成HACS,并进行相应配置,即可显示HACS内容

八、配置HA的Node-Red

  1. HACS安装Node-Red
  2. 添加集成Node-Red
  3. HA导航栏添加Node-Red
    配置configuration.yaml,添加如下内容后重启HA。(顺带把ESPhome的也添加进来)
panel_iframe:
 nodered:
   title: 'Node-Red'
   icon: 'mdi:shuffle-variant'
   #填写node-red的地址
   url: 'http://192.168.5.1:1880/'

 esphome:
   title: 'ESPHome'
   icon: 'mdi:car-esp'
   #填写node-red的地址
   url: 'http://192.168.5.1:6052/'

在这里插入图片描述

九、配置Node-Red

  1. 在Node-Red中添加节点node-red-contrib-home-assistant-websocket,并安装
  2. 拖入一个HA节点,随后进行HA的配置,如下:
    在这里插入图片描述
  3. 其中的令牌在HA中创建并复制
  4. 测试一下,获取IP并显示
    在这里插入图片描述

十、配置MQTT

  1. HA添加集成MQTT,并配置如下:
    在这里插入图片描述

  2. 进行测试
    在这里插入图片描述

  3. 使用MQTT发布一个传感器给HA的教程,请参考另外一个博客。

十一、配置彩云天气

  1. HACS搜索彩云天气,安装组件和卡片
    在这里插入图片描述
  2. 添加集成Colorfuclouds,并进行相应配置
  3. 在主页中添加卡片,为了高级使用,要学会使用编辑器。
    在这里插入图片描述

十二、配置mini-graph-card

可以在主页显示好看的时序数据,比如温湿度、流量、等等

  1. HACS搜索并安装

  2. 添加如下卡片:
    在这里插入图片描述

  3. 手动添加卡片到资源中
    可能会出现卡片无法检索到,需要手动添加。
    首先在HACS的该卡片,打开源获得该卡片路径:http://192.168.5.1:8123/hacsfiles/mini-graph-card/mini-graph-card-bundle.js
    其次,在配置-仪表盘-资源(右上角选择),添加如下资源。可以看到,这里还包括的彩云天气得到资源
    在这里插入图片描述

### 回答1: Docker 是一个流行的容器化平台,而 Home Assistant 是一个智能家居自动化平台。使用 Docker 可以轻松地安装和运行 Home Assistant,同时保证应用程序的可移植性和环境隔离。 要在 Docker 中安装 Home Assistant,可以按照以下步骤操作: 1. 安装 Docker。可以根据操作系统的不同,参考 Docker 官方文档进行安装。 2. 搜索 Home Assistant 镜像。可以使用以下命令在 Docker Hub 上搜索镜像: ``` docker search homeassistant ``` 3. 从 Docker Hub 下载 Home Assistant 镜像。可以使用以下命令下载最新版本的 Home Assistant: ``` docker pull homeassistant/home-assistant ``` 4. 创建一个新容器。可以使用以下命令创建一个新的 Home Assistant 容器: ``` docker run --init -d --name="home-assistant" -v /path/to/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant ``` 在上面的命令中,`/path/to/config` 应该替换为你自己的 Home Assistant 配置目录。 5. 启动容器。可以使用以下命令启动 Home Assistant 容器: ``` docker start home-assistant ``` 现在,Home Assistant 就已经成功地在 Docker 中安装和运行了。你可以通过浏览器访问 http://localhost:8123 来访问 Home Assistant 的 Web 界面。 ### 回答2: Docker是一种容器化技术,可以使应用程序在各种环境中保持一致性和可移植性,同时允许应用程序在自己的环境中独立运行。Home Assistant是一款流行的免费开源的智能家居自动化平台,它可以自动控制多个家居设备并提供智能场景。Docker Home Assistant是将Home Assistant安装在Docker容器中的解决方案,它可以帮助用户快速、轻松地部署、配置和运行Home AssistantDocker Home Assistant的优点主要有以下几点: 1. 简化安装和配置过程。Docker Home Assistant可以自带配置好的系统和环境,用户只需要下载Docker镜像即可快速启动运行Home Assistant,从而省去了繁琐的安装和配置过程。 2. 提供可移植性和灵活性。Docker容器可以轻松部署到不同的服务器和平台上,从而提供了更大的灵活性和可移植性。如果用户需要迁移或备份Home Assistant时,只需将Docker容器拷贝到新的主机上即可。 3. 更好的安全性和隔离性。Docker使用容器隔离技术,可以将应用程序与底层操作系统分离,从而极大地减少了操作系统和应用程序之间的安全风险。即使Home Assistant遇到了安全漏洞,也不会影响主机系统的安全性。 4. 强大的管理和监控功能。Docker提供了许多工具来管理和监控容器,用户可以实时查看Docker Home Assistant的运行情况,如CPU、内存使用情况等,并可以通过Docker命令来管理容器,如启动、停止、删除等操作。 总之,Docker Home Assistant是一种方便、快速、安全、可移植的Home Assistant部署方式,可以帮助用户快速上手Home Assistant,并提高系统的安全性和灵活性。 ### 回答3: Docker是一款非常方便的虚拟化工具,可以帮助用户轻松地在不同的操作系统上运行应用程序。Home Assistant是一套智能家居自动化系统,可以将各种设备进行联合控制,并以图形界面进行展示。 使用Docker可以将Home Assistant部署到不同的设备上,比如电脑、树莓派等,轻松地在不同的设备上进行搭建和运行。这大大方便了用户的使用,也为智能家居系统的推广和普及提供了技术上的保障。 同时,使用Docker可以方便地进行版本管理和更新,保证系统的稳定性和安全性。用户也可以轻松地进行自定义配置和插件添加,满足各种不同用户的需求。 总之,Docker homeassistant是一款非常实用的智能家居自动化系统。它将技术与生活紧密结合,为人们的生活带来了更多的便利和舒适。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值