利用旧安卓手机Termux+Andronix部署HomeAssistant服务器---no root权限避坑
背景:
按照HomeAssistant官方指导,用树莓派+Ubuntu部署了HA的服务器,效果一般般。首先成本不低,树莓派二手的怎么也要三四百元;第二,虽然不影响使用,但是由于硬件局限,Ubuntu系统速度并不是很快;第三,要给树莓派配个足量的电源,否则可能烧SD卡。
哪里有抽屉里的旧手机香阿,处理器动辄8核。当然,安装过程比较麻烦,稳定性还待测试;希望两者稳定性应该差不多。
网上提供了好多种方案,目前只跑通了一种
A. Linux Deploy,需要拥有已Root手机,且不介意操作相对复杂的用户。太复杂放弃。
B. Termux直接安装,试了卡在了cryptography的安装过程中。见本文最末的Two more段。
C. Termux + Andronix 命令行+Ubuntu/Alpine,卡在了权限或版本太老。见本文One more段。
D. Termux + proot-distro+Alpine, 可行!操作见下文。-----经过几天尝试,HA能运行,但是受限还是有点多,还是要老老实实的用回树莓派 :(
1. root or not root
部署HomeAssistant服务器,先要部署可用的Linux系统。大体方法有获取root权限(Linux Deploy 和刷写定制系统)和不获取root两种。这里采用相对简单,对大多数手机有广泛适用性的no root方案(Termux+proot-distro)。
2. Termux+proot-distro+Alpine Linux
只获取Termux App(可能需要梯子获取),手机安装Termux之后,进入Termux App命令行,安装Termux官方的proot-distro,然后再用proot-distro安装Linux。
这是让人有点困惑的一点,Termux下安装proot-distro 等效于 Termux+Andronix。不解的可以求助豆包或者DS等大模型。同时因为这是一个受限的容器化环境,很多系统功能受到限制,建议通过大模型的帮助进行安装和解答。另外,因为要复制粘贴很多命令,建议在Termux安装ssh服务之后,使用电脑主机通过ssh连接Termux之后操作。
1)Termux安装ssh服务器
#在Termux中进行以下操作安装ssh服务器
# 1. 更新包索引(避免安装失败)
pkg update && pkg upgrade
# 2. 安装 SSH 服务端(openssh 包含 sshd 服务)
pkg install openssh
# 3. 启动 sshd 服务(默认端口 8022,避免和系统 22 端口冲突)
sshd
2)电脑ssh登陆手机ssh之后,更新一下系统,然后使用Termux安装proot-distro,验证安装成功与否。
# Termux使用pkg,而不是apt,来更新系统
pkg update && pkg upgrade
#Termux安装pkg
pkg install proot-distro
#验证安装成功
proot-distro list
顺利的话,proot-distro list会列出可安装的Linux版本如下
上面可以看到,proot-distro 提供了很多Linux版本。本人最开始尝试安装Ubuntu。但是proot-distro只提供了ubuntu25.10,不知道是不是太新了很多依赖还没完善,导致后续安装HomeAssistant失败。不是少这个依赖,就是少那个安装包。后面换成最下的Alpine,最终才安装成功!
3)使用proot-distro安装Alpine Linux
#安装alpine
proot-distro install alpine
4) 顺利安装完毕之后,登陆alpine
#登陆alpine
proot-distro login alpine
登陆成功alpine的界面就是这么朴实无华

5)安装Home Assistant,Docker or no docker?
登陆alpine linux之后,本人一开始就使用相对简单的docker方式来安装Home Assistant。结果不出意外出意外踩坑了。行不通!这配置下,no docker。
docker的安装虽然完成了,但是又没有安装成功,sever无法启动。

