Homeassistant docker配置

news2024/11/16 23:35:47

Homeassistant docker配置

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

一、配置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 \
  --name esphome \
  -p 6052:6052 \
  -v esphome_data:/config \
  --restart always \
  esphome/esphome

完成上述步骤后,你应该可以通过浏览器访问 http://<你的服务器IP>:6052 来访问 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
    其次,在配置-仪表盘-资源(右上角选择),添加如下资源。可以看到,这里还包括的彩云天气得到资源
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Data Assistant 快速创建测试数据集

使用 Data Assistant 快速创建测试数据集 Data Assistant 提供超过 100 种数据类型&#xff0c;为任何开发、测试或演示目的生成大量、异构、真实的数据。 官网地址&#xff1a; http://www.redisant.cn/da 主要功能 Windows 原生 Data Assistant 使用 Windows Native 技术…

Redis常见问题的解决方案(缓存穿透/缓存击穿/缓存雪崩/数据库缓存数据不一致)

Redis解决缓存数据库不一致的方案 用 先 操作数据库 再 操作缓存 的策略来实现缓存数据库数据一致具体做法是 更新数据库数据然后删除缓存 虽然还是会有线程安全问题 比如 假设此时缓存刚好失效了 线程1 查询缓存失败 从数据库读取了旧数据 还没写入缓存的时候 被调度到 线程…

C++标准模板(STL)- 类型支持 (运行时类型识别,type_info )

运行时类型识别 定义于头文件 <typeinfo> 含有某个类型的信息&#xff0c;由实现生成。​​这是 typeid 运算符所返回的类。 std::type_info 定义于头文件 <typeinfo> class type_info; 类 type_info 保有一个类型的实现指定信息&#xff0c;包括类型的名称和…

《机器学习》第6章 支持向量机

文章目录 6.1 间隔与支持向量6.2 对偶问题6.3 核函数支持向量展式核函数 6.4 软间隔与正则化6.5 支持向量回归6.6 核方法6.7 阅读材料 6.1 间隔与支持向量 分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开.但能将训练样本分开的划分…

UG\NX二次开发 取消抑制特征 UF_MODL_unsuppress_feature

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 bullzhanghao 订阅本专栏,非常感谢。 简介 UG\NX二次开发 取消抑制特征 UF_MODL_unsuppress_feature 效果 代码 #include "me.hpp" #include <vector> #

100114. 元素和最小的山形三元组 II

如果下标三元组 (i, j, k) 满足下述全部条件&#xff0c;则认为它是一个 山形三元组 &#xff1a;i < j < k nums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 nums 中 元素和最小 的山形三元组&#xff0c;并返回其 元素和 。如果不存在满足条件的三元组&#xf…

昇腾AscendCL推理应用开发入门教程(基于Python语言)

pyACL&#xff08;Python Ascend Computing Language&#xff09;是一套在AscendCL的基础上使用CPython封装得到的Python API库&#xff0c;使用户可以通过Python进行昇腾AI处理器的运行管理、资源管理等&#xff0c;实现在昇腾CANN平台上进行深度学习推理计算、图形图像预处理…

表结构的操作【MySQL】

文章目录 创建表例子 查看表结构修改表新增列属性修改列属性修改列名修改表名删除列 删除表 阅读前导&#xff1a; 一般来说&#xff0c;对表的操作可以分为对表结构和对表内容的操作。 对表结构的操作&#xff0c;就是用数据定义语言 DDL 来创建、修改或删除表中的对象&#…

elementUI 中 date-picker 的使用的坑(vue3)

目录 1. 英文显示2. format 与 value-format 无效3. date-picker 时间范围4. 小结 1. 英文显示 <el-date-pickerv-model"dateValue"type"date"placeholder"选择日期"></el-date-picker>解决方案&#xff1a; 引用 zhCn <script&g…

web开发初级工程师学习笔记

