HomeAssistant从零开始折腾(四) - config目录的最佳食用方式
本文介绍我自己的实践方式,目的是为了更方便地随时编辑里面的yaml配置以及自定义集成,以及自动备份的方案。
SMB挂载
通过 Samba Add-on 将 Home Assistant 的 config 目录共享至局域网,实现 PC 与 Ubuntu 服务器的统一挂载访问。
Samba加载项的配置如下:
1 | workgroup: WORKGROUP |
PC的挂载
直接在资源管理器地址栏输入\\homeassistant.local\config即可访问
当然最好是映射为一个网络位置
Ubuntu服务器的挂载
ubuntu服务器上使用fstab实现开机自动挂载
先创建一个/etc/.smbcredentials_ha(也不一定是这个路径,随便叫啥放哪都行),内容如下:
1 | username=your_username |
修改权限,确保只有root用户可以访问:
1 | sudo chmod 600 /etc/.smbcredentials_ha |
编辑/etc/fstab,添加以下行:
1 | //homeassistant.local/config /mnt/ha_config cifs credentials=/etc/.smbcredentials_ha,iocharset=utf8,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,vers=3.0,nofail,x-systemd.automount 0 0 |
解释:
uid=1000,gid=1000:关键配置。默认挂载属主为 root,会导致普通用户无法编辑。1000通常是首个创建用户的 UID,实际请使用id命令确认。file_mode=0777,dir_mode=0777:赋予全部读写执行权限,降低调试门槛。vers=3.0:强制 SMB 3.0 协议,兼顾性能与安全。nofail:挂载失败(如 HA 宕机)不中断系统启动流程。x-systemd.automount:延迟挂载,访问目录时才触发连接,避免因 HA 服务未响应导致启动卡死。
开发工作流
日常编辑:PC 端使用 VS Code 直接编辑挂载后的 configuration.yaml。
自定义集成:custom_components 目录下,第三方组件直接复制;自己做的或 GitHub 项目使用 git submodule 管理。
版本控制:整个config目录使用git管理,提交到Gitea,用作版本控制,顺便也充当了备份的作用
远程应急:对于外部访问没有PC环境,可以ssh到Ubuntu服务器上直接操作 /mnt/ha_config 目录进行修改。
自动备份:Ubuntu服务器上设置定时任务(如crontab)每天自动检测/mnt/ha_config的变动并提交到Gitea,当然如果没有改动就不提交。
当然如果可能的话,还可以将git diff的内容丢给LLM,让它自动生成可读的提交日志。
当然,HA整体的备份另外再说,这里只说config目录的备份,毕竟这个才是经常改动的