From 56ab6a6cb8c5ed3f93a9c67e57b0b4ffe9ba828f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:45:41 +0100 Subject: [PATCH] Refactor: Homepage (#10950) --- ct/homepage.sh | 33 +++++++++++++++--------------- frontend/public/json/homepage.json | 2 +- install/homepage-install.sh | 17 +++++++-------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index 142e584d5..19ed1648a 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}" var_ram="${var_ram:-4096}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" -var_version="${var_version:-12}" +var_version="${var_version:-13}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -28,6 +28,7 @@ function update_script() { exit fi + import_local_ip NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs if ! command -v jq &>/dev/null; then $STD msg_info "Installing jq..." @@ -37,16 +38,18 @@ function update_script() { exit } fi - LOCAL_IP=$(hostname -I | awk '{print $1}') - RELEASE=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Updating Homepage to v${RELEASE} (Patience)" + + if check_for_gh_release "homepage" "gethomepage/homepage"; then + msg_info "Stopping service" systemctl stop homepage - curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz") - tar -xzf v${RELEASE}.tar.gz - rm -rf v${RELEASE}.tar.gz - cp -r homepage-${RELEASE}/* /opt/homepage/ - rm -rf homepage-${RELEASE} + msg_ok "Stopped service" + + cp /opt/homepage/.env /opt/homepage.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball" + mv /opt/homepage.env /opt/homepage + + msg_info "Updating Homepage (Patience)" + RELEASE=$(get_latest_github_release "gethomepage/homepage") cd /opt/homepage $STD pnpm install $STD pnpm update --no-save caniuse-lite @@ -55,14 +58,12 @@ function update_script() { export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | jq -r '.published_at') export NEXT_TELEMETRY_DISABLED=1 $STD pnpm build - if [[ ! -f /opt/homepage/.env ]]; then - echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env - fi + msg_ok "Updated Homepage" + + msg_info "Starting service" systemctl start homepage - echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Started service" msg_ok "Updated successfully!" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit } diff --git a/frontend/public/json/homepage.json b/frontend/public/json/homepage.json index e7361cd84..89aca036a 100644 --- a/frontend/public/json/homepage.json +++ b/frontend/public/json/homepage.json @@ -23,7 +23,7 @@ "ram": 4096, "hdd": 6, "os": "debian", - "version": "12" + "version": "13" } } ], diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 1b5b0687a..86a474459 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -18,16 +18,12 @@ $STD apt-get install -y jq msg_ok "Installed Dependencies" NODE_VERSION="22" NODE_MODULE="pnpm@latest" setup_nodejs +import_local_ip +fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball" +RELEASE=$(get_latest_github_release "gethomepage/homepage") -LOCAL_IP=$(hostname -I | awk '{print $1}') -RELEASE=$(curl -fsSL https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -msg_info "Installing Homepage v${RELEASE} (Patience)" -curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz" -$STD tar -xzf v${RELEASE}.tar.gz -rm -rf v${RELEASE}.tar.gz +msg_info "Installing Homepage (Patience)" mkdir -p /opt/homepage/config -mv homepage-${RELEASE}/* /opt/homepage -rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install @@ -37,8 +33,7 @@ export NEXT_PUBLIC_BUILDTIME=$(curl -fsSL https://api.github.com/repos/gethomepa export NEXT_TELEMETRY_DISABLED=1 $STD pnpm build echo "HOMEPAGE_ALLOWED_HOSTS=localhost:3000,${LOCAL_IP}:3000" >/opt/homepage/.env -echo "${RELEASE}" >/opt/${APPLICATION}_version.txt -msg_ok "Installed Homepage v${RELEASE}" +msg_ok "Installed Homepage" msg_info "Creating Service" cat </etc/systemd/system/homepage.service @@ -46,6 +41,7 @@ cat </etc/systemd/system/homepage.service Description=Homepage After=network.target StartLimitIntervalSec=0 + [Service] Type=simple Restart=always @@ -53,6 +49,7 @@ RestartSec=1 User=root WorkingDirectory=/opt/homepage/ ExecStart=pnpm start + [Install] WantedBy=multi-user.target EOF