Compare commits

..

19 Commits

Author SHA1 Message Date
CanbiZ (MickLesk)
45ac3d32bc fix(tools): use matching-refs API for prefix-filtered tag lookups
When a prefix is provided, get_latest_gh_tag now uses the GitHub
matching-refs API (/git/matching-refs/tags/<prefix>) for server-side
filtering. This fixes repos with 100+ tags (e.g. mongodb/mongo-tools
with 463 tags) where the relevant tags were beyond page 1 and never
found by the old tags?per_page=100 approach.
2026-03-06 14:33:07 +01:00
CanbiZ (MickLesk)
9e2bb23d35 fix(wealthfolio): pin to v3.0.3 due to breaking changes 2026-03-06 14:16:54 +01:00
CanbiZ (MickLesk)
eb848fd70f databasus: make fetch_and_deploy_from_url accept empty dir
Pass an explicit empty second argument when downloading MongoDB tools and update fetch_and_deploy_from_url to default the directory parameter to an empty string. This avoids unset/ambiguous directory handling at the call site and ensures the function has a defined directory variable even when none is provided.
2026-03-06 14:11:57 +01:00
community-scripts-pr-app[bot]
176fffff0b Update CHANGELOG.md (#12616)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 13:04:52 +00:00
Slaviša Arežina
14e13edeef Add better update handling (#12611) 2026-03-06 14:04:23 +01:00
community-scripts-pr-app[bot]
4f70196444 chore: update github-versions.json (#12613)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 12:10:47 +00:00
community-scripts-pr-app[bot]
acc715de82 Update CHANGELOG.md (#12610)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 09:21:14 +00:00
Slaviša Arežina
5bfb5f486f RustDesk Server: Switch to updated repository (#12083)
* switch repo

* Add info about Alpine admin password and script usage

---------

Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
2026-03-06 10:20:46 +01:00
Michel Roegl-Brunner
6fbd785a87 Change runner to self-hosted for PR checks 2026-03-06 09:09:56 +01:00
community-scripts-pr-app[bot]
75b1c63884 chore: update github-versions.json (#12608)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 06:16:34 +00:00
community-scripts-pr-app[bot]
ad0808008a Update CHANGELOG.md (#12607)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 00:25:50 +00:00
community-scripts-pr-app[bot]
fcf75b06bf chore: update github-versions.json (#12606)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-06 00:25:26 +00:00
community-scripts-pr-app[bot]
b8d47cdce3 Update CHANGELOG.md (#12604)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-05 21:30:45 +00:00
Copilot
8301f04b58 fluid-calendar: add build-essential to install and update dependencies (#12602)
* Initial plan

* fix: add build-essential dependency to fluid-calendar install script

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

* fix: add ensure_dependencies build-essential in update_script

Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: MickLesk <47820557+MickLesk@users.noreply.github.com>
2026-03-05 22:30:20 +01:00
community-scripts-pr-app[bot]
34942ac799 chore: update github-versions.json (#12600)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-05 18:38:18 +00:00
community-scripts-pr-app[bot]
599f11683d Update CHANGELOG.md (#12599)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-05 18:10:05 +00:00
community-scripts-pr-app[bot]
55c699f841 Update CHANGELOG.md (#12598)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-05 18:00:27 +00:00
CanbiZ (MickLesk)
3a7f922d90 remove(suwayomiserver): remove due to inactivity (#12596)
Removed due to very low usage (3 installs in 120 days).
An alternative will be provided. Thanks for your understanding.
2026-03-05 18:57:51 +01:00
Chris
352716319f Refactor: BentoPDF (#12597)
* Refactor BentoPDF

* preserve .env.production if it exists

* Increase CPU cores to 2
2026-03-05 18:53:15 +01:00
18 changed files with 156 additions and 84 deletions

View File

@@ -8,7 +8,7 @@ on:
jobs:
check-new-script:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: coolify-runner
runs-on: self-hosted
permissions:
pull-requests: write
contents: read

View File

@@ -410,6 +410,18 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-03-06
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- CryptPad: Better update handling [@tremor021](https://github.com/tremor021) ([#12611](https://github.com/community-scripts/ProxmoxVE/pull/12611))
- #### ✨ New Features
- RustDesk Server: Switch to updated repository [@tremor021](https://github.com/tremor021) ([#12083](https://github.com/community-scripts/ProxmoxVE/pull/12083))
## 2026-03-05
### 🆕 New Scripts
@@ -422,9 +434,15 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🐞 Bug Fixes
- fluid-calendar: add build-essential to install and update dependencies [@Copilot](https://github.com/Copilot) ([#12602](https://github.com/community-scripts/ProxmoxVE/pull/12602))
- Refactor: BentoPDF [@vhsdream](https://github.com/vhsdream) ([#12597](https://github.com/community-scripts/ProxmoxVE/pull/12597))
- Tianji: Fix the bug introduced by the refactor [@tremor021](https://github.com/tremor021) ([#12564](https://github.com/community-scripts/ProxmoxVE/pull/12564))
- PowerDNS: use 'launch=' instead of 'launch+=' for gsqlite3 backend [@MickLesk](https://github.com/MickLesk) ([#12579](https://github.com/community-scripts/ProxmoxVE/pull/12579))
### 🗑️ Deleted Scripts
- Suwayomi-Server: remove due to inactivity and very low usage [@MickLesk](https://github.com/MickLesk) ([#12596](https://github.com/community-scripts/ProxmoxVE/pull/12596))
### 💾 Core
- #### 🔧 Refactor

View File

@@ -27,21 +27,21 @@ function update_script() {
fi
APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
RELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [ "${RELEASE}" != "$(cat ~/.rustdesk-server 2>/dev/null)" ] || [ ! -f ~/.rustdesk-server ]; then
msg_info "Updating RustDesk Server to v${RELEASE}"
$STD apk -U upgrade
$STD service rustdesk-server-hbbs stop
$STD service rustdesk-server-hbbr stop
temp_file1=$(mktemp)
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
$STD unzip "$temp_file1"
cp -r amd64/* /opt/rustdesk-server/
echo "${RELEASE}" >~/.rustdesk-server
$STD service rustdesk-server-hbbs start
$STD service rustdesk-server-hbbr start
rm -rf amd64
rm -f $temp_file1
rm -f "$temp_file1"
msg_ok "Updated RustDesk Server"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
@@ -56,7 +56,7 @@ function update_script() {
echo "${APIRELEASE}" >~/.rustdesk-api
$STD service rustdesk-api start
rm -rf release
rm -f $temp_file2
rm -f "$temp_file2"
msg_ok "Updated RustDesk API"
else
msg_ok "No update required. RustDesk API is already at v${APIRELEASE}"

View File

@@ -7,7 +7,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
APP="BentoPDF"
var_tags="${var_tags:-pdf-editor}"
var_cpu="${var_cpu:-1}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
@@ -35,16 +35,32 @@ function update_script() {
systemctl stop bentopdf
msg_ok "Stopped Service"
[[ -f /opt/bentopdf/.env.production ]] && cp /opt/bentopdf/.env.production /opt/production.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf"
msg_info "Updating BentoPDF"
cd /opt/bentopdf
$STD npm ci --no-audit --no-fund
$STD npm install http-server -g
if [[ -f /opt/production.env ]]; then
mv /opt/production.env ./.env.production
else
cp ./.env.example ./.env.production
fi
export NODE_OPTIONS="--max-old-space-size=3072"
export SIMPLE_MODE=true
$STD npm run build -- --mode production
export VITE_USE_CDN=true
$STD npm run build:all
msg_ok "Updated BentoPDF"
msg_info "Starting Service"
if grep -q '8080' /etc/systemd/system/bentopdf.service; then
sed -i -e 's|/bentopdf|/bentopdf/dist|' \
-e 's|npx.*|npx http-server -g -b -d false -r --no-dotfiles|' \
/etc/systemd/system/bentopdf.service
systemctl daemon-reload
fi
systemctl start bentopdf
msg_ok "Started Service"
msg_ok "Updated successfully!"

View File

@@ -33,17 +33,23 @@ function update_script() {
systemctl stop cryptpad
msg_info "Stopped Service"
msg_info "Backing up configuration"
msg_info "Creating backup"
[ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/
msg_ok "Backed up configuration"
for dir in blob block customize data datastore www/common/onlyoffice/dist onlyoffice-conf; do
[ -d "/opt/cryptpad/${dir}" ] && mv "/opt/cryptpad/${dir}" "/tmp/cryptpad_${dir//\//_}"
done
msg_ok "Created backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
msg_info "Restoring configuration"
msg_info "Restoring backup"
mv /opt/config.js /opt/cryptpad/config/
msg_ok "Configuration restored"
for dir in blob block customize data datastore www/common/onlyoffice/dist onlyoffice-conf; do
[ -d "/tmp/cryptpad_${dir//\//_}" ] && mv "/tmp/cryptpad_${dir//\//_}" "/opt/cryptpad/${dir}"
done
msg_ok "Restored backup"
msg_info "Updating CryptaPad"
msg_info "Updating CryptPad"
cd /opt/cryptpad
$STD npm ci
$STD npm run install:components

View File

@@ -29,6 +29,7 @@ function update_script() {
exit
fi
ensure_dependencies build-essential
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then

View File

@@ -29,9 +29,7 @@ function update_script() {
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
APIRELEASE=$(curl -fsSL https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ "${RELEASE}" != "$(cat ~/.rustdesk-hbbr)" ]] || [[ "${APIRELEASE}" != "$(cat ~/.rustdesk-api)" ]] || [[ ! -f ~/.rustdesk-hbbr ]] || [[ ! -f ~/.rustdesk-api ]]; then
if check_for_gh_release "rustdesk-api"; then
msg_info "Stopping Service"
systemctl stop rustdesk-hbbr
systemctl stop rustdesk-hbbs
@@ -46,7 +44,7 @@ function update_script() {
fetch_and_deploy_gh_release "rustdesk-api" "lejianwen/rustdesk-api" "binary" "latest" "/opt/rustdesk" "rustdesk-api-server*amd64.deb"
msg_info "Starting services"
systemctl start -q rustdesk-* --all
systemctl start -q rustdesk-*
msg_ok "Services started"
msg_ok "Updated successfully!"

View File

@@ -29,7 +29,8 @@ function update_script() {
exit
fi
if check_for_gh_release "wealthfolio" "afadil/wealthfolio"; then
RELEASE="3.0.3"
if check_for_gh_release "wealthfolio" "afadil/wealthfolio" "${RELEASE}"; then
msg_info "Stopping Service"
systemctl stop wealthfolio
msg_ok "Stopped Service"
@@ -39,7 +40,7 @@ function update_script() {
cp /opt/wealthfolio/.env /opt/wealthfolio_env_backup
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball" "v${RELEASE}"
msg_info "Building Frontend (patience)"
cd /opt/wealthfolio

View File

@@ -19,7 +19,7 @@
"type": "default",
"script": "ct/bentopdf.sh",
"resources": {
"cpu": 1,
"cpu": 2,
"ram": 4096,
"hdd": 4,
"os": "debian",

View File

@@ -1,5 +1,5 @@
{
"generated": "2026-03-05T12:12:30Z",
"generated": "2026-03-06T12:10:39Z",
"versions": [
{
"slug": "2fauth",
@@ -214,9 +214,9 @@
{
"slug": "comfyui",
"repo": "comfyanonymous/ComfyUI",
"version": "v0.16.0",
"version": "v0.16.3",
"pinned": false,
"date": "2026-03-05T10:35:07Z"
"date": "2026-03-05T23:18:25Z"
},
{
"slug": "commafeed",
@@ -270,9 +270,9 @@
{
"slug": "databasus",
"repo": "databasus/databasus",
"version": "v3.16.4",
"version": "v3.17.0",
"pinned": false,
"date": "2026-03-01T08:20:17Z"
"date": "2026-03-06T07:07:22Z"
},
{
"slug": "dawarich",
@@ -284,9 +284,9 @@
{
"slug": "discopanel",
"repo": "nickheyer/discopanel",
"version": "v1.0.37",
"version": "v2.0.0",
"pinned": false,
"date": "2026-02-18T08:53:43Z"
"date": "2026-03-06T08:19:39Z"
},
{
"slug": "dispatcharr",
@@ -326,9 +326,9 @@
{
"slug": "drawio",
"repo": "jgraph/drawio",
"version": "v29.5.2",
"version": "v29.6.1",
"pinned": false,
"date": "2026-02-22T10:36:14Z"
"date": "2026-03-06T09:14:17Z"
},
{
"slug": "duplicati",
@@ -382,9 +382,9 @@
{
"slug": "firefly",
"repo": "firefly-iii/firefly-iii",
"version": "v6.5.3",
"version": "v6.5.4",
"pinned": false,
"date": "2026-03-04T06:53:02Z"
"date": "2026-03-06T09:07:56Z"
},
{
"slug": "fladder",
@@ -452,9 +452,9 @@
{
"slug": "gitea-mirror",
"repo": "RayLabsHQ/gitea-mirror",
"version": "v3.12.2",
"version": "v3.12.4",
"pinned": false,
"date": "2026-03-05T04:26:50Z"
"date": "2026-03-06T05:02:40Z"
},
{
"slug": "glance",
@@ -606,16 +606,16 @@
{
"slug": "invoiceninja",
"repo": "invoiceninja/invoiceninja",
"version": "v5.12.69",
"version": "v5.12.70",
"pinned": false,
"date": "2026-02-26T22:23:32Z"
"date": "2026-03-06T01:53:38Z"
},
{
"slug": "jackett",
"repo": "Jackett/Jackett",
"version": "v0.24.1287",
"version": "v0.24.1292",
"pinned": false,
"date": "2026-03-05T05:49:33Z"
"date": "2026-03-06T05:57:21Z"
},
{
"slug": "jellystat",
@@ -662,9 +662,9 @@
{
"slug": "keycloak",
"repo": "keycloak/keycloak",
"version": "26.5.4",
"version": "26.5.5",
"pinned": false,
"date": "2026-02-20T09:19:45Z"
"date": "2026-03-05T15:40:30Z"
},
{
"slug": "kima-hub",
@@ -1110,9 +1110,9 @@
{
"slug": "photoprism",
"repo": "photoprism/photoprism",
"version": "251130-b3068414c",
"version": "260305-fad9d5395",
"pinned": false,
"date": "2025-12-01T05:07:31Z"
"date": "2026-03-05T20:25:12Z"
},
{
"slug": "pihole-exporter",
@@ -1138,9 +1138,9 @@
{
"slug": "pocketbase",
"repo": "pocketbase/pocketbase",
"version": "v0.36.5",
"version": "v0.36.6",
"pinned": false,
"date": "2026-02-21T11:45:32Z"
"date": "2026-03-06T08:07:09Z"
},
{
"slug": "pocketid",
@@ -1229,9 +1229,9 @@
{
"slug": "pulse",
"repo": "rcourtman/Pulse",
"version": "v5.1.19",
"version": "v5.1.20",
"pinned": false,
"date": "2026-03-05T11:14:54Z"
"date": "2026-03-06T00:30:32Z"
},
{
"slug": "pve-scripts-local",
@@ -1306,9 +1306,9 @@
{
"slug": "recyclarr",
"repo": "recyclarr/recyclarr",
"version": "v8.3.2",
"version": "v8.4.0",
"pinned": false,
"date": "2026-02-25T22:39:51Z"
"date": "2026-03-06T01:25:59Z"
},
{
"slug": "reitti",
@@ -1333,10 +1333,10 @@
},
{
"slug": "rustdeskserver",
"repo": "rustdesk/rustdesk-server",
"version": "1.1.15",
"repo": "lejianwen/rustdesk-server",
"version": "v0.1.2",
"pinned": false,
"date": "2026-01-12T05:38:30Z"
"date": "2025-09-01T02:52:30Z"
},
{
"slug": "rustypaste",
@@ -1355,9 +1355,9 @@
{
"slug": "scanopy",
"repo": "scanopy/scanopy",
"version": "v0.14.12",
"version": "v0.14.14",
"pinned": false,
"date": "2026-03-05T07:24:59Z"
"date": "2026-03-06T06:50:38Z"
},
{
"slug": "scraparr",
@@ -1390,9 +1390,9 @@
{
"slug": "semaphore",
"repo": "semaphoreui/semaphore",
"version": "v2.17.15",
"version": "v2.17.16",
"pinned": false,
"date": "2026-02-28T09:04:40Z"
"date": "2026-03-05T12:39:05Z"
},
{
"slug": "shelfmark",
@@ -1411,9 +1411,9 @@
{
"slug": "silverbullet",
"repo": "silverbulletmd/silverbullet",
"version": "2.4.1",
"version": "2.5.1",
"pinned": false,
"date": "2026-01-16T12:08:28Z"
"date": "2026-03-05T15:13:22Z"
},
{
"slug": "slskd",
@@ -1467,9 +1467,9 @@
{
"slug": "sportarr",
"repo": "Sportarr/Sportarr",
"version": "v4.0.985.1060",
"version": "v4.0.986.1061",
"pinned": false,
"date": "2026-03-04T01:00:04Z"
"date": "2026-03-06T01:04:24Z"
},
{
"slug": "stirling-pdf",
@@ -1698,9 +1698,9 @@
{
"slug": "wallos",
"repo": "ellite/Wallos",
"version": "v4.6.1",
"version": "v4.6.2",
"pinned": false,
"date": "2026-02-10T21:06:46Z"
"date": "2026-03-05T22:18:06Z"
},
{
"slug": "wanderer",
@@ -1740,9 +1740,9 @@
{
"slug": "wealthfolio",
"repo": "afadil/wealthfolio",
"version": "v3.0.3",
"version": "v3.0.4",
"pinned": false,
"date": "2026-03-03T21:47:55Z"
"date": "2026-03-05T19:58:24Z"
},
{
"slug": "web-check",
@@ -1838,9 +1838,9 @@
{
"slug": "zwave-js-ui",
"repo": "zwave-js/zwave-js-ui",
"version": "v11.13.0",
"version": "v11.14.0",
"pinned": false,
"date": "2026-03-04T15:09:54Z"
"date": "2026-03-06T09:34:32Z"
}
]
}

View File

@@ -54,6 +54,10 @@
{
"text": "To see admin password on Alpine, type `cat ~/rustdesk.creds` inside LXC.",
"type": "info"
},
{
"text": "This script uses hbbs/hbbr builds from `lejianwen/rustdesk-server` (instead of the official repo) for full compatibility with the RustDesk API (SSO/OAuth). See `https://github.com/community-scripts/ProxmoxVE/issues/12079`.",
"type": "info"
}
]
}

View File

@@ -13,17 +13,17 @@ setting_up_container
network_check
update_os
RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
RELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
msg_info "Installing RustDesk Server v${RELEASE}"
temp_file1=$(mktemp)
curl -fsSL "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1"
$STD unzip "$temp_file1"
mv amd64 /opt/rustdesk-server
mkdir -p /root/.config/rustdesk
cd /opt/rustdesk-server
./rustdesk-utils genkeypair > /tmp/rustdesk_keys.txt
grep "Public Key" /tmp/rustdesk_keys.txt | awk '{print $3}' > /root/.config/rustdesk/id_ed25519.pub
grep "Secret Key" /tmp/rustdesk_keys.txt | awk '{print $3}' > /root/.config/rustdesk/id_ed25519
./rustdesk-utils genkeypair >/tmp/rustdesk_keys.txt
grep "Public Key" /tmp/rustdesk_keys.txt | awk '{print $3}' >/root/.config/rustdesk/id_ed25519.pub
grep "Secret Key" /tmp/rustdesk_keys.txt | awk '{print $3}' >/root/.config/rustdesk/id_ed25519
chmod 600 /root/.config/rustdesk/id_ed25519
chmod 644 /root/.config/rustdesk/id_ed25519.pub
rm /tmp/rustdesk_keys.txt

View File

@@ -19,8 +19,12 @@ fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "
msg_info "Setup BentoPDF"
cd /opt/bentopdf
$STD npm ci --no-audit --no-fund
$STD npm install http-server -g
cp ./.env.example ./.env.production
export NODE_OPTIONS="--max-old-space-size=3072"
export SIMPLE_MODE=true
$STD npm run build -- --mode production
export VITE_USE_CDN=true
$STD npm run build:all
msg_ok "Setup BentoPDF"
msg_info "Creating Service"
@@ -31,8 +35,8 @@ After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/bentopdf
ExecStart=/usr/bin/npx serve dist -p 8080
WorkingDirectory=/opt/bentopdf/dist
ExecStart=/usr/bin/npx http-server -g -b -d false -r --no-dotfiles
Restart=always
RestartSec=10

View File

@@ -33,7 +33,7 @@ done
# Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13)
[[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12"
MONGO_VERSION=$(get_latest_gh_tag "mongodb/mongo-tools" "100." || echo "100.14.1")
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-x86_64-${MONGO_VERSION}.deb"
fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-x86_64-${MONGO_VERSION}.deb" ""
mkdir -p /usr/local/mongodb-database-tools/bin
[[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump
[[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore

View File

@@ -14,7 +14,9 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y zip
$STD apt install -y \
build-essential \
zip
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql

View File

@@ -13,10 +13,13 @@ setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "rustdesk-hbbr" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-hbbs" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-utils" "rustdesk/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-utils*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-hbbr" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbr*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-hbbs" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-hbbs*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-utils" "lejianwen/rustdesk-server" "binary" "latest" "/opt/rustdesk" "rustdesk-server-utils*amd64.deb"
fetch_and_deploy_gh_release "rustdesk-api" "lejianwen/rustdesk-api" "binary" "latest" "/opt/rustdesk" "rustdesk-api-server*amd64.deb"
systemctl enable -q --now rustdesk-hbbr
systemctl enable -q --now rustdesk-hbbs
systemctl enable -q --now rustdesk-api
motd_ssh
customize

View File

@@ -24,7 +24,7 @@ msg_ok "Installed Dependencies"
setup_rust
NODE_VERSION="20" NODE_MODULE="pnpm" setup_nodejs
fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball"
fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball" "v3.0.3"
msg_info "Building Frontend (patience)"
cd /opt/wealthfolio

View File

@@ -2008,6 +2008,8 @@ verify_gpg_fingerprint() {
# 0 on success (tag printed to stdout), 1 on failure
#
# Notes:
# - When a prefix is given, uses the matching-refs API for server-side
# filtering (avoids pagination issues with repos that have 100+ tags)
# - Skips tags containing "rc", "alpha", "beta", "dev", "test"
# - Sorts by version number (sort -V) to find the latest
# - Respects GITHUB_TOKEN for rate limiting
@@ -2021,11 +2023,21 @@ get_latest_gh_tag() {
[[ -n "${GITHUB_TOKEN:-}" ]] && header_args=(-H "Authorization: Bearer $GITHUB_TOKEN")
local http_code=""
local api_url=""
# When a prefix is given, use the matching-refs API for server-side filtering.
# This avoids pagination issues with repos that have hundreds of tags (e.g. mongodb/mongo-tools).
if [[ -n "$prefix" ]]; then
api_url="https://api.github.com/repos/${repo}/git/matching-refs/tags/${prefix}"
else
api_url="https://api.github.com/repos/${repo}/tags?per_page=100"
fi
http_code=$(curl -sSL --max-time 20 -w "%{http_code}" -o /tmp/gh_tags.json \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2022-11-28' \
"${header_args[@]}" \
"https://api.github.com/repos/${repo}/tags?per_page=100" 2>/dev/null) || true
"$api_url" 2>/dev/null) || true
if [[ "$http_code" == "401" ]]; then
msg_error "GitHub API authentication failed (HTTP 401)."
@@ -2063,12 +2075,19 @@ get_latest_gh_tag() {
tags_json=$(</tmp/gh_tags.json)
rm -f /tmp/gh_tags.json
# Extract tag names, filter by prefix, exclude pre-release patterns, sort by version
# Extract tag names depending on API response format
local latest=""
latest=$(echo "$tags_json" | grep -oP '"name":\s*"\K[^"]+' |
{ [[ -n "$prefix" ]] && grep "^${prefix}" || cat; } |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
if [[ -n "$prefix" ]]; then
# matching-refs API returns {"ref": "refs/tags/100.14.1", ...}
latest=$(echo "$tags_json" | grep -oP '"ref":\s*"refs/tags/\K[^"]+' |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
else
# tags API returns {"name": "v1.2.3", ...}
latest=$(echo "$tags_json" | grep -oP '"name":\s*"\K[^"]+' |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
fi
if [[ -z "$latest" ]]; then
msg_warn "No matching tags found for ${repo}${prefix:+ (prefix: $prefix)}"
@@ -7999,7 +8018,7 @@ EOF
# ------------------------------------------------------------------------------
function fetch_and_deploy_from_url() {
local url="$1"
local directory="$2"
local directory="${2:-}"
if [[ -z "$url" ]]; then
msg_error "URL parameter is required"