1
0
mirror of https://github.com/community-scripts/ProxmoxVE.git synced 2025-05-10 18:23:07 +00:00

HomeAssistant-Core: update script for 2025.5+ (#4363)

* HomeAssistant-Core: update script for 2025.5+

* Update homeassistant-core-install.sh
This commit is contained in:
CanbiZ 2025-05-10 01:55:09 +02:00 committed by GitHub
parent 7413a03009
commit 5e3a5bb24c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 63 additions and 24 deletions

View File

@ -21,8 +21,6 @@ catch_errors
function update_script() { function update_script() {
header_info header_info
# OS Check
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10." msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549" msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
@ -32,54 +30,88 @@ function update_script() {
check_container_resources check_container_resources
if [[ ! -d /srv/homeassistant ]]; then if [[ ! -d /srv/homeassistant ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit 1
fi fi
PY=$(ls /srv/homeassistant/lib/) setup_uv
IP=$(hostname -I | awk '{print $1}') IP=$(hostname -I | awk '{print $1}')
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \ UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \
"1" "Update Core" ON \ "1" "Update Core" ON \
"2" "Install HACS" OFF \ "2" "Install HACS" OFF \
"3" "Install FileBrowser" OFF \ "3" "Install FileBrowser" OFF \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
if [ "$UPD" == "1" ]; then if [ "$UPD" == "1" ]; then
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then
clear clear
header_info header_info
echo -e "${GN}Updating to Beta Version${CL}" echo -e "${GN}Updating to Beta Version${CL}"
BR="--pre " BR="--pre"
else else
clear clear
header_info header_info
echo -e "${GN}Updating to Stable Version${CL}" echo -e "${GN}Updating to Stable Version${CL}"
BR="" BR=""
fi fi
msg_info "Stopping Home Assistant" msg_info "Stopping Home Assistant"
systemctl stop homeassistant systemctl stop homeassistant
msg_ok "Stopped Home Assistant" msg_ok "Stopped Home Assistant"
if [[ -d /srv/homeassistant/bin ]]; then
msg_info "Migrating to .venv-based structure"
$STD source /srv/homeassistant/bin/activate
PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
$STD deactivate
mv /srv/homeassistant "/srv/homeassistant_backup_$PY_VER"
mkdir -p /srv/homeassistant
cd /srv/homeassistant
$STD uv python install 3.13
UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
if [[ -z "$UV_PYTHON" ]]; then
msg_error "No local Python 3.13 found via uv"
exit 1
fi
$STD uv venv .venv --python "$UV_PYTHON"
$STD source .venv/bin/activate
$STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
mkdir -p /root/.homeassistant
msg_ok "Migration complete"
else
source /srv/homeassistant/.venv/bin/activate
fi
msg_info "Updating Home Assistant" msg_info "Updating Home Assistant"
source /srv/homeassistant/bin/activate $STD uv pip install $BR --upgrade homeassistant
$STD pip install ${BR}--upgrade homeassistant
msg_ok "Updated Home Assistant" msg_ok "Updated Home Assistant"
msg_info "Starting Home Assistant" msg_info "Starting Home Assistant"
if [[ -f /etc/systemd/system/homeassistant.service ]] && grep -q "/srv/homeassistant/bin/python3" /etc/systemd/system/homeassistant.service; then
sed -i 's|ExecStart=/srv/homeassistant/bin/python3|ExecStart=/srv/homeassistant/.venv/bin/python3|' /etc/systemd/system/homeassistant.service
sed -i 's|PATH=/srv/homeassistant/bin|PATH=/srv/homeassistant/.venv/bin|' /etc/systemd/system/homeassistant.service
$STD systemctl daemon-reload
fi
systemctl start homeassistant systemctl start homeassistant
sleep 2 sleep 5
msg_ok "Started Home Assistant" msg_ok "Started Home Assistant"
msg_ok "Update Successful" msg_ok "Update Successful"
echo -e "\n Go to http://${IP}:8123 \n" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
exit exit
fi fi
if [ "$UPD" == "2" ]; then if [ "$UPD" == "2" ]; then
msg_info "Installing Home Assistant Community Store (HACS)" msg_info "Installing Home Assistant Community Store (HACS)"
$STD apt update $STD apt update
$STD apt install -y unzip $STD apt install -y unzip
cd .homeassistant cd /root/.homeassistant
$STD bash <(curl -fsSL https://get.hacs.xyz) $STD bash <(curl -fsSL https://get.hacs.xyz)
msg_ok "Installed Home Assistant Community Store (HACS)" msg_ok "Installed Home Assistant Community Store (HACS)"
echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n" echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n"
exit exit
fi fi
if [ "$UPD" == "3" ]; then if [ "$UPD" == "3" ]; then
set +Eeuo pipefail set +Eeuo pipefail
read -r -p "Would you like to use No Authentication? <y/N> " prompt read -r -p "Would you like to use No Authentication? <y/N> " prompt

View File

@ -46,29 +46,33 @@ $STD apt-get install -y \
pkg-config pkg-config
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_uv
msg_info "Setup Python3" msg_info "Setup Python3"
$STD apt-get update
$STD rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
$STD apt-get remove --purge -y python3.12 python3.12-dev python3.12-venv
$STD apt-get install -y \ $STD apt-get install -y \
python3.13 \ python3.13 \
python3-pip \
python3.13-dev \ python3.13-dev \
python3.13-venv python3.13-venv
ln -sf /usr/bin/python3.13 /usr/bin/python3
msg_ok "Setup Python3" msg_ok "Setup Python3"
msg_info "Preparing Python 3.13 for uv"
$STD uv python install 3.13
UV_PYTHON=$(uv python list | awk '/3\.13\.[0-9]+.*\/root\/.local/ {print $2; exit}')
if [[ -z "$UV_PYTHON" ]]; then
msg_error "No local Python 3.13 found via uv"
exit 1
fi
msg_ok "Prepared Python 3.13"
msg_info "Setting up Home Assistant-Core environment" msg_info "Setting up Home Assistant-Core environment"
mkdir /srv/homeassistant rm -rf /srv/homeassistant
mkdir -p /srv/homeassistant
cd /srv/homeassistant cd /srv/homeassistant
python3 -m venv . $STD uv venv .venv --python "$UV_PYTHON"
source bin/activate source .venv/bin/activate
msg_ok "Created virtual environment" msg_ok "Created virtual environment"
msg_info "Installing Home Assistant-Core" msg_info "Installing Home Assistant-Core"
$STD python3 -m pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal $STD uv pip install homeassistant mysqlclient psycopg2-binary isal webrtcvad wheel
mkdir -p /root/.homeassistant mkdir -p /root/.homeassistant
msg_ok "Installed Home Assistant-Core" msg_ok "Installed Home Assistant-Core"
@ -77,16 +81,19 @@ cat <<EOF >/etc/systemd/system/homeassistant.service
[Unit] [Unit]
Description=Home Assistant Description=Home Assistant
After=network-online.target After=network-online.target
[Service] [Service]
Type=simple Type=simple
WorkingDirectory=/root/.homeassistant WorkingDirectory=/root/.homeassistant
Environment="PATH=/srv/homeassistant/bin:/usr/local/bin:/usr/bin:/usr/local/bin/uv" Environment="PATH=/srv/homeassistant/.venv/bin:/usr/local/bin:/usr/bin"
ExecStart=/srv/homeassistant/bin/python3 -m homeassistant --config /root/.homeassistant ExecStart=/srv/homeassistant/.venv/bin/python3 -m homeassistant --config /root/.homeassistant
Restart=always Restart=always
RestartForceExitStatus=100 RestartForceExitStatus=100
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now homeassistant systemctl enable -q --now homeassistant
msg_ok "Created Service" msg_ok "Created Service"