找回密码
 立即注册
查看: 271|回复: 0

[进阶教程] 【最新方法:用ha的command line来控制局域网内NAS里的docker容器】

[复制链接]

14

主题

370

回帖

2022

积分

金牌会员

积分
2022
金钱
1638
HASS币
0
发表于 2025-5-16 13:38:00 | 显示全部楼层 |阅读模式
本帖最后由 fay000fay 于 2025-5-16 14:20 编辑

🧾 教程:使用 command_line 平台控制 NAS 里的Docker 容器开/关(以youtube-dl-nas这个容器为例)

(PS:本人的ha是安装在PVE的虚拟机中,飞牛NAS也是PVE虚拟机)


(以下所有SSH命令均在ha的terminal & SSH 插件下输入执行)

1. 在 Home Assistant 中生成 SSH 密钥并配置免密登录

1. 打开 Home Assistant 的 **Terminal & SSH** 插件,执行以下命令生成密钥:
ssh-keygen -t rsa
一路回车,会生成:
  • 私钥:/root/.ssh/id_rsa
  • 公钥:/root/.ssh/id_rsa.pub

2.将公钥拷贝到 NAS 上对应用户(如 admin)的 ~/.ssh/authorized_keys 中:
cat /root/.ssh/id_rsa.pub
登录 NAS,执行:
mkdir -p ~/.ssh
vi ~/.ssh/authorized_keys  # 粘贴内容保存
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
2. 将私钥复制到 Home Assistant 的 /config/ssh/ 目录

mkdir -p /config/ssh
cp /root/.ssh/id_rsa /config/ssh/id_rsa
chmod 600 /config/ssh/id_rsa
3. 在 configuration.yaml 添加 command_line 开关
command_line:
  - switch:
      name: youtube-dl-nas-switch
      command_on: '/usr/bin/ssh -i /config/ssh/id_rsa -o StrictHostKeyChecking=no [email protected] "docker start youtube-dl-nas"'
      command_off: '/usr/bin/ssh -i /config/ssh/id_rsa -o StrictHostKeyChecking=no [email protected] "docker stop youtube-dl-nas"'
      command_state: '/usr/bin/ssh -i /config/ssh/id_rsa -o StrictHostKeyChecking=no [email protected] "docker inspect -f {{.State.Running}} youtube-dl-nas"'
      value_template: "{{ value == 'true' }}"


✅ 5. 效果展示
  • 你会看到一个名为 switch.youtube_dl_nas_switch 的开关实体。
  • 开启开关 → 容器启动
  • 关闭开关 → 容器停止
  • 状态实时反映容器运行情况(基于 docker inspect)

微信截图_20250516135402.png

💡 注意事项
  • /usr/bin/ssh 路径需确认无误,在 HA Terminal 中执行 which ssh 查看
  • 私钥路径和权限必须正确:/config/ssh/id_rsa,chmod 600




评分

参与人数 1金钱 +10 收起 理由
s2233 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-6-1 13:13 , Processed in 0.074610 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表