Compare commits

..

1 Commits

Author SHA1 Message Date
MickLesk
509622acaa Move the first five high-traffic scripts onto the core engine
Today's engine work reaches 30 of 561 ct scripts, about 5% of ProxmoxVE
traffic. The retry on engine downloads, exit 227 for a container that will not
start, the umask fix that stops a hardened host producing unusable containers,
the TMPDIR guard and the toolchain restore are all sitting where almost nobody
runs them.

Checked before touching anything, because "migrate" meant something much
larger last time:

  - None of the eighteen remaining top-25 scripts has an alpine-* variant, so
    there is no merge to do -- unlike the earlier round.
  - No script references misc/ anywhere except its bootstrap line.
  - Comparing the two engines' function surfaces, 61 names exist only in misc/.
    None of the eighteen calls any of them.

So it really is one line per script, and the head now matches the scripts
migrated earlier byte for byte.

Five in this wave rather than all eighteen, chosen as the lowest-volume of the
set at roughly 170 installs a day each: enough traffic to surface a problem
within a day, contained enough that a regression does not reach thousands.
docker at 1255/day and the OS containers should follow only once this wave has
run clean.

immich and vaultwarden are deliberately not in it. Both already sit near 44%
success, and migrating them now would change two variables at once with no way
to attribute the result.
2026-08-25 10:28:24 +02:00
34 changed files with 28 additions and 778 deletions

56
.github/workflows/sync-to-incus.yml generated vendored
View File

@@ -1,56 +0,0 @@
name: Sync ct/install to Incus
# When a ct/*.sh or install/*.sh file changes on main, trigger the Incus repo's
# own sync workflow immediately instead of waiting for its daily 04:00 cron.
#
# The actual mirroring + transformation lives in community-scripts/Incus
# (.github/workflows/sync-scripts.yml): it rewrites each script's bootstrap line
# to load the engine from community-scripts/core (ProxmoxVE's misc/build.func is
# a monolith with no Incus backend), so a plain 1:1 copy would break every Incus
# script. We therefore only fire a repository_dispatch and let that single
# source of truth do the work (and auto-approve + merge its own PR).
#
# Auth: the "push-app-to-main" GitHub App (vars.PUSH_MAIN_APP_ID /
# secrets.PUSH_MAIN_APP_SECRET), scoped to community-scripts/Incus. It has
# contents:write, which repository_dispatch requires (community-scripts-pr-app
# only has pull_requests:write, so it cannot dispatch). The app must be
# installed on the Incus repo.
on:
push:
branches:
- main
paths:
- "ct/**.sh"
- "install/**.sh"
workflow_dispatch:
concurrency:
group: sync-to-incus
cancel-in-progress: false
jobs:
dispatch:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest
steps:
- name: Generate token (dispatch to Incus)
id: token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.PUSH_MAIN_APP_ID }}
private-key: ${{ secrets.PUSH_MAIN_APP_SECRET }}
owner: community-scripts
repositories: Incus
- name: Trigger Incus sync workflow
env:
GH_TOKEN: ${{ steps.token.outputs.token }}
SOURCE_SHA: ${{ github.sha }}
run: |
set -euo pipefail
echo "Dispatching proxmoxve-scripts-changed to community-scripts/Incus (from ${SOURCE_SHA})"
gh api repos/community-scripts/Incus/dispatches \
-X POST \
-f "event_type=proxmoxve-scripts-changed" \
-F "client_payload[sha]=${SOURCE_SHA}"

View File