web开发初级工程师学习笔记 前端开发工具实验1 VS Code 初体验介绍 前端开发工具 实验1 VS Code 初体验 介绍 VS Code 环境提供的是一个可以在浏览器中使用原生 VS Code 编辑代码的程序。在该环境中&#xff0c;你可以使用到与本地安装近乎一致的 VS Code 程序来编辑代码文件…

PAM从入门到精通(十九)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;十八&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 PAM 的应用开发和内部实现源码分析 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 六、整体流程示例 2.…

linux安装visual studio code

下载 https://code.visualstudio.com/ 下载.deb文件 安装 假如文件被下载到了 /opt目录下 进入Opt目录&#xff0c;右键从当前目录打开终端。 输入下面的安装命令。 sudo apt-get install ./code_1.83.1-1696982868_amd64.deb 安装成功。 配置 打开 visual studio cod…

博客续更(五)

十一、后台模块-菜单列表 菜单指的是权限菜单&#xff0c;也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表&#xff0c;不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

Sentinel授权规则和规则持久化

大家好我是苏麟 , 今天说说Sentinel规则持久化. 授权规则 授权规则可以对请求方来源做判断和控制。 授权规则 基本规则 授权规则可以对调用方的来源做控制&#xff0c;有白名单和黑名单两种方式。 白名单&#xff1a;来源&#xff08;origin&#xff09;在白名单内的调用…

Linux下Jenkins自动化部署SpringBoot应用

Linux下Jenkins自动化部署SpringBoot应用 1、 Jenkins介绍 官方网址&#xff1a;https://www.jenkins.io/ 2、安装Jenkins 2.1 centos下命令行安装 访问官方&#xff0c;点击文档&#xff1a; 点击 Installing Jenkins&#xff1a; 点击 Linux&#xff1a; 选择 Red Hat/…

H3C IMC dynamiccontent.properties.xhtm 远程命令执行

我举手向苍穹&#xff0c;并非一定要摘星取月&#xff0c;我只是需要这个向上的、永不臣服的姿态。 构造payload&#xff1a; /imc/javax.faces.resource/dynamiccontent.properties.xhtml pfdrtsc&lnprimefaces&pfdriduMKljPgnOTVxmOB%2BH6%2FQEPW9ghJMGL3PRdkfmbii…

智慧公厕设备选型攻略,打造智能化便利生活体验

智慧公厕设备的选型对于打造智能化便利生活体验起着至关重要的作用。在不断提升城市品质的背景下&#xff0c;智慧公厕已成为城市建设中的一项重要内容。在选购智慧公厕设备时&#xff0c;我们需要考虑到不同版本的功能要求&#xff0c;确保公厕设备的质量和性能。本文以智慧公…

[代码随想录]回溯、贪心算法篇

文章目录 1.回溯算法1.1 77-组合1.2 216-组合的综合III1.3 17-电话号码的字母组合1.4 39-组合总和1.5 40-组合总和II1.6 131-分割回文串1.7 93-复原IP地址1.8 78-子集1.9 90-子集II1.10 491-递增子序列1.11 46-全排列1.12 47-全排列II1.13* 51-N皇后 2. 贪心算法2.1 455-分发饼…

QCC 音频输入输出

QCC 音频输入输出 QCC蓝牙芯片&#xff08;QCC3040 QCC3083 QCC3084 QCC5181 等等&#xff09;支持DAC、I2S、SPDIF输出&#xff0c;AUX、I2S、SPDIF、A2DP 输入 蓝牙音频输入&#xff0c;模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 输入方式切换参考 sta…

设计模式:命令模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 命令模式&#xff0c;它是一种行为型设计模式&#xff0c;它尝试将请求或操作封装成对象&#xff0c;从而降低系统的耦合度&#xff0c;增加系统的可扩展性&#xff0c;并支持撤销、重做、事务等功能。 在命令模式中&#xff0c;请求被封装为一个独立的对象…