# 创建密钥目录并下载 GPG 密钥
mkdir -p /etc/apt/keyrings
wget -O /etc/apt/keyrings/deb-pascalroeleven.gpg https://pascalroeleven.nl/deb-pascalroeleven.gpg# 配置 APT 软件源
cat <<EOF | sudo tee /etc/apt/sources.list.d/pascalroeleven.sources
Types: deb
URIs: http://deb.pascalroeleven.nl/python3.13
Suites: bookworm-backports
Components: main
Signed-By: /etc/apt/keyrings/deb-pascalroeleven.gpg
EOF# 更新源并安装 Python3.13
sudo apt update
sudo apt install python3.13 python3.13-venv python3.13-dev -y# 安装编译依赖库
sudo apt install -y autoconf libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev pkg-config build-essential ffmpeg# 创建 Home Assistant 专用系统用户
sudo useradd -r -s /usr/sbin/nologin -m -U -d /opt/homeassistant homeassistant# 设置目录权限
sudo chown -R homeassistant:homeassistant /opt/homeassistant
# 切换至 homeassistant 用户
sudo -u homeassistant -s /bin/bash
# 进入安装目录
cd /opt/homeassistant# 创建 Python 虚拟环境
python3.13 -m venv venv
# 激活虚拟环境
source venv/bin/activate# 升级 pip 等基础工具(清华源)
pip install --upgrade pip wheel setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 Home Assistant
pip install homeassistant -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装指定版本前端
pip install home-assistant-frontend==20260128.6 \
-i https://pypi.tuna.tsinghua.edu.cn/simple \
--trusted-host pypi.tuna.tsinghua.edu.cn
# 开机自启脚本
#!/bin/sh
### BEGIN INIT INFO
# Provides: homeassistant
# Required-Start: $network $local_fs $syslog
# Required-Stop: $network $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Home Assistant Daemon
### END INIT INFO
# ========================= 修正后的路径 =========================
# 与你 `useradd -d /opt/homeassistant` 保持一致
USER="homeassistant"
# 虚拟环境目录(你创建 venv 的位置)
VENV="/opt/homeassistant"
# 配置目录(HA 会自动在用户家目录生成,即 /opt/homeassistant/.homeassistant)
CONFIG="${VENV}/.homeassistant"
# HASS 可执行文件路径
HASS="${VENV}/venv/bin/hass"
# PID 文件位置
PIDFILE="/var/run/homeassistant.pid"
export PATH="${VENV}/venv/bin:$PATH"
start() {
echo "Starting Home Assistant..."
# 修复:确保 PID 目录存在,防止启动失败
mkdir -p /var/run/homeassistant || true
chown ${USER}:${USER} /var/run/homeassistant || true
start-stop-daemon --start --background \
--chuid ${USER}:${USER} \
--chdir ${VENV} \
--make-pidfile --pidfile ${PIDFILE} \
--exec ${HASS} -- -c ${CONFIG}
}
stop() {
echo "Stopping Home Assistant..."
start-stop-daemon --stop --pidfile ${PIDFILE} 2>/dev/null
rm -f ${PIDFILE}
}
status() {
if [ -f "${PIDFILE}" ] && pgrep -F "${PIDFILE}" >/dev/null 2>&1; then
echo "Home Assistant is running"
else
echo "Home Assistant is stopped"
fi
}
case "$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 2; start ;;
status) status ;;
*) echo "Usage: $0 {start|stop|restart|status}" ;;
esac
exit 0
# 2. 编辑新脚本(粘贴上面的内容)
nano /etc/init.d/homeassistant
# 3. 赋予执行权限
chmod +x /etc/init.d/homeassistant
# 4. 重新启动服务
/etc/init.d/homeassistant restart
# 5. 查看状态
/etc/init.d/homeassistant status参考链接: debian12专用python
评论 (0)