@@ -527,25 +527,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-08-25
### 🆕 New Scripts
- Maintainerr ([#16716](https://github.com/community-scripts/ProxmoxVE/pull/16716))
- pyLoad ([#16717](https://github.com/community-scripts/ProxmoxVE/pull/16717))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(apache-tika): handle upstream's switch from jar to zip distribution [@Munza2020](https://github.com/Munza2020) ([#16726](https://github.com/community-scripts/ProxmoxVE/pull/16726))
- Fix Firecrawl install: add ccache dependency for koffi native build [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16746](https://github.com/community-scripts/ProxmoxVE/pull/16746))
- excalidash: Fix broken Update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#16747](https://github.com/community-scripts/ProxmoxVE/pull/16747))
- #### 💥 Breaking Changes
- Migrate the (remaining) Top 25 scripts to the new core engine [@MickLesk](https://github.com/MickLesk) ([#16749](https://github.com/community-scripts/ProxmoxVE/pull/16749))
## 2026-08-24
### 🆕 New Scripts

View File

@@ -35,8 +35,11 @@ function update_script() {
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
CLEAN_INSTALL=1 fetch_and_deploy_from_url "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.zip" /opt/apache-tika
mv "/opt/apache-tika/tika-server-standard-${RELEASE}.jar" /opt/apache-tika/tika-server-standard.jar
cd /opt/apache-tika
curl -fsSL -o tika-server-standard-${RELEASE}.jar "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar"
mv --force tika-server-standard.jar tika-server-standard-prev-version.jar
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"

View File

@@ -1,77 +0,0 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/teelur/budget-board
APP="Budget-Board"
var_tags="${var_tags:-finance;budget;money}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/budget-board ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "budget-board" "teelur/budget-board"; then
msg_info "Stopping Service"
systemctl stop budget-board
msg_ok "Stopped Service"
create_backup /opt/budget-board/budget-board.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball"
restore_backup
msg_info "Rebuilding Backend"
cd /opt/budget-board/server
$STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj"
export configuration=Release
$STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore
msg_ok "Rebuilt Backend"
msg_info "Rebuilding Frontend"
cd /opt/budget-board/client
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
$STD yarn install
$STD yarn run build
cp -r dist/. /var/www/html/
msg_ok "Rebuilt Frontend"
msg_info "Starting Service"
systemctl start budget-board
nginx_enable_site budget-board.conf
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -47,11 +47,11 @@ function update_script() {
msg_ok "Configured Database Provider"
msg_info "Rebuilding Application"
$STD npm ci --include=dev
$STD npm ci
$STD npx prisma generate
$STD npx tsc
cd /opt/excalidash/frontend
$STD npm ci --include=dev
$STD npm ci
$STD npm run build
cp -r /opt/excalidash/frontend/dist/. /var/www/excalidash/
msg_ok "Rebuilt Application"

View File

@@ -30,7 +30,7 @@ function update_script() {
exit
fi
ensure_dependencies build-essential ccache
ensure_dependencies build-essential
if check_for_gh_release "firecrawl" "firecrawl/firecrawl"; then
msg_info "Stopping Services"

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Authors: MickLesk (CanbiZ) | Co-Author: remz1337
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,62 +0,0 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.haproxy.org/
APP="HAProxy"
var_tags="${var_tags:-network;proxy}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/haproxy/haproxy.cfg ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating ${APP}"
$STD apt update
$STD apt install -y haproxy
msg_ok "Updated ${APP}"
msg_info "Validating Configuration"
if ! $STD haproxy -c -f /etc/haproxy/haproxy.cfg; then
msg_error "Configuration is invalid - service not restarted"
exit
fi
msg_ok "Validated Configuration"
msg_info "Restarting Service"
systemctl restart haproxy
msg_ok "Restarted Service"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Statistics page:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8404${CL}"
echo -e "${INFO}${YW}The generated stats password is in /etc/haproxy/haproxy.cfg${CL}"

View File

@@ -1,6 +0,0 @@
____ __ __ ____ __
/ __ )__ ______/ /___ ____ / /_ / __ )____ ____ __________/ /
/ __ / / / / __ / __ `/ _ \/ __/_____/ __ / __ \/ __ `/ ___/ __ /
/ /_/ / /_/ / /_/ / /_/ / __/ /_/_____/ /_/ / /_/ / /_/ / / / /_/ /
/_____/\__,_/\__,_/\__, /\___/\__/ /_____/\____/\__,_/_/ \__,_/
/____/

View File

@@ -1,6 +0,0 @@
__ _____ ____
/ / / / | / __ \_________ _ ____ __
/ /_/ / /| | / /_/ / ___/ __ \| |/_/ / / /
/ __ / ___ |/ ____/ / / /_/ /> </ /_/ /
/_/ /_/_/ |_/_/ /_/ \____/_/|_|\__, /
/____/

View File

@@ -1,6 +0,0 @@
__ ___ _ __ _
/ |/ /___ _(_)___ / /_____ _(_)___ ___ __________
/ /|_/ / __ `/ / __ \/ __/ __ `/ / __ \/ _ \/ ___/ ___/
/ / / / /_/ / / / / / /_/ /_/ / / / / / __/ / / /
/_/ /_/\__,_/_/_/ /_/\__/\__,_/_/_/ /_/\___/_/ /_/

View File

@@ -1,6 +0,0 @@
__ __
____ __ __/ / ____ ____ _____/ /
/ __ \/ / / / / / __ \/ __ `/ __ /
/ /_/ / /_/ / /___/ /_/ / /_/ / /_/ /
/ .___/\__, /_____/\____/\__,_/\__,_/
/_/ /____/

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Stephen Chin (steveonjava)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,80 +0,0 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Karolis Stanelis (kstanelis)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Maintainerr/Maintainerr
APP="Maintainerr"
var_tags="${var_tags:-media;arr;cleanup}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-24}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/maintainerr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "maintainerr" "Maintainerr/Maintainerr"; then
msg_info "Stopping Service"
systemctl stop maintainerr
msg_ok "Stopped Service"
create_backup /opt/data /opt/maintainerr/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr"
restore_backup
msg_info "Rebuilding Maintainerr (Patience)"
cd /opt/maintainerr
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD corepack enable
$STD corepack prepare yarn@4.11.0 --activate
$STD yarn config set enableTelemetry 0
$STD yarn install --network-timeout 300000
$STD yarn turbo build --concurrency=1
cp -r apps/ui/dist apps/server/dist/ui
cp -r apps/server/assets apps/server/dist/assets
find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g"
$STD yarn workspaces focus --all --production
rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui
sed -i '/^npm_package_version=/d;/^VERSION_TAG=/d' /opt/maintainerr/.env
{
echo "VERSION_TAG=stable"
echo "npm_package_version=$(cat ~/.maintainerr)"
} >>/opt/maintainerr/.env
msg_ok "Rebuilt Maintainerr"
msg_info "Starting Service"
systemctl start maintainerr
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6246${CL}"

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: tteck (tteckster) | Co-Author: CrazyWolf13, MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: havardthom | Co-Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck | Co-Author: havardthom | Co-Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,57 +0,0 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pyload/pyload
APP="pyLoad"
var_tags="${var_tags:-downloader}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-16}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pyload ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
systemctl stop pyload
msg_ok "Stopped Service"
msg_info "Updating ${APP}"
$STD uv pip install --python /opt/pyload/.venv --upgrade --prerelease allow "pyload-ng[all]"
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start pyload
msg_ok "Started Service"
msg_ok "Updated successfully!"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW}Access it using the following URL:${CL}"
echo -e "${GATEWAY}${BGN}http://${IP}:8000${CL}"

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -1,7 +1,5 @@
#!/usr/bin/env bash
_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main"
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -35,9 +35,11 @@ msg_ok "Installed Dependencies"
JAVA_VERSION="21" setup_java
msg_info "Installing Apache Tika"
mkdir -p /opt/apache-tika
cd /opt/apache-tika
RELEASE="$(curl -fsSL https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)"
fetch_and_deploy_from_url "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.zip" /opt/apache-tika
mv "/opt/apache-tika/tika-server-standard-${RELEASE}.jar" /opt/apache-tika/tika-server-standard.jar
curl -fsSL "https://dlcdn.apache.org/tika/${RELEASE}/tika-server-standard-${RELEASE}.jar" -o tika-server-standard-${RELEASE}.jar
mv tika-server-standard-${RELEASE}.jar tika-server-standard.jar
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Apache Tika"

View File

@@ -1,127 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/teelur/budget-board
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y nginx
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie"
$STD apt install -y dotnet-sdk-10.0
msg_ok "Installed Dependencies"
NODE_VERSION=25 setup_nodejs
PG_VERSION=16 setup_postgresql
PG_DB_NAME=budget_board_db PG_DB_USER=budget_board setup_postgresql_db
fetch_and_deploy_gh_release "budget-board" "teelur/budget-board" "tarball"
msg_info "Configuring Budget Board Backend"
cd /opt/budget-board/server
$STD dotnet restore "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj"
export configuration=Release
$STD dotnet publish "BudgetBoard.WebAPI/BudgetBoard.WebAPI.csproj" -c $configuration -o /opt/budget-board/publish /p:UseAppHost=false --no-restore
cat <<EOF >/opt/budget-board/budget-board.env
Logging__LogLevel__Default=Information
CLIENT_ADDRESS=$LOCAL_IP
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=$PG_DB_NAME
POSTGRES_USER=$PG_DB_USER
POSTGRES_PASSWORD=$PG_DB_PASS
OIDC_ENABLED=false
OIDC_ISSUER=
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
EMAIL_SENDER=
EMAIL_SENDER_USERNAME=
EMAIL_SENDER_PASSWORD=
EMAIL_SMTP_HOST=
EMAIL_SMTP_PORT=587
DISABLE_NEW_USERS=false
DISABLE_LOCAL_AUTH=false
AUTO_UPDATE_DB=true
DISABLE_AUTO_SYNC=false
SYNC_INTERVAL_HOURS=8
TZ=UTC
ASPNETCORE_URLS=http://127.0.0.1:6253
PORT=6253
VITE_SERVER_ADDRESS=${LOCAL_IP}
VITE_OIDC_ENABLED=false
VITE_OIDC_PROVIDER=
VITE_OIDC_CLIENT_ID=
VITE_DISABLE_NEW_USERS=false
VITE_DISABLE_LOCAL_AUTH=false
EOF
msg_ok "Configured Budget Board Backend"
msg_info "Configuring Budget Board Frontend"
cd /opt/budget-board/client
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
$STD yarn config set --home enableTelemetry 0
$STD npm install --global corepack@latest
$STD corepack enable
$STD yarn install
$STD yarn run build
cp -r dist/. /var/www/html/
msg_ok "Configured Budget Board Frontend"
msg_info "Creating services"
cat <<EOF >/etc/systemd/system/budget-board.service
[Unit]
Description=Budget Board Service
After=network.target
[Service]
WorkingDirectory=/opt/budget-board/publish
ExecStart=dotnet BudgetBoard.WebAPI.dll
Restart=always
EnvironmentFile=/opt/budget-board/budget-board.env
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now budget-board
cat <<'EOF' >/etc/nginx/sites-available/budget-board.conf
server {
listen 80 default_server;
server_name _;
root /var/www/html;
index index.html;
location /api/ {
proxy_pass http://127.0.0.1:6253;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
try_files $uri $uri/ /index.html;
}
}
EOF
nginx_enable_site budget-board.conf
msg_ok "Created services"
motd_ssh
customize
cleanup_lxc

View File

@@ -16,7 +16,6 @@ update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
ccache \
cmake \
git \
nftables \

View File

@@ -30,9 +30,8 @@ setup_deb_based() {
chown -R gitea:gitea /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
chown root:gitea /etc/gitea
chmod 770 /etc/gitea
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
chmod 750 /etc/gitea
sudo -u gitea ln -s /var/lib/gitea/data/.ssh/ /etc/gitea/.ssh
msg_ok "Configured Gitea"
msg_info "Creating Service"

View File

@@ -1,73 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.haproxy.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing HAProxy"
$STD apt install -y haproxy
msg_ok "Installed HAProxy"
msg_info "Configuring HAProxy"
HAPROXY_STATS_PASSWORD=$(openssl rand -base64 18)
cat <<EOF >/etc/haproxy/haproxy.cfg
global
log /dev/log local0
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5s
timeout client 50s
timeout server 50s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
listen stats
bind *:8404
stats enable
stats uri /
stats refresh 10s
stats admin if TRUE
stats auth admin:${HAPROXY_STATS_PASSWORD}
# Example: replace with your own frontend/backend pairs.
#frontend http_in
# bind *:80
# default_backend servers
#
#backend servers
# balance roundrobin
# server web1 192.168.1.10:80 check
# server web2 192.168.1.11:80 check
EOF
$STD haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl restart haproxy
msg_ok "Configured HAProxy"
motd_ssh
customize
cleanup_lxc

View File

@@ -1,84 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: Karolis Stanelis (kstanelis)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Maintainerr/Maintainerr
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
build-essential \
pkg-config \
libcairo2-dev \
libpango1.0-dev \
libjpeg-dev \
libgif-dev \
libpixman-1-dev \
librsvg2-dev
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
fetch_and_deploy_gh_release "maintainerr" "Maintainerr/Maintainerr" "tarball" "latest" "/opt/maintainerr"
msg_info "Building Maintainerr (Patience)"
cd /opt/maintainerr
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export NODE_OPTIONS="--max-old-space-size=4096"
$STD corepack enable
$STD corepack prepare yarn@4.11.0 --activate
$STD yarn config set enableTelemetry 0
$STD yarn install --network-timeout 300000
$STD yarn turbo build --concurrency=1
cp -r apps/ui/dist apps/server/dist/ui
cp -r apps/server/assets apps/server/dist/assets
find apps/server/dist/ui -type f -not -path '*/node_modules/*' -print0 | xargs -0 sed -i "s,/__PATH_PREFIX__,,g"
$STD yarn workspaces focus --all --production
rm -rf /opt/maintainerr/.yarn/cache /opt/maintainerr/.turbo /opt/maintainerr/apps/ui
msg_ok "Built Maintainerr"
msg_info "Configuring Environment"
mkdir -p /opt/data/logs
ln -sfn /opt/maintainerr /opt/app
cat <<EOF >/opt/maintainerr/.env
NODE_ENV=production
DATA_DIR=/opt/data
UI_PORT=6246
UI_HOSTNAME=0.0.0.0
BASE_PATH=
VERSION_TAG=stable
npm_package_version=$(cat ~/.maintainerr)
EOF
msg_ok "Configured Environment"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/maintainerr.service
[Unit]
Description=Maintainerr
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/maintainerr/apps/server
EnvironmentFile=/opt/maintainerr/.env
ExecStart=/usr/bin/node dist/main
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now maintainerr
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -1,67 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/pyload/pyload
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
unrar-free \
p7zip-full \
tesseract-ocr
msg_ok "Installed Dependencies"
UV_PYTHON="3.13" setup_uv
msg_info "Setting up pyLoad"
mkdir -p /opt/pyload_data/{userdir,downloads}
$STD uv venv --python 3.13 /opt/pyload/.venv
$STD uv pip install --python /opt/pyload/.venv --prerelease allow "pyload-ng[all]"
msg_ok "Set up pyLoad"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/pyload.service
[Unit]
Description=pyLoad Download Manager
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/pyload
ExecStart=/opt/pyload/.venv/bin/pyload --userdir /opt/pyload_data/userdir --storagedir /opt/pyload_data/downloads
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now pyload
msg_ok "Created Service"
msg_info "Configuring Web Interface"
for _ in {1..30}; do
[[ -f /opt/pyload_data/userdir/settings/pyload.cfg ]] && break
sleep 1
done
sed -i 's|^\([[:space:]]*ip host : "IP address"\) = localhost$|\1 = 0.0.0.0|' /opt/pyload_data/userdir/settings/pyload.cfg
# pyLoad rewrites storage_folder from --storagedir on every start; the first start seeded it.
sed -i 's| --storagedir /opt/pyload_data/downloads||' /etc/systemd/system/pyload.service
systemctl daemon-reload
systemctl restart pyload
msg_ok "Configured Web Interface"
motd_ssh
customize
cleanup_lxc

View File

@@ -4,9 +4,8 @@
# Author: BvdBerg01 | Co-Author: remz1337
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
_CS_CORE_URL="${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}"
source <(curl -fsSL "${_CS_CORE_URL}/core/core.func")
source <(curl -fsSL "${_CS_CORE_URL}/api/api.func") 2>/dev/null || true
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/core.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func) 2>/dev/null || true
declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "update-apps" "pve"
# =============================================================================