homeassistant的HAOS系统安装和使用

1. 安装和使用

教程:https://www.ha-box.xyz/

接通电源开机,插上网线连接到路由器,大概 2、3 分钟后访问http://homeassistant.local:8123 或者通过 ip 访问,比如http://192.168.11.121:8123

1.1 系统

刷入的系统是 冬瓜 (WaxGourd) 修改编译的 Home Assistant OS (HAOS),WaxGourd Home-Assistant OS。它是 OS(操作系统) 级别的,意味着它包含了 Linux 内核、Docker 引擎、Supervisor 管理器以及 Home Assistant Core 本身。

Home Assistant OS (HAOS) 与普通的 Linux 发行版(如 Ubuntu 或 Debian)有很大不同。它是一个极其精简的、基于容器的操作系统,专门为了运行 Home Assistant 及其监管程序(Supervisor)而设计。

  • 官方 SSH 登录(22222 端口)
1
ssh -p 22222 -i ~/.ssh/fhyx root@192.168.6.213
  • 安装工具
    • 如果你只是想要一些简单的 Linux 工具 (vim, nano, git…)
    • 不要在 Host OS(22222 端口或 7681 控制台)里纠结。
    • 去商店安装 “SSH & Web Terminal” (社区版插件)。
    • 在这个插件的 Docker 容器内部,是基于 Alpine Linux 的
    • 进入这个插件的终端后,你可以使用:这只会安装在那个插件容器里,而不是底层宿主机里,但对于修改 HA 配置文件来说已经足够了。
  • 流程
    • 设置 -> 加载项 ->Advanced SSH & Web Terminal
    • 安装完成后,先不要点启动,必须先配置密钥
    • 可以开启 zsh,也会自动开启 tmux
    • 关掉保护模式 (Protection mode),启动
    • 说明:之前进入的 22222 端口是宿主机(只读,很难装软件)。 现在安装的这个插件是容器(灵活,可以用 apk 随意装工具,而且不会弄坏底层系统)。
  • 原理:
    • 这是一个在宿主机上运行的 Docker 容器。默认情况下它是隔离的,但如果你关闭了 “ 保护模式 “,它就拥有了类似宿主机的 “ 特权 “。
    • 这里是一个完整的小型 Linux 环境(Alpine Linux)。在这里,你有最高权限(Root),可以用包管理器 (apk) 随意安装 gitvimhtop 等软件,把系统搞坏了也没事,大不了重装这个插件,不会影响 HAOS 的地基。
    • 如果你在 “ 信息 “ 页 关闭了 “ 保护模式 (Protection mode)”,这个容器就会获得 “ 特权 “。
    • 它能看到宿主机的硬件(蓝牙、Zigbee 棒)。
    • 它能访问宿主机的 Docker 进程(你可以直接输 docker ps 看到所有在运行的容器)。
    • 以此状态,它几乎等同于在操作宿主机,但操作环境更友好、更安全。

2. 启动其他项目

2.1 共享目录启动

Home Assistant 为了轻量化,默认使用的 SSH 客户端叫 Dropbear,而不是我们在普通 Linux 上常用的 OpenSSH。所以使用插件 Advanced SSH & Web Terminal 进来,操作舒服一点。

  • ssh 配置
1
2
3
4
5
6
7
8
9
Host github.com
HostName ssh.github.com
IdentityFile ~/.ssh/github-unix2dos
User unix2dos
Port 443

chmod 600 ~/.ssh/github-unix2dos

ssh -T git@github.com
  • 去共享目录
1
2
3
4
5
6
7
8
9
10
11
12
13
cd /share  # 对应宿主机的 /mnt/data/supervisor/share 

git clone git@github.com:unix2dos/bullet.git

# 安装go
apk update && apk add go
go version


# 不要用 nohup:你可能知道 nohup ./app & 这种方式,这仅仅是后台运行,没有自动重启功能。如果程序挂了,服务就断了,生产环境千万别用。

# 这是一个“穷人的守护进程”。
nohup sh -c "while true; do ./my_binary; sleep 1; done" > app.log 2>&1 &
  • 脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh

apk update && apk add go
export GOPROXY=https://goproxy.cn,direct

# 定义程序名称
APP_NAME="bullet"
LOG_FILE="${APP_NAME}.log"

echo "=================================================="
echo " 正在部署: $APP_NAME"
echo "=================================================="

# 1. 清理旧进程
# pkill -f 会匹配命令行参数,能同时杀掉 ./bullet 和 那个 while 循环的 shell
echo "[1/3] 清理旧进程..."
pkill -f "$APP_NAME"
# 等一下,防止端口没释放
sleep 1

# 2. 编译 Go 程序
echo "[2/3] 开始编译..."
# 这里的 . 代表编译当前目录,如果有 main.go 也可以写 go build -o $APP_NAME main.go
go build -o $APP_NAME .

# 检查编译结果,$? 等于 0 表示成功
if [ $? -ne 0 ]; then
echo "❌ 编译失败!请检查代码错误。"
exit 1
fi
echo "✅ 编译成功。"

# 3. 启动守护进程
echo "[3/3] 启动服务 (守护模式)..."

# 这里的逻辑是:
# sh -c "..." : 启动一个 shell 运行死循环
# while true : 死循环
# ./$APP_NAME : 运行你的程序
# sleep 1 : 程序崩溃退出后,暂停1秒再重启(防止疯狂重启占满 CPU)
nohup sh -c "while true; do ./$APP_NAME; echo 'App crashed, restarting in 1s...'; sleep 1; done" > "$LOG_FILE" 2>&1 &

echo "✅ 服务已在后台运行。"
echo "📄 日志写入到: $LOG_FILE"
echo "👀 查看日志命令: tail -f $LOG_FILE"
echo "=================================================="

tail -f $LOG_FILE

2.2 用 Portainer 运行项目

这是在 HAOS 下模拟 “ 独立 Docker 环境 “ 最成熟的方案。你虽然还是依赖 HA 的 Supervisor 启动了 Portainer,但 Portainer 启动后,它直接接管了宿主机的 Docker Socket。

当你直接在宿主机 docker run 一个容器时,HA 的大管家 Supervisor 会检测到 “ 未经授权的容器 “。

  • 后果: 你的 HA 系统会被标记为 Unsupported (不受支持) 或 Unhealthy (不健康)。
  • 副作用: 一旦标记为 Unhealthy,Supervisor 会禁止你更新 Home Assistant Core。到时候你想升级 HA,还得先把你的 Go 容器删了,重启 HA,升级完再从头部署一遍。

2.3 青龙面板

1
2
3
4
5
6
7
8
docker run -dit \
-v /mnt/data/supervisor/share/ql/data:/ql/data \
-p 5700:5700 \
--name qinglong \
--hostname qinglong \
--restart always \
whyour/qinglong:latest

 安装完成后,在浏览器输入 http://你的HA的IP地址:5700 即可进入青龙面板。订阅别人脚本即可。

3. HA 配置

3.1 Hacs 安装包

  • Mushroom
  • mini-graph-card
  • button-card
  • Stack In Card

4. 参考教程