我选用的是一台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