我选用的是一台J1900主机,配置为4G 128G SSD,安装了iStoreOS,作为家庭服务器使用。

至于你问我为什么不用原版的OpenWRT,我只能说,OpenWRT的初始化要自己dd硬盘不是人用的。

而iStoreOS是一个基于OpenWRT的系统,但是默认带了docker和简化了配置过程,所以我选择了这个系统。

在拉取homeassistant的时候,发现拉取镜像一直报存储空间不足,但是理论上是有足够的空间的。

 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
49
root@iStoreOS:~# docker pull homeassistant/home-assistant:latest
latest: Pulling from homeassistant/home-assistant
38a8310d387e: Pull complete 
09a5bff725b6: Pull complete 
f78bed66d6b1: Pull complete 
de917069bff2: Pull complete 
eed606866cfb: Pull complete 
163575274971: Pull complete 
52ba6bb1aca9: Pull complete 
5ae6ab9cf22b: Pull complete 
536577e96f43: Pull complete 
8959c7b7e59f: Pull complete 
c868822ed294: Pull complete 
4f4fb700ef54: Pull complete 
86ccf256b545: Pull complete 
fe165d982963: Pull complete 
0a2f5993996d: Pull complete 
bdadc72a2704: Pull complete 
1f55fc062a3e: Pull complete 
fb9bbc343728: Pull complete 
0611aa317e73: Pull complete 
91ab62efbe1b: Pull complete 
809f092b0817: Pull complete 
14bfe62583c7: Pull complete 
556c80b16f2b: Pull complete 
b50b536eff7f: Pull complete 
5cf4a77a0d4b: Pull complete 
28d447110836: Pull complete 
ebf8ff00aad7: Extracting [==================================================>]  387.4MB/387.4MB
cf4bcb646257: Download complete 
19f071cf7e37: Download complete 
65e0fd5d5b41: Download complete 
110455c9d783: Download complete 
d24cf186fa11: Download complete 
failed to register layer: Error processing tar file(exit status 1): write /usr/local/lib/python3.13/site-packages/pycountry/locales/ka/LC_MESSAGES/iso3166-3.mo: no space left on device
root@iStoreOS:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               170.5M    170.5M         0 100% /rom
tmpfs                     1.9G      5.4M      1.9G   0% /tmp
/dev/sda3                 1.9G     54.9M      1.8G   3% /overlay
overlayfs:/overlay        1.9G     54.9M      1.8G   3% /
tmpfs                     4.0M         0      4.0M   0% /mnt
/dev/sda1               126.0M      5.1M    118.3M   4% /boot
/dev/sda1               126.0M      5.1M    118.3M   4% /boot
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda4               114.5G      8.0K    108.6G   0% /mnt/sata1-4
tmpfs                   512.0K         0    512.0K   0% /sys/module/md_mod/parameters/new_array
overlayfs:/overlay        1.9G     54.9M      1.8G   3% /opt/docker
/dev/sda3                 1.9G     54.9M      1.8G   3% /overlay/upper/opt/docker

后面在我自己的wsl上拉取了镜像,发现竟然有1.8G!这也太大了!

在iStoreOS上重新挂载硬盘,并且在主页重新迁移docker的数据目录,解决了这个问题。

我的启动脚本如下:

 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
49
#!/bin/bash

# Home Assistant 启动脚本(使用 host 网络)

# 设置变量
CONFIG_DIR="/setup/data/ha/config"  # 配置文件目录
LOG_DIR="/setup/data/ha/config/logs"  # 日志目录
CONTAINER_NAME="homeassistant"     # 容器名称
IMAGE_NAME="homeassistant/home-assistant:latest"  # 镜像名称

# 检查配置文件目录是否存在,如果不存在则创建
if [ ! -d "$CONFIG_DIR" ]; then
  echo "配置文件目录不存在,正在创建: $CONFIG_DIR"
  mkdir -p "$CONFIG_DIR"
fi

# 检查日志目录是否存在,如果不存在则创建
if [ ! -d "$LOG_DIR" ]; then
  echo "日志目录不存在,正在创建: $LOG_DIR"
  mkdir -p "$LOG_DIR"
fi

# 停止并删除已存在的容器
if docker ps -a --format '{{.Names}}' | grep -q "^$CONTAINER_NAME$"; then
  echo "停止并删除已存在的容器: $CONTAINER_NAME"
  docker stop $CONTAINER_NAME
  docker rm $CONTAINER_NAME
fi

# 启动 Home Assistant 容器(使用 host 网络)
echo "启动 Home Assistant 容器..."
docker run -d \
  --name $CONTAINER_NAME \
  --restart unless-stopped \
  --network host \
  -v $CONFIG_DIR:/config \
  -v $LOG_DIR:/config/logs \
  $IMAGE_NAME

# 检查容器是否启动成功
if docker ps --format '{{.Names}}' | grep -q "^$CONTAINER_NAME$"; then
  echo "Home Assistant 容器已成功启动!"
  echo "访问地址: http://<宿主机IP>:8123"
  echo "配置文件目录: $CONFIG_DIR"
  echo "日志目录: $LOG_DIR"
else
  echo "Home Assistant 容器启动失败,请检查日志。"
  docker logs $CONTAINER_NAME
fi

HA,启动!

接下来就是安装HA最重量级的应用——HACS,这个插件可以让你安装各种各样的插件,比如说我要安装一个插件,只需要在HACS里面搜索,然后点击安装,就可以了。

进入ha的docker容器内部,然后执行下面的命令:

1
docker exec -it <name of the container running homeassistant> bash

大功告成!

就这样,享受你的homeassistant吧!

参考文献:https://www.cnblogs.com/dingshaohua/p/17632625.html