重要的话说三次,因为这是一个受限的容器化环境,很多系统功能受到限制,没有root权限。有待大神去解决!
所以只能在alpine下直接安装Home Assistant,命令行如下:
# 1. 更新 Alpine 包索引(避免安装失败)
apk update && apk upgrade
# 2. 安装 HA 必需的系统依赖(编译工具+核心库)
# 缺少这些会导致 pip 安装 HA 或依赖时编译失败
apk add python3 python3-dev py3-pip gcc musl-dev jpeg-dev zlib-dev psmisc tzdata
# 3. 升级 pip(避免旧版本 pip 安装失败)
pip3 install --upgrade pip
# 4. 创建虚拟环境目录(/opt/homeassistant 为固定路径,方便后续管理)
python3 -m venv /opt/homeassistant
# 5. 激活虚拟环境(后续所有 HA 操作必须在该环境下)
source /opt/homeassistant/bin/activate
# 激活后提示符会显示 (homeassistant),表示进入虚拟环境
# 6. 安装必备依赖(解决启动时缺失模块报错,之前踩坑总结)
# numpy:视频流组件依赖;mutagen:TTS/翻译组件依赖;PyTurboJPEG:图片处理依赖
pip install numpy mutagen PyTurboJPEG tzdata aiohttp setuptools wheel
# 7. 安装 Home Assistant 主程序(最新稳定版)
pip install homeassistant
# 8. 简化配置,方便启动Home Assistant,编辑 ifaddr 库的源码文件(虚拟环境路径,Python 版本可能为 3.12/3.13,按实际修改)
nano /opt/homeassistant/lib/python3.12/site-packages/ifaddr/_posix.py
# 9. 找到 get_adapters() 函数,替换为以下代码(直接返回空列表,跳过权限检查)
def get_adapters():
return [] # 无需读取网络接口,避免 PermissionError
# 10. 保存退出:按 Esc → 输入 :wq → 回车(nano 编辑器操作)
# 11. 创建 HA 配置目录(存储配置、数据库、日志)
mkdir -p /root/.homeassistant
cd /root/.homeassistant
# 12. 生成最简配置文件(仅保留 HTTP 监听,无多余语法,100% 兼容)
#端口用 7777(冷门端口,避开 8123/8888 常见占用)
echo -e "http:
server_host: 0.0.0.0
server_port: 7777" > configuration.yaml
# 13. 先释放 7777 端口(避免残留进程占用,之前踩坑点)
fuser -k 7777/tcp 2>/dev/null
# 14. 启动 HA(指定配置目录,确保读取正确配置)
python3 -m homeassistant --config /root/.homeassistant
运行结果如下,这里的错误ERROR 本质:Met.no 天气 API 连接失败。可忽略或者后期修复。


6)后续启动Home Assistant流程
# 1. 打开 Termux,登录 Alpine
proot-distro login alpine
# 2. 激活虚拟环境
source /opt/homeassistant/bin/activate
# 3. 启动 HA
python3 -m homeassistant --config /root/.homeassistant
总结一下:
- 旧的安卓手机安装Termux App(一个安卓应用,可能需要梯子)
- 进入Termux使用命令行安装proot-distro (一个Linux发行版管理器,也可以用Andronix App获得指令进行安装,见“One more thing”)
- 使用proot-distro安装alpine (本文章的alpine版本是3.22.2,不要使用太老的版本)
- 使用alpine直接安装Home Assistant (不要用docker方式安装)
- 使用简化的配置启动Home Assistant (存在权限问题)
- 之所以Alpine方案可行,大模型给出的解释是Alpine 的 py3-cryptography 是预编译好的,apk 会自动补全所有依赖,无需手动处理 Rust 或编译问题。
One more thing:
安卓手机中安装Linux,也就是上文总结中的步骤2,3,也可以使用另一种方式,Termux+Andronix进行。
手机安装Termux App和Andronix App,进入Andronix App,根据引导,进行命令行复制,然后进入Termux App命令行之后,粘贴命令进行linux的安装操作。对,你没看错,为方便用户理解和使用命令行,官方专门做了一个Andronix App来帮助用户复制命令行。复制之后,还是要回Termux进行粘贴和后续操作。
本人得到的Andronix命令行,安装带有vncserver的ubuntu22如下:
pkg update -y && pkg install wget curl proot tar -y && wget https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Ubuntu22/ubuntu22-xfce.sh -O ubuntu22-xfce.sh && chmod +x ubuntu22-xfce.sh && bash ubuntu22-xfce.sh
把这行命令回到Termux, 黏贴运行,你别说,TND真是跑的飞快,体验好多了。
手机截图如下,根据提示进行一些简单的设置



安装成功!

值得注意的是,这种方法安装的Ubuntu,无法通过proot-distro login ubuntu命令登录。而是通过sh登陆。这可能是因为 Andronix 和 Termux 官方的 proot-distro 使用了不同的安装和管理机制,它们之间并不互通。
安装成功ubuntu之后,在Termux的根目录下,生产了一个start-ubuntu22.sh的文件。每次启动ubuntu,只需要运行
#启动ubuntu
./start-ubuntu22.sh

Andronix命令行顺便安装了一下vncserver桌面的但是像素有点感人了,感觉有点鸡肋
非必须可以不安装节省资源

进行到这,一切似乎比proot-distro的方法要简单很多,就差安装Home Assistant这一步了。
可惜功败垂成!可能是选用了ubuntu的原因(这里选用了ubuntu22),此方案一样始终无法获得或者绕开权限,导致Home Assistant无法运行。使用proot-distro安装ubuntu(这里选用了ubuntu25)的时候也有类似的问题,直到换了Alpine Linux。
希望以后大神们能解决这个问题!

不死心,又是试了Termux+Andronix的方法安装Alpine Linux,结果还是此路不通。只因Andronix App复制的命令所安装的Alpine Linux版本太老,是3.10.3版,导致cargo这个组件安装失败。加上Andronix默认提供的ubuntu是22版本的,貌似Andronix不怎么维护更新阿。

Two more:
网上提示过,还有一种办法是直接在Termux上安装Home Assistant,但是测试了,卡在了cryptography的安装过程中。行不通

后话:
成也大模型,败也大模型。现在借助大模型debug方便很多,但是大模型也会提供一些过时的未经验证的信息,导致走很多弯路。








