HomeAssistant从零开始折腾(四) - config目录的最佳食用方式

本文介绍我自己的实践方式,目的是为了更方便地随时编辑里面的yaml配置以及自定义集成,以及自动备份的方案。

SMB挂载

通过 Samba Add-on 将 Home Assistant 的 config 目录共享至局域网,实现 PC 与 Ubuntu 服务器的统一挂载访问。

Samba加载项的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
workgroup: WORKGROUP
username: your_username
password: your_secure_password
interface: ""
allow_hosts:
- 192.168.32.0/20 # 可以允许一个网段,也可以只允许PC和Ubuntu服务器访问
veto_files:
- ._*
- .DS_Store
- Thumbs.db
- desktop.ini
- .Trashes
- .Spotlight-V100
- .hidden
compatibility_mode: false
mmap: true # 开启内存映射,提升大文件传输性能

PC的挂载

直接在资源管理器地址栏输入\\homeassistant.local\config即可访问

当然最好是映射为一个网络位置

Ubuntu服务器的挂载

ubuntu服务器上使用fstab实现开机自动挂载

先创建一个/etc/.smbcredentials_ha(也不一定是这个路径,随便叫啥放哪都行),内容如下:

1
2
3
username=your_username
password=your_secure_password
domain=WORKGROUP

修改权限,确保只有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目录的备份,毕竟这个才是经常改动的