Homeassistant docker配置

Homeassistant docker配置

【说明】本系列为自用教程,记录以便下次使用

【背景】一台J1900 4G+64G的小主机,安装了OP系统,里面自带了Docker。为实现Homeassistant(简称HA)控制智能家居设备,进行如下配置。

【参考】主要基于GPT生成的教程,并基于自己的测试,进行配置。如有特殊参考,会在文中备注。

【通用账号】:能修改的使用root,不能修改的一般为admin

一、配置Portainer

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

  1. 创建 Portainer 数据卷:
bash 复制代码
docker volume create portainer_data
  1. 运行 Portainer 容器:
bash 复制代码
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 的配置和数据):
bash 复制代码
docker volume create homeassistant_data
  1. 运行 Home Assistant 容器:
bash 复制代码
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 数据卷:
bash 复制代码
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文件夹下。实际路径如下:
bash 复制代码
cd /opt/docker/volumes/mosquitto_config/_data
touch mosquitto.conf
chmod 755 mosquitto.conf		# 需要给权限,因为容器可能要读写
nano mosquitto.conf

写入以下内容:

bash 复制代码
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
allow_anonymous true
listener 1883
  1. 运行 Mosquitto 容器:
bash 复制代码
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 卷。
bash 复制代码
docker volume create mariadb_data
  1. 启动 MariaDB 容器:
    使用以下命令运行 MariaDB 容器,注意替换 password 为您自己的值。
bash 复制代码
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。
bash 复制代码
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 的配置和数据):
bash 复制代码
docker volume create nodered_data
  1. 运行 Node-RED 容器:
bash 复制代码
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 的配置和数据):
bash 复制代码
docker volume create esphome_data
  1. 运行 ESPHome 容器:
bash 复制代码
docker run -d \
  --name esphome \
  -p 6052:6052 \
  -v esphome_data:/config \
  --restart always \
  esphome/esphome

完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:6052 来访问 ESPHome 的界面,并开始创建和管理你的设备配置。

六、配置Duplicati

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

  1. 创建 Duplicati 的数据卷 (用于存储配置和备份数据):
bash 复制代码
docker volume create duplicati_backups
docker volume create duplicati_config
docker volume create duplicati_data
  1. 运行 Duplicati 容器:
    注意替换/opt/docker/volumes为你需要备份的文件夹。
bash 复制代码
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,输入如下指令即可
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的也添加进来)
bash 复制代码
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 小时前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
B1nna2 小时前
Docker学习
学习·docker·容器
缘友一世2 小时前
网安系列【15】之Docker未授权访问漏洞
docker·容器
AmosTian8 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
YC运维9 小时前
RIP实验以及核心原理
运维·网络·智能路由器
慕木兮人可9 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
leo__52010 小时前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible
霖0010 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
CodeWithMe10 小时前
【Note】《Kafka: The Definitive Guide》 第九章:Kafka 管理与运维实战
运维·分布式·kafka