Compare commits

...
Author SHA1 Message Date
CanbiZ (MickLesk) 96b31040ee Fix Semaphore BoltDB migration 2026-09-22 15:57:10 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 9f47f1fa03 Update CHANGELOG.md (#17437)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-22 12:31:47 +00:00
CanbiZ (MickLesk) f212f93d89 Stop generating header filenames with a newline in them (#17435)
generate-app-headers.sh read APP with a plain grep -oP, so a script that
sets APP twice yielded both lines and the filename became
"almalinux
almalinux${var_version}vm". Three of those are in the tree
and they make main impossible to check out on Windows.

Nothing reads vm/headers: get_header fetches banners from the core
repo, which already carries clean almalinux, debian and ubuntu.
2026-09-22 14:30:44 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 994bd8787a Update CHANGELOG.md (#17434)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-22 10:56:10 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 41a64a83d9 Update CHANGELOG.md (#17432)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-22 08:59:38 +00:00
Owen Voke 53125f4e08 fix(invoiceshelf): re-link storage during update (#17431)
The update script doesn't run `php artisan storage:link`, so the symlink at `public/storage` is left pointing at the old release path after an update. As a result, uploaded images 404 in the frontend until the link is recreated by hand.

This change runs `storage:link` after the release is swapped in, to ensure that the storage path is symlinked correctly.
2026-09-22 10:59:09 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] b5aa23e1bc Update CHANGELOG.md (#17427)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-22 06:15:59 +00:00
Sascha Henke cb842007ea fix(alpine-it-tools): write version file after a successful update (#17421)
update_script() compared the upstream tag against /opt/${APP}_version.txt but
never wrote it back, so the stored version stayed at whatever the installer
wrote. Every subsequent run took the update branch, wiping the web root and
re-downloading the full release archive even with no new upstream release.

Write the tag after a successful update, matching what the installer already
does at install/alpine-it-tools-install.sh:42.

Closes #17420
2026-09-22 08:15:30 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 830abd4eb2 Update CHANGELOG.md (#17426)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-22 05:32:48 +00:00
Rene NulschandClaude Opus 5 3915f7a5c0 Umami: Align pnpm with engines.pnpm on update (#17404)
Umami 3.4.0 pins engines.pnpm to 12.3.4. update_script() never
refreshed pnpm, so containers installed with pnpm < 12 fail at
pnpm install with ERR_PNPM_UNSUPPORTED_ENGINE after the service was
already stopped and the old release replaced.

Read engines.pnpm from the deployed package.json and pass it to
setup_nodejs (same approach as ct/seerr.sh), falling back to latest.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 07:32:24 +02:00
9 changed files with 69 additions and 60 deletions
+3 -1
View File
@@ -22,7 +22,9 @@ generate_headers() {
for script in "${file_list[@]}"; do
[[ -f "$script" ]] || continue
app_name=$(grep -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
# -m1: a script that sets APP twice (the second carrying ${var_version})
# otherwise yields both lines, and the filename gets a newline in it.
app_name=$(grep -m1 -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
if [[ -n "$app_name" ]]; then
# core.func/vm-core.func look the header up as "${APP,,}" without spaces,
# so the generated file has to be named after APP - not after the script.
+19
View File
@@ -546,6 +546,25 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-09-22
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(invoiceshelf): re-link storage during update [@owenvoke](https://github.com/owenvoke) ([#17431](https://github.com/community-scripts/ProxmoxVE/pull/17431))
- fix(alpine-it-tools): write the version file after a successful update [@Houtek](https://github.com/Houtek) ([#17421](https://github.com/community-scripts/ProxmoxVE/pull/17421))
- Umami: Align pnpm with engines.pnpm on update [@ReneNulschDE](https://github.com/ReneNulschDE) ([#17404](https://github.com/community-scripts/ProxmoxVE/pull/17404))
### 💾 Core
- fix(motd): repair legacy 00_lxc-details.sh header and dead color placeholders [@BadFlo](https://github.com/BadFlo) ([core#53](https://github.com/community-scripts/core/pull/53))
- meilisearch: take the raw binary, not the .deb [@MickLesk](https://github.com/MickLesk) ([core#57](https://github.com/community-scripts/core/pull/57))
### 📚 Documentation
- github: Stop generating header filenames with a newline in them [@MickLesk](https://github.com/MickLesk) ([#17435](https://github.com/community-scripts/ProxmoxVE/pull/17435))
## 2026-09-21
### 🆕 New Scripts
+1
View File
@@ -40,6 +40,7 @@ function update_script() {
cp -r /tmp/dist/* /usr/share/nginx/html
rm -rf /tmp/dist
rm -f it-tools.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
+1
View File
@@ -54,6 +54,7 @@ function update_script() {
$STD pnpm run build
fi
$STD php artisan migrate --force
$STD php artisan storage:link
$STD php artisan optimize:clear
chown -R www-data:www-data /opt/invoiceshelf
msg_ok "Updated Application"
+42 -23
View File
@@ -32,42 +32,61 @@ function update_script() {
exit
fi
if check_for_gh_release "semaphore" "semaphoreui/semaphore"; then
if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then
msg_warn "WARNING: Due to bugs with BoltDB database, update script will move your application"
msg_warn "to use SQLite database instead. Make sure you have a backup of your data!"
echo ""
read -r -p "${TAB3}Do you want to continue? (y/N): " CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
exit 0
else
msg_info "Moving from BoltDB to SQLite"
sed -i \
-e 's|"bolt": {|"sqlite": {|' \
-e 's|/semaphore_db.bolt"|/database.sqlite"|' \
-e '/semaphore_db.bolt/d' \
-e '/"dialect"/d' \
-e '/^ },$/a\ "dialect": "sqlite",' \
/opt/semaphore/config.json
msg_ok "Moved from BoltDB to SQLite"
fi
# Outside the release check on purpose: a container left behind by the old
# order already carries the newest version, so the check would skip it.
local migrated=0
if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then
msg_warn "WARNING: Due to bugs with BoltDB database, update script will move your application"
msg_warn "to use SQLite database instead. Make sure you have a backup of your data!"
echo ""
read -r -p "${TAB3}Do you want to continue? (y/N): " CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
exit 0
fi
msg_info "Stopping Service"
systemctl stop semaphore
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_$(arch_resolve).deb"
msg_info "Moving from BoltDB to SQLite"
sed -i \
-e 's|"bolt": {|"sqlite": {|' \
-e 's|/semaphore_db.bolt"|/database.sqlite"|' \
-e '/semaphore_db.bolt/d' \
-e '/"dialect"/d' \
-e '/^ },$/a\ "dialect": "sqlite",' \
/opt/semaphore/config.json
msg_ok "Moved from BoltDB to SQLite"
if [[ -f /opt/semaphore/semaphore_db.bolt ]]; then
$STD semaphore migrate --from-boltdb /opt/semaphore/semaphore_db.bolt --config /opt/semaphore/config.json
rm -f /opt/semaphore/semaphore_db.bolt
# 2.19 dropped BoltDB along with the migration flag, so this has to run on
# the last release that still has it.
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "v2.18.30" "/opt/semaphore" "semaphore_*_linux_$(arch_resolve).deb"
msg_info "Migrating BoltDB to SQLite"
if ! $STD semaphore migrate --from-boltdb /opt/semaphore/semaphore_db.bolt --config /opt/semaphore/config.json; then
msg_error "Migration failed - semaphore_db.bolt was kept, run the update again to retry"
exit 1
fi
rm -f /opt/semaphore/semaphore_db.bolt
msg_ok "Migrated BoltDB to SQLite"
migrated=1
fi
if check_for_gh_release "semaphore" "semaphoreui/semaphore"; then
msg_info "Stopping Service"
systemctl stop semaphore
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "semaphore" "semaphoreui/semaphore" "binary" "latest" "/opt/semaphore" "semaphore_*_linux_$(arch_resolve).deb"
msg_info "Starting Service"
systemctl start semaphore
msg_ok "Started Service"
msg_ok "Updated successfully!"
elif ((migrated)); then
msg_info "Starting Service"
systemctl start semaphore
msg_ok "Started Service"
fi
exit
}
+3
View File
@@ -40,6 +40,9 @@ function update_script() {
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "umami" "umami-software/umami" "tarball"
restore_backup
PNPM_VERSION=$(jq -r '.engines.pnpm // "latest"' /opt/umami/package.json)
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
msg_info "Updating Umami"
cd /opt/umami
$STD pnpm install
@@ -1,12 +0,0 @@
___ __ __ _
/ | / /___ ___ ____ _/ / (_)___ __ ___ __
/ /| | / / __ `__ \/ __ `/ / / / __ \/ / / / |/_/
/ ___ |/ / / / / / / /_/ / /___/ / / / / /_/ /> <
/_/ |_/_/_/ /_/ /_/\__,_/_____/_/_/ /_/\__,_/_/|_|
___ __ __ _ __ __ _ _ _ ____ ___
/ | / /___ ___ ____ _/ / (_)___ __ ___ __ _/ / _/_/ ______ _______ _____ __________(_)___ ____ | | | | / / |/ /
/ /| | / / __ `__ \/ __ `/ / / / __ \/ / / / |/_/ / __//_/| | / / __ `/ ___/ | / / _ \/ ___/ ___/ / __ \/ __ \ / / | | / / /|_/ /
/ ___ |/ / / / / / / /_/ / /___/ / / / / /_/ /> < (_ < < | |/ / /_/ / / | |/ / __/ / (__ ) / /_/ / / / /_>_> | |/ / / / /
/_/ |_/_/_/ /_/ /_/\__,_/_____/_/_/ /_/\__,_/_/|_| / _// / |___/\__,_/_/____|___/\___/_/ /____/_/\____/_/ /_//_/ |___/_/ /_/
/_/ \_\ /_____/ /_/
-12
View File
@@ -1,12 +0,0 @@
____ __ _
/ __ \___ / /_ (_)___ _____
/ / / / _ \/ __ \/ / __ `/ __ \
/ /_/ / __/ /_/ / / /_/ / / / /
/_____/\___/_.___/_/\__,_/_/ /_/
____ __ _ __ __ _ _
/ __ \___ / /_ (_)___ _____ _/ / _/_/ ______ _______ _____ __________(_)___ ____ | |
/ / / / _ \/ __ \/ / __ `/ __ \ / __//_/| | / / __ `/ ___/ | / / _ \/ ___/ ___/ / __ \/ __ \ / /
/ /_/ / __/ /_/ / / /_/ / / / / (_ < < | |/ / /_/ / / | |/ / __/ / (__ ) / /_/ / / / /_>_>
/_____/\___/_.___/_/\__,_/_/ /_/ / _// / |___/\__,_/_/____|___/\___/_/ /____/_/\____/_/ /_//_/
/_/ \_\ /_____/ /_/
-12
View File
@@ -1,12 +0,0 @@
__ ____ __
/ / / / /_ __ ______ / /___ __
/ / / / __ \/ / / / __ \/ __/ / / /
/ /_/ / /_/ / /_/ / / / / /_/ /_/ /
\____/_.___/\__,_/_/ /_/\__/\__,_/
__ ____ __ __ __ _ _ _ ____ ___
/ / / / /_ __ ______ / /___ __ _/ / _/_/ ______ _______ _____ __________(_)___ ____ | | | | / / |/ /
/ / / / __ \/ / / / __ \/ __/ / / / / __//_/| | / / __ `/ ___/ | / / _ \/ ___/ ___/ / __ \/ __ \ / / | | / / /|_/ /
/ /_/ / /_/ / /_/ / / / / /_/ /_/ / (_ < < | |/ / /_/ / / | |/ / __/ / (__ ) / /_/ / / / /_>_> | |/ / / / /
\____/_.___/\__,_/_/ /_/\__/\__,_/ / _// / |___/\__,_/_/____|___/\___/_/ /____/_/\____/_/ /_//_/ |___/_/ /_/
/_/ \_\ /_____/ /_/