From 901e0eb503742e0085533690955759f103d4f9d0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 9 May 2025 09:56:51 +0200 Subject: [PATCH] testing core --- ct/homeassistant-core.sh | 134 ++++++++++++++++++++++++++ install/homeassistant-core-install.sh | 99 +++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 ct/homeassistant-core.sh create mode 100644 install/homeassistant-core-install.sh diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh new file mode 100644 index 0000000..41f58d9 --- /dev/null +++ b/ct/homeassistant-core.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.home-assistant.io/ + +APP="Home Assistant-Core" +var_tags="${var_tags:-automation;smarthome}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-10}" +var_os="${var_os:-ubuntu}" +var_version="${var_version:-24.10}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + + # OS Check + if ! lsb_release -d | grep -q "Ubuntu 24.10"; then + msg_error "Wrong OS detected. This script only supports Ubuntu 24.10." + msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549" + exit 1 + fi + check_container_storage + check_container_resources + if [[ ! -d /srv/homeassistant ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + PY=$(ls /srv/homeassistant/lib/) + 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 \ + "1" "Update Core" ON \ + "2" "Install HACS" OFF \ + "3" "Install FileBrowser" OFF \ + 3>&1 1>&2 2>&3) + if [ "$UPD" == "1" ]; then + if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SELECT BRANCH" --yesno "Use Beta Branch?" 10 58); then + clear + header_info + echo -e "${GN}Updating to Beta Version${CL}" + BR="--pre " + else + clear + header_info + echo -e "${GN}Updating to Stable Version${CL}" + BR="" + fi + msg_info "Stopping Home Assistant" + systemctl stop homeassistant + msg_ok "Stopped Home Assistant" + + msg_info "Updating Home Assistant" + source /srv/homeassistant/bin/activate + $STD pip install ${BR}--upgrade homeassistant + msg_ok "Updated Home Assistant" + + msg_info "Starting Home Assistant" + systemctl start homeassistant + sleep 2 + msg_ok "Started Home Assistant" + msg_ok "Update Successful" + echo -e "\n Go to http://${IP}:8123 \n" + exit + fi + if [ "$UPD" == "2" ]; then + msg_info "Installing Home Assistant Community Store (HACS)" + $STD apt update + $STD apt install -y unzip + cd .homeassistant + $STD bash <(curl -fsSL https://get.hacs.xyz) + msg_ok "Installed Home Assistant Community Store (HACS)" + echo -e "\n Reboot Home Assistant and clear browser cache then Add HACS integration.\n" + exit + fi + if [ "$UPD" == "3" ]; then + set +Eeuo pipefail + read -r -p "Would you like to use No Authentication? " prompt + msg_info "Installing FileBrowser" + RELEASE=$(curl -fsSL https://api.github.com/repos/filebrowser/filebrowser/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g' | sed 's/tag_name: //g') + $STD curl -fsSL https://github.com/filebrowser/filebrowser/releases/download/$RELEASE/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin + + if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + $STD filebrowser config init -a '0.0.0.0' + $STD filebrowser config set -a '0.0.0.0' + $STD filebrowser config set --auth.method=noauth + $STD filebrowser users add ID 1 --perm.admin + else + $STD filebrowser config init -a '0.0.0.0' + $STD filebrowser config set -a '0.0.0.0' + $STD filebrowser users add admin helper-scripts.com --perm.admin + fi + msg_ok "Installed FileBrowser" + + msg_info "Creating Service" + cat </etc/systemd/system/filebrowser.service +[Unit] +Description=Filebrowser +After=network-online.target + +[Service] +User=root +WorkingDirectory=/root/ +ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant + +[Install] +WantedBy=default.target +EOF + + systemctl enable --now -q filebrowser.service + msg_ok "Created Service" + + msg_ok "Completed Successfully!\n" + echo -e "FileBrowser should be reachable by going to the following URL. + ${BL}http://$IP:8080${CL} admin|helper-scripts.com\n" + exit + fi +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}" \ No newline at end of file diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh new file mode 100644 index 0000000..c725e59 --- /dev/null +++ b/install/homeassistant-core-install.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 tteck +# Author: tteck (tteckster) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.home-assistant.io/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (Patience)" +$STD apt-get install -y \ + git \ + gnupg \ + ca-certificates \ + bluez \ + libtiff6 \ + tzdata \ + libffi-dev \ + libssl-dev \ + libjpeg-dev \ + zlib1g-dev \ + autoconf \ + build-essential \ + libopenjp2-7 \ + libturbojpeg0-dev \ + ffmpeg \ + liblapack3 \ + liblapack-dev \ + dbus-broker \ + libpcap-dev \ + libavdevice-dev \ + libavformat-dev \ + libavcodec-dev \ + libavutil-dev \ + libavfilter-dev \ + libmariadb-dev-compat \ + libatlas-base-dev \ + software-properties-common \ + libmariadb-dev \ + pkg-config +msg_ok "Installed Dependencies" + +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 \ + python3.13 \ + python3-pip \ + python3.13-dev \ + python3.13-venv + +ln -sf /usr/bin/python3.13 /usr/bin/python3 +msg_ok "Setup Python3" + +msg_info "Setting up Home Assistant-Core environment" +mkdir /srv/homeassistant +cd /srv/homeassistant +python3 -m venv . +source bin/activate +msg_ok "Created virtual environment" + +msg_info "Installing Home Assistant-Core" +$STD python3 -m pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal +mkdir -p /root/.homeassistant +msg_ok "Installed Home Assistant-Core" + +msg_info "Creating Service" +cat </etc/systemd/system/homeassistant.service +[Unit] +Description=Home Assistant +After=network-online.target +[Service] +Type=simple +WorkingDirectory=/root/.homeassistant +Environment="PATH=/srv/homeassistant/bin:/usr/local/bin:/usr/bin:/usr/local/bin/uv" +ExecStart=/srv/homeassistant/bin/python3 -m homeassistant --config /root/.homeassistant +Restart=always +RestartForceExitStatus=100 +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now homeassistant +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned"