diff --git a/ct/ezbookkeeping.sh b/ct/ezbookkeeping.sh index 4035142d8..8f710000b 100644 --- a/ct/ezbookkeeping.sh +++ b/ct/ezbookkeeping.sh @@ -35,21 +35,11 @@ function update_script() { systemctl stop ezbookkeeping msg_ok "Stopped Service" - msg_info "Backing up configuration" - mkdir -p /opt/ezbookkeeping-backup - cp /opt/ezbookkeeping/conf/ezbookkeeping.ini /opt/ezbookkeeping-backup/ - cp -r /opt/ezbookkeeping/data /opt/ezbookkeeping-backup/data/ - cp -r /opt/ezbookkeeping/storage /opt/ezbookkeeping-backup/storage/ - msg_ok "Backed up configuration" + create_backup /opt/ezbookkeeping/data /opt/ezbookkeeping/storage CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-$(arch_resolve).tar.gz" + restore_backup - msg_info "Restoring configuration" - cp -rf /opt/ezbookkeeping-backup/ezbookkeeping.ini /opt/ezbookkeeping/conf/ - cp -rf /opt/ezbookkeeping-backup/data/. /opt/ezbookkeeping/data/ - cp -rf /opt/ezbookkeeping-backup/storage/. /opt/ezbookkeeping/storage/ - rm -rf /opt/ezbookkeeping-backup - msg_ok "Restored configuration" msg_info "Starting Service" systemctl start ezbookkeeping diff --git a/ct/fireshare.sh b/ct/fireshare.sh index 296cb6c01..34d2836e2 100644 --- a/ct/fireshare.sh +++ b/ct/fireshare.sh @@ -35,9 +35,10 @@ function update_script() { systemctl stop fireshare msg_ok "Stopped Service" - mv /opt/fireshare/fireshare.env /opt + create_backup /opt/fireshare/fireshare.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fireshare" "ShaneIsrael/fireshare" "tarball" - mv /opt/fireshare.env /opt/fireshare + restore_backup rm -f /usr/local/bin/fireshare msg_info "Updating Fireshare" diff --git a/ct/flatnotes.sh b/ct/flatnotes.sh index 3f48dc326..6cd59f764 100644 --- a/ct/flatnotes.sh +++ b/ct/flatnotes.sh @@ -34,12 +34,10 @@ function update_script() { systemctl stop flatnotes msg_ok "Stopped Service" - msg_info "Backing up Configuration and Data" - cp /opt/flatnotes/.env /opt/flatnotes.env - cp -r /opt/flatnotes/data /opt/flatnotes_data_backup - msg_ok "Backed up Configuration and Data" + create_backup /opt/flatnotes/data fetch_and_deploy_gh_release "flatnotes" "dullage/flatnotes" "tarball" + restore_backup msg_info "Updating Flatnotes" cd /opt/flatnotes/client @@ -52,12 +50,6 @@ function update_script() { $STD /usr/local/bin/uv sync msg_ok "Updated Flatnotes" - msg_info "Restoring Configuration and Data" - cp /opt/flatnotes.env /opt/flatnotes/.env - cp -r /opt/flatnotes_data_backup/. /opt/flatnotes/data - rm -f /opt/flatnotes.env - rm -r /opt/flatnotes_data_backup - msg_ok "Restored Configuration and Data" msg_info "Starting Service" systemctl start flatnotes diff --git a/ct/freshrss.sh b/ct/freshrss.sh index 096da271d..f1894ea0e 100644 --- a/ct/freshrss.sh +++ b/ct/freshrss.sh @@ -41,20 +41,11 @@ function update_script() { systemctl stop apache2 msg_ok "Stopped Apache2" - msg_info "Backing up FreshRSS" - mv /opt/freshrss /opt/freshrss-backup - msg_ok "Backup Created" + create_backup /opt/freshrss /opt/freshrss/data /opt/freshrss/extensions fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS" "tarball" + restore_backup - msg_info "Restoring data and configuration" - if [[ -d /opt/freshrss-backup/data ]]; then - cp -a /opt/freshrss-backup/data/. /opt/freshrss/data/ - fi - if [[ -d /opt/freshrss-backup/extensions ]]; then - cp -a /opt/freshrss-backup/extensions/. /opt/freshrss/extensions/ - fi - msg_ok "Data Restored" msg_info "Setting permissions" chown -R www-data:www-data /opt/freshrss @@ -66,9 +57,6 @@ function update_script() { systemctl start apache2 msg_ok "Started Apache2" - msg_info "Cleaning up backup" - rm -rf /opt/freshrss-backup - msg_ok "Cleaned up backup" msg_ok "Updated successfully!" fi exit diff --git a/ct/ghostfolio.sh b/ct/ghostfolio.sh index 919099fae..70c0bdc1e 100644 --- a/ct/ghostfolio.sh +++ b/ct/ghostfolio.sh @@ -35,19 +35,12 @@ function update_script() { systemctl stop ghostfolio msg_ok "Stopped Service" - msg_info "Creating Backup" - tar -czf "/opt/ghostfolio_backup_$(date +%F).tar.gz" \ - -C /opt \ - --exclude="ghostfolio/node_modules" \ - --exclude="ghostfolio/dist" \ - ghostfolio - mv /opt/ghostfolio/.env /opt/env.backup - msg_ok "Backup Created" + create_backup /opt/ghostfolio/.env CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ghostfolio" "ghostfolio/ghostfolio" "tarball" "latest" "/opt/ghostfolio" + restore_backup msg_info "Updating Ghostfolio" - mv /opt/env.backup /opt/ghostfolio/.env sed -i -E '/^DATABASE_URL=/ s/[?&]sslmode=prefer//g' /opt/ghostfolio/.env cd /opt/ghostfolio $STD npm ci diff --git a/ct/github-runner.sh b/ct/github-runner.sh index 245270c20..38684da55 100644 --- a/ct/github-runner.sh +++ b/ct/github-runner.sh @@ -38,22 +38,11 @@ function update_script() { systemctl stop actions-runner msg_ok "Stopped Service" - msg_info "Backing up runner configuration" - BACKUP_DIR="/opt/actions-runner.backup" - mkdir -p "$BACKUP_DIR" - for f in .runner .credentials .credentials_rsaparams .env .path; do - [[ -f /opt/actions-runner/$f ]] && cp -a /opt/actions-runner/$f "$BACKUP_DIR/" - done - msg_ok "Backed up configuration" + create_backup /opt/actions-runner/$f CLEAN_INSTALL=1 fetch_and_deploy_gh_release "actions-runner" "actions/runner" "prebuild" "latest" "/opt/actions-runner" "actions-runner-linux-x64-*.tar.gz" + restore_backup - msg_info "Restoring runner configuration" - for f in .runner .credentials .credentials_rsaparams .env .path; do - [[ -f "$BACKUP_DIR/$f" ]] && cp -a "$BACKUP_DIR/$f" /opt/actions-runner/ - done - rm -rf "$BACKUP_DIR" - msg_ok "Restored configuration" msg_info "Starting Service" systemctl start actions-runner diff --git a/ct/gogs.sh b/ct/gogs.sh index 6342738b2..f4bd37ef9 100644 --- a/ct/gogs.sh +++ b/ct/gogs.sh @@ -35,18 +35,11 @@ function update_script() { systemctl stop gogs msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/gogs/custom /opt/gogs_custom_backup - cp -r /opt/gogs/data /opt/gogs_data_backup - msg_ok "Backed up Data" + create_backup /opt/gogs/custom /opt/gogs/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gogs" "gogs/gogs" "prebuild" "latest" "/opt/gogs" "gogs_*_linux_amd64.tar.gz" + restore_backup - msg_info "Restoring Data" - cp -r /opt/gogs_custom_backup/. /opt/gogs/custom - cp -r /opt/gogs_data_backup/. /opt/gogs/data - rm -rf /opt/gogs_custom_backup /opt/gogs_data_backup - msg_ok "Restored Data" msg_info "Starting Service" systemctl start gogs diff --git a/ct/healthchecks.sh b/ct/healthchecks.sh index b3704ca60..98aac7228 100644 --- a/ct/healthchecks.sh +++ b/ct/healthchecks.sh @@ -35,12 +35,10 @@ function update_script() { systemctl stop healthchecks msg_ok "Stopped Services" - msg_info "Backing up existing installation" - BACKUP="/opt/healthchecks-backup-$(date +%F-%H%M)" - cp -a /opt/healthchecks "$BACKUP" - msg_ok "Backup created at $BACKUP" + create_backup /opt/healthchecks fetch_and_deploy_gh_release "healthchecks" "healthchecks/healthchecks" "tarball" + restore_backup cd /opt/healthchecks if [[ -d venv ]]; then diff --git a/ct/homelable.sh b/ct/homelable.sh index 8348cd529..380a5d9f3 100644 --- a/ct/homelable.sh +++ b/ct/homelable.sh @@ -35,15 +35,10 @@ function update_script() { systemctl stop homelable msg_ok "Stopped Service" - msg_info "Backing up Configuration and Data" - cp /opt/homelable/backend/.env /opt/homelable.env.bak - cp -r /opt/homelable/data /opt/homelable_data_bak - if [[ -f /opt/homelable/mcp/.env ]]; then - cp -a /opt/homelable/mcp/.env /opt/homelable-mcp.env.bak - fi - msg_ok "Backed up Configuration and Data" + create_backup /opt/homelable/backend/.env /opt/homelable/data /opt/homelable/mcp/.env CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homelable" "Pouzor/homelable" "tarball" "latest" "/opt/homelable" + restore_backup msg_info "Updating Python Dependencies" cd /opt/homelable/backend @@ -57,17 +52,9 @@ function update_script() { $STD npm run build msg_ok "Rebuilt Frontend" - msg_info "Restoring Configuration and Data" - cp /opt/homelable.env.bak /opt/homelable/backend/.env - cp -r /opt/homelable_data_bak/. /opt/homelable/data/ - rm -f /opt/homelable.env.bak - rm -rf /opt/homelable_data_bak - msg_ok "Restored Configuration and Data" - if [[ -f /opt/homelable-mcp.env.bak ]]; then + if [[ -f /opt/homelable/mcp/.env ]]; then msg_info "Restoring MCP Server" - cp -a /opt/homelable-mcp.env.bak /opt/homelable/mcp/.env - rm -f /opt/homelable-mcp.env.bak MCP_OWNER=$(stat -c '%U' /opt/homelable/mcp/.env) cd /opt/homelable/mcp $STD uv venv --clear /opt/homelable/mcp/.venv diff --git a/ct/homepage.sh b/ct/homepage.sh index eea6599de..ed8d048f9 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -37,20 +37,10 @@ function update_script() { systemctl stop homepage msg_ok "Stopped service" - msg_info "Creating Backup" - cp /opt/homepage/.env /opt/homepage.env - cp -r /opt/homepage/config /opt/homepage_config_backup - [[ -d /opt/homepage/public/images ]] && cp -r /opt/homepage/public/images /opt/homepage_images_backup - [[ -d /opt/homepage/public/icons ]] && cp -r /opt/homepage/public/icons /opt/homepage_icons_backup - msg_ok "Created Backup" - + create_backup /opt/homepage/.env /opt/homepage/config /opt/homepage/public/images /opt/homepage/public/icons + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homepage" "gethomepage/homepage" "tarball" - - msg_info "Restoring Backup" - mv /opt/homepage.env /opt/homepage - rm -rf /opt/homepage/config - mv /opt/homepage_config_backup /opt/homepage/config - msg_ok "Restored Backup" + restore_backup msg_info "Updating Homepage (Patience)" RELEASE=$(get_latest_github_release "gethomepage/homepage") @@ -63,8 +53,6 @@ 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 - [[ -d /opt/homepage_images_backup ]] && mv /opt/homepage_images_backup /opt/homepage/public/images - [[ -d /opt/homepage_icons_backup ]] && mv /opt/homepage_icons_backup /opt/homepage/public/icons msg_ok "Updated Homepage" msg_info "Starting service" diff --git a/ct/hortusfox.sh b/ct/hortusfox.sh index e754255a0..d1ada3958 100644 --- a/ct/hortusfox.sh +++ b/ct/hortusfox.sh @@ -34,24 +34,19 @@ function update_script() { systemctl stop apache2 msg_ok "Stopped Service" - msg_info "Backing up current HortusFox installation" - cd /opt - mv /opt/hortusfox/ /opt/hortusfox-backup - msg_ok "Backed up current HortusFox installation" + create_backup /opt/hortusfox/.env /opt/hortusfox/public/img CLEAN_INSTALL=1 fetch_and_deploy_gh_release "hortusfox" "danielbrendel/hortusfox-web" "tarball" + restore_backup msg_info "Updating HortusFox" cd /opt/hortusfox - cp /opt/hortusfox-backup/.env /opt/hortusfox/.env - cp -a /opt/hortusfox-backup/public/img/. /opt/hortusfox/public/img/ export COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader $STD php asatru migrate:upgrade $STD php asatru plants:attributes $STD php asatru calendar:classes chown -R www-data:www-data /opt/hortusfox - rm -r /opt/hortusfox-backup msg_ok "Updated HortusFox" msg_info "Starting Service" diff --git a/ct/immichframe.sh b/ct/immichframe.sh index c4da9fe1e..e8366cef0 100644 --- a/ct/immichframe.sh +++ b/ct/immichframe.sh @@ -35,11 +35,10 @@ function update_script() { systemctl stop immichframe msg_ok "Stopped Service" - msg_info "Backing up Configuration" - cp -r /opt/immichframe/Config /tmp/immichframe_config.bak - msg_ok "Backed up Configuration" + create_backup /opt/immichframe/Config CLEAN_INSTALL=1 fetch_and_deploy_gh_release "immichframe" "immichFrame/ImmichFrame" "tarball" "latest" "/tmp/immichframe" + restore_backup msg_info "Setting up ImmichFrame" cd /tmp/immichframe @@ -57,11 +56,6 @@ function update_script() { rm -rf /tmp/immichframe msg_ok "Setup ImmichFrame" - msg_info "Restoring Configuration" - cp -r /tmp/immichframe_config.bak/* /opt/immichframe/Config/ - rm -rf /tmp/immichframe_config.bak - chown -R immichframe:immichframe /opt/immichframe - msg_ok "Restored Configuration" msg_info "Starting Service" diff --git a/ct/invoiceninja.sh b/ct/invoiceninja.sh index 79fcc2500..b362314b6 100644 --- a/ct/invoiceninja.sh +++ b/ct/invoiceninja.sh @@ -35,21 +35,14 @@ function update_script() { systemctl stop supervisor nginx php8.4-fpm msg_ok "Stopped Services" - msg_info "Creating Backup" - mkdir -p /tmp/invoiceninja_backup - cp /opt/invoiceninja/.env /tmp/invoiceninja_backup/ + create_backup /opt/invoiceninja/storage /opt/invoiceninja/public/storage cp -r /opt/invoiceninja/storage /tmp/invoiceninja_backup/ 2>/dev/null || true cp -r /opt/invoiceninja/public/storage /tmp/invoiceninja_backup/public_storage 2>/dev/null || true msg_ok "Created Backup" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz" + restore_backup - msg_info "Restoring Data" - cp /tmp/invoiceninja_backup/.env /opt/invoiceninja/ - cp -r /tmp/invoiceninja_backup/storage/* /opt/invoiceninja/storage/ 2>/dev/null || true - cp -r /tmp/invoiceninja_backup/public_storage/* /opt/invoiceninja/public/storage/ 2>/dev/null || true - rm -rf /tmp/invoiceninja_backup - msg_ok "Restored Data" msg_info "Running Migrations" cd /opt/invoiceninja diff --git a/ct/invoiceshelf.sh b/ct/invoiceshelf.sh index 15fa2c368..c613a4f97 100644 --- a/ct/invoiceshelf.sh +++ b/ct/invoiceshelf.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop caddy msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/invoiceshelf/.env /opt/invoiceshelf.env.bak - cp -r /opt/invoiceshelf/storage /opt/invoiceshelf_storage_backup - msg_ok "Backed up Data" + create_backup /opt/invoiceshelf/storage CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceshelf" "InvoiceShelf/InvoiceShelf" "tarball" + restore_backup - msg_info "Restoring Data" - cp /opt/invoiceshelf.env.bak /opt/invoiceshelf/.env - rm -f /opt/invoiceshelf.env.bak - cp -r /opt/invoiceshelf_storage_backup/. /opt/invoiceshelf/storage - rm -rf /opt/invoiceshelf_storage_backup - msg_ok "Restored Data" msg_info "Updating Application" cd /opt/invoiceshelf diff --git a/ct/jotty.sh b/ct/jotty.sh index 74267afda..400d30d0c 100644 --- a/ct/jotty.sh +++ b/ct/jotty.sh @@ -35,20 +35,12 @@ function update_script() { systemctl stop jotty msg_ok "Stopped Service" - msg_info "Backing up configuration & data" - cp /opt/jotty/.env /opt/app.env - [[ -d /opt/jotty/data ]] && mv /opt/jotty/data /opt/data - [[ -d /opt/jotty/config ]] && mv /opt/jotty/config /opt/config - msg_ok "Backed up configuration & data" + create_backup /opt/jotty/data /opt/jotty/config NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jotty" "fccview/jotty" "prebuild" "latest" "/opt/jotty" "jotty_*_prebuild.tar.gz" + restore_backup - msg_info "Restoring configuration & data" - mv /opt/app.env /opt/jotty/.env - [[ -d /opt/data ]] && mv /opt/data /opt/jotty/data - [[ -d /opt/config ]] && cp -a /opt/config/* /opt/jotty/config && rm -rf /opt/config - msg_ok "Restored configuration & data" msg_info "Starting Service" systemctl start jotty diff --git a/ct/koel.sh b/ct/koel.sh index 6936266c6..544d398c6 100644 --- a/ct/koel.sh +++ b/ct/koel.sh @@ -35,21 +35,14 @@ function update_script() { systemctl stop nginx php8.4-fpm msg_ok "Stopped Services" - msg_info "Creating Backup" - mkdir -p /tmp/koel_backup - cp /opt/koel/.env /tmp/koel_backup/ + create_backup /opt/koel/storage /opt/koel/public/img cp -r /opt/koel/storage /tmp/koel_backup/ 2>/dev/null || true cp -r /opt/koel/public/img /tmp/koel_backup/ 2>/dev/null || true msg_ok "Created Backup" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "koel" "koel/koel" "prebuild" "latest" "/opt/koel" "koel-*.tar.gz" + restore_backup - msg_info "Restoring Data" - cp /tmp/koel_backup/.env /opt/koel/ - cp -r /tmp/koel_backup/storage/* /opt/koel/storage/ 2>/dev/null || true - cp -r /tmp/koel_backup/img/* /opt/koel/public/img/ 2>/dev/null || true - rm -rf /tmp/koel_backup - msg_ok "Restored Data" msg_info "Running Migrations" cd /opt/koel diff --git a/ct/leantime.sh b/ct/leantime.sh index 2a0404078..f582fbce0 100644 --- a/ct/leantime.sh +++ b/ct/leantime.sh @@ -31,22 +31,13 @@ function update_script() { fi setup_mariadb if check_for_gh_release "leantime" "Leantime/leantime"; then - msg_info "Creating Backup" - mariadb-dump leantime >"/opt/leantime_db_backup_$(date +%F).sql" - tar -czf "/opt/leantime_backup_$(date +%F).tar.gz" "/opt/leantime" - mv /opt/leantime /opt/leantime_bak - msg_ok "Backup Created" + create_backup /opt/leantime fetch_and_deploy_gh_release "leantime" "Leantime/leantime" "prebuild" "latest" "/opt/leantime" Leantime*.tar.gz + restore_backup - msg_info "Restoring Config & Permissions" - mv /opt/leantime_bak/config/.env /opt/leantime/config/.env - chown -R www-data:www-data "/opt/leantime" - chmod -R 750 "/opt/leantime" - msg_ok "Restored Config & Permissions" msg_info "Removing Backup" - rm -rf /opt/leantime_bak msg_ok "Removed Backup" msg_ok "Updated successfully!" fi diff --git a/ct/linkding.sh b/ct/linkding.sh index 09119791e..93aab1b4a 100644 --- a/ct/linkding.sh +++ b/ct/linkding.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop nginx linkding linkding-tasks msg_ok "Stopped Services" - msg_info "Backing up Data" - cp -r /opt/linkding/data /opt/linkding_data_backup - cp /opt/linkding/.env /opt/linkding_env_backup - msg_ok "Backed up Data" + create_backup /opt/linkding/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "linkding" "sissbruecker/linkding" "tarball" + restore_backup - msg_info "Restoring Data" - cp -r /opt/linkding_data_backup/. /opt/linkding/data - cp /opt/linkding_env_backup /opt/linkding/.env - rm -rf /opt/linkding_data_backup /opt/linkding_env_backup - ln -sf /usr/lib/x86_64-linux-gnu/mod_icu.so /opt/linkding/libicu.so - msg_ok "Restored Data" msg_info "Updating LinkDing" cd /opt/linkding diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 59eb32c04..865be4244 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -35,13 +35,10 @@ function update_script() { RUST_CRATES="monolith" setup_rust - msg_info "Backing up data" - mv /opt/linkwarden/.env /opt/.env - [ -d /opt/linkwarden/data ] && mv /opt/linkwarden/data /opt/data.bak - rm -rf /opt/linkwarden - msg_ok "Backed up data" + create_backup /opt/linkwarden/.env /opt/linkwarden/data fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden" "tarball" + restore_backup msg_info "Updating Linkwarden" cd /opt/linkwarden @@ -60,11 +57,9 @@ function update_script() { $STD yarn $STD npx playwright install-deps $STD npx playwright install - mv /opt/.env /opt/linkwarden/.env $STD yarn prisma:generate $STD yarn web:build $STD yarn prisma:deploy - [ -d /opt/data.bak ] && mv /opt/data.bak /opt/linkwarden/data rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache rm -rf /root/.cache/yarn rm -rf /opt/linkwarden/.next/cache diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 11483bf46..e8661a695 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -33,17 +33,13 @@ function update_script() { systemctl stop listmonk msg_ok "Stopped Service" - msg_info "Backing up data" - mv /opt/listmonk/ /opt/listmonk-backup - msg_ok "Backed up data" + create_backup /opt/listmonk/config.toml /opt/listmonk/uploads fetch_and_deploy_gh_release "listmonk" "knadh/listmonk" "prebuild" "latest" "/opt/listmonk" "listmonk*linux_amd64.tar.gz" + restore_backup msg_info "Configuring listmonk" - mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml - mv /opt/listmonk-backup/uploads /opt/listmonk/uploads $STD /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml - rm -rf /opt/listmonk-backup/ msg_ok "Configured listmonk" msg_info "Starting Service" diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index ad8864379..78b7c364a 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -33,23 +33,10 @@ function update_script() { systemctl stop lubelogger msg_ok "Stopped Service" - msg_info "Backing up data" - mkdir -p /tmp/lubeloggerData/data - cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json - cp -r /opt/lubelogger/data/ /tmp/lubeloggerData/ - - # Lubelogger has moved multiples folders to the 'data' folder, and we need to move them before the update to keep the user data - # Github Discussion: https://github.com/hargata/lubelog/discussions/787 - [[ -e /opt/lubelogger/config ]] && cp -r /opt/lubelogger/config /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/translations ]] && cp -r /opt/lubelogger/wwwroot/translations /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/documents ]] && cp -r /opt/lubelogger/wwwroot/documents /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/images ]] && cp -r /opt/lubelogger/wwwroot/images /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/data/ - [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/ - rm -rf /opt/lubelogger - msg_ok "Backed up data" + create_backup /opt/lubelogger/data/ fetch_and_deploy_gh_release "lubelogger" "hargata/lubelog" "prebuild" "latest" "/opt/lubelogger" "LubeLogger*linux_x64.zip" + restore_backup msg_info "Configuring LubeLogger" chmod 700 /opt/lubelogger/CarCareTracker diff --git a/ct/lychee.sh b/ct/lychee.sh index e5d630290..487ed9fae 100644 --- a/ct/lychee.sh +++ b/ct/lychee.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop caddy msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/lychee/.env /opt/lychee.env.bak - cp -r /opt/lychee/storage /opt/lychee_storage_backup - msg_ok "Backed up Data" + create_backup /opt/lychee/storage CLEAN_INSTALL=1 fetch_and_deploy_gh_release "lychee" "LycheeOrg/Lychee" "prebuild" "latest" "/opt/lychee" "Lychee.zip" + restore_backup - msg_info "Restoring Data" - cp /opt/lychee.env.bak /opt/lychee/.env - rm -f /opt/lychee.env.bak - cp -r /opt/lychee_storage_backup/. /opt/lychee/storage - rm -rf /opt/lychee_storage_backup - msg_ok "Restored Data" msg_info "Updating Application" cd /opt/lychee diff --git a/ct/mafl.sh b/ct/mafl.sh index 22807df7c..b432b3c47 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -33,19 +33,15 @@ function update_script() { systemctl stop mafl msg_ok "Service stopped" - msg_info "Backing up data" - mkdir -p /opt/mafl-backup/data - mv /opt/mafl/data /opt/mafl-backup/data - rm -rf /opt/mafl - msg_ok "Backup complete" + create_backup /opt/mafl/data - fetch_and_deploy_gh_release "mafl" "hywax/mafl" "tarball" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mafl" "hywax/mafl" "tarball" + restore_backup msg_info "Updating Mafl" cd /opt/mafl $STD yarn install $STD yarn build - mv /opt/mafl-backup/data /opt/mafl/data msg_ok "Mafl updated" msg_info "Starting Service" diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index ad5f92787..80f013b82 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -35,26 +35,15 @@ function update_script() { NODE_VERSION="24" setup_nodejs - msg_info "Backing up data" - rm -rf /opt/magicmirror-backup - mkdir /opt/magicmirror-backup - cp /opt/magicmirror/config/config.js /opt/magicmirror-backup - if [[ -f /opt/magicmirror/css/custom.css ]]; then - cp /opt/magicmirror/css/custom.css /opt/magicmirror-backup - fi - cp -r /opt/magicmirror/modules /opt/magicmirror-backup - msg_ok "Backed up data" + create_backup /opt/magicmirror/config/config.js /opt/magicmirror/css/custom.css /opt/magicmirror/modules fetch_and_deploy_gh_release "magicmirror" "MagicMirrorOrg/MagicMirror" "tarball" + restore_backup msg_info "Configuring MagicMirror" cd /opt/magicmirror sed -i -E 's/("postinstall": )".*"/\1""/; s/("prepare": )".*"/\1""/' package.json $STD npm run install-mm - cp /opt/magicmirror-backup/config.js /opt/magicmirror/config/ - if [[ -f /opt/magicmirror-backup/custom.css ]]; then - cp /opt/magicmirror-backup/custom.css /opt/magicmirror/css/ - fi msg_ok "Configured MagicMirror" msg_info "Starting Service" diff --git a/ct/mail-archiver.sh b/ct/mail-archiver.sh index 366d367a6..ef4bdc29d 100644 --- a/ct/mail-archiver.sh +++ b/ct/mail-archiver.sh @@ -36,12 +36,11 @@ function update_script() { systemctl stop mail-archiver msg_ok "Stopped Mail-Archiver" - msg_info "Creating Backup" - cp /opt/mail-archiver/appsettings.json /opt/mail-archiver/.env /opt/ - [[ -d /opt/mail-archiver/DataProtection-Keys ]] && cp -r /opt/mail-archiver/DataProtection-Keys /opt + create_backup /opt/mail-archiver/DataProtection-Keys msg_ok "Created Backup" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball" + restore_backup msg_info "Updating Mail-Archiver" mv /opt/mail-archiver /opt/mail-archiver-build @@ -51,10 +50,6 @@ function update_script() { rm -rf /opt/mail-archiver-build msg_ok "Updated Mail-Archiver" - msg_info "Restoring Backup" - cp /opt/appsettings.json /opt/.env /opt/mail-archiver - [[ -d /opt/DataProtection-Keys ]] && cp -r /opt/DataProtection-Keys /opt/mail-archiver/ - msg_ok "Restored Backup" msg_info "Starting Mail-Archiver" systemctl start mail-archiver diff --git a/ct/manyfold.sh b/ct/manyfold.sh index 86e1022dd..63bef42d0 100644 --- a/ct/manyfold.sh +++ b/ct/manyfold.sh @@ -37,14 +37,10 @@ function update_script() { systemctl stop manyfold.target manyfold-rails.1 manyfold-default_worker.1 manyfold-performance_worker.1 msg_ok "Stopped Services" - msg_info "Backing up Data" - CURRENT_VERSION=$(grep -oP 'APP_VERSION=\K[^ ]+' /opt/manyfold/.env || echo "unknown") - cp -r /opt/manyfold/app/storage /opt/manyfold_storage_backup 2>/dev/null || true - cp -r /opt/manyfold/app/tmp /opt/manyfold_tmp_backup 2>/dev/null || true - $STD tar -czf "/opt/manyfold_${CURRENT_VERSION}_backup.tar.gz" -C /opt/manyfold app - msg_ok "Backed up Data" + create_backup /opt/manyfold/app/storage /opt/manyfold/app/tmp CLEAN_INSTALL=1 fetch_and_deploy_gh_release "manyfold" "manyfold3d/manyfold" "tarball" "latest" "/opt/manyfold/app" + restore_backup msg_info "Configuring Manyfold" RUBY_INSTALL_VERSION=$(cat /opt/manyfold/app/.ruby-version) @@ -55,14 +51,6 @@ function update_script() { RUBY_VERSION=${RUBY_INSTALL_VERSION} RUBY_INSTALL_RAILS="true" HOME=/home/manyfold setup_ruby - msg_info "Restoring Data" - rm -rf /opt/manyfold/app/{storage,tmp} - cp -r /opt/manyfold_storage_backup /opt/manyfold/app/storage 2>/dev/null || true - cp -r /opt/manyfold_tmp_backup /opt/manyfold/app/tmp 2>/dev/null || true - chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold} - chown -R manyfold:manyfold /opt/manyfold/app/storage /opt/manyfold/app/tmp /opt/manyfold/app/config - rm -rf /opt/manyfold_storage_backup /opt/manyfold_tmp_backup - msg_ok "Restored Data" msg_info "Installing Manyfold" $STD npm install --global corepack diff --git a/ct/matomo.sh b/ct/matomo.sh index a753daf68..a68431a20 100644 --- a/ct/matomo.sh +++ b/ct/matomo.sh @@ -35,28 +35,11 @@ function update_script() { systemctl stop caddy msg_ok "Stopped Services" - msg_info "Backing up Data" - [[ -f /opt/matomo/config/config.ini.php ]] && cp /opt/matomo/config/config.ini.php /opt/matomo_config.bak - [[ -d /opt/matomo/misc/user ]] && cp -r /opt/matomo/misc/user /opt/matomo_user_backup - [[ -f /root/matomo.creds ]] && cp /root/matomo.creds /opt/matomo_db_creds.bak - msg_ok "Backed up Data" + create_backup /opt/matomo/misc/user CLEAN_INSTALL=1 fetch_and_deploy_gh_release "matomo" "matomo-org/matomo" "prebuild" "latest" "/opt/matomo" "matomo-*.zip" + restore_backup - msg_info "Restoring Data" - if [[ -f /opt/matomo_config.bak ]]; then - mkdir -p /opt/matomo/config - cp /opt/matomo_config.bak /opt/matomo/config/config.ini.php - fi - if [[ -d /opt/matomo_user_backup ]]; then - mkdir -p /opt/matomo/misc/user - cp -r /opt/matomo_user_backup/. /opt/matomo/misc/user - fi - [[ -f /opt/matomo_db_creds.bak ]] && cp /opt/matomo_db_creds.bak /root/matomo.creds - rm -f /opt/matomo_config.bak /opt/matomo_db_creds.bak - rm -rf /opt/matomo_user_backup - chown -R www-data:www-data /opt/matomo - msg_ok "Restored Data" msg_info "Starting Services" systemctl start caddy diff --git a/ct/mealie.sh b/ct/mealie.sh index 1f3631ccc..29f359adf 100644 --- a/ct/mealie.sh +++ b/ct/mealie.sh @@ -37,12 +37,11 @@ function update_script() { systemctl stop mealie msg_ok "Stopped Service" - msg_info "Backing up Configuration" - cp -f /opt/mealie/mealie.env /opt/mealie.env - [[ -f /opt/mealie/start.sh ]] && cp -f /opt/mealie/start.sh /opt/mealie.start.sh + create_backup /opt/mealie/mealie.env /opt/mealie/start.sh msg_ok "Backup completed" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mealie" "mealie-recipes/mealie" "tarball" + restore_backup msg_info "Restoring Configuration" mv -f /opt/mealie.env /opt/mealie/mealie.env diff --git a/ct/metube.sh b/ct/metube.sh index fbaeee46c..bbb62c190 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -48,14 +48,10 @@ function update_script() { systemctl stop metube msg_ok "Stopped Service" - msg_info "Backing up Old Installation" - if [[ -d /opt/metube_bak ]]; then - rm -rf /opt/metube_bak - fi - mv /opt/metube /opt/metube_bak - msg_ok "Backup created" + create_backup /opt/metube fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest" + restore_backup msg_info "Building Frontend" cd /opt/metube/ui @@ -75,12 +71,6 @@ function update_script() { $STD uv sync msg_ok "Installed Backend" - msg_info "Restoring .env" - if [[ -f /opt/metube_bak/.env ]]; then - cp /opt/metube_bak/.env /opt/metube/.env - fi - rm -rf /opt/metube_bak - msg_ok "Restored .env" if grep -q 'pipenv' /etc/systemd/system/metube.service; then msg_info "Patching systemd Service" diff --git a/ct/musicseerr.sh b/ct/musicseerr.sh index a20484fb8..24f739041 100644 --- a/ct/musicseerr.sh +++ b/ct/musicseerr.sh @@ -35,13 +35,11 @@ function update_script() { systemctl stop musicseerr msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -a /opt/musicseerr/backend/config /opt/musicseerr_config_backup - cp -a /opt/musicseerr/backend/cache /opt/musicseerr_cache_backup - msg_ok "Backed up Data" + create_backup /opt/musicseerr/backend/config /opt/musicseerr/backend/cache PYTHON_VERSION="3.13" setup_uv CLEAN_INSTALL=1 fetch_and_deploy_gh_release "musicseerr" "HabiRabbu/Musicseerr" "tarball" + restore_backup NODE_VERSION="25" NODE_MODULE="pnpm@10.33.0" setup_nodejs msg_info "Building Frontend" @@ -60,12 +58,6 @@ function update_script() { cp -r /opt/musicseerr/frontend/build /opt/musicseerr/backend/static msg_ok "Updated Application" - msg_info "Restoring Data" - rm -rf /opt/musicseerr/backend/config /opt/musicseerr/backend/cache - cp -a /opt/musicseerr_config_backup/. /opt/musicseerr/backend/config/ - cp -a /opt/musicseerr_cache_backup/. /opt/musicseerr/backend/cache/ - rm -rf /opt/musicseerr_config_backup /opt/musicseerr_cache_backup - msg_ok "Restored Data" msg_info "Starting Service" systemctl start musicseerr diff --git a/ct/nagios.sh b/ct/nagios.sh index a73a55fe5..26d9b7932 100644 --- a/ct/nagios.sh +++ b/ct/nagios.sh @@ -30,9 +30,7 @@ function update_script() { exit fi - msg_info "Backing up Configuration" - cp -a /usr/local/nagios/etc /opt/nagios-etc-backup - msg_ok "Backed up Configuration" + create_backup /usr/local/nagios/etc if check_for_gh_release "nagios" "NagiosEnterprises/nagioscore"; then msg_info "Stopping Nagios" @@ -40,6 +38,7 @@ function update_script() { msg_ok "Stopped Nagios" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nagios" "NagiosEnterprises/nagioscore" "tarball" + restore_backup msg_info "Building Nagios Core" cd /opt/nagios @@ -73,11 +72,6 @@ function update_script() { msg_ok "Built Nagios Plugins" fi - msg_info "Restoring Configuration" - rm -rf /usr/local/nagios/etc - cp -a /opt/nagios-etc-backup /usr/local/nagios/etc - rm -rf /opt/nagios-etc-backup - msg_ok "Restored Configuration" msg_ok "Updated successfully!" exit } diff --git a/ct/nametag.sh b/ct/nametag.sh index 0fd45d877..360851ad2 100644 --- a/ct/nametag.sh +++ b/ct/nametag.sh @@ -35,12 +35,10 @@ function update_script() { systemctl stop nametag msg_ok "Stopped Service" - msg_info "Backing up Data" - cp /opt/nametag/.env /opt/nametag.env.bak - cp -r /opt/nametag/data /opt/nametag_data_bak - msg_ok "Backed up Data" + create_backup /opt/nametag/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nametag" "mattogodoy/nametag" "tarball" "latest" "/opt/nametag" + restore_backup msg_info "Rebuilding Application" cd /opt/nametag @@ -54,12 +52,6 @@ function update_script() { cp -r /opt/nametag/public /opt/nametag/.next/standalone/public msg_ok "Rebuilt Application" - msg_info "Restoring Data" - cp /opt/nametag.env.bak /opt/nametag/.env - cp -r /opt/nametag_data_bak/. /opt/nametag/data/ - rm -f /opt/nametag.env.bak - rm -rf /opt/nametag_data_bak - msg_ok "Restored Data" msg_info "Running Migrations" cd /opt/nametag diff --git a/ct/netbox.sh b/ct/netbox.sh index 8f58ee094..d8b901898 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -34,20 +34,15 @@ function update_script() { systemctl stop netbox netbox-rq msg_ok "Stopped Services" - msg_info "Backing up NetBox configurations" - mv /opt/netbox/ /opt/netbox-backup - msg_ok "Backed up NetBox configurations" + create_backup /opt/netbox/netbox/netbox/configuration.py \ + /opt/netbox/netbox/media /opt/netbox/netbox/scripts /opt/netbox/netbox/reports \ + /opt/netbox/gunicorn.py /opt/netbox/local_requirements.txt \ + /opt/netbox/netbox/netbox/ldap_config.py CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netbox" "netbox-community/netbox" "tarball" - - cp -r /opt/netbox-backup/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/ - cp -r /opt/netbox-backup/netbox/{media,scripts,reports}/ /opt/netbox/netbox/ - cp -r /opt/netbox-backup/gunicorn.py /opt/netbox/ - [[ -f /opt/netbox-backup/local_requirements.txt ]] && cp -r /opt/netbox-backup/local_requirements.txt /opt/netbox/ - [[ -f /opt/netbox-backup/netbox/netbox/ldap_config.py ]] && cp -r /opt/netbox-backup/netbox/netbox/ldap_config.py /opt/netbox/netbox/netbox/ + restore_backup $STD /opt/netbox/upgrade.sh - rm -r /opt/netbox-backup msg_info "Starting Services" systemctl start netbox netbox-rq diff --git a/ct/ownfoil.sh b/ct/ownfoil.sh index 8c78d9ece..244489a95 100644 --- a/ct/ownfoil.sh +++ b/ct/ownfoil.sh @@ -35,11 +35,10 @@ function update_script() { systemctl stop ownfoil msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/ownfoil/app/config /opt/ownfoil_data_backup - msg_ok "Backed up Data" + create_backup /opt/ownfoil/app/config CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ownfoil" "a1ex4/ownfoil" "tarball" + restore_backup msg_info "Installing Dependencies" cd /opt/ownfoil @@ -47,10 +46,6 @@ function update_script() { $STD uv pip install -r requirements.txt msg_ok "Installed Dependencies" - msg_info "Restoring Data" - cp -r /opt/ownfoil_data_backup /opt/ownfoil/app/config - rm -rf /opt/ownfoil_data_backup - msg_ok "Restored Data" msg_info "Starting Service" systemctl start ownfoil diff --git a/ct/pangolin.sh b/ct/pangolin.sh index 0ea3d7bc0..9ea732b6f 100644 --- a/ct/pangolin.sh +++ b/ct/pangolin.sh @@ -41,15 +41,10 @@ function update_script() { systemctl stop gerbil msg_info "Service stopped" - msg_info "Creating backup" - tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config - if [[ -f /opt/pangolin/config/db/db.sqlite ]]; then - cp -a /opt/pangolin/config/db/db.sqlite \ - "/opt/pangolin/config/db/db.sqlite.pre-${PANGOLIN_VERSION}-$(date +%Y%m%d-%H%M%S).bak" - fi - msg_ok "Created backup" + create_backup /opt/pangolin/config CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball" "$PANGOLIN_VERSION" + restore_backup CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64" msg_info "Updating Pangolin" @@ -68,10 +63,6 @@ function update_script() { cp server/db/mac_models.json ./dist/mac_models.json msg_ok "Updated Pangolin" - msg_info "Restoring config" - tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite - rm -f /opt/pangolin_config_backup.tar.gz - msg_ok "Restored config" if ! grep -q '^ExecStartPre=/usr/bin/node dist/migrations.mjs' /etc/systemd/system/pangolin.service 2>/dev/null; then msg_info "Adding migration step to pangolin.service" diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh index 8c876a7f7..75c98076e 100644 --- a/ct/paperless-ai.sh +++ b/ct/paperless-ai.sh @@ -34,16 +34,11 @@ function update_script() { systemctl stop paperless-ai paperless-rag msg_ok "Stopped Service" - msg_info "Backing up data" - cp -r /opt/paperless-ai/data /opt/paperless-ai-data-backup - msg_ok "Backed up data" + create_backup /opt/paperless-ai/data fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai" "tarball" + restore_backup - msg_info "Restoring data" - cp -r /opt/paperless-ai-data-backup/* /opt/paperless-ai/data/ - rm -rf /opt/paperless-ai-data-backup - msg_ok "Restored data" msg_info "Updating Paperless-AI" cd /opt/paperless-ai diff --git a/ct/pocketid.sh b/ct/pocketid.sh index baa2a6723..0fd775a69 100755 --- a/ct/pocketid.sh +++ b/ct/pocketid.sh @@ -68,11 +68,12 @@ function update_script() { msg_info "Stopping Service" systemctl stop pocketid msg_ok "Stopped Service" - cp /opt/pocket-id/.env /opt/env fi + create_backup /opt/pocket-id/.env + fetch_and_deploy_gh_release "pocket-id" "pocket-id/pocket-id" "singlefile" "latest" "/opt/pocket-id/" "pocket-id-linux-amd64" - mv /opt/env /opt/pocket-id/.env + restore_backup msg_info "Starting Service" systemctl start pocketid diff --git a/ct/privatebin.sh b/ct/privatebin.sh index 9549837d9..baf768d6b 100644 --- a/ct/privatebin.sh +++ b/ct/privatebin.sh @@ -29,16 +29,14 @@ function update_script() { exit fi if check_for_gh_release "privatebin" "PrivateBin/PrivateBin"; then - msg_info "Creating backup" - cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak - msg_ok "Backup created" + create_backup /opt/privatebin/cfg/conf.php rm -rf /opt/privatebin/* fetch_and_deploy_gh_release "privatebin" "PrivateBin/PrivateBin" "tarball" + restore_backup msg_info "Configuring ${APP}" mkdir -p /opt/privatebin/data - mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php chown -R www-data:www-data /opt/privatebin chmod -R 0755 /opt/privatebin/data systemctl reload nginx php8.2-fpm diff --git a/ct/shlink.sh b/ct/shlink.sh index 1f6d1cf4c..b96d066d3 100644 --- a/ct/shlink.sh +++ b/ct/shlink.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop shlink msg_ok "Stopped Service" - msg_info "Backing up Data" - cp /opt/shlink/.env /opt/shlink.env.bak - cp -r /opt/shlink/data /opt/shlink_data_backup - msg_ok "Backed up Data" + create_backup /opt/shlink/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink" "shlinkio/shlink" "prebuild" "latest" "/opt/shlink" "shlink*_php8.5_dist.zip" + restore_backup - msg_info "Restoring Data" - cp /opt/shlink.env.bak /opt/shlink/.env - rm -f /opt/shlink.env.bak - cp -r /opt/shlink_data_backup/. /opt/shlink/data - rm -rf /opt/shlink_data_backup - msg_ok "Restored Data" msg_info "Updating Application" cd /opt/shlink diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 6ec4f4bd4..f97eb631e 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -38,11 +38,10 @@ function update_script() { systemctl stop nginx msg_ok "Services Stopped" - msg_info "Creating Backup" - mv /opt/snipe-it /opt/snipe-it-backup - msg_ok "Created Backup" + create_backup /opt/snipe-it/.env /opt/snipe-it/public/uploads /opt/snipe-it/storage/private_uploads fetch_and_deploy_gh_release "snipe-it" "grokability/snipe-it" "tarball" + restore_backup [[ "$(php -v 2>/dev/null)" == PHP\ 8.2* ]] && PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="ldap,soap,xsl" setup_php sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/snipeit.conf setup_composer @@ -50,9 +49,6 @@ function update_script() { msg_info "Updating Snipe-IT" $STD apt update $STD apt -y upgrade - cp /opt/snipe-it-backup/.env /opt/snipe-it/.env - cp -r /opt/snipe-it-backup/public/uploads/. /opt/snipe-it/public/uploads/ - cp -r /opt/snipe-it-backup/storage/private_uploads/. /opt/snipe-it/storage/private_uploads/ cd /opt/snipe-it/ export COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader --no-interaction @@ -64,7 +60,6 @@ function update_script() { $STD php artisan view:clear chown -R www-data: /opt/snipe-it chmod -R 755 /opt/snipe-it - rm -rf /opt/snipe-it-backup msg_ok "Updated Snipe-IT" msg_info "Starting Service" diff --git a/ct/solidtime.sh b/ct/solidtime.sh index 98dddff80..076371f5a 100644 --- a/ct/solidtime.sh +++ b/ct/solidtime.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop caddy msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/solidtime/.env /opt/solidtime.env.bak - cp -r /opt/solidtime/storage /opt/solidtime_storage_backup - msg_ok "Backed up Data" + create_backup /opt/solidtime/storage CLEAN_INSTALL=1 fetch_and_deploy_gh_release "solidtime" "solidtime-io/solidtime" "tarball" + restore_backup - msg_info "Restoring Data" - cp /opt/solidtime.env.bak /opt/solidtime/.env - rm -f /opt/solidtime.env.bak - cp -r /opt/solidtime_storage_backup/. /opt/solidtime/storage - rm -rf /opt/solidtime_storage_backup - msg_ok "Restored Data" msg_info "Updating Application" cd /opt/solidtime diff --git a/ct/soulsync.sh b/ct/soulsync.sh index 0bd6c3c9f..82e989469 100644 --- a/ct/soulsync.sh +++ b/ct/soulsync.sh @@ -37,12 +37,10 @@ function update_script() { systemctl stop soulsync msg_ok "Stopped Service" - msg_info "Backing up Data" - mv /opt/soulsync/config /opt/soulsync-config.bak - mv /opt/soulsync/data /opt/soulsync-data.bak - msg_ok "Backed up Data" + create_backup /opt/soulsync/config /opt/soulsync/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "soulsync" "Nezreka/SoulSync" "tarball" + restore_backup msg_info "Updating Python Dependencies" cd /opt/soulsync @@ -56,9 +54,6 @@ function update_script() { $STD npm run build msg_ok "Built WebUI" - mv /opt/soulsync-config.bak /opt/soulsync/config - mv /opt/soulsync-data.bak /opt/soulsync/data - msg_info "Starting Service" systemctl start soulsync msg_ok "Started Service" diff --git a/ct/sparkyfitness.sh b/ct/sparkyfitness.sh index 5954b0bee..7f2113f75 100644 --- a/ct/sparkyfitness.sh +++ b/ct/sparkyfitness.sh @@ -35,17 +35,10 @@ function update_script() { systemctl stop sparkyfitness-server nginx msg_ok "Stopped Services" - msg_info "Backing up data" - mkdir -p /opt/sparkyfitness_backup - if [[ -d /opt/sparkyfitness/SparkyFitnessServer/uploads ]]; then - cp -r /opt/sparkyfitness/SparkyFitnessServer/uploads /opt/sparkyfitness_backup/ - fi - if [[ -d /opt/sparkyfitness/SparkyFitnessServer/backup ]]; then - cp -r /opt/sparkyfitness/SparkyFitnessServer/backup /opt/sparkyfitness_backup/ - fi - msg_ok "Backed up data" + create_backup /opt/sparkyfitness/SparkyFitnessServer/uploads CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sparkyfitness" "CodeWithCJ/SparkyFitness" "tarball" + restore_backup PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' /opt/sparkyfitness/package.json)" NODE_VERSION="25" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs @@ -96,10 +89,6 @@ EOF systemctl daemon-reload msg_ok "Refreshed SparkyFitness Service" - msg_info "Restoring data" - cp -r /opt/sparkyfitness_backup/. /opt/sparkyfitness/SparkyFitnessServer/ - rm -rf /opt/sparkyfitness_backup - msg_ok "Restored data" msg_info "Starting Services" $STD systemctl start sparkyfitness-server nginx diff --git a/ct/spoolman.sh b/ct/spoolman.sh index c3c1a02b4..4fa874548 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -36,12 +36,11 @@ function update_script() { systemctl stop spoolman msg_ok "Stopped Service" - msg_info "Creating Backup" - [ -d /opt/spoolman_bak ] && rm -rf /opt/spoolman_bak - mv /opt/spoolman /opt/spoolman_bak + create_backup /opt/spoolman msg_ok "Created Backup" fetch_and_deploy_gh_release "spoolman" "Donkie/Spoolman" "prebuild" "latest" "/opt/spoolman" "spoolman.zip" + restore_backup msg_info "Updating Spoolman" cd /opt/spoolman diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 575233035..be75496dd 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -43,17 +43,14 @@ function update_script() { systemctl stop tandoor msg_ok "Stopped Service" - msg_info "Creating Backup" - mv /opt/tandoor /opt/tandoor.bak - msg_ok "Backup Created" + create_backup /opt/tandoor/config /opt/tandoor/api /opt/tandoor/mediafiles /opt/tandoor/staticfiles /opt/tandoor/.env NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs PYTHON_VERSION="3.13" setup_uv fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor" + restore_backup msg_info "Updating Tandoor" - cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/ - mv /opt/tandoor.bak/.env /opt/tandoor/.env cd /opt/tandoor $STD uv venv --clear .venv --python=python3 $STD uv pip install -r requirements.txt --python .venv/bin/python @@ -69,7 +66,6 @@ EOF cd /opt/tandoor $STD /opt/tandoor/.venv/bin/python manage.py migrate $STD /opt/tandoor/.venv/bin/python manage.py collectstatic --no-input - rm -rf /opt/tandoor.bak msg_ok "Updated Tandoor" msg_info "Starting Service" diff --git a/ct/termix.sh b/ct/termix.sh index 4476c8d5a..d254fb7af 100644 --- a/ct/termix.sh +++ b/ct/termix.sh @@ -143,12 +143,10 @@ EOF fi msg_ok "Migrated Configuration" - msg_info "Backing up Data" - cp -r /opt/termix/data /opt/termix_data_backup - cp -r /opt/termix/uploads /opt/termix_uploads_backup - msg_ok "Backed up Data" + create_backup /opt/termix/data /opt/termix/uploads CLEAN_INSTALL=1 fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball" + restore_backup msg_info "Recreating Directories" mkdir -p /opt/termix/html \ @@ -177,11 +175,6 @@ EOF $STD npm cache clean --force msg_ok "Set up Production Dependencies" - msg_info "Restoring Data" - cp -r /opt/termix_data_backup /opt/termix/data - cp -r /opt/termix_uploads_backup /opt/termix/uploads - rm -rf /opt/termix_data_backup /opt/termix_uploads_backup - msg_ok "Restored Data" msg_info "Updating Frontend Files" rm -rf /opt/termix/html/* diff --git a/ct/tianji.sh b/ct/tianji.sh index 3bc530ff8..6883994bc 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -36,12 +36,10 @@ function update_script() { systemctl stop tianji msg_ok "Stopped Service" - msg_info "Backing up data" - cp /opt/tianji/src/server/.env /opt/.env - mv /opt/tianji /opt/tianji_bak - msg_ok "Backed up data" + create_backup /opt/tianji fetch_and_deploy_gh_release "tianji" "msgbyte/tianji" "tarball" + restore_backup msg_info "Updating Tianji" cd /opt/tianji @@ -52,10 +50,8 @@ function update_script() { mkdir -p ./src/server/public cp -r ./geo ./src/server/public $STD pnpm build:server - mv /opt/.env /opt/tianji/src/server/.env cd src/server $STD pnpm db:migrate:apply - rm -rf /opt/tianji_bak rm -rf /opt/tianji/src/client rm -rf /opt/tianji/website rm -rf /opt/tianji/reporter diff --git a/ct/transmute.sh b/ct/transmute.sh index 195bc70c7..a3b79cbb0 100644 --- a/ct/transmute.sh +++ b/ct/transmute.sh @@ -31,6 +31,7 @@ function update_script() { fi fetch_and_deploy_gh_release "calibre" "kovidgoyal/calibre" "prebuild" "latest" "/opt/calibre" "calibre-*-x86_64.txz" + restore_backup ln -sf /opt/calibre/ebook-convert /usr/bin/ebook-convert fetch_and_deploy_gh_release "drawio" "jgraph/drawio-desktop" "binary" "latest" "" "drawio-amd64-*.deb" fetch_and_deploy_gh_release "pandoc" "jgm/pandoc" "binary" "latest" "" "pandoc-*-amd64.deb" @@ -40,10 +41,7 @@ function update_script() { systemctl stop transmute msg_ok "Stopped Service" - msg_info "Backing up Data" - cp /opt/transmute/backend/.env /opt/transmute.env.bak - cp -r /opt/transmute/data /opt/transmute_data_bak - msg_ok "Backed up Data" + create_backup /opt/transmute/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "transmute" "transmute-app/transmute" "tarball" @@ -59,12 +57,6 @@ function update_script() { $STD npm run build msg_ok "Rebuilt Frontend" - msg_info "Restoring Data" - cp /opt/transmute.env.bak /opt/transmute/backend/.env - cp -r /opt/transmute_data_bak/. /opt/transmute/data/ - rm -f /opt/transmute.env.bak - rm -rf /opt/transmute_data_bak - msg_ok "Restored Data" msg_info "Starting Service" systemctl start transmute diff --git a/ct/trilium.sh b/ct/trilium.sh index 750e662f8..444f6696c 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -45,19 +45,11 @@ function update_script() { sleep 1 msg_ok "Stopped Service" - msg_info "Backing up Database" - mkdir -p /opt/trilium_backup - cp -r "${DB_PATH}" /opt/trilium_backup/ - rm -rf /opt/trilium - msg_ok "Backed up Database" + create_backup ${DB_PATH} fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-x64.tar.xz" + restore_backup - msg_info "Restoring Database" - mkdir -p "$(dirname "${DB_RESTORE_PATH}")" - cp -r /opt/trilium_backup/$(basename "${DB_PATH}") "${DB_RESTORE_PATH}" - rm -rf /opt/trilium_backup - msg_ok "Restored Database" msg_info "Starting Service" systemctl start trilium diff --git a/ct/twenty.sh b/ct/twenty.sh index 19871062f..5bacc2f10 100644 --- a/ct/twenty.sh +++ b/ct/twenty.sh @@ -39,10 +39,7 @@ function update_script() { create_backup /opt/twenty/.env \ /opt/twenty/packages/twenty-server/.local-storage CLEAN_INSTALL=1 fetch_and_deploy_gh_release "twenty" "twentyhq/twenty" "tarball" - - msg_info "Restoring Configuration" - cp /opt/twenty.env.bak /opt/twenty/.env - msg_ok "Restored Configuration" + restore_backup msg_info "Building Application" cd /opt/twenty @@ -64,8 +61,6 @@ function update_script() { $STD npx -y typeorm migration:run -d dist/database/typeorm/core/core.datasource msg_ok "Ran Database Migrations" - restore_backup - msg_info "Starting Services" systemctl start twenty-server twenty-worker msg_ok "Started Services" diff --git a/ct/umami.sh b/ct/umami.sh index e612ca36f..b36142100 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -34,9 +34,10 @@ function update_script() { systemctl stop umami msg_ok "Stopped Service" - mv /opt/umami/.env /opt/.env.bak + create_backup /opt/umami/.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball" - mv /opt/.env.bak /opt/umami/.env + restore_backup msg_info "Updating Umami" cd /opt/umami diff --git a/ct/wealthfolio.sh b/ct/wealthfolio.sh index ee672c795..269009ffe 100644 --- a/ct/wealthfolio.sh +++ b/ct/wealthfolio.sh @@ -39,19 +39,12 @@ function update_script() { systemctl stop wealthfolio msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/wealthfolio_data /opt/wealthfolio_data_backup - cp /opt/wealthfolio/.env /opt/wealthfolio_env_backup - msg_ok "Backed up Data" + create_backup /opt/wealthfolio_data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "wealthfolio/wealthfolio" "prebuild" "latest" "/opt/wealthfolio" "wealthfolio-server-*-linux-amd64.tar.gz" + restore_backup install -m 755 /opt/wealthfolio/wealthfolio-server /usr/local/bin/wealthfolio-server - msg_info "Restoring Data" - cp -r /opt/wealthfolio_data_backup/. /opt/wealthfolio_data - cp /opt/wealthfolio_env_backup /opt/wealthfolio/.env - rm -rf /opt/wealthfolio_data_backup /opt/wealthfolio_env_backup - msg_ok "Restored Data" msg_info "Starting Service" systemctl start wealthfolio diff --git a/ct/web-check.sh b/ct/web-check.sh index 327878810..3c941efe8 100644 --- a/ct/web-check.sh +++ b/ct/web-check.sh @@ -34,16 +34,12 @@ function update_script() { systemctl stop web-check msg_ok "Stopped Service" - msg_info "Creating backup" - mv /opt/web-check/.env /opt - msg_ok "Created backup" + create_backup /opt/web-check/.env NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs CLEAN_INSTALL=1 fetch_and_deploy_gh_release "web-check" "Lissy93/web-check" "tarball" + restore_backup - msg_info "Restoring backup" - mv /opt/.env /opt/web-check - msg_ok "Restored backup" msg_info "Building Web-Check" cd /opt/web-check diff --git a/ct/webtrees.sh b/ct/webtrees.sh index d0fc40009..6807a86db 100644 --- a/ct/webtrees.sh +++ b/ct/webtrees.sh @@ -36,17 +36,11 @@ function update_script() { systemctl stop caddy php${PHP_VER}-fpm msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/webtrees/data /opt/webtrees_data_backup - msg_ok "Backed up Data" + create_backup /opt/webtrees/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "webtrees" "fisharebest/webtrees" "prebuild" "latest" "/opt/webtrees" "webtrees-*.zip" + restore_backup - msg_info "Restoring Data" - cp -r /opt/webtrees_data_backup/. /opt/webtrees/data - rm -rf /opt/webtrees_data_backup - chown -R www-data:www-data /opt/webtrees - msg_ok "Restored Data" msg_info "Starting Service" systemctl start caddy php${PHP_VER}-fpm diff --git a/ct/wger.sh b/ct/wger.sh index ec96664b9..f294c3883 100644 --- a/ct/wger.sh +++ b/ct/wger.sh @@ -35,19 +35,11 @@ function update_script() { systemctl stop redis-server nginx celery celery-beat wger msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/wger/media /opt/wger_media_backup - cp /opt/wger/.env /opt/wger_env_backup - msg_ok "Backed up Data" + create_backup /opt/wger/media CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wger" "wger-project/wger" "tarball" + restore_backup - msg_info "Restoring Data" - cp -r /opt/wger_media_backup/. /opt/wger/media - cp /opt/wger_env_backup /opt/wger/.env - rm -rf /opt/wger_media_backup /opt/wger_env_backup - - msg_ok "Restored Data" msg_info "Updating wger" cd /opt/wger diff --git a/ct/wishlist.sh b/ct/wishlist.sh index 7542941eb..2b4ee899d 100644 --- a/ct/wishlist.sh +++ b/ct/wishlist.sh @@ -35,14 +35,10 @@ function update_script() { systemctl stop wishlist msg_ok "Stopped Service" - msg_info "Creating Backup" - mkdir -p /opt/wishlist-backup - cp /opt/wishlist/.env /opt/wishlist-backup/.env - cp -a /opt/wishlist/uploads /opt/wishlist-backup - cp -a /opt/wishlist/data /opt/wishlist-backup - msg_ok "Created Backup" + create_backup /opt/wishlist/uploads /opt/wishlist/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wishlist" "cmintey/wishlist" "tarball" + restore_backup LATEST_APP_VERSION=$(get_latest_github_release "cmintey/wishlist") msg_info "Updating Wishlist" @@ -57,12 +53,6 @@ function update_script() { $STD pnpm prune --prod chmod +x /opt/wishlist/entrypoint.sh - msg_info "Restoring Backup" - cp /opt/wishlist-backup/.env /opt/wishlist/.env - cp -a /opt/wishlist-backup/uploads /opt/wishlist - cp -a /opt/wishlist-backup/data /opt/wishlist - rm -rf /opt/wishlist-backup - msg_ok "Restored Backup" msg_ok "Updated Wishlist" msg_info "Starting Service" diff --git a/ct/xyops.sh b/ct/xyops.sh index 140db1450..08c7e0073 100644 --- a/ct/xyops.sh +++ b/ct/xyops.sh @@ -35,12 +35,10 @@ function update_script() { systemctl stop xyops msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/xyops/data /opt/xyops_data_backup - cp -r /opt/xyops/conf /opt/xyops_conf_backup - msg_ok "Backed up Data" + create_backup /opt/xyops/data /opt/xyops/conf CLEAN_INSTALL=1 fetch_and_deploy_gh_release "xyops" "pixlcore/xyops" "tarball" + restore_backup msg_info "Rebuilding Application" cd /opt/xyops @@ -49,11 +47,6 @@ function update_script() { chmod 644 /opt/xyops/node_modules/useragent-ng/lib/regexps.js msg_ok "Rebuilt Application" - msg_info "Restoring Data" - cp -r /opt/xyops_data_backup/. /opt/xyops/data - cp -r /opt/xyops_conf_backup/. /opt/xyops/conf - rm -rf /opt/xyops_data_backup /opt/xyops_conf_backup - msg_ok "Restored Data" msg_info "Starting Service" systemctl start xyops diff --git a/ct/yourls.sh b/ct/yourls.sh index 680c0a0b3..f57d62935 100644 --- a/ct/yourls.sh +++ b/ct/yourls.sh @@ -35,17 +35,12 @@ function update_script() { systemctl stop nginx msg_ok "Stopped Service" - msg_info "Backing up Configuration" - cp -r /opt/yourls/user /opt/yourls_user.bak - msg_ok "Backed up Configuration" + create_backup /opt/yourls/user CLEAN_INSTALL=1 fetch_and_deploy_gh_release "yourls" "YOURLS/YOURLS" "tarball" + restore_backup chown -R www-data:www-data /opt/yourls - msg_info "Restoring Configuration" - cp -r /opt/yourls_user.bak/. /opt/yourls/user/ - rm -rf /opt/yourls_user.bak - msg_ok "Restored Configuration" msg_info "Starting Service" systemctl start nginx