From ed2ead9ef2114bff0d3c046861ca687dbba0b13e Mon Sep 17 00:00:00 2001 From: Stavros Date: Thu, 30 Jan 2025 09:35:10 +0200 Subject: [PATCH 001/480] fix: remove rounded styles from command primitive (#1840) --- frontend/src/components/ui/command.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/ui/command.tsx b/frontend/src/components/ui/command.tsx index c79b59ebe..e90fbef41 100644 --- a/frontend/src/components/ui/command.tsx +++ b/frontend/src/components/ui/command.tsx @@ -15,7 +15,7 @@ const Command = React.forwardRef< Date: Thu, 30 Jan 2025 08:38:23 +0100 Subject: [PATCH 002/480] Update CHANGELOG.md (#1863) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4eb65f81..2f73d4731 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-30 + +### Changed + +### 🌐 Website + +- fix: remove rounded styles from command primitive [@steveiliop56](https://github.com/steveiliop56) ([#1840](https://github.com/community-scripts/ProxmoxVE/pull/1840)) + ## 2025-01-29 ### Changed From cbb18668dd261b9064151dc1bdb3aa0d5422e22d Mon Sep 17 00:00:00 2001 From: NiceDevil <17103076+nicedevil007@users.noreply.github.com> Date: Thu, 30 Jan 2025 10:55:09 +0100 Subject: [PATCH 003/480] initial for PR (#1862) --- ct/alpine-it-tools.sh | 62 ++++++++++++++++++++++++++++++ install/alpine-it-tools-install.sh | 56 +++++++++++++++++++++++++++ json/it-tools.json | 34 ++++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 ct/alpine-it-tools.sh create mode 100644 install/alpine-it-tools-install.sh create mode 100644 json/it-tools.json diff --git a/ct/alpine-it-tools.sh b/ct/alpine-it-tools.sh new file mode 100644 index 000000000..e9b8c2df8 --- /dev/null +++ b/ct/alpine-it-tools.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: nicedevil007 (NiceDevil) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + + +# App Default Values +APP="Alpine-IT-Tools" +var_tags="alpine;development" +var_cpu="1" +var_ram="256" +var_disk="0.2" +var_os="alpine" +var_version="3.21" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /usr/share/nginx/html ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4) + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" + msg_info "Updating ${APP} LXC" + curl -fsSL -o it-tools.zip "$DOWNLOAD_URL" + mkdir -p /usr/share/nginx/html + rm -rf /usr/share/nginx/html/* + unzip -q it-tools.zip -d /tmp/it-tools + cp -r /tmp/it-tools/dist/* /usr/share/nginx/html + rm -rf /tmp/it-tools + rm -f it-tools.zip + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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 IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/alpine-it-tools-install.sh b/install/alpine-it-tools-install.sh new file mode 100644 index 000000000..b2fc85d26 --- /dev/null +++ b/install/alpine-it-tools-install.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: nicedevil007 (NiceDevil) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apk add \ + curl \ + mc \ + nginx \ + unzip +msg_ok "Installed Dependencies" + +msg_info "Installing IT-Tools" +RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4) +DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" + +curl -fsSL -o it-tools.zip "$DOWNLOAD_URL" +mkdir -p /usr/share/nginx/html +unzip -q it-tools.zip -d /tmp/it-tools +cp -r /tmp/it-tools/dist/* /usr/share/nginx/html +cat <<'EOF' > /etc/nginx/http.d/default.conf +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +} +EOF +$STD rc-update add nginx default +$STD rc-service nginx start +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed IT-Tools" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /tmp/it-tools +rm -f it-tools.zip +$STD apk cache clean +msg_ok "Cleaned" diff --git a/json/it-tools.json b/json/it-tools.json new file mode 100644 index 000000000..709f2c51e --- /dev/null +++ b/json/it-tools.json @@ -0,0 +1,34 @@ +{ + "name": "IT-Tools", + "slug": "it-tools", + "categories": [ + 20 + ], + "date_created": "2025-01-30", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": null, + "website": "https://github.com/CorentinTh/it-tools", + "logo": "https://raw.githubusercontent.com/CorentinTh/it-tools/08d977b8cdb7ffb76adfa18ba6eb4b73795ec814/public/safari-pinned-tab.svg", + "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.", + "install_methods": [ + { + "type": "alpine", + "script": "ct/alpine-it-tools.sh", + "resources": { + "cpu": 1, + "ram": 256, + "hdd": 0.2, + "os": "alpine", + "version": "3.21" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From bb553ae48cf6265074301ad3b5f5fb7fb3d141ab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:02:13 +0100 Subject: [PATCH 004/480] Update .app files (#1865) Co-authored-by: GitHub Actions --- ct/headers/alpine-it-tools | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/alpine-it-tools diff --git a/ct/headers/alpine-it-tools b/ct/headers/alpine-it-tools new file mode 100644 index 000000000..8db223998 --- /dev/null +++ b/ct/headers/alpine-it-tools @@ -0,0 +1,6 @@ + ___ __ _ __________ ______ __ + / | / /___ (_)___ ___ / _/_ __/ /_ __/___ ____ / /____ + / /| | / / __ \/ / __ \/ _ \______ / / / /_____/ / / __ \/ __ \/ / ___/ + / ___ |/ / /_/ / / / / / __/_____// / / /_____/ / / /_/ / /_/ / (__ ) +/_/ |_/_/ .___/_/_/ /_/\___/ /___/ /_/ /_/ \____/\____/_/____/ + /_/ From 6924a6fea44901764170378331b7fc1cf1a21f78 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:26:30 +0100 Subject: [PATCH 005/480] Optimize PVE Manager Version-Check (#1866) --- misc/add-lxc-iptag.sh | 2 +- misc/build.func | 2 +- misc/post-pve-install.sh | 2 +- vm/archlinux-vm.sh | 2 +- vm/debian-vm.sh | 2 +- vm/docker-vm.sh | 2 +- vm/haos-vm.sh | 2 +- vm/mikrotik-routeros.sh | 2 +- vm/nextcloud-vm.sh | 2 +- vm/openwrt.sh | 2 +- vm/owncloud-vm.sh | 2 +- vm/ubuntu2204-vm.sh | 2 +- vm/ubuntu2404-vm.sh | 2 +- vm/ubuntu2410-vm.sh | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh index 7ef23341f..e838f1df8 100644 --- a/misc/add-lxc-iptag.sh +++ b/misc/add-lxc-iptag.sh @@ -102,7 +102,7 @@ while true; do esac done -if ! pveversion | grep -Eq "pve-manager/8.[0-3]"; then +if ! pveversion | grep -Eq "pve-manager/8\.[0-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" msg_error "⚠️ Requires Proxmox Virtual Environment Version 8.0 or later." msg_error "Exiting..." diff --git a/misc/build.func b/misc/build.func index 42e18452f..e68ef09af 100644 --- a/misc/build.func +++ b/misc/build.func @@ -140,7 +140,7 @@ root_check() { # This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported. pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/misc/post-pve-install.sh b/misc/post-pve-install.sh index 4290c50f6..aeba762cd 100644 --- a/misc/post-pve-install.sh +++ b/misc/post-pve-install.sh @@ -231,7 +231,7 @@ while true; do esac done -if ! pveversion | grep -Eq "pve-manager/8.[0-3]"; then +if ! pveversion | grep -Eq "pve-manager/8\.[0-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.0 or later." echo -e "Exiting..." diff --git a/vm/archlinux-vm.sh b/vm/archlinux-vm.sh index 6f08a0023..3ed539fff 100644 --- a/vm/archlinux-vm.sh +++ b/vm/archlinux-vm.sh @@ -111,7 +111,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/debian-vm.sh b/vm/debian-vm.sh index 857c0ad60..856078554 100644 --- a/vm/debian-vm.sh +++ b/vm/debian-vm.sh @@ -111,7 +111,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/docker-vm.sh b/vm/docker-vm.sh index db855d504..280aeb4c3 100644 --- a/vm/docker-vm.sh +++ b/vm/docker-vm.sh @@ -91,7 +91,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/haos-vm.sh b/vm/haos-vm.sh index 87ba35c90..0b4be157c 100644 --- a/vm/haos-vm.sh +++ b/vm/haos-vm.sh @@ -115,7 +115,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/mikrotik-routeros.sh b/vm/mikrotik-routeros.sh index 816dea9f2..ce5085fbd 100644 --- a/vm/mikrotik-routeros.sh +++ b/vm/mikrotik-routeros.sh @@ -62,7 +62,7 @@ function cleanup() { } TEMP_DIR=$(mktemp -d) pushd $TEMP_DIR >/dev/null -if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then +if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/nextcloud-vm.sh b/vm/nextcloud-vm.sh index d93b7b95f..b7db4c895 100644 --- a/vm/nextcloud-vm.sh +++ b/vm/nextcloud-vm.sh @@ -91,7 +91,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/openwrt.sh b/vm/openwrt.sh index f7488f958..c6945713c 100644 --- a/vm/openwrt.sh +++ b/vm/openwrt.sh @@ -157,7 +157,7 @@ function msg_error() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/owncloud-vm.sh b/vm/owncloud-vm.sh index e004866c1..f81d0fb74 100644 --- a/vm/owncloud-vm.sh +++ b/vm/owncloud-vm.sh @@ -91,7 +91,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/ubuntu2204-vm.sh b/vm/ubuntu2204-vm.sh index 501321973..e60d7b628 100644 --- a/vm/ubuntu2204-vm.sh +++ b/vm/ubuntu2204-vm.sh @@ -111,7 +111,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/ubuntu2404-vm.sh b/vm/ubuntu2404-vm.sh index b6b18809b..3d8917913 100644 --- a/vm/ubuntu2404-vm.sh +++ b/vm/ubuntu2404-vm.sh @@ -112,7 +112,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." diff --git a/vm/ubuntu2410-vm.sh b/vm/ubuntu2410-vm.sh index a512d81d6..53a0898c7 100644 --- a/vm/ubuntu2410-vm.sh +++ b/vm/ubuntu2410-vm.sh @@ -111,7 +111,7 @@ function check_root() { } function pve_check() { - if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." From 05f114ed643077bd8f77274edd663c2e8cb458bb Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:33:59 +0100 Subject: [PATCH 006/480] Fix IT-Tools Website Entry (#1869) --- json/it-tools.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/it-tools.json b/json/it-tools.json index 709f2c51e..05e132399 100644 --- a/json/it-tools.json +++ b/json/it-tools.json @@ -10,12 +10,12 @@ "privileged": false, "interface_port": 80, "documentation": null, - "website": "https://github.com/CorentinTh/it-tools", + "website": "https://it-tools.tech/", "logo": "https://raw.githubusercontent.com/CorentinTh/it-tools/08d977b8cdb7ffb76adfa18ba6eb4b73795ec814/public/safari-pinned-tab.svg", "description": "IT-Tools is a web-based suite of utilities designed to streamline and simplify various IT tasks, providing tools for developers and system administrators to manage their workflows efficiently.", "install_methods": [ { - "type": "alpine", + "type": "default", "script": "ct/alpine-it-tools.sh", "resources": { "cpu": 1, From 7f2481ea121f2fd93a482ef39dce22779d4ad5b1 Mon Sep 17 00:00:00 2001 From: Kaedon Cleland-Host <24703977+Dracentis@users.noreply.github.com> Date: Thu, 30 Jan 2025 05:34:27 -0500 Subject: [PATCH 007/480] New Script: Mattermost (#1856) * Create mattermost.sh, mattermost-install.sh, and mattermost.json * Change paths in build.func install.func and mattermost.sh This commit is for testing purposes and will be reverted before creating the pull request. * Fixed OS in mattermost.sh and mattermost.json * Change paths in all files Points all files to my fork for testing. * Added tags and fixed missing variable definition * Fixed mattermost-install.sh * Fixed sed command in mattermost-install.sh * Fixed sed command in mattermost-install.sh * Fixed broken config in mattermost-install.sh * Revert "Change paths in all files" This reverts commit 2f93e39233a8dc27c5f4f77d5b84eba9fea34b61. * Revert "Change paths in build.func install.func and mattermost.sh" This reverts commit 084c71fbdc4ae6abed09f6858b852967286bb092. * Fixed date in mattermost.json * Update install/mattermost-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update mattermost.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/mattermost.sh | 49 ++++++++++++++++++++++++++++ install/mattermost-install.sh | 60 +++++++++++++++++++++++++++++++++++ json/mattermost.json | 34 ++++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 ct/mattermost.sh create mode 100644 install/mattermost-install.sh create mode 100644 json/mattermost.json diff --git a/ct/mattermost.sh b/ct/mattermost.sh new file mode 100644 index 000000000..9b9a32c25 --- /dev/null +++ b/ct/mattermost.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Kaedon Cleland-Host (dracentis) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://mattermost.com/ + +# App Default Values +APP="Mattermost" +var_tags="collaboration" +var_cpu="1" +var_ram="2048" +var_disk="8" +var_os="ubuntu" +var_version="24.04" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/mattermost.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + 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 "${TAB}${GATEWAY}${BGN}http://${IP}:8065${CL}" diff --git a/install/mattermost-install.sh b/install/mattermost-install.sh new file mode 100644 index 000000000..b1a5a374e --- /dev/null +++ b/install/mattermost-install.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Kaedon Cleland-Host (dracentis) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gpg \ + postgresql +msg_ok "Installed Dependencies" + +msg_info "Setting up PostgreSQL" +DB_NAME=mattermost +DB_USER=mmuser +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" +$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME to $DB_USER;" +$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" +$STD sudo -u postgres psql -c "GRANT USAGE, CREATE ON SCHEMA PUBLIC TO $DB_USER;" +{ + echo "Mattermost Credentials" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" + echo "Database Name: $DB_NAME" +} >> ~/mattermost.creds +msg_ok "Set up PostgreSQL" + +msg_info "Installing Mattermost" +IPADDRESS=$(hostname -I | awk '{print $1}') +curl -sL -o- /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg +sh -c 'curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' +$STD apt-get update +$STD apt-get install -y mattermost +$STD install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json +sed -i -e "/DataSource/c\ \"DataSource\": \"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?sslmode=disable&connect_timeout=10\"," \ + -e "/SiteURL/c\ \"SiteURL\": \"http://$IPADDRESS:8065\"," /opt/mattermost/config/config.json +systemctl enable -q --now mattermost.service +msg_ok "Installed Mattermost" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/mattermost.json b/json/mattermost.json new file mode 100644 index 000000000..b4b279452 --- /dev/null +++ b/json/mattermost.json @@ -0,0 +1,34 @@ +{ + "name": "Mattermost", + "slug": "mattermost", + "categories": [ + 25 + ], + "date_created": "2025-01-30", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 8065, + "documentation": null, + "website": "https://mattermost.com/", + "logo": "https://avatars.githubusercontent.com/u/9828093?s=200&v=4", + "description": "Mattermost is an open source platform for secure collaboration across the entire software development lifecycle. It's written in Go and React and runs as a single Linux binary with MySQL or PostgreSQL. It has a slimilar interface and features to Slack or Discord.", + "install_methods": [ + { + "type": "default", + "script": "ct/mattermost.sh", + "resources": { + "cpu": 1, + "ram": 2048, + "hdd": 8, + "os": "ubuntu", + "version": "24.04" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 1270d87bf86d8010414425a2cadbba8e7811fbb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:35:35 +0100 Subject: [PATCH 008/480] Update .app files (#1870) Co-authored-by: GitHub Actions --- ct/headers/mattermost | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/mattermost diff --git a/ct/headers/mattermost b/ct/headers/mattermost new file mode 100644 index 000000000..1fc67ba3d --- /dev/null +++ b/ct/headers/mattermost @@ -0,0 +1,6 @@ + __ ___ __ __ __ + / |/ /___ _/ /_/ /____ _________ ___ ____ _____/ /_ + / /|_/ / __ `/ __/ __/ _ \/ ___/ __ `__ \/ __ \/ ___/ __/ + / / / / /_/ / /_/ /_/ __/ / / / / / / / /_/ (__ ) /_ +/_/ /_/\__,_/\__/\__/\___/_/ /_/ /_/ /_/\____/____/\__/ + From f520607d85b7ecfdc1502fbc055c25c2b24500b3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:37:46 +0100 Subject: [PATCH 009/480] Update CHANGELOG.md (#1864) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f73d4731..d11fb7a04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,8 +21,18 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New Script: Mattermost [@Dracentis](https://github.com/Dracentis) ([#1856](https://github.com/community-scripts/ProxmoxVE/pull/1856)) +- New Script: IT-Tools [@nicedevil007](https://github.com/nicedevil007) ([#1862](https://github.com/community-scripts/ProxmoxVE/pull/1862)) + +### 🚀 Updated Scripts + +- Optimize PVE Manager Version-Check [@MickLesk](https://github.com/MickLesk) ([#1866](https://github.com/community-scripts/ProxmoxVE/pull/1866)) + ### 🌐 Website +- Fix IT-Tools Website Entry (Default | Alpine) [@MickLesk](https://github.com/MickLesk) ([#1869](https://github.com/community-scripts/ProxmoxVE/pull/1869)) - fix: remove rounded styles from command primitive [@steveiliop56](https://github.com/steveiliop56) ([#1840](https://github.com/community-scripts/ProxmoxVE/pull/1840)) ## 2025-01-29 From f2eb24d527ba4ee61e864bc03cb5d654509658cb Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:43:26 +0100 Subject: [PATCH 010/480] add $STD --- install/mattermost-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/mattermost-install.sh b/install/mattermost-install.sh index b1a5a374e..2da3b1690 100644 --- a/install/mattermost-install.sh +++ b/install/mattermost-install.sh @@ -41,8 +41,8 @@ msg_ok "Set up PostgreSQL" msg_info "Installing Mattermost" IPADDRESS=$(hostname -I | awk '{print $1}') -curl -sL -o- /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg -sh -c 'curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' +$STD -sL -o- /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg +$STD -c 'curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' $STD apt-get update $STD apt-get install -y mattermost $STD install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json From 2ef0cd0f894543dbcf893954f811098f86acbfbd Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 11:48:12 +0100 Subject: [PATCH 011/480] Update mattermost-install.sh --- install/mattermost-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/mattermost-install.sh b/install/mattermost-install.sh index 2da3b1690..7509be2d1 100644 --- a/install/mattermost-install.sh +++ b/install/mattermost-install.sh @@ -41,8 +41,8 @@ msg_ok "Set up PostgreSQL" msg_info "Installing Mattermost" IPADDRESS=$(hostname -I | awk '{print $1}') -$STD -sL -o- /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg -$STD -c 'curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' +curl -sL -o /usr/share/keyrings/mattermost-archive-keyring.gpg https://deb.packages.mattermost.com/pubkey.gpg +sh -c 'curl -sL https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost' >/dev/null $STD apt-get update $STD apt-get install -y mattermost $STD install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json From d3882b681854a029bba51b7d3e40c914636f675f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:11:05 +0100 Subject: [PATCH 012/480] add chart.js --- frontend/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/package.json b/frontend/package.json index e689ba4c0..ed8f449f1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,6 +34,7 @@ "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", "@vercel/analytics": "^1.2.2", + "chart.js": "^4.4.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "^1.0.0", @@ -48,6 +49,7 @@ "pocketbase": "^0.21.4", "prettier-plugin-organize-imports": "^4.1.0", "react": "19.0.0-rc-02c0e824-20241028", + "react-chartjs-2": "^5.2.0", "react-code-blocks": "^0.1.6", "react-datepicker": "^7.6.0", "react-day-picker": "8.10.1", From 7299b773597f1153c11898608eff445cb5f6514c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:18:24 +0100 Subject: [PATCH 013/480] Create ApplicationChart.tsx --- frontend/src/components/ApplicationChart.tsx | 47 ++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 frontend/src/components/ApplicationChart.tsx diff --git a/frontend/src/components/ApplicationChart.tsx b/frontend/src/components/ApplicationChart.tsx new file mode 100644 index 000000000..dfef0bda3 --- /dev/null +++ b/frontend/src/components/ApplicationChart.tsx @@ -0,0 +1,47 @@ +"use client"; + +import React from "react"; +import { Pie } from "react-chartjs-2"; +import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; + +ChartJS.register(ArcElement, Tooltip, Legend); + +interface ApplicationChartProps { + data: { nsapp: string }[]; +} + +const ApplicationChart: React.FC = ({ data }) => { + const chartData = () => { + const appCounts: Record = {}; + + data.forEach((item) => { + appCounts[item.nsapp] = (appCounts[item.nsapp] || 0) + 1; + }); + + return { + labels: Object.keys(appCounts), + datasets: [ + { + label: "Applications", + data: Object.values(appCounts), + backgroundColor: [ + "#ff6384", + "#36a2eb", + "#ffce56", + "#4bc0c0", + "#9966ff", + "#ff9f40", + ], + }, + ], + }; + }; + + return ( +
+ +
+ ); +}; + +export default ApplicationChart; From d9b47783606f67573465d1655a01bb6dbe601f36 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:21:49 +0100 Subject: [PATCH 014/480] Update page.tsx --- frontend/src/app/data/page.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/data/page.tsx b/frontend/src/app/data/page.tsx index 59be8a01d..aaa28a88c 100644 --- a/frontend/src/app/data/page.tsx +++ b/frontend/src/app/data/page.tsx @@ -4,7 +4,7 @@ import React, { useEffect, useState } from "react"; import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import { string } from "zod"; - +import ApplicationChart from "../../components/ApplicationChart"; interface DataModel { id: number; @@ -36,6 +36,7 @@ const DataFetcher: React.FC = () => { const [sortConfig, setSortConfig] = useState<{ key: keyof DataModel | null, direction: 'ascending' | 'descending' }>({ key: 'id', direction: 'descending' }); const [itemsPerPage, setItemsPerPage] = useState(5); const [currentPage, setCurrentPage] = useState(1); + const [showChart, setShowChart] = useState(false); useEffect(() => { const fetchData = async () => { @@ -158,7 +159,14 @@ const DataFetcher: React.FC = () => { /> + + {showChart && }

{filteredData.length} results found

diff --git a/frontend/src/components/ApplicationChart.tsx b/frontend/src/components/ApplicationChart.tsx index 0bc1c7598..16a667038 100644 --- a/frontend/src/components/ApplicationChart.tsx +++ b/frontend/src/components/ApplicationChart.tsx @@ -3,7 +3,8 @@ import React, { useState } from "react"; import { Pie } from "react-chartjs-2"; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; -import ChartDataLabels from "chartjs-plugin-datalabels"; +import ChartDataLabels from "chartjs-plugin-datalabels"; +import Modal from "@/components/Modal"; ChartJS.register(ArcElement, Tooltip, Legend, ChartDataLabels); @@ -12,6 +13,8 @@ interface ApplicationChartProps { } const ApplicationChart: React.FC = ({ data }) => { + const [isChartOpen, setIsChartOpen] = useState(false); + const [isTableOpen, setIsTableOpen] = useState(false); const [chartStartIndex, setChartStartIndex] = useState(0); const appCounts: Record = {}; @@ -42,40 +45,74 @@ const ApplicationChart: React.FC = ({ data }) => { return (
-
- { - return context.chart.data.labels?.[context.dataIndex] || ""; + + + + setIsChartOpen(false)}> +

Top Applications (Chart)

+
+ + context.chart.data.labels?.[context.dataIndex] || "", }, }, - }, - }} - /> -
+ }} + /> +
+
+ + +
+ -
- - -
+ setIsTableOpen(false)}> +

Application Count Table

+ + + + + + + + + {sortedApps.map(([name, count]) => ( + + + + + ))} + +
ApplicationCount
{name}{count}
+
); }; diff --git a/frontend/src/components/Modal.tsx b/frontend/src/components/Modal.tsx new file mode 100644 index 000000000..0ee87bbd3 --- /dev/null +++ b/frontend/src/components/Modal.tsx @@ -0,0 +1,29 @@ +"use client"; + +import React from "react"; + +interface ModalProps { + isOpen: boolean; + onClose: () => void; + children: React.ReactNode; +} + +const Modal: React.FC = ({ isOpen, onClose, children }) => { + if (!isOpen) return null; + + return ( +
+
+ + {children} +
+
+ ); +}; + +export default Modal; From 343de50ef8b7f25f8fe40407bbfc549324c47875 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:48:36 +0100 Subject: [PATCH 019/480] fix breaking ui --- frontend/src/app/data/page.tsx | 6 ---- frontend/src/components/ApplicationChart.tsx | 30 ++++++++++++++------ frontend/src/components/Modal.tsx | 2 +- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/frontend/src/app/data/page.tsx b/frontend/src/app/data/page.tsx index 042004805..774e1a656 100644 --- a/frontend/src/app/data/page.tsx +++ b/frontend/src/app/data/page.tsx @@ -159,12 +159,6 @@ const DataFetcher: React.FC = () => { />
-
diff --git a/frontend/src/components/ApplicationChart.tsx b/frontend/src/components/ApplicationChart.tsx index 16a667038..526505cda 100644 --- a/frontend/src/components/ApplicationChart.tsx +++ b/frontend/src/components/ApplicationChart.tsx @@ -4,7 +4,7 @@ import React, { useState } from "react"; import { Pie } from "react-chartjs-2"; import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; import ChartDataLabels from "chartjs-plugin-datalabels"; -import Modal from "@/components/Modal"; +import Modal from "@/components/Modal"; ChartJS.register(ArcElement, Tooltip, Legend, ChartDataLabels); @@ -16,6 +16,7 @@ const ApplicationChart: React.FC = ({ data }) => { const [isChartOpen, setIsChartOpen] = useState(false); const [isTableOpen, setIsTableOpen] = useState(false); const [chartStartIndex, setChartStartIndex] = useState(0); + const [tableLimit, setTableLimit] = useState(20); const appCounts: Record = {}; data.forEach((item) => { @@ -59,7 +60,7 @@ const ApplicationChart: React.FC = ({ data }) => { setIsChartOpen(false)}> -

Top Applications (Chart)

+

Top Applications (Chart)

= ({ data }) => { disabled={chartStartIndex === 0} className="p-2 border rounded bg-blue-500 text-white" > - ◀ Vorherige 20 + ◀ Last 20
setIsTableOpen(false)}> -

Application Count Table

- +

Application Count Table

+
@@ -104,17 +105,28 @@ const ApplicationChart: React.FC = ({ data }) => { - {sortedApps.map(([name, count]) => ( - + {sortedApps.slice(0, tableLimit).map(([name, count]) => ( + ))}
Application
{name} {count}
+ + {tableLimit < sortedApps.length && ( +
+ +
+ )}
); }; -export default ApplicationChart; +export default ApplicationChart; \ No newline at end of file diff --git a/frontend/src/components/Modal.tsx b/frontend/src/components/Modal.tsx index 0ee87bbd3..eedc1dcb1 100644 --- a/frontend/src/components/Modal.tsx +++ b/frontend/src/components/Modal.tsx @@ -13,7 +13,7 @@ const Modal: React.FC = ({ isOpen, onClose, children }) => { return (
-
+
+ +
+ - Page {currentPage} - +
); }; + export default DataFetcher; diff --git a/frontend/src/components/ApplicationChart.tsx b/frontend/src/components/ApplicationChart.tsx index 526505cda..e62c10961 100644 --- a/frontend/src/components/ApplicationChart.tsx +++ b/frontend/src/components/ApplicationChart.tsx @@ -1,132 +1,193 @@ "use client"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import { Chart as ChartJS, ArcElement, Tooltip as ChartTooltip, Legend } from "chart.js"; +import ChartDataLabels from "chartjs-plugin-datalabels"; +import { BarChart3, PieChart } from "lucide-react"; import React, { useState } from "react"; import { Pie } from "react-chartjs-2"; -import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; -import ChartDataLabels from "chartjs-plugin-datalabels"; -import Modal from "@/components/Modal"; -ChartJS.register(ArcElement, Tooltip, Legend, ChartDataLabels); +ChartJS.register(ArcElement, ChartTooltip, Legend, ChartDataLabels); interface ApplicationChartProps { data: { nsapp: string }[]; } -const ApplicationChart: React.FC = ({ data }) => { +const ITEMS_PER_PAGE = 20; +const CHART_COLORS = [ + "#ff6384", + "#36a2eb", + "#ffce56", + "#4bc0c0", + "#9966ff", + "#ff9f40", + "#4dc9f6", + "#f67019", + "#537bc4", + "#acc236", + "#166a8f", + "#00a950", + "#58595b", + "#8549ba", +]; + +export default function ApplicationChart({ data }: ApplicationChartProps) { const [isChartOpen, setIsChartOpen] = useState(false); const [isTableOpen, setIsTableOpen] = useState(false); const [chartStartIndex, setChartStartIndex] = useState(0); - const [tableLimit, setTableLimit] = useState(20); + const [tableLimit, setTableLimit] = useState(ITEMS_PER_PAGE); - const appCounts: Record = {}; - data.forEach((item) => { - appCounts[item.nsapp] = (appCounts[item.nsapp] || 0) + 1; - }); + // Calculate application counts + const appCounts = data.reduce((acc, item) => { + acc[item.nsapp] = (acc[item.nsapp] || 0) + 1; + return acc; + }, {} as Record); - const sortedApps = Object.entries(appCounts).sort(([, a], [, b]) => b - a); - const chartApps = sortedApps.slice(chartStartIndex, chartStartIndex + 20); + const sortedApps = Object.entries(appCounts) + .sort(([, a], [, b]) => b - a); + + const chartApps = sortedApps.slice( + chartStartIndex, + chartStartIndex + ITEMS_PER_PAGE + ); const chartData = { labels: chartApps.map(([name]) => name), datasets: [ { - label: "Applications", data: chartApps.map(([, count]) => count), - backgroundColor: [ - "#ff6384", - "#36a2eb", - "#ffce56", - "#4bc0c0", - "#9966ff", - "#ff9f40", - ], + backgroundColor: CHART_COLORS, }, ], }; + const chartOptions = { + plugins: { + legend: { display: false }, + datalabels: { + color: "white", + font: { weight: "bold" as const }, + formatter: (value: number, context: any) => { + const label = context.chart.data.labels?.[context.dataIndex]; + return `${label}\n(${value})`; + }, + }, + }, + responsive: true, + maintainAspectRatio: false, + }; + return ( -
- - +
+ + + + + + Open Chart View + - setIsChartOpen(false)}> -

Top Applications (Chart)

-
- - context.chart.data.labels?.[context.dataIndex] || "", - }, - }, - }} - /> -
-
- - -
-
+ + + + + Open Table View + +
- setIsTableOpen(false)}> -

Application Count Table

- - - - - - - - - {sortedApps.slice(0, tableLimit).map(([name, count]) => ( - - - - - ))} - -
ApplicationCount
{name}{count}
+ + + + Applications Distribution + +
+ +
+
+ + +
+
+
- {tableLimit < sortedApps.length && ( -
- -
- )} -
+ + )} + +
); -}; - -export default ApplicationChart; \ No newline at end of file +} \ No newline at end of file diff --git a/frontend/src/components/ui/table.tsx b/frontend/src/components/ui/table.tsx new file mode 100644 index 000000000..c0df655c0 --- /dev/null +++ b/frontend/src/components/ui/table.tsx @@ -0,0 +1,120 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Table = React.forwardRef< + HTMLTableElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+ + +)) +Table.displayName = "Table" + +const TableHeader = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableHeader.displayName = "TableHeader" + +const TableBody = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableBody.displayName = "TableBody" + +const TableFooter = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + tr]:last:border-b-0", + className + )} + {...props} + /> +)) +TableFooter.displayName = "TableFooter" + +const TableRow = React.forwardRef< + HTMLTableRowElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableRow.displayName = "TableRow" + +const TableHead = React.forwardRef< + HTMLTableCellElement, + React.ThHTMLAttributes +>(({ className, ...props }, ref) => ( + + @@ -250,6 +204,7 @@ const DataFetcher: React.FC = () => { + @@ -262,11 +217,18 @@ const DataFetcher: React.FC = () => { ) : item.status === "failed" ? ( "❌" ) : item.status === "installing" ? ( - "🔄" + "🔄" ) : ( item.status )} + @@ -275,6 +237,20 @@ const DataFetcher: React.FC = () => { + ))} diff --git a/misc/api.func b/misc/api.func new file mode 100644 index 000000000..b1faa0c2a --- /dev/null +++ b/misc/api.func @@ -0,0 +1,125 @@ +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/LICENSE + +post_to_api() { + + if ! command -v curl &> /dev/null; then + return + fi + + if [ "$DIAGNOSTICS" = "no" ]; then + return + fi + + if [ -z "$RANDOM_UUID" ]; then + return + fi + + local API_URL="http://api.community-scripts.org/upload" + local pve_version="not found" + pve_version=$(pveversion | awk -F'[/ ]' '{print $2}') + + JSON_PAYLOAD=$(cat < /dev/null; then + return + fi + + if [ "$POST_UPDATE_DONE" = true ]; then + return 0 + fi + local API_URL="http://api.community-scripts.org/upload/updatestatus" + local status="${1:-failed}" + local error="${2:-unknown}" + + JSON_PAYLOAD=$(cat < /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local exit_code="$?" @@ -63,8 +64,11 @@ error_handler() { local command="$2" local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" echo -e "\n$error_message" - if [[ "$line_number" -eq 23 ]]; then + if [[ "$line_number" -eq 44 ]]; then echo -e "The silent function has suppressed the error, run the script with verbose mode enabled, which will provide more detailed output.\n" + post_update_to_api "failed" "No error message, script ran in silent mode" + else + post_update_to_api "failed" "${command}" fi } From 78d96fdaa23436b1caac211f54a944b73d01fc78 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:24:20 +0100 Subject: [PATCH 092/480] Update .app files (#2014) Co-authored-by: GitHub Actions --- ct/headers/pbs | 6 ------ ct/headers/proxmox-backup-server | 12 ++++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) delete mode 100644 ct/headers/pbs create mode 100644 ct/headers/proxmox-backup-server diff --git a/ct/headers/pbs b/ct/headers/pbs deleted file mode 100644 index 785d90a83..000000000 --- a/ct/headers/pbs +++ /dev/null @@ -1,6 +0,0 @@ - ____ ____ _____ - / __ \/ __ ) ___/ - / /_/ / __ \__ \ - / ____/ /_/ /__/ / -/_/ /_____/____/ - diff --git a/ct/headers/proxmox-backup-server b/ct/headers/proxmox-backup-server new file mode 100644 index 000000000..a098c33ee --- /dev/null +++ b/ct/headers/proxmox-backup-server @@ -0,0 +1,12 @@ + ____ ____ __ + / __ \_________ _ ______ ___ ____ _ __ / __ )____ ______/ /__ + / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/_____/ __ / __ `/ ___/ //_/ + / ____/ / / /_/ /> Date: Tue, 4 Feb 2025 13:32:13 +0100 Subject: [PATCH 093/480] [Fix] Header breaks at long title (#2015) --- .github/workflows/scripts/generate-app-headers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/generate-app-headers.sh b/.github/workflows/scripts/generate-app-headers.sh index f82c674dd..a1ead001f 100755 --- a/.github/workflows/scripts/generate-app-headers.sh +++ b/.github/workflows/scripts/generate-app-headers.sh @@ -17,7 +17,7 @@ find ./ct -type f -name "*.sh" | sort | while read -r script; do output_file="${headers_dir}/$(basename "${script%.*}")" # Generate figlet output - figlet_output=$(figlet -f slant "$app_name") + figlet_output=$(figlet -f -w 500 slant "$app_name") # Check if figlet output is not empty if [[ -n "$figlet_output" ]]; then From 6be54478f464524965badab3278e22af529c9945 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:37:30 +0100 Subject: [PATCH 094/480] fix typo --- .github/workflows/scripts/generate-app-headers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/generate-app-headers.sh b/.github/workflows/scripts/generate-app-headers.sh index a1ead001f..854a0f1fc 100755 --- a/.github/workflows/scripts/generate-app-headers.sh +++ b/.github/workflows/scripts/generate-app-headers.sh @@ -17,7 +17,7 @@ find ./ct -type f -name "*.sh" | sort | while read -r script; do output_file="${headers_dir}/$(basename "${script%.*}")" # Generate figlet output - figlet_output=$(figlet -f -w 500 slant "$app_name") + figlet_output=$(figlet -w 500 -f slant "$app_name") # Check if figlet output is not empty if [[ -n "$figlet_output" ]]; then From 971aa5ba16c50bf82ba4effa9f1db8ad133f759d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:38:44 +0100 Subject: [PATCH 095/480] Update .app files (#2016) Co-authored-by: GitHub Actions --- ct/headers/alpine-nextcloud | 18 ++++++------------ ct/headers/alpine-vaultwarden | 18 ++++++------------ ct/headers/alpine-zigbee2mqtt | 18 ++++++------------ ct/headers/apache-cassandra | 18 ++++++------------ ct/headers/apache-couchdb | 18 ++++++------------ ct/headers/apache-guacamole | 18 ++++++------------ ct/headers/changedetection | 18 ++++++------------ ct/headers/dotnetaspwebapi | 18 ++++++------------ ct/headers/elementsynapse | 18 ++++++------------ ct/headers/heimdall-dashboard | 18 ++++++------------ ct/headers/homeassistant-core | 18 ++++++------------ ct/headers/nginxproxymanager | 18 ++++++------------ ct/headers/podman-homeassistant | 18 ++++++------------ ct/headers/prometheus-alertmanager | 18 ++++++------------ ct/headers/prometheus-pve-exporter | 18 ++++++------------ ct/headers/proxmox-backup-server | 18 ++++++------------ ct/headers/proxmox-datacenter-manager | 24 ++++++------------------ ct/headers/sqlserver2022 | 18 ++++++------------ ct/headers/urbackupserver | 18 ++++++------------ 19 files changed, 114 insertions(+), 234 deletions(-) diff --git a/ct/headers/alpine-nextcloud b/ct/headers/alpine-nextcloud index b27eb0cad..908459ba6 100644 --- a/ct/headers/alpine-nextcloud +++ b/ct/headers/alpine-nextcloud @@ -1,12 +1,6 @@ - ___ __ _ _ __ __ __ - / | / /___ (_)___ ___ / | / /__ _ __/ /______/ /___ __ __ - / /| | / / __ \/ / __ \/ _ \______/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / - / ___ |/ / /_/ / / / / / __/_____/ /| / __/> < / ____/ / / /_/ /> < / ____/ / / /_/ /> Date: Tue, 4 Feb 2025 14:18:20 +0100 Subject: [PATCH 096/480] [Fix]: Headername of Proxmox-Datacenter-Manager not in CamelCase (#2017) --- ct/proxmox-datacenter-manager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh index 2ee486339..621a54067 100644 --- a/ct/proxmox-datacenter-manager.sh +++ b/ct/proxmox-datacenter-manager.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Source: Proxmox Server Solution GmbH # App Default Values -APP="proxmox-datacenter-manager" +APP="Proxmox-Datacenter-Manager" var_tags="datacenter" var_cpu="2" var_ram="2048" From fd051552f3413aa65aa06a66a46219f56838605b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:19:00 +0100 Subject: [PATCH 097/480] Update .app files (#2019) Co-authored-by: GitHub Actions --- ct/headers/proxmox-datacenter-manager | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ct/headers/proxmox-datacenter-manager b/ct/headers/proxmox-datacenter-manager index 44e3891af..041028c7b 100644 --- a/ct/headers/proxmox-datacenter-manager +++ b/ct/headers/proxmox-datacenter-manager @@ -1,6 +1,6 @@ - __ __ __ - ____ _________ _ ______ ___ ____ _ __ ____/ /___ _/ /_____ _________ ____ / /____ _____ ____ ___ ____ _____ ____ _____ ____ _____ - / __ \/ ___/ __ \| |/_/ __ `__ \/ __ \| |/_/_____/ __ / __ `/ __/ __ `/ ___/ _ \/ __ \/ __/ _ \/ ___/_____/ __ `__ \/ __ `/ __ \/ __ `/ __ `/ _ \/ ___/ - / /_/ / / / /_/ /> Date: Tue, 4 Feb 2025 14:22:08 +0100 Subject: [PATCH 098/480] Update authentik-install.sh (#2020) --- install/authentik-install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install/authentik-install.sh b/install/authentik-install.sh index 350130922..ad90b3dca 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -187,7 +187,6 @@ msg_info "Cleaning up" rm -rf /tmp/Python-3.12.1 rm -rf /tmp/Python.tgz rm -rf go/ -rm -rf /tmp/${GO_RELEASE} rm -rf /tmp/geoipupdate.deb rm -rf authentik.tar.gz $STD apt-get -y remove yq From 86295fcf67376816fabed7e3936cad80db169a1c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:22:27 +0100 Subject: [PATCH 099/480] Update CHANGELOG.md (#2013) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3084ec39..579490cea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,12 +21,26 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- Proxmox Backup Server Renaming and Update fix [@thost96](https://github.com/thost96) ([#2012](https://github.com/community-scripts/ProxmoxVE/pull/2012)) + ### 🚀 Updated Scripts -- Fix Tianji: Add heap-space value for nodejs [@MickLesk](https://github.com/MickLesk) ([#2011](https://github.com/community-scripts/ProxmoxVE/pull/2011)) +- Update authentik-install.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) - Update tandoor-install.sh, Fix node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) -- Fix: Ghost LXC - Use Node20 [@MickLesk](https://github.com/MickLesk) ([#2006](https://github.com/community-scripts/ProxmoxVE/pull/2006)) - Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) +- Fix Tianji: Add heap-space value for nodejs [@MickLesk](https://github.com/MickLesk) ([#2011](https://github.com/community-scripts/ProxmoxVE/pull/2011)) +- Fix: Ghost LXC - Use Node20 [@MickLesk](https://github.com/MickLesk) ([#2006](https://github.com/community-scripts/ProxmoxVE/pull/2006)) + +### 🌐 Website + +- [API] Masiv update to api [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1990](https://github.com/community-scripts/ProxmoxVE/pull/1990)) + +### 🧰 Maintenance + +- [Fix]: Headername of Proxmox-Datacenter-Manager not in CamelCase [@MickLesk](https://github.com/MickLesk) ([#2017](https://github.com/community-scripts/ProxmoxVE/pull/2017)) +- [Fix] Header breaks at long title - add width for figlet github action [@MickLesk](https://github.com/MickLesk) ([#2015](https://github.com/community-scripts/ProxmoxVE/pull/2015)) ## 2025-02-03 From abfe17ce74892d31323d08cb9237ee80ffe07344 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Tue, 4 Feb 2025 17:38:24 +0100 Subject: [PATCH 100/480] fixed subscription nag removal (#2022) --- misc/post-pmg-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/post-pmg-install.sh b/misc/post-pmg-install.sh index c5f4ed302..8c17e3139 100644 --- a/misc/post-pmg-install.sh +++ b/misc/post-pmg-install.sh @@ -121,9 +121,9 @@ EOF whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58 msg_info "Disabling subscription nag" # Normal GUI: - echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script + echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/.*data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script # JS-Library used when accessing via mobile device browser - echo "DPkg::Post-Invoke { \"dpkg -V pmg-gui | grep -q '/pmgmanagerlib-mobile\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from Mobile UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script + echo "DPkg::Post-Invoke { \"dpkg -V pmg-gui | grep -q '/pmgmanagerlib-mobile\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from Mobile UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; }; fi\"; };" >>/etc/apt/apt.conf.d/no-nag-script apt --reinstall install proxmox-widget-toolkit pmg-gui &>/dev/null msg_ok "Disabled subscription nag (Delete browser cache)" ;; From 103a5371e63bee5f6eac893ec80599b48954c508 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:40:54 +0100 Subject: [PATCH 101/480] Update CHANGELOG.md (#2025) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 579490cea..eb5c264b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Script: post-pmg-install.sh [@thost96](https://github.com/thost96) ([#2022](https://github.com/community-scripts/ProxmoxVE/pull/2022)) - Update authentik-install.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) - Update tandoor-install.sh, Fix node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) - Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) From e75312007db3bb96c6e1f9c4bc425209aaee848c Mon Sep 17 00:00:00 2001 From: Maciej Matczak Date: Tue, 4 Feb 2025 19:08:12 +0100 Subject: [PATCH 102/480] Fix actual update - missing hidden files, downloaded release cleanup (#2027) * Fix Actual Budget update: download and copy release exactly how in install script * Fix Actual Budget update: removing wget release tar gz --- ct/actualbudget.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index c6895d6b3..96323aa74 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -44,9 +44,8 @@ function update_script() { cd /tmp wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz mv /opt/actualbudget /opt/actualbudget_bak - mkdir -p /opt/actualbudget/ tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1 - mv *ctual-server-*/* /opt/actualbudget + mv *ctual-server-* /opt/actualbudget rm -rf /opt/actualbudget/.env mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files @@ -61,7 +60,7 @@ function update_script() { msg_info "Cleaning Up" rm -rf /opt/actualbudget_bak - rm -rf /tmp/actual-server.tar.gz + rm -rf /tmp/v${RELEASE}.tar.gz msg_ok "Cleaned" msg_ok "Updated Successfully" else From 569d0ac37496d51377a3a30929f86040c976d196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Tue, 4 Feb 2025 19:08:52 +0100 Subject: [PATCH 103/480] header fixes (#2029) --- .github/CONTRIBUTOR_GUIDE/ct/AppName.sh | 2 +- .github/CONTRIBUTOR_GUIDE/install/AppName-install.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh index bf28d113a..0cf1dd4a2 100644 --- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh +++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: [YourUserName] # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: [SOURCE_URL] diff --git a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh b/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh index a1d0f8a2d..4f02c80a7 100644 --- a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh +++ b/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: [YourUserName] -# License: MIT +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: [SOURCE_URL] # Import Functions und Setup From 401a9e1a45e03c1f588ea424fe593fb284cfe133 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 19:09:14 +0100 Subject: [PATCH 104/480] Update CHANGELOG.md (#2026) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb5c264b3..73dbf8e05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,8 +27,9 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix actual update - missing hidden files, downloaded release cleanup [@maciejmatczak](https://github.com/maciejmatczak) ([#2027](https://github.com/community-scripts/ProxmoxVE/pull/2027)) +- [Fix]: Authentik - Remove deprecated GO-Remove in Footer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) - Fix Script: post-pmg-install.sh [@thost96](https://github.com/thost96) ([#2022](https://github.com/community-scripts/ProxmoxVE/pull/2022)) -- Update authentik-install.sh [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) - Update tandoor-install.sh, Fix node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) - Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) - Fix Tianji: Add heap-space value for nodejs [@MickLesk](https://github.com/MickLesk) ([#2011](https://github.com/community-scripts/ProxmoxVE/pull/2011)) @@ -40,6 +41,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance +- Fix header comments on contributor templates [@tremor021](https://github.com/tremor021) ([#2029](https://github.com/community-scripts/ProxmoxVE/pull/2029)) - [Fix]: Headername of Proxmox-Datacenter-Manager not in CamelCase [@MickLesk](https://github.com/MickLesk) ([#2017](https://github.com/community-scripts/ProxmoxVE/pull/2017)) - [Fix] Header breaks at long title - add width for figlet github action [@MickLesk](https://github.com/MickLesk) ([#2015](https://github.com/community-scripts/ProxmoxVE/pull/2015)) From 62dac324006be19f2066a4017f0340a1356d4e7e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 21:12:08 +0100 Subject: [PATCH 105/480] Update CHANGELOG.md (#2030) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73dbf8e05..ccf0c54ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,21 +23,21 @@ Do not break established syntax in this file, as it is automatically updated by ### 💥 Breaking Changes -- Proxmox Backup Server Renaming and Update fix [@thost96](https://github.com/thost96) ([#2012](https://github.com/community-scripts/ProxmoxVE/pull/2012)) +- Rename & Optimize: Proxmox Backup Server (Renaming & Update fix) [@thost96](https://github.com/thost96) ([#2012](https://github.com/community-scripts/ProxmoxVE/pull/2012)) ### 🚀 Updated Scripts +- Fix: Authentik - Remove deprecated GO-Remove in Footer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) +- Fix: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) +- Fix: Tandoor - node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) - Fix actual update - missing hidden files, downloaded release cleanup [@maciejmatczak](https://github.com/maciejmatczak) ([#2027](https://github.com/community-scripts/ProxmoxVE/pull/2027)) -- [Fix]: Authentik - Remove deprecated GO-Remove in Footer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2020](https://github.com/community-scripts/ProxmoxVE/pull/2020)) - Fix Script: post-pmg-install.sh [@thost96](https://github.com/thost96) ([#2022](https://github.com/community-scripts/ProxmoxVE/pull/2022)) -- Update tandoor-install.sh, Fix node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) -- Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) - Fix Tianji: Add heap-space value for nodejs [@MickLesk](https://github.com/MickLesk) ([#2011](https://github.com/community-scripts/ProxmoxVE/pull/2011)) - Fix: Ghost LXC - Use Node20 [@MickLesk](https://github.com/MickLesk) ([#2006](https://github.com/community-scripts/ProxmoxVE/pull/2006)) ### 🌐 Website -- [API] Masiv update to api [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1990](https://github.com/community-scripts/ProxmoxVE/pull/1990)) +- [API] Massive update to api (remove many, optimize website for users) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1990](https://github.com/community-scripts/ProxmoxVE/pull/1990)) ### 🧰 Maintenance From 4587352377e1166c91bb6a98b4a716d75134e48f Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:40:44 +0100 Subject: [PATCH 106/480] Add API backend to repo (#2040) --- api/.env.example | 5 ++ api/go.mod | 32 +++++++++ api/go.sum | 83 +++++++++++++++++++++++ api/main.go | 167 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 287 insertions(+) create mode 100644 api/.env.example create mode 100644 api/go.mod create mode 100644 api/go.sum create mode 100644 api/main.go diff --git a/api/.env.example b/api/.env.example new file mode 100644 index 000000000..fc7bdbb59 --- /dev/null +++ b/api/.env.example @@ -0,0 +1,5 @@ +MONGO_USER= +MONGO_PASSWORD= +MONGO_IP= +MONGO_PORT= +MONGO_DATABASE= \ No newline at end of file diff --git a/api/go.mod b/api/go.mod new file mode 100644 index 000000000..0297b1a4f --- /dev/null +++ b/api/go.mod @@ -0,0 +1,32 @@ +module proxmox-api + +go 1.23.2 + +require go.mongodb.org/mongo-driver v1.17.2 + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/go-sql-driver/mysql v1.8.1 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.2 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/joho/godotenv v1.5.1 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/montanaflynn/stats v0.7.1 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect + github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/text v0.21.0 // indirect + gorm.io/driver/mysql v1.5.7 // indirect + gorm.io/driver/postgres v1.5.11 // indirect + gorm.io/gorm v1.25.12 // indirect +) diff --git a/api/go.sum b/api/go.sum new file mode 100644 index 000000000..ea649ff6b --- /dev/null +++ b/api/go.sum @@ -0,0 +1,83 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.2 h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI= +github.com/jackc/pgx/v5 v5.7.2/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= +github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM= +go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314= +gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= diff --git a/api/main.go b/api/main.go new file mode 100644 index 000000000..4b9442bc6 --- /dev/null +++ b/api/main.go @@ -0,0 +1,167 @@ +// Copyright (c) 2021-2025 community-scripts ORG +// Author: Michel Roegl-Brunner (michelroegl-brunner) +// License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +package main + +import ( + "context" + "encoding/json" + "fmt" + "log" + "net/http" + "os" + "time" + + "github.com/gorilla/mux" + "github.com/joho/godotenv" + "github.com/rs/cors" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" +) + +var client *mongo.Client +var collection *mongo.Collection + +func loadEnv() { + if err := godotenv.Load(); err != nil { + log.Fatal("Error loading .env file") + } +} + +type DataModel struct { + ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` + CT_TYPE uint `json:"ct_type" bson:"ct_type"` + DISK_SIZE float32 `json:"disk_size" bson:"disk_size"` + CORE_COUNT uint `json:"core_count" bson:"core_count"` + RAM_SIZE uint `json:"ram_size" bson:"ram_size"` + OS_TYPE string `json:"os_type" bson:"os_type"` + OS_VERSION string `json:"os_version" bson:"os_version"` + DISABLEIP6 string `json:"disableip6" bson:"disableip6"` + NSAPP string `json:"nsapp" bson:"nsapp"` + METHOD string `json:"method" bson:"method"` + CreatedAt time.Time `json:"created_at" bson:"created_at"` + PVEVERSION string `json:"pve_version" bson:"pve_version"` + STATUS string `json:"status" bson:"status"` + RANDOM_ID string `json:"random_id" bson:"random_id"` + TYPE string `json:"type" bson:"type"` + ERROR string `json:"error" bson:"error"` +} + +type StatusModel struct { + RANDOM_ID string `json:"random_id" bson:"random_id"` + ERROR string `json:"error" bson:"error"` + STATUS string `json:"status" bson:"status"` +} + +func ConnectDatabase() { + loadEnv() + + mongoURI := fmt.Sprintf("mongodb://%s:%s@%s:%s", + os.Getenv("MONGO_USER"), + os.Getenv("MONGO_PASSWORD"), + os.Getenv("MONGO_IP"), + os.Getenv("MONGO_PORT")) + + database := os.Getenv("MONGO_DATABASE") + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + var err error + client, err = mongo.Connect(ctx, options.Client().ApplyURI(mongoURI)) + if err != nil { + log.Fatal("Failed to connect to MongoDB!", err) + } + collection = client.Database(database).Collection("data_models") + fmt.Println("Connected to MongoDB on 10.10.10.18") +} + +func UploadJSON(w http.ResponseWriter, r *http.Request) { + var input DataModel + + if err := json.NewDecoder(r.Body).Decode(&input); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + input.CreatedAt = time.Now() + + _, err := collection.InsertOne(context.Background(), input) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + log.Println("Received data:", input) + w.WriteHeader(http.StatusCreated) + json.NewEncoder(w).Encode(map[string]string{"message": "Data saved successfully"}) +} + +func UpdateStatus(w http.ResponseWriter, r *http.Request) { + var input StatusModel + + if err := json.NewDecoder(r.Body).Decode(&input); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + filter := bson.M{"random_id": input.RANDOM_ID} + update := bson.M{"$set": bson.M{"status": input.STATUS, "error": input.ERROR}} + + _, err := collection.UpdateOne(context.Background(), filter, update) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + log.Println("Updated data:", input) + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]string{"message": "Record updated successfully"}) +} + +func GetDataJSON(w http.ResponseWriter, r *http.Request) { + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} + +func main() { + ConnectDatabase() + + router := mux.NewRouter() + router.HandleFunc("/upload", UploadJSON).Methods("POST") + router.HandleFunc("/upload/updatestatus", UpdateStatus).Methods("POST") + router.HandleFunc("/data/json", GetDataJSON).Methods("GET") + + c := cors.New(cors.Options{ + AllowedOrigins: []string{"*"}, + AllowedMethods: []string{"GET", "POST"}, + AllowedHeaders: []string{"Content-Type", "Authorization"}, + AllowCredentials: true, + }) + + handler := c.Handler(router) + + fmt.Println("Server running on port 8080") + log.Fatal(http.ListenAndServe(":8080", handler)) +} From 3aedafbfc6b38857177b6c7dd5c676cf9f199c42 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:45:13 +0100 Subject: [PATCH 107/480] Update CHANGELOG.md (#2041) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccf0c54ea..1453573d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-05 + +### Changed + +### 🧰 Maintenance + +- [API] Add API backend code [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2040](https://github.com/community-scripts/ProxmoxVE/pull/2040)) + ## 2025-02-04 ### Changed From 3a33e006d4b02ef67b14b905b4d8c2ba8337706c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:50:57 +0100 Subject: [PATCH 108/480] add option to enter server name (#2038) --- install/elementsynapse-install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh index 7b5d69dc9..b1fd51591 100644 --- a/install/elementsynapse-install.sh +++ b/install/elementsynapse-install.sh @@ -23,11 +23,13 @@ $STD apt-get install -y \ debconf-utils msg_ok "Installed Dependencies" +read -p "Please enter the name for your server: " servername + msg_info "Installing Element Synapse" wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list $STD apt-get update -echo "matrix-synapse-py3 matrix-synapse/server-name string matrix" | debconf-set-selections +echo "matrix-synapse-py3 matrix-synapse/server-name string $servername" | debconf-set-selections echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections $STD apt-get install matrix-synapse-py3 -y sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml From 7c2a6822b5e8a61d0201abbb939397c40c4da637 Mon Sep 17 00:00:00 2001 From: vidonnus Date: Wed, 5 Feb 2025 01:57:18 -0800 Subject: [PATCH 109/480] Bugfix: Jellyseerr pnpm Version (#2033) * fix jellyseerr-install.sh pnpm version * fix jellyseerr.sh pnpm version * remove version from non-verbose output --------- Co-authored-by: praging --- ct/jellyseerr.sh | 22 ++++++++++++++-------- install/jellyseerr-install.sh | 12 +++++++----- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 96ea2ec81..66eb632bf 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -50,17 +50,23 @@ function update_script() { msg_ok "Cleaning up" fi - if ! command -v pnpm &> /dev/null; then - msg_error "pnpm not found. Installing..." - npm install -g pnpm &>/dev/null + cd /opt/jellyseerr + output=$(git pull --no-rebase) + + pnpm_current=$(pnpm --version 2>/dev/null) + pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json) + + if [ -z "$pnpm_current" ]; then + msg_error "pnpm not found. Installing version $pnpm_desired..." + npm install -g pnpm@"$pnpm_desired" &>/dev/null + elif ! node -e "const semver = require('semver'); process.exit(semver.satisfies('$pnpm_current', '$pnpm_desired') ? 0 : 1)" ; then + msg_error "Updating pnpm from version $pnpm_current to $pnpm_desired..." + npm install -g pnpm@"$pnpm_desired" &>/dev/null else - msg_ok "pnpm is already installed." + msg_ok "pnpm is already installed and satisfies version $pnpm_desired." fi msg_info "Updating $APP" - cd /opt/jellyseerr - output=$(git pull --no-rebase) - if echo "$output" | grep -q "Already up to date."; then msg_ok "$APP is already up to date." exit @@ -102,4 +108,4 @@ 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}:5055${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}" diff --git a/install/jellyseerr-install.sh b/install/jellyseerr-install.sh index 916f1afc1..e42d32ce7 100644 --- a/install/jellyseerr-install.sh +++ b/install/jellyseerr-install.sh @@ -32,14 +32,16 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Installing pnpm" -$STD npm install -g pnpm -msg_ok "Installed pnpm" - -msg_info "Installing Jellyseerr (Patience)" git clone -q https://github.com/Fallenbagel/jellyseerr.git /opt/jellyseerr cd /opt/jellyseerr $STD git checkout main + +pnpm_desired=$(grep -Po '"pnpm":\s*"\K[^"]+' /opt/jellyseerr/package.json) +msg_info "Installing pnpm version $pnpm_desired..." +$STD npm install -g pnpm@$pnpm_desired +msg_ok "Installed pnpm" + +msg_info "Installing Jellyseerr (Patience)" export CYPRESS_INSTALL_BINARY=0 $STD pnpm install --frozen-lockfile export NODE_OPTIONS="--max-old-space-size=3072" From 398bae1f64937b0c6965d8ff2541fa4f8774afa2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:57:33 +0100 Subject: [PATCH 110/480] Bump vitest from 2.1.6 to 2.1.9 in /frontend (#2042) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 2.1.6 to 2.1.9. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 428 ++++++++++++++++--------------------- frontend/package.json | 2 +- 2 files changed, 190 insertions(+), 240 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 277107b96..3ac30e981 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -72,7 +72,7 @@ "tailwindcss-animated": "^1.1.2", "typescript": "^5", "vite-tsconfig-paths": "^5.1.3", - "vitest": "^2.1.6" + "vitest": "^2.1.9" } }, "node_modules/@alloc/quick-lru": { @@ -471,9 +471,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -484,13 +484,13 @@ "aix" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -501,13 +501,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -518,13 +518,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -535,13 +535,13 @@ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -552,13 +552,13 @@ "darwin" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -569,13 +569,13 @@ "darwin" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -586,13 +586,13 @@ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -603,13 +603,13 @@ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -620,13 +620,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -637,13 +637,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -654,13 +654,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -671,13 +671,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -688,13 +688,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -705,13 +705,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -722,13 +722,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -739,13 +739,13 @@ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -756,30 +756,13 @@ "linux" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -790,30 +773,13 @@ "netbsd" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -824,13 +790,13 @@ "openbsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -841,13 +807,13 @@ "sunos" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -858,13 +824,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -875,13 +841,13 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -892,7 +858,7 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@eslint-community/eslint-utils": { @@ -3204,7 +3170,7 @@ "version": "19.0.0-rc.1", "resolved": "https://registry.npmjs.org/types-react/-/types-react-19.0.0-rc.1.tgz", "integrity": "sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ==", - "dev": true, + "devOptional": true, "dependencies": { "csstype": "^3.0.2" } @@ -3214,7 +3180,7 @@ "version": "19.0.0-rc.1", "resolved": "https://registry.npmjs.org/types-react-dom/-/types-react-dom-19.0.0-rc.1.tgz", "integrity": "sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -3463,14 +3429,14 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.6.tgz", - "integrity": "sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", + "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.6", - "@vitest/utils": "2.1.6", + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", "chai": "^5.1.2", "tinyrainbow": "^1.2.0" }, @@ -3479,13 +3445,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.6.tgz", - "integrity": "sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", + "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.6", + "@vitest/spy": "2.1.9", "estree-walker": "^3.0.3", "magic-string": "^0.30.12" }, @@ -3494,7 +3460,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0" }, "peerDependenciesMeta": { "msw": { @@ -3506,9 +3472,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.6.tgz", - "integrity": "sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3519,13 +3485,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.6.tgz", - "integrity": "sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", + "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.6", + "@vitest/utils": "2.1.9", "pathe": "^1.1.2" }, "funding": { @@ -3533,13 +3499,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.6.tgz", - "integrity": "sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", + "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.6", + "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", "pathe": "^1.1.2" }, @@ -3548,9 +3514,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.6.tgz", - "integrity": "sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", + "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3561,13 +3527,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.6.tgz", - "integrity": "sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.6", + "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -4829,9 +4795,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true, "license": "MIT" }, @@ -4892,9 +4858,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4902,34 +4868,32 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18" + "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -6945,9 +6909,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -6992,9 +6956,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { @@ -7805,7 +7769,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -9508,7 +9471,6 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -9642,21 +9604,21 @@ "license": "MIT" }, "node_modules/vite": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz", - "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -9665,25 +9627,19 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" + "terser": "^5.4.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, - "jiti": { - "optional": true - }, "less": { "optional": true }, @@ -9704,19 +9660,13 @@ }, "terser": { "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true } } }, "node_modules/vite-node": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.6.tgz", - "integrity": "sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", + "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", "dev": true, "license": "MIT", "dependencies": { @@ -9724,13 +9674,13 @@ "debug": "^4.3.7", "es-module-lexer": "^1.5.4", "pathe": "^1.1.2", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -9757,19 +9707,19 @@ } }, "node_modules/vitest": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.6.tgz", - "integrity": "sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", + "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "2.1.6", - "@vitest/mocker": "2.1.6", - "@vitest/pretty-format": "^2.1.6", - "@vitest/runner": "2.1.6", - "@vitest/snapshot": "2.1.6", - "@vitest/spy": "2.1.6", - "@vitest/utils": "2.1.6", + "@vitest/expect": "2.1.9", + "@vitest/mocker": "2.1.9", + "@vitest/pretty-format": "^2.1.9", + "@vitest/runner": "2.1.9", + "@vitest/snapshot": "2.1.9", + "@vitest/spy": "2.1.9", + "@vitest/utils": "2.1.9", "chai": "^5.1.2", "debug": "^4.3.7", "expect-type": "^1.1.0", @@ -9780,24 +9730,24 @@ "tinyexec": "^0.3.1", "tinypool": "^1.0.1", "tinyrainbow": "^1.2.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "2.1.6", + "vite": "^5.0.0", + "vite-node": "2.1.9", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "2.1.6", - "@vitest/ui": "2.1.6", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "2.1.9", + "@vitest/ui": "2.1.9", "happy-dom": "*", "jsdom": "*" }, diff --git a/frontend/package.json b/frontend/package.json index 61f67a56f..3457b6a22 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -83,7 +83,7 @@ "tailwindcss-animated": "^1.1.2", "typescript": "^5", "vite-tsconfig-paths": "^5.1.3", - "vitest": "^2.1.6" + "vitest": "^2.1.9" }, "overrides": { "@types/react": "npm:types-react@19.0.0-rc.1", From c112edd8ac59e02d6b9c3f3abf447148d3b26f64 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:12:08 +0100 Subject: [PATCH 111/480] Update CHANGELOG.md (#2043) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1453573d1..b8a5ef4dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,15 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) +- Feature: Element Synapse: add option to enter server name during LXC installation [@tremor021](https://github.com/tremor021) ([#2038](https://github.com/community-scripts/ProxmoxVE/pull/2038)) + +### 🌐 Website + +- Bump vitest from 2.1.6 to 2.1.9 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#2042](https://github.com/community-scripts/ProxmoxVE/pull/2042)) + ### 🧰 Maintenance - [API] Add API backend code [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2040](https://github.com/community-scripts/ProxmoxVE/pull/2040)) From f66f43d91a70625ea7c2fc08cf7bcbbeb45e3641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:25:27 +0100 Subject: [PATCH 112/480] New Script: Radicale (#1941) * add radicale script * Update install/radicale-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/radicale-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/radicale-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * small fixes * fixes * fixes * fixed json * added update * Update install/radicale-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/radicale.sh | 56 +++++++++++++++++++++++++++++ install/radicale-install.sh | 71 +++++++++++++++++++++++++++++++++++++ json/radicale.json | 39 ++++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 ct/radicale.sh create mode 100644 install/radicale-install.sh create mode 100644 json/radicale.json diff --git a/ct/radicale.sh b/ct/radicale.sh new file mode 100644 index 000000000..b6962a302 --- /dev/null +++ b/ct/radicale.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://radicale.org/ + +# App Default Values +APP="Radicale" +var_tags="calendar" +var_cpu="1" +var_ram="512" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/radicale ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + msg_info "Updating ${APP}" + python3 -m venv /opt/radicale + source /opt/radicale/bin/activate + python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz + msg_ok "Updated ${APP}" + + msg_info "Starting Service" + systemctl enable -q --now radicale + msg_ok "Started Service" + + 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}:5232${CL}" \ No newline at end of file diff --git a/install/radicale-install.sh b/install/radicale-install.sh new file mode 100644 index 000000000..faed48387 --- /dev/null +++ b/install/radicale-install.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + apache2-utils \ + python3-pip \ + python3.11-venv +msg_ok "Installed Dependencies" + +msg_info "Setting up Radicale" +python3 -m venv /opt/radicale +source /opt/radicale/bin/activate +python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz +RNDPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +htpasswd -b -5 /opt/radicale/users admin $RNDPASS +{ +echo "Radicale Credentials" +echo "Admin User: admin" +echo "Admin Password: $RNDPASS" +} >> ~/radicale.creds + +msg_info "Setup Service" + +cat </opt/radicale/start.sh +#!/usr/bin/env bash +source /opt/radicale/bin/activate +python3 -m radicale --storage-filesystem-folder=/var/lib/radicale/collections --hosts 0.0.0.0:5232 --auth-type htpasswd --auth-htpasswd-filename /opt/radicale/users --auth-htpasswd-encryption sha512 +EOF + +chmod +x /opt/radicale/start.sh + +cat </etc/systemd/system/radicale.service +Description=A simple CalDAV (calendar) and CardDAV (contact) server +After=network.target +Requires=network.target + +[Service] +ExecStart=/opt/radicale/start.sh +Restart=on-failure +# User=radicale +# Deny other users access to the calendar data +# UMask=0027 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now radicale +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/radicale.json b/json/radicale.json new file mode 100644 index 000000000..35e6307ec --- /dev/null +++ b/json/radicale.json @@ -0,0 +1,39 @@ +{ + "name": "Radicale", + "slug": "radicale", + "categories": [ + 6 + ], + "date_created": "2025-02-02", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 5232, + "documentation": "https://radicale.org/master.html#documentation-1", + "website": "https://radicale.org/", + "logo": "https://radicale.org/assets/logo.svg", + "description": "Radicale is a small but powerful CalDAV (calendars, to-do lists) and CardDAV (contacts)", + "install_methods": [ + { + "type": "default", + "script": "ct/radicale.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "To view the user credentials : `cat radicale.creds`", + "type": "info" + } + ] + } \ No newline at end of file From 8662be2e4e0e0540b7d5ddc027cd0dabf8a3a3e4 Mon Sep 17 00:00:00 2001 From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:26:21 +0100 Subject: [PATCH 113/480] New script: Koillection (#2031) --- ct/koillection.sh | 83 ++++++++++++++++++++++ install/koillection-install.sh | 124 +++++++++++++++++++++++++++++++++ json/koillection.json | 34 +++++++++ 3 files changed, 241 insertions(+) create mode 100644 ct/koillection.sh create mode 100644 install/koillection-install.sh create mode 100644 json/koillection.json diff --git a/ct/koillection.sh b/ct/koillection.sh new file mode 100644 index 000000000..a78e2b2cd --- /dev/null +++ b/ct/koillection.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://koillection.github.io/ + +# App Default Values +APP="Koillection" +var_tags="network" +var_cpu="2" +var_ram="1024" +var_disk="8" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/koillection ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop apache2 + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + mv /opt/koillection/ /opt/koillection-backup + wget -q "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" + unzip -q "${RELEASE}.zip" + mv "/opt/koillection-${RELEASE}" /opt/koillection + cd /opt/koillection + cp -r /opt/koillection-backup/.env.local /opt/koillection + cp -r /opt/koillection-backup/public/uploads/. /opt/koillection/public/uploads/ + export COMPOSER_ALLOW_SUPERUSER=1 + composer install --no-dev -o --no-interaction --classmap-authoritative &>/dev/null + php bin/console doctrine:migrations:migrate --no-interaction &>/dev/null + php bin/console app:translations:dump &>/dev/null + cd assets/ + yarn install &>/dev/null + yarn build &>/dev/null + chown -R www-data:www-data /opt/koillection/public/uploads + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start apache2 + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -r "/opt/${RELEASE}.zip" + rm -r /opt/koillection-backup + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}${CL}" diff --git a/install/koillection-install.sh b/install/koillection-install.sh new file mode 100644 index 000000000..90745a211 --- /dev/null +++ b/install/koillection-install.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg2\ + postgresql \ + apache2 \ + lsb-release +msg_ok "Installed Dependencies" + +msg_info "Setup PHP8.4 Repository" +$STD curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb +$STD dpkg -i /tmp/debsuryorg-archive-keyring.deb +$STD sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' +$STD apt-get update +msg_ok "Setup PHP8.4 Repository" + +msg_info "Setup PHP" +$STD apt-get install -y \ + php8.4 \ + php8.4-{apcu,ctype,curl,dom,fileinfo,gd,iconv,intl,mbstring,pgsql} \ + libapache2-mod-php8.4 \ + composer +msg_info "Setup PHP" + +msg_info "Setting up PostgreSQL" +DB_NAME=koillection +DB_USER=koillection +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" +{ +echo "Koillection Credentials" +echo "Koillection Database User: $DB_USER" +echo "Koillection Database Password: $DB_PASS" +echo "Koillection Database Name: $DB_NAME" +} >> ~/koillection.creds +msg_ok "Set up PostgreSQL" + +msg_info "Setting up Node.js/Yarn" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g npm@latest +$STD npm install -g yarn +msg_ok "Installed Node.js/Yarn" + +msg_info "Installing Koillection" +RELEASE=$(curl -s https://api.github.com/repos/benjaminjonard/koillection/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +cd /opt +wget -q "https://github.com/benjaminjonard/koillection/archive/refs/tags/${RELEASE}.zip" +unzip -q "${RELEASE}.zip" +mv "/opt/koillection-${RELEASE}" /opt/koillection +cd /opt/koillection +cp /opt/koillection/.env /opt/koillection/.env.local +APP_SECRET=$(openssl rand -base64 32) +sed -i -e "s|^APP_ENV=.*|APP_ENV=prod|" \ + -e "s|^APP_DEBUG=.*|APP_DEBUG=0|" \ + -e "s|^APP_SECRET=.*|APP_SECRET=${APP_SECRET}|" \ + -e "s|^DB_NAME=.*|DB_NAME=${DB_NAME}|" \ + -e "s|^DB_USER=.*|DB_USER=${DB_USER}|" \ + -e "s|^DB_PASSWORD=.*|DB_PASSWORD=${DB_PASS}|" \ + /opt/koillection/.env.local +export COMPOSER_ALLOW_SUPERUSER=1 +$STD composer install --no-dev -o --no-interaction --classmap-authoritative +$STD php bin/console doctrine:migrations:migrate --no-interaction +$STD php bin/console app:translations:dump +cd assets/ +$STD yarn install +$STD yarn build +chown -R www-data:www-data /opt/koillection/public/uploads +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Koillection" + +msg_info "Creating Service" +cat </etc/apache2/sites-available/koillection.conf + + ServerName koillection + DocumentRoot /opt/koillection/public + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ index.php/\$1 [L] + + + ErrorLog /var/log/apache2/koillection_error.log + CustomLog /var/log/apache2/koillection_access.log combined + +EOF +$STD a2ensite koillection +$STD a2enmod rewrite +$STD a2dissite 000-default.conf +$STD systemctl reload apache2 +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf "/opt/${RELEASE}.zip" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/koillection.json b/json/koillection.json new file mode 100644 index 000000000..55cec121a --- /dev/null +++ b/json/koillection.json @@ -0,0 +1,34 @@ +{ + "name": "Koillection", + "slug": "koillection", + "categories": [ + 24 + ], + "date_created": "2025-02-04", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://github.com/benjaminjonard/koillection/wiki", + "website": "https://koillection.github.io/", + "logo": "https://user-images.githubusercontent.com/20560781/80213166-0e560e00-8639-11ea-944e-4f79fdbcef55.png", + "description": "Koillection is a self-hosted collection manager created to keep track of physical (mostly) collections of any kind like books, DVDs, stamps, games... Koillection is meant to be used for any kind of collections and doesn't come with pre-built metadata download. But you can tailor your own HTML scraper, or you can add your own metadata freely.", + "install_methods": [ + { + "type": "default", + "script": "ct/koillection.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 8, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] + } \ No newline at end of file From cb6e2c445503398275834a2eb9d345bac0facf3d Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:28:21 +0100 Subject: [PATCH 114/480] New Script: Crafty-Controller (#1926) * add: crafty-controller-script * fix url * fix: requested changes * fix: requested changes * fix: requested changes 2 * fix: remove additional sleep * fix: remove additional sleep * fix: service, remove jre --- ct/crafty-controller.sh | 90 ++++++++++++++++++++++++++ install/crafty-controller-install.sh | 97 ++++++++++++++++++++++++++++ json/crafty-controller.json | 39 +++++++++++ 3 files changed, 226 insertions(+) create mode 100644 ct/crafty-controller.sh create mode 100644 install/crafty-controller-install.sh create mode 100644 json/crafty-controller.json diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh new file mode 100644 index 000000000..211ab9f6a --- /dev/null +++ b/ct/crafty-controller.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + + +# App Default Values +APP="Crafty-Controller" +var_tags="gaming" +var_cpu="2" +var_ram="4096" +var_disk="16" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/crafty-controller ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//') + if [[ ! -f /opt/crafty-controller_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/crafty-controller_version.txt)" ]]; then + + msg_info "Stopping Crafty-Controller" + systemctl stop crafty-controller + msg_ok "Stopped Crafty-Controller" + + msg_info "Creating Backup of config" + cp -a /opt/crafty-controller/crafty/crafty-4/app/config/. /opt/crafty-controller/backup + rm /opt/crafty-controller/backup/version.json + rm /opt/crafty-controller/backup/credits.json + rm /opt/crafty-controller/backup/logging.json + rm /opt/crafty-controller/backup/default.json.example + rm /opt/crafty-controller/backup/motd_format.json + msg_ok "Backup Created" + + msg_info "Updating Crafty-Controller to v${RELEASE}" + wget -q "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" + unzip -q crafty-4-v${RELEASE}.zip + cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/ + rm -rf crafty-4-v${RELEASE} + cd /opt/crafty-controller/crafty/crafty-4 + sudo -u crafty bash -c ' + source /opt/crafty-controller/crafty/.venv/bin/activate + pip3 install --no-cache-dir -r requirements.txt + ' &>/dev/null + echo "${RELEASE}" >"/opt/crafty-controller_version.txt" + msg_ok "Updated Crafty-Controller to v${RELEASE}" + + msg_info "Restoring Backup of config" + cp -a /opt/crafty-controller/backup/. /opt/crafty-controller/crafty/crafty-4/app/config + rm -rf /opt/crafty-controller/backup + chown -R crafty:crafty /opt/crafty-controller/ + msg_ok "Backup Restored" + + msg_info "Starting Crafty-Controller" + systemctl start crafty-controller + msg_ok "Started Crafty-Controller" + + msg_ok "Updated Successfully" + exit + else + msg_ok "No update required. Crafty-Controller is already at v${RELEASE}." + fi +} + + +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}https://${IP}:8443${CL}" diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh new file mode 100644 index 000000000..88a0fe1a1 --- /dev/null +++ b/install/crafty-controller-install.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.craftycontrol.com/pages/getting-started/installation/linux/ + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (a lot of patience)" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + git \ + sed \ + lsb-release \ + apt-transport-https \ + coreutils \ + software-properties-common \ + openjdk-17-jdk +wget -q https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb +$STD sudo dpkg -i jdk-21_linux-x64_bin.deb +rm -f jdk-21_linux-x64_bin.deb +msg_ok "Installed Dependencies" + +msg_info "Setup Python3" +$STD apt-get install -y \ + python3 \ + python3-dev \ + python3-pip \ + python3-venv +rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED +msg_ok "Setup Python3" + + +msg_info "Installing Craty-Controller (Patience)" +useradd crafty -m -s /bin/bash +cd /opt +mkdir -p /opt/crafty-controller/crafty /opt/crafty-controller/server +RELEASE=$(curl -s "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//') +echo "${RELEASE}" >"/opt/crafty-controller_version.txt" +wget -q "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" +unzip -q crafty-4-v${RELEASE}.zip +cp -a crafty-4-v${RELEASE}/. /opt/crafty-controller/crafty/crafty-4/ +rm -rf crafty-4-v${RELEASE} + +cd /opt/crafty-controller/crafty +python3 -m venv .venv +chown -R crafty:crafty /opt/crafty-controller/ +$STD sudo -u crafty bash -c ' + source /opt/crafty-controller/crafty/.venv/bin/activate + cd /opt/crafty-controller/crafty/crafty-4 + pip3 install --no-cache-dir -r requirements.txt +' +msg_ok "Installed Craft-Controller and dependencies" + +msg_info "Setting up Crafty-Controller service" +cat > /etc/systemd/system/crafty-controller.service << 'EOF' +[Unit] +Description=Crafty 4 +After=network.target + +[Service] +Type=simple +User=crafty +WorkingDirectory=/opt/crafty-controller/crafty/crafty-4 +Environment=PATH=/opt/crafty-controller/crafty/.venv/bin:$PATH +ExecStart=/opt/crafty-controller/crafty/.venv/bin/python3 main.py -d +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +$STD systemctl enable -q --now crafty-controller +sleep 10 +{ + echo "Crafty-Controller-Credentials" + echo "Username: $(grep -oP '(?<="username": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" + echo "Password: $(grep -oP '(?<="password": ")[^"]*' /opt/crafty-controller/crafty/crafty-4/app/config/default-creds.txt)" +} >> ~/crafty-controller.creds +msg_ok "Crafty-Controller service started" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/crafty-4-v${RELEASE}.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/crafty-controller.json b/json/crafty-controller.json new file mode 100644 index 000000000..8605cbdef --- /dev/null +++ b/json/crafty-controller.json @@ -0,0 +1,39 @@ +{ + "name": "Crafty Controller", + "slug": "crafty-controller", + "categories": [ + 24 + ], + "date_created": "2025-02-01", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8443, + "documentation": "https://docs.craftycontrol.com/", + "website": "https://craftycontrol.com/", + "logo": "https://gitlab.com/crafty-controller/crafty-4/-/raw/master/app/frontend/static/assets/images/logo_long.svg", + "description": "Crafty Controller is a free and open-source Minecraft launcher and manager that allows users to start and administer Minecraft servers from a user-friendly interface. The interface is run as a self-hosted web server that is accessible to devices on the local network by default and can be port forwarded to provide external access outside of your local network. Crafty is designed to be easy to install and use, requiring only a bit of technical knowledge and a desire to learn to get started. Crafty Controller is still actively being developed by Arcadia Technology and we are continually making major improvements to the software.\n\nCrafty Controller is a feature rich panel that allows you to create and run servers, manage players, run commands, change server settings, view and edit server files, and make backups. With the help of Crafty Controller managing a large number of Minecraft servers on separate versions is easy and intuitive to do.", + "install_methods": [ + { + "type": "default", + "script": "ct/crafty-controller.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 16, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin", + "password": null + }, + "notes": [ + { + "text": "Show password: `cat ~/crafty-controller.creds`", + "type": "info" + } + ] + } \ No newline at end of file From 42b175144af0b884e6e32db43671231c992395f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:29:49 +0100 Subject: [PATCH 115/480] New Script: seelf (#2023) * add seelf script * changed number of cores for LXC * Update install/seelf-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/seelf-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/seelf.sh | 77 ++++++++++++++++++++++++++++++++++++++ install/seelf-install.sh | 80 ++++++++++++++++++++++++++++++++++++++++ json/seelf.json | 39 ++++++++++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 ct/seelf.sh create mode 100644 install/seelf-install.sh create mode 100644 json/seelf.json diff --git a/ct/seelf.sh b/ct/seelf.sh new file mode 100644 index 000000000..a1bb677d6 --- /dev/null +++ b/ct/seelf.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/YuukanOO/seelf + +APP="seelf" +TAGS="server;docker" +var_cpu="2" +var_ram="4096" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/seelf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Updating $APP" + + msg_info "Stopping $APP" + systemctl stop seelf + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}. Patience" + export PATH=$PATH:/usr/local/go/bin + source ~/.bashrc + wget -q "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" + tar -xzf v${RELEASE}.tar.gz + cp -r seelf-${RELEASE}/ /opt/seelf + cd /opt/seelf + make build &> /dev/null + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start seelf + msg_ok "Started $APP" + + # Cleaning up + msg_info "Cleaning Up" + rm -f ~/*.tar.gz + rm -rf ~/seelf-${RELEASE} + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:8080${CL}" \ No newline at end of file diff --git a/install/seelf-install.sh b/install/seelf-install.sh new file mode 100644 index 000000000..ddc160572 --- /dev/null +++ b/install/seelf-install.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/YuukanOO/seelf + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + make \ + gcc +wget -q https://go.dev/dl/go1.23.5.linux-amd64.tar.gz +curl -s -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash &> /dev/null +tar -C /usr/local -xzf go1.23.5.linux-amd64.tar.gz +export PATH=$PATH:/usr/local/go/bin +source ~/.bashrc +$STD nvm install node +msg_ok "Installed Dependencies" + +msg_info "Setting up seelf. Patience" +RELEASE=$(curl -s https://api.github.com/repos/YuukanOO/seelf/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/YuukanOO/seelf/archive/refs/tags/v${RELEASE}.tar.gz" +tar -xzf v${RELEASE}.tar.gz +mv seelf-${RELEASE}/ /opt/seelf +cd /opt/seelf +$STD make build +PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +{ + echo "ADMIN_EMAIL=admin@example.com" + echo "ADMIN_PASSWORD=$PASS" +} | tee .env ~/seelf.creds > /dev/null + +echo "${RELEASE}" >/opt/seelf_version.txt +SEELF_ADMIN_EMAIL=admin@example.com SEELF_ADMIN_PASSWORD=$PASS ./seelf serve &> /dev/null & sleep 5 ; kill $! +msg_ok "Done setting up seelf" + +msg_info "Creating Service" +cat </etc/systemd/system/seelf.service +[Unit] +Description=seelf Service +After=network.target + +[Service] +Type=simple +User=root +Group=root +WorkingDirectory=/opt/seelf +ExecStart=/opt/seelf/./seelf serve +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now seelf +msg_ok "Created Service" + +motd_ssh +customize + +# Cleanup +msg_info "Cleaning up" +rm -f ~/v${RELEASE}.tar.gz +rm -f ~/go1.23.5.linux-amd64.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize \ No newline at end of file diff --git a/json/seelf.json b/json/seelf.json new file mode 100644 index 000000000..2ceb461df --- /dev/null +++ b/json/seelf.json @@ -0,0 +1,39 @@ +{ + "name": "seelf", + "slug": "seelf", + "categories": [ + 4 + ], + "date_created": "2025-02-04", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8080, + "documentation": "https://yuukanoo.github.io/seelf/guide/quickstart.html", + "website": "https://yuukanoo.github.io/seelf/", + "logo": "https://yuukanoo.github.io/seelf/logo-dark.svg", + "description": "seelf is a self-hosted software which makes it easy to deploy your own applications on your own hardware using an easy to use interface.", + "install_methods": [ + { + "type": "default", + "script": "ct/seelf.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 10, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Initial admin email and password: `cat ~/seelf.creds`", + "type": "info" + } + ] +} \ No newline at end of file From 8afb439ed7c6d76d71f61881270fe969b8ca4678 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:31:12 +0100 Subject: [PATCH 116/480] Update .app files (#2046) Co-authored-by: GitHub Actions --- ct/headers/crafty-controller | 6 ++++++ ct/headers/koillection | 6 ++++++ ct/headers/radicale | 6 ++++++ ct/headers/seelf | 6 ++++++ 4 files changed, 24 insertions(+) create mode 100644 ct/headers/crafty-controller create mode 100644 ct/headers/koillection create mode 100644 ct/headers/radicale create mode 100644 ct/headers/seelf diff --git a/ct/headers/crafty-controller b/ct/headers/crafty-controller new file mode 100644 index 000000000..a37b783a2 --- /dev/null +++ b/ct/headers/crafty-controller @@ -0,0 +1,6 @@ + ______ ______ ______ __ ____ + / ____/________ _/ __/ /___ __ / ____/___ ____ / /__________ / / /__ _____ + / / / ___/ __ `/ /_/ __/ / / /_____/ / / __ \/ __ \/ __/ ___/ __ \/ / / _ \/ ___/ +/ /___/ / / /_/ / __/ /_/ /_/ /_____/ /___/ /_/ / / / / /_/ / / /_/ / / / __/ / +\____/_/ \__,_/_/ \__/\__, / \____/\____/_/ /_/\__/_/ \____/_/_/\___/_/ + /____/ diff --git a/ct/headers/koillection b/ct/headers/koillection new file mode 100644 index 000000000..86ef622e9 --- /dev/null +++ b/ct/headers/koillection @@ -0,0 +1,6 @@ + __ __ _ ____ __ _ + / //_/___ (_) / /__ _____/ /_(_)___ ____ + / ,< / __ \/ / / / _ \/ ___/ __/ / __ \/ __ \ + / /| / /_/ / / / / __/ /__/ /_/ / /_/ / / / / +/_/ |_\____/_/_/_/\___/\___/\__/_/\____/_/ /_/ + diff --git a/ct/headers/radicale b/ct/headers/radicale new file mode 100644 index 000000000..f2ddd861b --- /dev/null +++ b/ct/headers/radicale @@ -0,0 +1,6 @@ + ____ ___ __ + / __ \____ _____/ (_)________ _/ /__ + / /_/ / __ `/ __ / / ___/ __ `/ / _ \ + / _, _/ /_/ / /_/ / / /__/ /_/ / / __/ +/_/ |_|\__,_/\__,_/_/\___/\__,_/_/\___/ + diff --git a/ct/headers/seelf b/ct/headers/seelf new file mode 100644 index 000000000..b7202eb37 --- /dev/null +++ b/ct/headers/seelf @@ -0,0 +1,6 @@ + ______ + ________ ___ / / __/ + / ___/ _ \/ _ \/ / /_ + (__ ) __/ __/ / __/ +/____/\___/\___/_/_/ + From 8b52639d23985cb804ee70cb8d8ebc14a95c64ab Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:31:21 +0100 Subject: [PATCH 117/480] Update CHANGELOG.md (#2045) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8a5ef4dc..de36b162c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,13 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New Script: seelf [@tremor021](https://github.com/tremor021) ([#2023](https://github.com/community-scripts/ProxmoxVE/pull/2023)) +- New Script: Crafty-Controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#1926](https://github.com/community-scripts/ProxmoxVE/pull/1926)) +- New script: Koillection [@bvdberg01](https://github.com/bvdberg01) ([#2031](https://github.com/community-scripts/ProxmoxVE/pull/2031)) +- New Script: Radicale [@tremor021](https://github.com/tremor021) ([#1941](https://github.com/community-scripts/ProxmoxVE/pull/1941)) + ### 🚀 Updated Scripts - Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) From 43646a8e19385d0262f83b90f6c69b7d2fbf8fd4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:42:43 +0100 Subject: [PATCH 118/480] Update CHANGELOG.md (#2047) Co-authored-by: github-actions[bot] From a6f656eacfcd07c0a8d3e55cac01cb720dcfb8b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:39:23 +0100 Subject: [PATCH 119/480] New Script: Zerotier Controller (#1928) * add zerotier script * Update ct/zerotier-one.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update ct/zerotier-one.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update ct/zerotier-one.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/zerotier-one-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/zerotier-one-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * remove sleep * improvements to install procedure * fixes --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/zerotier-one.sh | 57 +++++++++++++++++++++++++++++++++ install/zerotier-one-install.sh | 46 ++++++++++++++++++++++++++ json/zerotier-one.json | 34 ++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 ct/zerotier-one.sh create mode 100644 install/zerotier-one-install.sh create mode 100644 json/zerotier-one.json diff --git a/ct/zerotier-one.sh b/ct/zerotier-one.sh new file mode 100644 index 000000000..c5ac8e8fb --- /dev/null +++ b/ct/zerotier-one.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + + +# App Default Values +APP="Zerotier-One" +var_tags="networking" +var_cpu="1" +var_ram="512" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /usr/sbin/zerotier-one ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping Service" + systemctl stop zerotier-one + msg_ok "Stopping Service" + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade + msg_ok "Updated ${APP}" + + msg_info "Starting Service" + systemctl start zerotier-one + msg_ok "Started Service" + 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 IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:3443${CL}" diff --git a/install/zerotier-one-install.sh b/install/zerotier-one-install.sh new file mode 100644 index 000000000..c67979ea6 --- /dev/null +++ b/install/zerotier-one-install.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +#Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo +msg_ok "Installed Dependencies" + +msg_info "Setting up Zerotier-One" +curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && \ +if z="$(curl -s 'https://install.zerotier.com/' | gpg)"; then +echo "$z" | sudo bash +fi +msg_ok "Setup Zerotier-One" + +msg_info "Setting up UI" +curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb +dpkg -i ztncui_0.8.14_amd64.deb +sh -c "echo ZT_TOKEN=$(cat /var/lib/zerotier-one/authtoken.secret) > /opt/key-networks/ztncui/.env" +echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env +echo NODE_ENV=production >> /opt/key-networks/ztncui/.env +chmod 400 /opt/key-networks/ztncui/.env +chown ztncui:ztncui /opt/key-networks/ztncui/.env +systemctl restart ztncui +msg_ok "Done setting up UI." + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/zerotier-one.json b/json/zerotier-one.json new file mode 100644 index 000000000..b5ba491aa --- /dev/null +++ b/json/zerotier-one.json @@ -0,0 +1,34 @@ +{ + "name": "Zerotier-One", + "slug": "zerotier-one", + "categories": [ + 4 + ], + "date_created": "2024-05-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3443, + "documentation": "https://https://docs.zerotier.com/", + "website": "https://www.zerotier.com/", + "logo": "https://www.zerotier.com/wp-content/uploads/2025/01/Logo-White.svg", + "description": "ZeroTier is a secure network overlay that allows you to manage all of your network resources as if they were on the same LAN. The software-defined solution can be deployed in minutes from anywhere. No matter how many devices you need to connect, or where they are in the world, ZeroTier makes global networking simple.", + "install_methods": [ + { + "type": "default", + "script": "ct/debian.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin", + "password": "password" + }, + "notes": [] +} \ No newline at end of file From 7838dd6277f1b73e620797e539e6e896742f0ab1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:40:43 +0100 Subject: [PATCH 120/480] Update CHANGELOG.md (#2054) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de36b162c..442a4f977 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,10 +23,11 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Zerotier Controller [@tremor021](https://github.com/tremor021) ([#1928](https://github.com/community-scripts/ProxmoxVE/pull/1928)) +- New Script: Radicale [@tremor021](https://github.com/tremor021) ([#1941](https://github.com/community-scripts/ProxmoxVE/pull/1941)) - New Script: seelf [@tremor021](https://github.com/tremor021) ([#2023](https://github.com/community-scripts/ProxmoxVE/pull/2023)) - New Script: Crafty-Controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#1926](https://github.com/community-scripts/ProxmoxVE/pull/1926)) - New script: Koillection [@bvdberg01](https://github.com/bvdberg01) ([#2031](https://github.com/community-scripts/ProxmoxVE/pull/2031)) -- New Script: Radicale [@tremor021](https://github.com/tremor021) ([#1941](https://github.com/community-scripts/ProxmoxVE/pull/1941)) ### 🚀 Updated Scripts From f98124a57f31939b697c45e28d474424854ece92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:46:29 +0100 Subject: [PATCH 121/480] Update .app files (#2055) Co-authored-by: GitHub Actions --- ct/headers/zerotier-one | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/zerotier-one diff --git a/ct/headers/zerotier-one b/ct/headers/zerotier-one new file mode 100644 index 000000000..195eeb51f --- /dev/null +++ b/ct/headers/zerotier-one @@ -0,0 +1,6 @@ + _____ __ _ ____ +/__ / ___ _________ / /_(_)__ _____ / __ \____ ___ + / / / _ \/ ___/ __ \/ __/ / _ \/ ___/_____/ / / / __ \/ _ \ + / /__/ __/ / / /_/ / /_/ / __/ / /_____/ /_/ / / / / __/ +/____/\___/_/ \____/\__/_/\___/_/ \____/_/ /_/\___/ + From 34837c7777eb3c86df3fd6027a514aa47fdf1223 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:57:24 +0100 Subject: [PATCH 122/480] Update auto-update-app-headers.yml (#2057) --- .github/workflows/auto-update-app-headers.yml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/auto-update-app-headers.yml b/.github/workflows/auto-update-app-headers.yml index 0a62c2dd5..116995886 100644 --- a/.github/workflows/auto-update-app-headers.yml +++ b/.github/workflows/auto-update-app-headers.yml @@ -72,6 +72,26 @@ jobs: --label "automated pr" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Approve pull request + if: steps.verify-diff.outputs.changed == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number') + if [ -n "$PR_NUMBER" ]; then + gh pr review $PR_NUMBER --approve + fi + + - name: Re-approve pull request after update + if: steps.verify-diff.outputs.changed == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number') + if [ -n "$PR_NUMBER" ]; then + gh pr review $PR_NUMBER --approve + fi # Step 8: Output success message when no changes - name: No changes detected From c52c6ec3a32c0edb2fb0c3aca1198681d8b2c950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:01:42 +0100 Subject: [PATCH 123/480] remove sleep command as not needed (#2056) --- .github/CONTRIBUTOR_GUIDE/ct/AppName.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh index 0cf1dd4a2..160e9e25c 100644 --- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh +++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh @@ -66,7 +66,6 @@ function update_script() { # Starting Services msg_info "Starting $APP" systemctl start [SERVICE_NAME] - sleep 2 msg_ok "Started $APP" # Cleaning up From 778b6be4e0eca5923a379bfc10819d3505f1b1ea Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:10:00 +0100 Subject: [PATCH 124/480] Update CHANGELOG.md (#2058) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 442a4f977..ea4d5b7e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance - [API] Add API backend code [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2040](https://github.com/community-scripts/ProxmoxVE/pull/2040)) +- Update auto-update-app-headers.yml: Enable auto approval [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2057](https://github.com/community-scripts/ProxmoxVE/pull/2057)) ## 2025-02-04 From 5451e61484180468eb11abbb8b51cd4d93af21cf Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:29:07 +0100 Subject: [PATCH 125/480] [API] Update create-lxc.sh / Improve error messages #1 (#2049) * update create-lxc.sh * [core] Ignore create_lxc.sh at validate filename (#2059) * Update validate-filenames.yml --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- .github/workflows/validate-filenames.yml | 6 +++++- ct/create_lxc.sh | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/validate-filenames.yml b/.github/workflows/validate-filenames.yml index 909c669de..ad821e943 100644 --- a/.github/workflows/validate-filenames.yml +++ b/.github/workflows/validate-filenames.yml @@ -50,9 +50,13 @@ jobs: NON_COMPLIANT_FILES="" for FILE in $CHANGED_FILES; do + # Datei "ct/create_lxc.sh" explizit überspringen + if [[ "$FILE" == "ct/create_lxc.sh" ]]; then + continue + fi BASENAME=$(echo "$(basename "${FILE%.*}")") if [[ ! "$BASENAME" =~ ^[a-z0-9-]+$ ]]; then - NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE" + NON_COMPLIANT_FILES="$NON_COMPLIANT_FILES $FILE" fi done diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh index 6d55fd17c..1f3dfce92 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -43,6 +43,7 @@ function error_handler() { local command="$2" local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" echo -e "\n$error_message\n" + exit 200 } # This function displays a spinner. @@ -112,7 +113,7 @@ function select_storage() { CONTENT='vztmpl' CONTENT_LABEL='Container template' ;; - *) false || exit "Invalid storage class." ;; + *) false || { msg_error "Invalid storage class."; exit 201; }; esac # This Queries all storage locations @@ -138,7 +139,7 @@ function select_storage() { STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \ "Which storage pool you would like to use for the ${CONTENT_LABEL,,}?\nTo make a selection, use the Spacebar.\n" \ 16 $(($MSG_MAX_LENGTH + 23)) 6 \ - "${MENU[@]}" 3>&1 1>&2 2>&3) || exit "Menu aborted." + "${MENU[@]}" 3>&1 1>&2 2>&3) || { msg_error "Menu aborted."; exit 202; } if [ $? -ne 0 ]; then echo -e "${CROSS}${RD} Menu aborted by user.${CL}" exit 0 @@ -148,17 +149,18 @@ function select_storage() { fi } # Test if required variables are set -[[ "${CTID:-}" ]] || exit "You need to set 'CTID' variable." -[[ "${PCT_OSTYPE:-}" ]] || exit "You need to set 'PCT_OSTYPE' variable." +[[ "${CTID:-}" ]] || { msg_error "You need to set 'CTID' variable."; exit 203; } +[[ "${PCT_OSTYPE:-}" ]] || { msg_error "You need to set 'PCT_OSTYPE' variable."; exit 204; } # Test if ID is valid -[ "$CTID" -ge "100" ] || exit "ID cannot be less than 100." +[ "$CTID" -ge "100" ] || { msg_error "ID cannot be less than 100."; exit 205; } # Test if ID is in use if pct status $CTID &>/dev/null; then echo -e "ID '$CTID' is already in use." unset CTID - exit "Cannot use ID that is already in use." + msg_error "Cannot use ID that is already in use." + exit 206 fi # Get template storage @@ -177,14 +179,15 @@ msg_ok "Updated LXC Template List" # Get LXC template string TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-} mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V) -[ ${#TEMPLATES[@]} -gt 0 ] || exit "Unable to find a template when searching for '$TEMPLATE_SEARCH'." +[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; } TEMPLATE="${TEMPLATES[-1]}" # Download LXC template if needed if ! pveam list $TEMPLATE_STORAGE | grep -q $TEMPLATE; then msg_info "Downloading LXC Template" pveam download $TEMPLATE_STORAGE $TEMPLATE >/dev/null || - exit "A problem occured while downloading the LXC template." + msg_error "A problem occured while downloading the LXC template." + exit 208 msg_ok "Downloaded LXC Template" fi @@ -198,5 +201,7 @@ PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}}) # Create container msg_info "Creating LXC Container" pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || - exit "A problem occured while trying to create container." + msg_error "A problem occured while trying to create container." + exit 200 msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created." + From 682674727c86556ca2cc650cac910508b02eab7a Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:29:19 +0100 Subject: [PATCH 126/480] [API] Update build.func / Improve error messages #2 (#2050) * update build.func * update build.func * update api.func * update api.func --- misc/api.func | 6 +----- misc/build.func | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/misc/api.func b/misc/api.func index b1faa0c2a..b9ab5b4de 100644 --- a/misc/api.func +++ b/misc/api.func @@ -42,14 +42,11 @@ EOF RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD") || true - - } post_to_api_vm() { DIAGNOSTICS=$(grep -i "^DIAGNOSTICS=" /usr/local/community-scripts/diagnostics | awk -F'=' '{print $2}') - if ! command -v curl &> /dev/null; then return fi @@ -91,7 +88,6 @@ EOF RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD") || true - } POST_UPDATE_DONE=false @@ -106,7 +102,7 @@ post_update_to_api() { fi local API_URL="http://api.community-scripts.org/upload/updatestatus" local status="${1:-failed}" - local error="${2:-unknown}" + local error="${2:-No error message}" JSON_PAYLOAD=$(cat < /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local exit_code="$?" local line_number="$1" local command="$2" local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" + post_update_to_api "failed" "${command}" echo -e "\n$error_message\n" } @@ -1054,7 +1057,7 @@ build_container() { $PW " # This executes create_lxc.sh and creates the container and .conf file - bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/create_lxc.sh)" || exit + bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/create_lxc.sh)" || exit $? LXC_CONFIG=/etc/pve/lxc/${CTID}.conf if [ "$CT_TYPE" == "0" ]; then @@ -1116,7 +1119,7 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community EOF' pct exec "$CTID" -- ash -c "apk add bash >/dev/null" fi - lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/install/$var_install.sh)" || exit + lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/install/$var_install.sh)" || exit $? } @@ -1166,7 +1169,32 @@ EOF post_update_to_api "done" "none" } -trap 'post_update_to_api "failed" "unknown error"' EXIT -trap 'post_update_to_api "failed" "SIG INTERUPT"' SIGINT -trap 'post_update_to_api "failed" "SIG TERM"' SIGTERM + +exit_script() { + exit_code=$? # Capture the exit status of the last executed command + #200 exit codes indicate error in create_lxc.sh + #100 exit codes indicate error in install.func + +if [ $exit_code -ne 0 ]; then # Check if exit code is nonzero + case $exit_code in + 200) post_update_to_api "failed" "create_lxc.sh: Error during LXC creation" ;; + 201) post_update_to_api "failed" "create_lxc.sh Invalid Storage class" ;; + 202) post_update_to_api "failed" "create_lxc.sh Invalid Menu aborted" ;; + 203) post_update_to_api "failed" "create_lxc.sh CTID was unset" ;; + 204) post_update_to_api "failed" "create_lxc.sh PCT_OSTYPE was unset" ;; + 205) post_update_to_api "failed" "create_lxc.sh ID cannot be less than 100" ;; + 206) post_update_to_api "failed" "create_lxc.sh ID already in use" ;; + 207) post_update_to_api "failed" "create_lxc.sh Template not found" ;; + 208) post_update_to_api "failed" "create_lxc.sh Error downloading template" ;; + 101) post_update_to_api "failed" "create_lxc.sh No Network connection" ;; + *) post_update_to_api "failed" "Unknown error, exit code: $exit_code" ;; + esac +fi +} + + +trap 'exit_script' EXIT +trap 'post_update_to_api "failed" "$BASH_COMMAND"' ERR +trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT +trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM From 857964653c7c07c40df3c3a45bb6d762ca46f9c5 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:33:42 +0100 Subject: [PATCH 127/480] Update CHANGELOG.md (#2061) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea4d5b7e2..90abbf865 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- [API] Update build.func / Improve error messages #2 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2050](https://github.com/community-scripts/ProxmoxVE/pull/2050)) +- [API] Update create-lxc.sh / Improve error messages #1 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2049](https://github.com/community-scripts/ProxmoxVE/pull/2049)) - Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) - Feature: Element Synapse: add option to enter server name during LXC installation [@tremor021](https://github.com/tremor021) ([#2038](https://github.com/community-scripts/ProxmoxVE/pull/2038)) From 88ee57cf15b30a98ac072e9f35cf0224f799c71f Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:45:47 +0100 Subject: [PATCH 128/480] Update create_lxc.sh (#2062) --- ct/create_lxc.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh index 1f3dfce92..50bbaac57 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -200,8 +200,6 @@ PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}}) # Create container msg_info "Creating LXC Container" -pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || - msg_error "A problem occured while trying to create container." - exit 200 +pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || { msg_error "A problem occured while trying to create container."; exit 200; } msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created." From 1a00ba109bf9091733e334e13f1fc8086e3e7656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 5 Feb 2025 18:25:46 +0100 Subject: [PATCH 129/480] fix missing htpasswd flag (#2065) --- install/radicale-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/radicale-install.sh b/install/radicale-install.sh index faed48387..3a6e092aa 100644 --- a/install/radicale-install.sh +++ b/install/radicale-install.sh @@ -25,14 +25,15 @@ msg_ok "Installed Dependencies" msg_info "Setting up Radicale" python3 -m venv /opt/radicale source /opt/radicale/bin/activate -python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz +$STD python3 -m pip install --upgrade https://github.com/Kozea/Radicale/archive/master.tar.gz RNDPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) -htpasswd -b -5 /opt/radicale/users admin $RNDPASS +$STD htpasswd -c -b -5 /opt/radicale/users admin $RNDPASS { echo "Radicale Credentials" echo "Admin User: admin" echo "Admin Password: $RNDPASS" } >> ~/radicale.creds +msg_ok "Done setting up Radicale" msg_info "Setup Service" From fbe2fb10afc0a32706f3e01986fe0219dbc5c7ec Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 18:30:32 +0100 Subject: [PATCH 130/480] Update CHANGELOG.md (#2066) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90abbf865..0892241c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Radicale: Fixed missing htpasswd flag [@tremor021](https://github.com/tremor021) ([#2065](https://github.com/community-scripts/ProxmoxVE/pull/2065)) - [API] Update build.func / Improve error messages #2 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2050](https://github.com/community-scripts/ProxmoxVE/pull/2050)) - [API] Update create-lxc.sh / Improve error messages #1 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2049](https://github.com/community-scripts/ProxmoxVE/pull/2049)) - Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) From cb79d7baabe29414b8c1bd0bc6eb1fd6758729bc Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Wed, 5 Feb 2025 22:32:58 +0100 Subject: [PATCH 131/480] Paperless NGX: Mark it as updateable (#2070) --- json/paperless-ngx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/paperless-ngx.json b/json/paperless-ngx.json index 85eb6ea85..96706a2a5 100644 --- a/json/paperless-ngx.json +++ b/json/paperless-ngx.json @@ -6,7 +6,7 @@ ], "date_created": "2024-05-02", "type": "ct", - "updateable": false, + "updateable": true, "privileged": false, "interface_port": 8000, "documentation": null, From d941af4cf2ab4128ce798e2dbe15f3f6f20a543a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 22:35:15 +0100 Subject: [PATCH 132/480] Update CHANGELOG.md (#2071) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0892241c6..8da6e303c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,14 +31,15 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) - Radicale: Fixed missing htpasswd flag [@tremor021](https://github.com/tremor021) ([#2065](https://github.com/community-scripts/ProxmoxVE/pull/2065)) - [API] Update build.func / Improve error messages #2 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2050](https://github.com/community-scripts/ProxmoxVE/pull/2050)) - [API] Update create-lxc.sh / Improve error messages #1 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2049](https://github.com/community-scripts/ProxmoxVE/pull/2049)) -- Bugfix: Jellyseerr pnpm Version [@vidonnus](https://github.com/vidonnus) ([#2033](https://github.com/community-scripts/ProxmoxVE/pull/2033)) - Feature: Element Synapse: add option to enter server name during LXC installation [@tremor021](https://github.com/tremor021) ([#2038](https://github.com/community-scripts/ProxmoxVE/pull/2038)) ### 🌐 Website +- Paperless NGX: Mark it as updateable [@andygrunwald](https://github.com/andygrunwald) ([#2070](https://github.com/community-scripts/ProxmoxVE/pull/2070)) - Bump vitest from 2.1.6 to 2.1.9 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#2042](https://github.com/community-scripts/ProxmoxVE/pull/2042)) ### 🧰 Maintenance From 439a7ed9e854e0f804e4f3fa65f0e4db0f6b8965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 6 Feb 2025 07:25:30 +0100 Subject: [PATCH 133/480] Radicale: Provide additional information about configuration (#2072) --- json/radicale.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/json/radicale.json b/json/radicale.json index 35e6307ec..eb8596018 100644 --- a/json/radicale.json +++ b/json/radicale.json @@ -34,6 +34,10 @@ { "text": "To view the user credentials : `cat radicale.creds`", "type": "info" + }, + { + "text": "This application requires additional configuration. Please refer to https://github.com/community-scripts/ProxmoxVE/discussions/2073.", + "type": "info" } ] } \ No newline at end of file From 4a273c7134e0b4e9e3c3a69cc194cdacea5c6b64 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 08:23:33 +0100 Subject: [PATCH 134/480] Update CHANGELOG.md (#2077) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8da6e303c..cb4269626 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-06 + +### Changed + +### 🌐 Website + +- Radicale: Provide additional information about configuration [@tremor021](https://github.com/tremor021) ([#2072](https://github.com/community-scripts/ProxmoxVE/pull/2072)) + ## 2025-02-05 ### Changed From 873ae3e8af20fe23ca176b3dd5c8da1fbca0d5a2 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:43:45 +0100 Subject: [PATCH 135/480] Fix: Pocket-ID Change link to GH Repo (#2082) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Pocket-ID, change link to GH Repo * change source-link * change source-link --------- Co-authored-by: Rögl-Brunner Michel Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/pocketid.sh | 6 +++--- install/pocketid-install.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ct/pocketid.sh b/ct/pocketid.sh index 5e717f6f8..5d306f06b 100755 --- a/ct/pocketid.sh +++ b/ct/pocketid.sh @@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts ORG # Author: Snarkenfaugister # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/stonith404/pocket-id +# Source: https://github.com/pocket-id/pocket-id # App Default Values APP="PocketID" @@ -34,7 +34,7 @@ function update_script() { exit fi - RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + RELEASE=$(curl -fsSL https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Updating $APP" @@ -50,7 +50,7 @@ function update_script() { cp /opt/pocket-id/backend/.env /opt/backend.env cp /opt/pocket-id/frontend/.env /opt/frontend.env rm -r /opt/pocket-id - wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip" + wget -q "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip mv pocket-id-${RELEASE} /opt/pocket-id mv /opt/data /opt/pocket-id/backend/data diff --git a/install/pocketid-install.sh b/install/pocketid-install.sh index 6ce62a195..167c831bb 100644 --- a/install/pocketid-install.sh +++ b/install/pocketid-install.sh @@ -3,7 +3,7 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: Snarkenfaugister # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/stonith404/pocket-id +# Source: https://github.com/pocket-id/pocket-id source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color @@ -48,8 +48,8 @@ msg_ok "Installed Golang" read -r -p "What public URL do you want to use (e.g. pocketid.mydomain.com)? " public_url msg_info "Setup Pocket ID" cd /opt -RELEASE=$(curl -s https://api.github.com/repos/stonith404/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q "https://github.com/stonith404/pocket-id/archive/refs/tags/v${RELEASE}.zip" +RELEASE=$(curl -s https://api.github.com/repos/pocket-id/pocket-id/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/pocket-id/pocket-id/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip mv pocket-id-${RELEASE}/ /opt/pocket-id From 5cf1f880c6ab906e6cba132d2f806ee00c7d861e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:54:52 +0100 Subject: [PATCH 136/480] Update CHANGELOG.md (#2087) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb4269626..381aa5de6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Fix: Pocket-ID Change link to GH Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2082](https://github.com/community-scripts/ProxmoxVE/pull/2082)) + ### 🌐 Website - Radicale: Provide additional information about configuration [@tremor021](https://github.com/tremor021) ([#2072](https://github.com/community-scripts/ProxmoxVE/pull/2072)) From 7d8ecead7ddd2a36307efe92c4893fbe222a77b0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:34:08 +0100 Subject: [PATCH 137/480] Add new LXC: Paperless-AI --- ct/paperless-ai.sh | 75 ++++++++++++++++++++++++++ install/paperless-ai-install.sh | 93 +++++++++++++++++++++++++++++++++ json/paperless-ai.json | 34 ++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 ct/paperless-ai.sh create mode 100644 install/paperless-ai-install.sh create mode 100644 json/paperless-ai.json diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh new file mode 100644 index 000000000..a71722f43 --- /dev/null +++ b/ct/paperless-ai.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/clusterzx/paperless-ai + +# App Default Values +APP="Paperless-AI" +var_tags="ai;document" +var_cpu="2" +var_ram="2048" +var_disk="5" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/paperless-ai ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Updating $APP" + msg_info "Stopping $APP" + systemctl stop paperless-ai + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + cd /opt + mv /opt/paperless-ai /opt/paperless-ai_bak + wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv paperless-ai-${RELEASE} /opt/paperless-ai + mkdir -p /opt/paperless-ai/data + cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/ + npm install &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start paperless-ai + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf /opt/v${RELEASE}.zip + rm -rf /opt/paperless-ai_bak + msg_ok "Cleanup Completed" + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" \ No newline at end of file diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh new file mode 100644 index 000000000..18d1ed241 --- /dev/null +++ b/install/paperless-ai-install.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gpg +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Setup Paperless-AI" +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" +unzip -q v${RELEASE}.zip +mv paperless-ai-${RELEASE} /opt/paperless-ai +cd /opt/paperless-ai +$STD npm install +mkdir -p /opt/paperless-ai/data +cat </opt/paperless-ai/data/.env +PAPERLESS_API_URL= +PAPERLESS_API_TOKEN= +PAPERLESS_USERNAME= +AI_PROVIDER=openai +OPENAI_API_KEY= +OPENAI_MODEL=gpt-4o-mini +OLLAMA_API_URL= +OLLAMA_MODEL= +SCAN_INTERVAL=*/10 * * * * +SYSTEM_PROMPT="" +PROCESS_PREDEFINED_DOCUMENTS=no +TAGS= +ADD_AI_PROCESSED_TAG=no +AI_PROCESSED_TAG_NAME=ki-gen +USE_PROMPT_TAGS=no +PROMPT_TAGS= +USE_EXISTING_DATA=no +API_KEY= +CUSTOM_API_KEY= +CUSTOM_BASE_URL= +CUSTOM_MODEL= +EOF +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup Paperless-AI" + +msg_info "Creating Service" +cat </etc/systemd/system/paperless-ai.service +[Unit] +Description=PaperlessAI Service +After=network.target + +[Service] +WorkingDirectory=/opt/paperless-ai +ExecStart=/usr/bin/npm start +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now paperless-ai.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/v${RELEASE}.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/paperless-ai.json b/json/paperless-ai.json new file mode 100644 index 000000000..8088dc492 --- /dev/null +++ b/json/paperless-ai.json @@ -0,0 +1,34 @@ +{ + "name": "PaperlessAI", + "slug": "paperless-ai", + "categories": [ + 20 + ], + "date_created": "2025-02-06", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": null, + "website": "https://github.com/clusterzx/paperless-ai", + "logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg", + "description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.", + "install_methods": [ + { + "type": "default", + "script": "ct/paperless-ai.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 5, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 4eb93ea49b8e6ca37dd0febe2e4e24fdc791e7d0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:36:25 +0100 Subject: [PATCH 138/480] Revert "Add new LXC: Paperless-AI" (#2091) This reverts commit 7d8ecead7ddd2a36307efe92c4893fbe222a77b0. --- ct/paperless-ai.sh | 75 -------------------------- install/paperless-ai-install.sh | 93 --------------------------------- json/paperless-ai.json | 34 ------------ 3 files changed, 202 deletions(-) delete mode 100644 ct/paperless-ai.sh delete mode 100644 install/paperless-ai-install.sh delete mode 100644 json/paperless-ai.json diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh deleted file mode 100644 index a71722f43..000000000 --- a/ct/paperless-ai.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/clusterzx/paperless-ai - -# App Default Values -APP="Paperless-AI" -var_tags="ai;document" -var_cpu="2" -var_ram="2048" -var_disk="5" -var_os="debian" -var_version="12" -var_unprivileged="1" - -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -d /opt/paperless-ai ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Updating $APP" - msg_info "Stopping $APP" - systemctl stop paperless-ai - msg_ok "Stopped $APP" - - msg_info "Updating $APP to v${RELEASE}" - cd /opt - mv /opt/paperless-ai /opt/paperless-ai_bak - wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv paperless-ai-${RELEASE} /opt/paperless-ai - mkdir -p /opt/paperless-ai/data - cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/ - npm install &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" - - msg_info "Starting $APP" - systemctl start paperless-ai - msg_ok "Started $APP" - - msg_info "Cleaning Up" - rm -rf /opt/v${RELEASE}.zip - rm -rf /opt/paperless-ai_bak - msg_ok "Cleanup Completed" - msg_ok "Update Successful" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" - 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}:3000${CL}" \ No newline at end of file diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh deleted file mode 100644 index 18d1ed241..000000000 --- a/install/paperless-ai-install.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE - -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - sudo \ - mc \ - gpg -msg_ok "Installed Dependencies" - -msg_info "Setting up Node.js Repository" -mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list -msg_ok "Set up Node.js Repository" - -msg_info "Installing Node.js" -$STD apt-get update -$STD apt-get install -y nodejs -msg_ok "Installed Node.js" - -msg_info "Setup Paperless-AI" -cd /opt -RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" -unzip -q v${RELEASE}.zip -mv paperless-ai-${RELEASE} /opt/paperless-ai -cd /opt/paperless-ai -$STD npm install -mkdir -p /opt/paperless-ai/data -cat </opt/paperless-ai/data/.env -PAPERLESS_API_URL= -PAPERLESS_API_TOKEN= -PAPERLESS_USERNAME= -AI_PROVIDER=openai -OPENAI_API_KEY= -OPENAI_MODEL=gpt-4o-mini -OLLAMA_API_URL= -OLLAMA_MODEL= -SCAN_INTERVAL=*/10 * * * * -SYSTEM_PROMPT="" -PROCESS_PREDEFINED_DOCUMENTS=no -TAGS= -ADD_AI_PROCESSED_TAG=no -AI_PROCESSED_TAG_NAME=ki-gen -USE_PROMPT_TAGS=no -PROMPT_TAGS= -USE_EXISTING_DATA=no -API_KEY= -CUSTOM_API_KEY= -CUSTOM_BASE_URL= -CUSTOM_MODEL= -EOF -echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" -msg_ok "Setup Paperless-AI" - -msg_info "Creating Service" -cat </etc/systemd/system/paperless-ai.service -[Unit] -Description=PaperlessAI Service -After=network.target - -[Service] -WorkingDirectory=/opt/paperless-ai -ExecStart=/usr/bin/npm start -Restart=always - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now paperless-ai.service -msg_ok "Created Service" - -motd_ssh -customize - -msg_info "Cleaning up" -rm -rf /opt/v${RELEASE}.zip -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" diff --git a/json/paperless-ai.json b/json/paperless-ai.json deleted file mode 100644 index 8088dc492..000000000 --- a/json/paperless-ai.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "PaperlessAI", - "slug": "paperless-ai", - "categories": [ - 20 - ], - "date_created": "2025-02-06", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 3000, - "documentation": null, - "website": "https://github.com/clusterzx/paperless-ai", - "logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg", - "description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.", - "install_methods": [ - { - "type": "default", - "script": "ct/paperless-ai.sh", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 5, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} \ No newline at end of file From a3f1ff30e02263196c024ae6e3f40d238b08fe11 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:37:39 +0100 Subject: [PATCH 139/480] Update CHANGELOG.md (#2092) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 381aa5de6..bf5245c0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- Revert "Add new LXC: Paperless-AI" [@MickLesk](https://github.com/MickLesk) ([#2091](https://github.com/community-scripts/ProxmoxVE/pull/2091)) + ### 🚀 Updated Scripts - Fix: Pocket-ID Change link to GH Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2082](https://github.com/community-scripts/ProxmoxVE/pull/2082)) From fbec881f7074b71186894e41f648527a66cd9201 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:41:52 +0100 Subject: [PATCH 140/480] Update .app files (#2090) Co-authored-by: GitHub Actions --- ct/headers/paperless-ai | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/paperless-ai diff --git a/ct/headers/paperless-ai b/ct/headers/paperless-ai new file mode 100644 index 000000000..ff10489a5 --- /dev/null +++ b/ct/headers/paperless-ai @@ -0,0 +1,6 @@ + ____ __ ___ ____ + / __ \____ _____ ___ _____/ /__ __________ / | / _/ + / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ /| | / / + / ____/ /_/ / /_/ / __/ / / / __(__ |__ )_____/ ___ |_/ / +/_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ |_/___/ + /_/ From 0e2f711cac65412a4b18c1d7cabcf063cf0e40b6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:53:55 +0100 Subject: [PATCH 141/480] Add new LXC: Paperless-AI (#2093) * Add new LXC: Paperless-AI * formatting * fix path * formatting --- ct/paperless-ai.sh | 75 ++++++++++++++++++++++++++ install/paperless-ai-install.sh | 93 +++++++++++++++++++++++++++++++++ json/paperless-ai.json | 34 ++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 ct/paperless-ai.sh create mode 100644 install/paperless-ai-install.sh create mode 100644 json/paperless-ai.json diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh new file mode 100644 index 000000000..269b76f9f --- /dev/null +++ b/ct/paperless-ai.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/clusterzx/paperless-ai + +# App Default Values +APP="Paperless-AI" +var_tags="ai;document" +var_cpu="2" +var_ram="2048" +var_disk="5" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/paperless-ai ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop paperless-ai + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + cd /opt + mv /opt/paperless-ai /opt/paperless-ai_bak + wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv paperless-ai-${RELEASE} /opt/paperless-ai + mkdir -p /opt/paperless-ai/data + cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/ + cd /opt/paperless-ai + npm install &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start paperless-ai + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf /opt/v${RELEASE}.zip + rm -rf /opt/paperless-ai_bak + msg_ok "Cleanup Completed" + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh new file mode 100644 index 000000000..18d1ed241 --- /dev/null +++ b/install/paperless-ai-install.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gpg +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Setup Paperless-AI" +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" +unzip -q v${RELEASE}.zip +mv paperless-ai-${RELEASE} /opt/paperless-ai +cd /opt/paperless-ai +$STD npm install +mkdir -p /opt/paperless-ai/data +cat </opt/paperless-ai/data/.env +PAPERLESS_API_URL= +PAPERLESS_API_TOKEN= +PAPERLESS_USERNAME= +AI_PROVIDER=openai +OPENAI_API_KEY= +OPENAI_MODEL=gpt-4o-mini +OLLAMA_API_URL= +OLLAMA_MODEL= +SCAN_INTERVAL=*/10 * * * * +SYSTEM_PROMPT="" +PROCESS_PREDEFINED_DOCUMENTS=no +TAGS= +ADD_AI_PROCESSED_TAG=no +AI_PROCESSED_TAG_NAME=ki-gen +USE_PROMPT_TAGS=no +PROMPT_TAGS= +USE_EXISTING_DATA=no +API_KEY= +CUSTOM_API_KEY= +CUSTOM_BASE_URL= +CUSTOM_MODEL= +EOF +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup Paperless-AI" + +msg_info "Creating Service" +cat </etc/systemd/system/paperless-ai.service +[Unit] +Description=PaperlessAI Service +After=network.target + +[Service] +WorkingDirectory=/opt/paperless-ai +ExecStart=/usr/bin/npm start +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now paperless-ai.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/v${RELEASE}.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/paperless-ai.json b/json/paperless-ai.json new file mode 100644 index 000000000..8088dc492 --- /dev/null +++ b/json/paperless-ai.json @@ -0,0 +1,34 @@ +{ + "name": "PaperlessAI", + "slug": "paperless-ai", + "categories": [ + 20 + ], + "date_created": "2025-02-06", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": null, + "website": "https://github.com/clusterzx/paperless-ai", + "logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg", + "description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.", + "install_methods": [ + { + "type": "default", + "script": "ct/paperless-ai.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 5, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 9badef6f036938b302a472eb5340a8e50f770b23 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:57:25 +0100 Subject: [PATCH 142/480] Update CHANGELOG.md (#2095) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf5245c0f..563b83aa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - Revert "Add new LXC: Paperless-AI" [@MickLesk](https://github.com/MickLesk) ([#2091](https://github.com/community-scripts/ProxmoxVE/pull/2091)) +### ✨ New Scripts + +- Add new LXC: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093)) + ### 🚀 Updated Scripts - Fix: Pocket-ID Change link to GH Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2082](https://github.com/community-scripts/ProxmoxVE/pull/2082)) From 82fecd7bbdb775d1e7b1462c39ddb0d42778a179 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 16:12:54 +0100 Subject: [PATCH 143/480] Update CHANGELOG.md (#2096) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 563b83aa0..b220741bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,10 +21,6 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed -### 💥 Breaking Changes - -- Revert "Add new LXC: Paperless-AI" [@MickLesk](https://github.com/MickLesk) ([#2091](https://github.com/community-scripts/ProxmoxVE/pull/2091)) - ### ✨ New Scripts - Add new LXC: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093)) From f5a73a54490674fb2789b612fb2d1016f4002a4a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 16:23:44 +0100 Subject: [PATCH 144/480] Fix: Alpine IT-Tools Update (#2067) * Fix: Alpine ITTools Update * remove wget --- ct/alpine-it-tools.sh | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/ct/alpine-it-tools.sh b/ct/alpine-it-tools.sh index e9b8c2df8..3b83b6ee0 100644 --- a/ct/alpine-it-tools.sh +++ b/ct/alpine-it-tools.sh @@ -29,27 +29,28 @@ function update_script() { check_container_storage check_container_resources - if [[ ! -d /usr/share/nginx/html ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi +if [ ! -d /usr/share/nginx/html ]; then + msg_error "No ${APP} Installation Found!" + exit 1 +fi - RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4) - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" - msg_info "Updating ${APP} LXC" - curl -fsSL -o it-tools.zip "$DOWNLOAD_URL" - mkdir -p /usr/share/nginx/html - rm -rf /usr/share/nginx/html/* - unzip -q it-tools.zip -d /tmp/it-tools - cp -r /tmp/it-tools/dist/* /usr/share/nginx/html - rm -rf /tmp/it-tools - rm -f it-tools.zip - msg_ok "Updated Successfully" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi - exit +RELEASE=$(curl -s https://api.github.com/repos/CorentinTh/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4) +if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt 2>/dev/null)" ] || [ ! -f /opt/${APP}_version.txt ]; then + DOWNLOAD_URL="https://github.com/CorentinTh/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" + msg_info "Updating ${APP} LXC" + curl -fsSL -o it-tools.zip "$DOWNLOAD_URL" + mkdir -p /usr/share/nginx/html + rm -rf /usr/share/nginx/html/* + unzip -q it-tools.zip -d /tmp/it-tools + cp -r /tmp/it-tools/dist/* /usr/share/nginx/html + rm -rf /tmp/it-tools + rm -f it-tools.zip + msg_ok "Updated Successfully" +else + msg_ok "No update required. ${APP} is already at ${RELEASE}" +fi + +exit 0 } start From 5a25348e0491346756cd614aefa6b7ce0e7f063b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 16:36:47 +0100 Subject: [PATCH 145/480] Update CHANGELOG.md (#2098) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b220741bc..869d69696 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Alpine IT-Tools Update [@MickLesk](https://github.com/MickLesk) ([#2067](https://github.com/community-scripts/ProxmoxVE/pull/2067)) - Fix: Pocket-ID Change link to GH Repo [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2082](https://github.com/community-scripts/ProxmoxVE/pull/2082)) ### 🌐 Website From 9c4e9ed4be3ed32dddca0bfea99fd9f7e01a7a82 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:04:32 +0100 Subject: [PATCH 146/480] Website: Add Download for json-editor (#2099) --- frontend/src/app/json-editor/page.tsx | 37 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/json-editor/page.tsx b/frontend/src/app/json-editor/page.tsx index 4986378ef..3d259fc57 100644 --- a/frontend/src/app/json-editor/page.tsx +++ b/frontend/src/app/json-editor/page.tsx @@ -23,7 +23,7 @@ import { fetchCategories } from "@/lib/data"; import { Category } from "@/lib/types"; import { cn } from "@/lib/utils"; import { format } from "date-fns"; -import { CalendarIcon, Check, Clipboard } from "lucide-react"; +import { CalendarIcon, Check, Clipboard, Download } from "lucide-react"; import { useCallback, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import { z } from "zod"; @@ -97,6 +97,21 @@ export default function JSONGenerator() { toast.success("Copied metadata to clipboard"); }, [script]); + const handleDownload = useCallback(() => { + const jsonString = JSON.stringify(script, null, 2); + const blob = new Blob([jsonString], { type: "application/json" }); + const url = URL.createObjectURL(blob); + + const a = document.createElement("a"); + a.href = url; + a.download = `${script.slug || "script"}.json`; + document.body.appendChild(a); + a.click(); + + URL.revokeObjectURL(url); + document.body.removeChild(a); + }, [script]); + const handleDateSelect = useCallback( (date: Date | undefined) => { updateScript("date_created", format(date || new Date(), "yyyy-MM-dd")); @@ -313,18 +328,26 @@ export default function JSONGenerator() {
{validationAlert}
+ {/* Copy Button */} + + {/* Download Button */} + +
             {JSON.stringify(script, null, 2)}
           
From 5b4c417729b5d4b1db30c36cee405605ec961b85 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:06:48 +0100 Subject: [PATCH 147/480] Website: Update Footer for Json-Editor & Api (#2100) * Website: Update Footer for Json-Editor & Api * Update Footer.tsx --- frontend/src/components/Footer.tsx | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index 56062d6fe..01bfb0764 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -1,12 +1,13 @@ import { basePath } from "@/config/siteConfig"; import Link from "next/link"; +import { FileJson, Server, ExternalLink } from "lucide-react"; export default function Footer() { return (
-
-
- Website built by the community. The source code is avaliable on{" "} +
+
+ Website built by the community. The source code is available on{" "} .
+
+ + JSON Editor + + + API Data + +
); From d7b6a974152dcb37998efc72e7c1cdc913006486 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:13:08 +0100 Subject: [PATCH 148/480] Update CHANGELOG.md (#2103) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 869d69696..76b8de422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Website: Update Footer for Json-Editor & Api [@MickLesk](https://github.com/MickLesk) ([#2100](https://github.com/community-scripts/ProxmoxVE/pull/2100)) +- Website: Add Download for json-editor [@MickLesk](https://github.com/MickLesk) ([#2099](https://github.com/community-scripts/ProxmoxVE/pull/2099)) - Radicale: Provide additional information about configuration [@tremor021](https://github.com/tremor021) ([#2072](https://github.com/community-scripts/ProxmoxVE/pull/2072)) ## 2025-02-05 From ef33864adfd5971073e562c92d0771dc9b855fd6 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Thu, 6 Feb 2025 18:40:21 +0100 Subject: [PATCH 149/480] New Script: Apache Tika (#2079) * New Script: Apache Tika * Temp: Replace github URLs to my own fork * Add additional dependencies according to the Docker image installation See https://github.com/apache/tika-docker/blob/master/full/Dockerfile * Apache Tika: Set correct tags * Apache Tika: Set TODO to make it updateable * Apache Tika: Fix "software-properties-common: command not found" * Apache Tika: Automate version detection * Apache Tika: Add `update_script` * Apache Tika: Added clean up of `/opt/apache-tika/tika-server-standard-prev-version.jar` after upgrade * Apache Tika: Bump up ram to 2048 * Apache Tika: Set updateable to true * Apache Tika: Switch from `default-jdk` to `openjdk-17-jre-headless` * Apache Tika: Removed comment about Docker file * Apache Tika: Removed empty line * Revert "Temp: Replace github URLs to my own fork" This reverts commit f1c5d8720696cdbfde9471abfff07e4b7b71bc6d. --- ct/apache-tika.sh | 69 ++++++++++++++++++++++++++++++ install/apache-tika-install.sh | 78 ++++++++++++++++++++++++++++++++++ json/apache-tika.json | 34 +++++++++++++++ 3 files changed, 181 insertions(+) create mode 100755 ct/apache-tika.sh create mode 100644 install/apache-tika-install.sh create mode 100644 json/apache-tika.json diff --git a/ct/apache-tika.sh b/ct/apache-tika.sh new file mode 100755 index 000000000..6227de95c --- /dev/null +++ b/ct/apache-tika.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Andy Grunwald (andygrunwald) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/apache/tika/ + +# App Default Values +APP="Apache-Tika" +var_tags="document" +var_cpu="1" +var_ram="2048" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/apache-tika.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE="$(wget -qO- https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)" + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop apache-tika + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt/apache-tika + wget -q "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 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start apache-tika + msg_ok "Started ${APP}" + msg_info "Cleaning Up" + rm -rf /opt/apache-tika/tika-server-standard-prev-version.jar + msg_ok "Cleanup Completed" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:9998${CL}" \ No newline at end of file diff --git a/install/apache-tika-install.sh b/install/apache-tika-install.sh new file mode 100644 index 000000000..1976e60bc --- /dev/null +++ b/install/apache-tika-install.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Andy Grunwald (andygrunwald) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/apache/tika/ + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + software-properties-common \ + gdal-bin \ + tesseract-ocr \ + tesseract-ocr-eng \ + tesseract-ocr-ita \ + tesseract-ocr-fra \ + tesseract-ocr-spa \ + tesseract-ocr-deu +$STD echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections +$STD apt-get install -y \ + xfonts-utils \ + fonts-freefont-ttf \ + fonts-liberation \ + ttf-mscorefonts-installer \ + cabextract +msg_ok "Installed Dependencies" + +msg_info "Setup OpenJDK" +$STD apt-get install -y \ + openjdk-17-jre-headless +msg_ok "Setup OpenJDK" + +msg_info "Installing Apache Tika" +mkdir -p /opt/apache-tika +cd /opt/apache-tika +RELEASE="$(wget -qO- https://dlcdn.apache.org/tika/ | grep -oP '(?<=href=")[0-9]+\.[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1)" +wget -q "https://dlcdn.apache.org/tika/${RELEASE}/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" + +msg_info "Creating Service" +cat </etc/systemd/system/apache-tika.service +[Unit] +Description=Apache Tika +Documentation=https://tika.apache.org/ +After=syslog.target network.target + +[Service] +User=root +Restart=always +Type=simple +ExecStart=java -jar /opt/apache-tika/tika-server-standard.jar --host 0.0.0.0 --port 9998 +ExecReload=/bin/kill -HUP \$MAINPID + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now apache-tika +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/apache-tika.json b/json/apache-tika.json new file mode 100644 index 000000000..1e891727a --- /dev/null +++ b/json/apache-tika.json @@ -0,0 +1,34 @@ +{ + "name": "Apache Tika", + "slug": "apache-tika", + "categories": [ + 12 + ], + "date_created": "2025-02-05", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9998, + "documentation": null, + "website": "https://tika.apache.org/", + "logo": "https://tika.apache.org/tika.png", + "description": "The Apache Tika™ toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika useful for search engine indexing, content analysis, translation, and much more.", + "install_methods": [ + { + "type": "default", + "script": "ct/apache-tika.sh", + "resources": { + "cpu": 1, + "ram": 2024, + "hdd": 10, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 9736d5c785753e8230091f36837e7e90fa7e1eb1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 19:09:55 +0100 Subject: [PATCH 150/480] Update .app files (#2109) Co-authored-by: GitHub Actions --- ct/headers/apache-tika | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/apache-tika diff --git a/ct/headers/apache-tika b/ct/headers/apache-tika new file mode 100644 index 000000000..5a34fe688 --- /dev/null +++ b/ct/headers/apache-tika @@ -0,0 +1,6 @@ + ___ __ _______ __ + / | ____ ____ ______/ /_ ___ /_ __(_) /______ _ + / /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / / //_/ __ `/ + / ___ |/ /_/ / /_/ / /__/ / / / __/_____/ / / / ,< / /_/ / +/_/ |_/ .___/\__,_/\___/_/ /_/\___/ /_/ /_/_/|_|\__,_/ + /_/ From d71ef779ecee7ab33c804c3b477d5dd69710d6b2 Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Thu, 6 Feb 2025 19:10:57 +0100 Subject: [PATCH 151/480] Website: Refactor Footer for improved layout and styling consistency (#2107) --- frontend/src/components/Footer.tsx | 38 +++++++++++++++++------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index 01bfb0764..6aa404b63 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -1,34 +1,38 @@ import { basePath } from "@/config/siteConfig"; import Link from "next/link"; import { FileJson, Server, ExternalLink } from "lucide-react"; +import { buttonVariants } from "./ui/button"; +import { cn } from "@/lib/utils"; export default function Footer() { return ( -
-
-
- Website built by the community. The source code is available on{" "} - - GitHub - - . +
+
+
+

+ Website built by the community. The source code is available on{" "} + + GitHub + + . +

-
+
JSON Editor API Data From 03828943b001dff06bdf20dc1a1ca657de67aa6a Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Thu, 6 Feb 2025 19:11:32 +0100 Subject: [PATCH 152/480] Refactor JSON generator buttons layout for better alignment and consistency (#2106) --- frontend/src/app/json-editor/page.tsx | 35 ++++++++++++--------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/frontend/src/app/json-editor/page.tsx b/frontend/src/app/json-editor/page.tsx index 3d259fc57..ea5817422 100644 --- a/frontend/src/app/json-editor/page.tsx +++ b/frontend/src/app/json-editor/page.tsx @@ -328,25 +328,22 @@ export default function JSONGenerator() {
{validationAlert}
- {/* Copy Button */} - - - {/* Download Button */} - +
+ + +
             {JSON.stringify(script, null, 2)}

From 2e51c289caf38a45d850d379b5f4c5e0bad2d7d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Thu, 6 Feb 2025 19:19:13 +0100
Subject: [PATCH 153/480] New Script: Duplicati (#2052)

* add duplicati script

* Update ct/duplicati.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* Update ct/duplicati.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* made admin password random also

* fixes

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
---
 ct/duplicati.sh              | 65 +++++++++++++++++++++++++++++++++++
 install/duplicati-install.sh | 66 ++++++++++++++++++++++++++++++++++++
 json/duplicati.json          | 39 +++++++++++++++++++++
 3 files changed, 170 insertions(+)
 create mode 100644 ct/duplicati.sh
 create mode 100644 install/duplicati-install.sh
 create mode 100644 json/duplicati.json

diff --git a/ct/duplicati.sh b/ct/duplicati.sh
new file mode 100644
index 000000000..ec68cb5e5
--- /dev/null
+++ b/ct/duplicati.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: tremor021
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/duplicati/duplicati/
+
+APP="Duplicati"
+TAGS="backup"
+var_cpu="1"
+var_ram="1024"
+var_disk="10"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+header_info "$APP"
+base_settings
+
+variables
+color
+catch_errors
+
+function update_script() {
+    header_info
+    check_container_storage
+    check_container_resources
+    if [[ ! -f /usr/bin/duplicati-server ]]; then
+        msg_error "No ${APP} Installation Found!"
+        exit
+    fi
+    RELEASE=$(curl -s https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
+    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
+        msg_info "Stopping $APP"
+        systemctl stop duplicati
+        msg_ok "Stopped $APP"
+        msg_info "Updating $APP to v${RELEASE}"
+        wget -q "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb"
+        $STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
+        echo "${RELEASE}" >/opt/${APP}_version.txt
+        msg_ok "Updated $APP to v${RELEASE}"
+
+        msg_info "Starting $APP"
+        systemctl start duplicati
+        msg_ok "Started $APP"
+
+        msg_info "Cleaning Up"
+        rm -rf ~/duplicati-${RELEASE}-linux-x64-gui.deb
+        msg_ok "Cleanup Completed"
+
+        msg_ok "Update Successful"
+    else
+        msg_ok "No update required. ${APP} is already at v${RELEASE}"
+    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}:8200${CL}"
diff --git a/install/duplicati-install.sh b/install/duplicati-install.sh
new file mode 100644
index 000000000..cd7863f10
--- /dev/null
+++ b/install/duplicati-install.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: tremor021
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/duplicati/duplicati
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc \
+  libice6 \
+  libsm6 \
+  libfontconfig1
+msg_ok "Installed Dependencies"
+
+msg_info "Setting up Duplicati"
+RELEASE=$(curl -s https://api.github.com/repos/duplicati/duplicati/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
+wget -q "https://github.com/duplicati/duplicati/releases/download/v${RELEASE}/duplicati-${RELEASE}-linux-x64-gui.deb"
+$STD dpkg -i duplicati-${RELEASE}-linux-x64-gui.deb
+echo "${RELEASE}" >/opt/Duplicati_version.txt
+msg_ok "Finished setting up Duplicati"
+
+DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
+ADMINPASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
+{
+    echo "Admin password = ${ADMINPASS}"
+    echo "Database encryption key = ${DECRYPTKEY}"
+} >> ~/duplicati.creds
+
+msg_info "Creating Service"
+cat </etc/systemd/system/duplicati.service
+[Unit]
+Description=Duplicati Service
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/duplicati-server --webservice-interface=any --webservice-password=$ADMINPASS --settings-encryption-key=$DECRYPTKEY
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q --now duplicati
+msg_ok "Created Service"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -f duplicati-${RELEASE}-linux-x64-gui.deb
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
+
+motd_ssh
+customize
diff --git a/json/duplicati.json b/json/duplicati.json
new file mode 100644
index 000000000..57f3972da
--- /dev/null
+++ b/json/duplicati.json
@@ -0,0 +1,39 @@
+{
+    "name": "Duplicati",
+    "slug": "duplicati",
+    "categories": [
+        7
+    ],
+    "date_created": "2025-02-06",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 8200,
+    "documentation": "https://docs.duplicati.com/",
+    "website": "https://duplicati.com/",
+    "logo": "https://framerusercontent.com/images/LezF3gmqYkyAgrNprSShLYIsw.png",
+    "description": "Duplicati is a free, open-source backup solution that offers zero-trust, fully encrypted backups for your data.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/duplicati.sh",
+            "resources": {
+                "cpu": 1,
+                "ram": 1048,
+                "hdd": 10,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": [
+        {
+            "text": "Admin password and database encryption key: `cat ~/duplicati.creds`",
+            "type": "info"
+        }
+    ]
+}
\ No newline at end of file

From 9272a1181cadb862752fa7d9af9daf34171834e3 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 19:21:35 +0100
Subject: [PATCH 154/480] Update .app files (#2110)

Co-authored-by: GitHub Actions 
---
 ct/headers/duplicati | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/duplicati

diff --git a/ct/headers/duplicati b/ct/headers/duplicati
new file mode 100644
index 000000000..38a18f307
--- /dev/null
+++ b/ct/headers/duplicati
@@ -0,0 +1,6 @@
+    ____              ___            __  _ 
+   / __ \__  ______  / (_)________ _/ /_(_)
+  / / / / / / / __ \/ / / ___/ __ `/ __/ / 
+ / /_/ / /_/ / /_/ / / / /__/ /_/ / /_/ /  
+/_____/\__,_/ .___/_/_/\___/\__,_/\__/_/   
+           /_/                             

From 416352637992e2b3df8531103a47630bb3b91e6e Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 19:30:01 +0100
Subject: [PATCH 155/480] Update CHANGELOG.md (#2108)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 76b8de422..e3c72b357 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,7 +23,9 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### ✨ New Scripts
 
-- Add new LXC: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093))
+- New Script: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093))
+- New Script: Duplicati [@tremor021](https://github.com/tremor021) ([#2052](https://github.com/community-scripts/ProxmoxVE/pull/2052))
+- New Script: Apache Tika [@andygrunwald](https://github.com/andygrunwald) ([#2079](https://github.com/community-scripts/ProxmoxVE/pull/2079))
 
 ### 🚀 Updated Scripts
 
@@ -32,6 +34,8 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🌐 Website
 
+- Refactor JSON generator buttons layout for better alignment and consistency [@BramSuurdje](https://github.com/BramSuurdje) ([#2106](https://github.com/community-scripts/ProxmoxVE/pull/2106))
+- Website: Refactor Footer for improved layout and styling consistency [@BramSuurdje](https://github.com/BramSuurdje) ([#2107](https://github.com/community-scripts/ProxmoxVE/pull/2107))
 - Website: Update Footer for Json-Editor & Api [@MickLesk](https://github.com/MickLesk) ([#2100](https://github.com/community-scripts/ProxmoxVE/pull/2100))
 - Website: Add Download for json-editor [@MickLesk](https://github.com/MickLesk) ([#2099](https://github.com/community-scripts/ProxmoxVE/pull/2099))
 - Radicale: Provide additional information about configuration [@tremor021](https://github.com/tremor021) ([#2072](https://github.com/community-scripts/ProxmoxVE/pull/2072))

From 199d304841fa0d86a73a67b8403f44048aa778d0 Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Thu, 6 Feb 2025 23:31:52 +0100
Subject: [PATCH 156/480] Update auto-update-app-headers.yml (#2113)

---
 .github/workflows/auto-update-app-headers.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/auto-update-app-headers.yml b/.github/workflows/auto-update-app-headers.yml
index 116995886..8e21d7726 100644
--- a/.github/workflows/auto-update-app-headers.yml
+++ b/.github/workflows/auto-update-app-headers.yml
@@ -74,7 +74,7 @@ jobs:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
       
       - name: Approve pull request
-        if: steps.verify-diff.outputs.changed == 'true'
+        if: env.changed == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
@@ -84,7 +84,7 @@ jobs:
           fi
           
       - name: Re-approve pull request after update
-        if: steps.verify-diff.outputs.changed == 'true'
+        if: env.changed == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |

From f1eca8a4bf7958d9e0bb0d28ac14c7af6331b1f4 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Thu, 6 Feb 2025 23:45:51 +0100
Subject: [PATCH 157/480] Update CHANGELOG.md (#2115)

---
 CHANGELOG.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e3c72b357..a4f01a61c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,8 +23,8 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### ✨ New Scripts
 
-- New Script: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093))
 - New Script: Duplicati [@tremor021](https://github.com/tremor021) ([#2052](https://github.com/community-scripts/ProxmoxVE/pull/2052))
+- New Script: Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2093](https://github.com/community-scripts/ProxmoxVE/pull/2093))
 - New Script: Apache Tika [@andygrunwald](https://github.com/andygrunwald) ([#2079](https://github.com/community-scripts/ProxmoxVE/pull/2079))
 
 ### 🚀 Updated Scripts

From 9825506ab72870d4fce91ede03e77b3bd75c2185 Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Fri, 7 Feb 2025 10:54:08 +0100
Subject: [PATCH 158/480] Fix JSON-Editor (#2121)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Rögl-Brunner Michel 
---
 frontend/src/app/json-editor/_components/InstallMethod.tsx | 4 ++--
 frontend/src/app/json-editor/page.tsx                      | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/frontend/src/app/json-editor/_components/InstallMethod.tsx b/frontend/src/app/json-editor/_components/InstallMethod.tsx
index 792ec403a..8a597c5d0 100644
--- a/frontend/src/app/json-editor/_components/InstallMethod.tsx
+++ b/frontend/src/app/json-editor/_components/InstallMethod.tsx
@@ -64,8 +64,8 @@ function InstallMethod({
             if (key === "type") {
               updatedMethod.script =
                 value === "alpine"
-                  ? `/${prev.type}/alpine-${prev.slug}.sh`
-                  : `/${prev.type}/${prev.slug}.sh`;
+                  ? `${prev.type}/alpine-${prev.slug}.sh`
+                  : `${prev.type}/${prev.slug}.sh`;
 
               // Set OS to Alpine and reset version if type is alpine
               if (value === "alpine") {
diff --git a/frontend/src/app/json-editor/page.tsx b/frontend/src/app/json-editor/page.tsx
index ea5817422..4e161557f 100644
--- a/frontend/src/app/json-editor/page.tsx
+++ b/frontend/src/app/json-editor/page.tsx
@@ -76,8 +76,8 @@ export default function JSONGenerator() {
             ...method,
             script:
               method.type === "alpine"
-                ? `/${updated.type}/alpine-${updated.slug}.sh`
-                : `/${updated.type}/${updated.slug}.sh`,
+                ? `${updated.type}/alpine-${updated.slug}.sh`
+                : `${updated.type}/${updated.slug}.sh`,
           }));
         }
 

From 7dcc71701713efd184ef0c4146e0a16bb40e863c Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 10:56:39 +0100
Subject: [PATCH 159/480] Update CHANGELOG.md (#2122)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4f01a61c..e8eea356a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
+## 2025-02-07
+
+### Changed
+
+### 🌐 Website
+
+- Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
+
 ## 2025-02-06
 
 ### Changed

From 3029e69767418b86364bbdd12c4ae03f76821363 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 14:31:59 +0100
Subject: [PATCH 160/480] New Script: SearXNG (#2123)

* New Script: SearXNG

* Update install/searxng-install.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* Update searxng.json

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
---
 ct/searxng.sh              |  47 +++++++++++++++
 install/searxng-install.sh | 116 +++++++++++++++++++++++++++++++++++++
 json/searxng.json          |  34 +++++++++++
 3 files changed, 197 insertions(+)
 create mode 100644 ct/searxng.sh
 create mode 100644 install/searxng-install.sh
 create mode 100644 json/searxng.json

diff --git a/ct/searxng.sh b/ct/searxng.sh
new file mode 100644
index 000000000..72fd50724
--- /dev/null
+++ b/ct/searxng.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: MickLesk (Canbiz)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/searxng/searxng
+
+# App Default Values
+APP="SearXNG"
+var_tags="search"
+var_cpu="2"
+var_ram="2048"
+var_disk="7"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+  header_info
+  check_container_storage
+  check_container_resources
+  if [[ ! -d /usr/local/searxng/searxng-src ]]; then
+    msg_error "No ${APP} Installation Found!"
+    exit
+  fi
+    if cd /usr/local/searxng/searxng-src && git pull | grep -q 'Already up to date'; then
+    msg_ok "There is currently no update available."
+  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}:8888${CL}"
diff --git a/install/searxng-install.sh b/install/searxng-install.sh
new file mode 100644
index 000000000..a2b5bc611
--- /dev/null
+++ b/install/searxng-install.sh
@@ -0,0 +1,116 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: MickLesk (Canbiz)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/searxng/searxng
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies (Patience)"
+$STD apt-get install -y \
+  redis-server \
+  build-essential \
+  libffi-dev \
+  libssl-dev \
+  curl \
+  sudo \
+  git \
+  mc
+msg_ok "Installed Dependencies"
+
+msg_info "Setup Python3" 
+$STD apt-get install -y \
+  python3 \
+  python3-{pip,venv,yaml,dev} 
+$STD pip install --upgrade pip setuptools wheel 
+$STD pip install pyyaml
+msg_ok "Setup Python3"
+
+msg_info "Setup SearXNG"
+mkdir -p /usr/local/searxng /etc/searxng
+useradd -d /etc/searxng searxng
+chown searxng:searxng /usr/local/searxng /etc/searxng
+$STD git clone https://github.com/searxng/searxng.git /usr/local/searxng/searxng-src
+cd /usr/local/searxng/
+sudo -u searxng python3 -m venv /usr/local/searxng/searx-pyenv
+source /usr/local/searxng/searx-pyenv/bin/activate
+$STD pip install --upgrade pip setuptools wheel 
+$STD pip install pyyaml
+$STD pip install -e /usr/local/searxng/searxng-src
+SECRET_KEY=$(openssl rand -hex 32)
+cat </etc/searxng/settings.yml
+# SearXNG settings
+use_default_settings: true
+general:
+  debug: false
+  instance_name: "SearXNG"
+  privacypolicy_url: false
+  contact_url: false
+server:
+  bind_address: "0.0.0.0"
+  port: 8888
+  secret_key: "${SECRET_KEY}"
+  limiter: true
+  image_proxy: true
+redis:
+  url: "redis://127.0.0.1:6379/0"
+ui:
+  static_use_hash: true
+enabled_plugins:
+  - 'Hash plugin'
+  - 'Self Information'
+  - 'Tracker URL remover'
+  - 'Ahmia blacklist'
+search:
+  safe_search: 2
+  autocomplete: 'google'
+engines:
+  - name: google
+    engine: google
+    shortcut: gg
+    use_mobile_ui: false
+  - name: duckduckgo
+    engine: duckduckgo
+    shortcut: ddg
+    display_error_messages: true
+EOF
+chown searxng:searxng /etc/searxng/settings.yml
+chmod 640 /etc/searxng/settings.yml
+msg_ok "Setup SearXNG"
+
+msg_info "Set up web services"
+cat </etc/systemd/system/searxng.service
+[Unit]
+Description=SearXNG service
+After=network.target redis-server.service
+Wants=redis-server.service
+
+[Service]
+Type=simple
+User=searxng
+Group=searxng
+Environment="SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml"
+ExecStart=/usr/local/searxng/searx-pyenv/bin/python -m searx.webapp
+WorkingDirectory=/usr/local/searxng/searxng-src
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q --now searxng
+msg_ok "Created Services"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+$STD apt-get autoremove
+$STD apt-get autoclean
+msg_ok "Cleaned"
diff --git a/json/searxng.json b/json/searxng.json
new file mode 100644
index 000000000..62f5f2ca5
--- /dev/null
+++ b/json/searxng.json
@@ -0,0 +1,34 @@
+{
+  "name": "SearXNG",
+  "slug": "searxng",
+  "categories": [
+    0
+  ],
+  "date_created": "2025-02-07",
+  "type": "ct",
+  "updateable": true,
+  "privileged": false,
+  "interface_port": 8888,
+  "documentation": "https://docs.searxng.org/",
+  "website": "https://github.com/searxng/searxng",
+  "logo": "https://raw.githubusercontent.com/searxng/searxng/master/src/brand/searxng-wordmark.svg",
+  "description": "SearXNG is a free internet metasearch engine which aggregates results from up to 215 search services. Users are neither tracked nor profiled. Additionally, SearXNG can be used over Tor for online anonymity.",
+  "install_methods": [
+    {
+      "type": "default",
+      "script": "ct/searxng.sh",
+      "resources": {
+        "cpu": 2,
+        "ram": 2048,
+        "hdd": 7,
+        "os": "debian",
+        "version": "12"
+      }
+    }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": []
+}

From 030682c754f3d2c182ab87e13a5a80e910bc0a05 Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Fri, 7 Feb 2025 14:32:10 +0100
Subject: [PATCH 161/480] New Script: Cosmos (#2120)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* New Script: Cosmos

* update cosmos.json

* update cosmos.sh and cosmos.json

---------

Co-authored-by: Rögl-Brunner Michel 
---
 ct/cosmos.sh              | 45 ++++++++++++++++++++
 install/cosmos-install.sh | 86 +++++++++++++++++++++++++++++++++++++++
 json/cosmos.json          | 35 ++++++++++++++++
 3 files changed, 166 insertions(+)
 create mode 100644 ct/cosmos.sh
 create mode 100644 install/cosmos-install.sh
 create mode 100644 json/cosmos.json

diff --git a/ct/cosmos.sh b/ct/cosmos.sh
new file mode 100644
index 000000000..92fd6474b
--- /dev/null
+++ b/ct/cosmos.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: Michel Roegl-Brunner (michelroegl-brunner)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://https://cosmos-cloud.io/
+
+# App Default Values
+APP="cosmos"
+var_tags="os,docker"
+var_cpu="2"
+var_ram="2048"
+var_disk="8"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+  header_info
+  check_container_storage
+  check_container_resources
+  if [[ ! -d /opt/cosmos ]]; then
+    msg_error "No ${APP} Installation Found!"
+    exit
+  fi
+  msg_ok "${APP} updates itself automatically!"
+}
+
+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}${CL}"
diff --git a/install/cosmos-install.sh b/install/cosmos-install.sh
new file mode 100644
index 000000000..cda9a1211
--- /dev/null
+++ b/install/cosmos-install.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+
+
+#Copyright (c) 2021-2025 community-scripts ORG
+# Author: Michel Roegl-Brunner (michelroegl-brunner)
+# License: MIT
+# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+
+
+source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+ curl \
+ mc \
+ sudo \
+ snapraid \
+ avahi-daemon \
+ fdisk
+msg_ok "Installed Dependencies"
+
+msg_info "Install mergerfs"
+MERGERFS_VERSION="2.40.2"
+wget -q "https://github.com/trapexit/mergerfs/releases/download/${MERGERFS_VERSION}/mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
+$STD dpkg -i "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb" || $STD apt-get install -f -y
+rm "mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb"
+msg_ok "Installed mergerfs"
+
+msg_info "Install Docker"
+curl -fsSL https://get.docker.com -o get-docker.sh
+$STD sh get-docker.sh
+rm get-docker.sh
+msg_ok "Installed Docker"
+
+msg_info "Install Cosmos" 
+mkdir -p /opt/cosmos
+LATEST_RELEASE=$(curl -s https://api.github.com/repos/azukaar/Cosmos-Server/releases/latest | grep "tag_name" | cut -d '"' -f 4)
+ZIP_FILE="cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
+curl -sL "https://github.com/azukaar/Cosmos-Server/releases/download/${LATEST_RELEASE}/${ZIP_FILE}" -o "/opt/cosmos/${ZIP_FILE}"
+cd /opt/cosmos
+unzip -o -q "${ZIP_FILE}"
+LATEST_RELEASE_NO_V=${LATEST_RELEASE#v}
+mv /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}/* /opt/cosmos/
+rmdir /opt/cosmos/cosmos-cloud-${LATEST_RELEASE_NO_V}
+chmod +x /opt/cosmos/cosmos
+msg_ok "Installed Cosmos"
+
+msg_info "Creating Service"
+cat < /etc/systemd/system/cosmos.service
+[Unit]
+Description=Cosmos Cloud service
+ConditionFileIsExecutable=/opt/cosmos/start.sh
+
+[Service]
+StartLimitInterval=10
+StartLimitBurst=5
+ExecStart=/opt/cosmos/start.sh
+
+WorkingDirectory=/opt/cosmos
+
+Restart=always
+
+RestartSec=2
+EnvironmentFile=-/etc/sysconfig/CosmosCloud
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+systemctl enable -q --now cosmos.service
+msg_info "Created Service"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -f "/opt/cosmos/cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/cosmos.json b/json/cosmos.json
new file mode 100644
index 000000000..9c6c5b0b5
--- /dev/null
+++ b/json/cosmos.json
@@ -0,0 +1,35 @@
+{
+  "name": "Cosmos",
+  "slug": "cosmos",
+  "categories": [
+    2,
+    3
+  ],
+  "date_created": "2025-02-07",
+  "type": "ct",
+  "updateable": true,
+  "privileged": false,
+  "interface_port": 80,
+  "documentation": "https://cosmos-cloud.io/doc/1%20index/",
+  "website": "https://cosmos-cloud.io/",
+  "logo": "https://github.com/azukaar/Cosmos-Server/blob/master/Logo.png",
+  "description": "Selfhosting your own cloud and web services is so satisfying, but it's also very time consuming, and dangerous. With Cosmos, take the chore out of selfhosting, with automated maintenance and fully secured setup out of the box. It even integrates to your existing setup.",
+  "install_methods": [
+    {
+      "type": "default",
+      "script": "ct/cosmos.sh",
+      "resources": {
+        "cpu": 2,
+        "ram": 2048,
+        "hdd": 8,
+        "os": "Debian",
+        "version": "12"
+      }
+    }
+  ],
+  "default_credentials": {
+    "username": null,
+    "password": null
+  },
+  "notes": []
+}

From 3361fabfc40460289ad515a787a1bf901e4260ff Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 14:34:32 +0100
Subject: [PATCH 162/480] Update CHANGELOG.md (#2130)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e8eea356a..95feaf286 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,11 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### Changed
 
+### ✨ New Scripts
+
+- New Script: Cosmos [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2120](https://github.com/community-scripts/ProxmoxVE/pull/2120))
+- New Script: SearXNG [@MickLesk](https://github.com/MickLesk) ([#2123](https://github.com/community-scripts/ProxmoxVE/pull/2123))
+
 ### 🌐 Website
 
 - Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))

From d73d312882f58434b4adfa1a8114f9595e00543b Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 14:44:52 +0100
Subject: [PATCH 163/480] Fix: Increase Size for PeaNUT (#2127)

---
 ct/peanut.sh     | 4 ++--
 json/peanut.json | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/ct/peanut.sh b/ct/peanut.sh
index 87cd3eff7..40c21b300 100644
--- a/ct/peanut.sh
+++ b/ct/peanut.sh
@@ -9,8 +9,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
 APP="PeaNUT"
 var_tags="network;ups;"
 var_cpu="2"
-var_ram="2048"
-var_disk="4"
+var_ram="3072"
+var_disk="7"
 var_os="debian"
 var_version="12"
 var_unprivileged="1"
diff --git a/json/peanut.json b/json/peanut.json
index 68699b2d7..db1e7b9b4 100644
--- a/json/peanut.json
+++ b/json/peanut.json
@@ -19,8 +19,8 @@
             "script": "ct/peanut.sh",
             "resources": {
                 "cpu": 2,
-                "ram": 2048,
-                "hdd": 4,
+                "ram": 3072,
+                "hdd": 7,
                 "os": "debian",
                 "version": "12"
             }

From 9c3bd7dc20feeba5fb97ecfd2b5aa719489a7405 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 14:45:23 +0100
Subject: [PATCH 164/480] Update .app files (#2129)

Co-authored-by: GitHub Actions 
---
 ct/headers/cosmos  | 6 ++++++
 ct/headers/searxng | 6 ++++++
 2 files changed, 12 insertions(+)
 create mode 100644 ct/headers/cosmos
 create mode 100644 ct/headers/searxng

diff --git a/ct/headers/cosmos b/ct/headers/cosmos
new file mode 100644
index 000000000..bda5132bc
--- /dev/null
+++ b/ct/headers/cosmos
@@ -0,0 +1,6 @@
+                                       
+  _________  _________ ___  ____  _____
+ / ___/ __ \/ ___/ __ `__ \/ __ \/ ___/
+/ /__/ /_/ (__  ) / / / / / /_/ (__  ) 
+\___/\____/____/_/ /_/ /_/\____/____/  
+                                       
diff --git a/ct/headers/searxng b/ct/headers/searxng
new file mode 100644
index 000000000..52bd89d93
--- /dev/null
+++ b/ct/headers/searxng
@@ -0,0 +1,6 @@
+   _____                _  __ _   ________
+  / ___/___  ____ _____| |/ // | / / ____/
+  \__ \/ _ \/ __ `/ ___/   //  |/ / / __  
+ ___/ /  __/ /_/ / /  /   |/ /|  / /_/ /  
+/____/\___/\__,_/_/  /_/|_/_/ |_/\____/   
+                                          

From 59a132fd6b711448dbe6549612f908cb90c25f8a Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:10:25 +0100
Subject: [PATCH 165/480] Update CHANGELOG.md (#2131)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95feaf286..9c7b55148 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,10 @@ Do not break established syntax in this file, as it is automatically updated by
 - New Script: Cosmos [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2120](https://github.com/community-scripts/ProxmoxVE/pull/2120))
 - New Script: SearXNG [@MickLesk](https://github.com/MickLesk) ([#2123](https://github.com/community-scripts/ProxmoxVE/pull/2123))
 
+### 🚀 Updated Scripts
+
+- Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
+
 ### 🌐 Website
 
 - Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))

From 2f37355d779a14aa7471d8e71c26bfd2233c8f95 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:20:17 +0100
Subject: [PATCH 166/480] Fix: Cosmos logo doesnt display on website (#2132)

---
 json/cosmos.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/json/cosmos.json b/json/cosmos.json
index 9c6c5b0b5..d1f50ae66 100644
--- a/json/cosmos.json
+++ b/json/cosmos.json
@@ -12,7 +12,7 @@
   "interface_port": 80,
   "documentation": "https://cosmos-cloud.io/doc/1%20index/",
   "website": "https://cosmos-cloud.io/",
-  "logo": "https://github.com/azukaar/Cosmos-Server/blob/master/Logo.png",
+  "logo": "https://cosmos-cloud.io/Logo.png",
   "description": "Selfhosting your own cloud and web services is so satisfying, but it's also very time consuming, and dangerous. With Cosmos, take the chore out of selfhosting, with automated maintenance and fully secured setup out of the box. It even integrates to your existing setup.",
   "install_methods": [
     {

From c4bd38cb9ed442e7007be0a3481de83a7baab28b Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:28:03 +0100
Subject: [PATCH 167/480] Update CHANGELOG.md (#2133)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9c7b55148..bd18f8907 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,6 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🌐 Website
 
+- Fix: Cosmos logo doesnt display on website [@MickLesk](https://github.com/MickLesk) ([#2132](https://github.com/community-scripts/ProxmoxVE/pull/2132))
 - Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
 
 ## 2025-02-06

From 9d61a37945e95cb4c80e3a91c8e430091de1f78f Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:29:17 +0100
Subject: [PATCH 168/480] [gh]: Following the trend - add star-history in
 readme (#2135)

* [gh]: add star history in readme

* dark theme support
---
 README.md | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/README.md b/README.md
index 1bd2931b7..c8efa2274 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,16 @@ If you encounter any issues or have suggestions for improvement, file a new issu
 
 ---
 
+## ⭐ Star History
+
+
+ 
+   
+   
+   Star History Chart
+ 
+
+
 ## 📜 License
 
 This project is licensed under the [MIT License](LICENSE).

From b0cdb308bd2b689c51f9d8a4de8357e0b1bc11df Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:32:42 +0100
Subject: [PATCH 169/480] Update CHANGELOG.md (#2136)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index bd18f8907..cc3c979ca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,10 @@ Do not break established syntax in this file, as it is automatically updated by
 - Fix: Cosmos logo doesnt display on website [@MickLesk](https://github.com/MickLesk) ([#2132](https://github.com/community-scripts/ProxmoxVE/pull/2132))
 - Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
 
+### 🧰 Maintenance
+
+- [gh]: Following the trend - add star-history in readme [@MickLesk](https://github.com/MickLesk) ([#2135](https://github.com/community-scripts/ProxmoxVE/pull/2135))
+
 ## 2025-02-06
 
 ### Changed

From 1c7bab33e61931cacb3bb0f4d5b5cd3ff7177ec9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:42:40 +0100
Subject: [PATCH 170/480] [core]: Enhance LXC template handling and improve
 error recovery (#2128)

---
 ct/create_lxc.sh | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh
index 50bbaac57..a62fd2d01 100644
--- a/ct/create_lxc.sh
+++ b/ct/create_lxc.sh
@@ -182,24 +182,37 @@ mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLA
 [ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; }
 TEMPLATE="${TEMPLATES[-1]}"
 
-# Download LXC template if needed
-if ! pveam list $TEMPLATE_STORAGE | grep -q $TEMPLATE; then
+TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE"
+# Check if template exists, if corrupt remove and redownload
+if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then
+  [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
   msg_info "Downloading LXC Template"
-  pveam download $TEMPLATE_STORAGE $TEMPLATE >/dev/null ||
-    msg_error "A problem occured while downloading the LXC template."
-    exit 208
+  pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||
+    { msg_error "A problem occurred while downloading the LXC template."; exit 208; }
   msg_ok "Downloaded LXC Template"
 fi
 
+# Check and fix subuid/subgid
+grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid
+grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid
+
 # Combine all options
-DEFAULT_PCT_OPTIONS=(
-  -arch $(dpkg --print-architecture))
-
 PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}})
-[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs $CONTAINER_STORAGE:${PCT_DISK_SIZE:-8})
+[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}")
 
-# Create container
+# Create container with template integrity check
 msg_info "Creating LXC Container"
-pct create $CTID ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} ${PCT_OPTIONS[@]} >/dev/null || { msg_error "A problem occured while trying to create container.";  exit 200; }
+  if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
+      [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH"
+      
+    msg_ok "Template integrity check completed"
+    pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null ||    
+      { msg_error "A problem occurred while re-downloading the LXC template."; exit 208; }
+    
+    msg_ok "Re-downloaded LXC Template"
+    if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then
+        msg_error "A problem occurred while trying to create container after re-downloading template."
+      exit 200
+    fi
+  fi
 msg_ok "LXC Container ${BL}$CTID${CL} ${GN}was successfully created."
-

From 6ecfc10b8cfcb7603337f928e1208aad4f9cad06 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:51:25 +0100
Subject: [PATCH 171/480] Update README.md

---
 README.md | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index c8efa2274..a89e35c48 100644
--- a/README.md
+++ b/README.md
@@ -93,13 +93,24 @@ If you encounter any issues or have suggestions for improvement, file a new issu
 
 ## ⭐ Star History
 
-
- 
-   
-   
-   Star History Chart
- 
-
+
+  
+  
+  Star History Chart
+
 
 ## 📜 License
 

From 539696e84a70d4ff2c3ac9a025a074309a08846c Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 15:55:14 +0100
Subject: [PATCH 172/480] Update README.md

---
 README.md | 25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/README.md b/README.md
index a89e35c48..c8efa2274 100644
--- a/README.md
+++ b/README.md
@@ -93,24 +93,13 @@ If you encounter any issues or have suggestions for improvement, file a new issu
 
 ## ⭐ Star History
 
-
-  
-  
-  Star History Chart
-
+
+ 
+   
+   
+   Star History Chart
+ 
+
 
 ## 📜 License
 

From 393e1c64815834a2b914fc524ee8b3f986323bc6 Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Fri, 7 Feb 2025 16:01:49 +0100
Subject: [PATCH 173/480] Update openwrt.sh (#2137)

---
 vm/openwrt.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/vm/openwrt.sh b/vm/openwrt.sh
index c6945713c..ae60ed0cd 100644
--- a/vm/openwrt.sh
+++ b/vm/openwrt.sh
@@ -432,7 +432,7 @@ msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
 msg_info "Getting URL for OpenWrt Disk Image"
 
 response=$(curl -s https://openwrt.org)
-stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p')
+stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p' | head -n 1)
 URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwrt-$stableversion-x86-64-generic-ext4-combined.img.gz"
 
 sleep 2

From be572755a929ea9b4879cd02982b76daac642adc Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 16:03:21 +0100
Subject: [PATCH 174/480] Update CHANGELOG.md (#2138)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc3c979ca..03833daf2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,8 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
+- Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
+- [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
 - Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
 
 ### 🌐 Website

From 047ef8e669158507144a922618dd6e88451b31ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Fri, 7 Feb 2025 19:52:09 +0100
Subject: [PATCH 175/480] fix zerotier (#2144)

---
 json/zerotier-one.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/json/zerotier-one.json b/json/zerotier-one.json
index b5ba491aa..6a22bd585 100644
--- a/json/zerotier-one.json
+++ b/json/zerotier-one.json
@@ -16,7 +16,7 @@
     "install_methods": [
         {
             "type": "default",
-            "script": "ct/debian.sh",
+            "script": "ct/zerotier-one.sh",
             "resources": {
                 "cpu": 1,
                 "ram": 512,

From 9f5f5f54a0f9c629d2af0210e19335b187b76712 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 19:53:04 +0100
Subject: [PATCH 176/480] Update CHANGELOG.md (#2145)

---
 CHANGELOG.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 03833daf2..e6e001e4b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,12 +28,13 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
-- Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
 - [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
+- Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
 - Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
 
 ### 🌐 Website
 
+- Fix: Zerotier json had a bad script path [@tremor021](https://github.com/tremor021) ([#2144](https://github.com/community-scripts/ProxmoxVE/pull/2144))
 - Fix: Cosmos logo doesnt display on website [@MickLesk](https://github.com/MickLesk) ([#2132](https://github.com/community-scripts/ProxmoxVE/pull/2132))
 - Fix JSON-Editor [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2121](https://github.com/community-scripts/ProxmoxVE/pull/2121))
 

From 6bc92a0febc2e916842d438100f6cd08d4befa87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Fri, 7 Feb 2025 21:45:45 +0100
Subject: [PATCH 177/480] Fix: Zerotier-One fixed missing dependency (#2147)

---
 install/zerotier-one-install.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/install/zerotier-one-install.sh b/install/zerotier-one-install.sh
index c67979ea6..d15770574 100644
--- a/install/zerotier-one-install.sh
+++ b/install/zerotier-one-install.sh
@@ -16,7 +16,8 @@ msg_info "Installing Dependencies"
 $STD apt-get install -y \
   curl \
   mc \
-  sudo
+  sudo \
+  gnupg
 msg_ok "Installed Dependencies"
 
 msg_info "Setting up Zerotier-One"

From 5c0811c5ba724613d0dc2639fbaf678918882476 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 21:52:41 +0100
Subject: [PATCH 178/480] Update CHANGELOG.md (#2149)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e6e001e4b..b73f0f5f3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### Changed
 
+### 💥 Breaking Changes
+
+- [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
+
 ### ✨ New Scripts
 
 - New Script: Cosmos [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2120](https://github.com/community-scripts/ProxmoxVE/pull/2120))
@@ -28,7 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
-- [core]: Enhance LXC template handling and improve error recovery [@MickLesk](https://github.com/MickLesk) ([#2128](https://github.com/community-scripts/ProxmoxVE/pull/2128))
+- Fix: Zerotier-One fixed missing dependency [@tremor021](https://github.com/tremor021) ([#2147](https://github.com/community-scripts/ProxmoxVE/pull/2147))
 - Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
 - Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))
 

From 9c23b55bc06718200a5c78ea2811ee30096817b2 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 22:43:14 +0100
Subject: [PATCH 179/480] Fix: Trillium Update Function & Harmonize
 Installation (#2148)

* Fix Trillium Update Function

* Update trilium-install.sh
---
 ct/trilium.sh              | 20 ++++++++++++++++----
 install/trilium-install.sh | 27 ++++++++++++++-------------
 2 files changed, 30 insertions(+), 17 deletions(-)

diff --git a/ct/trilium.sh b/ct/trilium.sh
index f10fd3a41..3add52192 100644
--- a/ct/trilium.sh
+++ b/ct/trilium.sh
@@ -32,21 +32,30 @@ function update_script() {
         msg_error "No ${APP} Installation Found!"
         exit
     fi
+    if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt
+    fi
+    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
     RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
-
     msg_info "Stopping ${APP}"
     systemctl stop trilium
     sleep 1
     msg_ok "Stopped ${APP}"
 
     msg_info "Updating to ${RELEASE}"
+    mkdir -p /opt/trilium_backup
+    mv /opt/trilium/{db,dump-db} /opt/trilium_backup/
+    rm -rf /opt/trilium
+    cd /tmp
     wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
     tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
-    cp -r trilium-linux-x64-server/* /opt/trilium/
+    mv trilium-linux-x64-server /opt/trilium
+    cp -r /opt/trilium_backup/{db,dump-db} /opt/trilium/
+    echo "${RELEASE}" >/opt/${APP}_version.txt
     msg_ok "Updated to ${RELEASE}"
 
     msg_info "Cleaning up"
-    rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz trilium-linux-x64-server
+    rm -rf /tmp/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz 
+    rm -rf /opt/trilium_backup
     msg_ok "Cleaned"
 
     msg_info "Starting ${APP}"
@@ -54,7 +63,10 @@ function update_script() {
     sleep 1
     msg_ok "Started ${APP}"
     msg_ok "Updated Successfully"
-    exit
+  else
+    msg_ok "No update required. ${APP} is already at ${RELEASE}"
+  fi
+  exit
 }
 
 start
diff --git a/install/trilium-install.sh b/install/trilium-install.sh
index 0add4efed..07d61b5b9 100644
--- a/install/trilium-install.sh
+++ b/install/trilium-install.sh
@@ -2,8 +2,7 @@
 
 # Copyright (c) 2021-2025 tteck
 # Author: tteck (tteckster)
-# License: MIT
-# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
 source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 color
@@ -14,23 +13,24 @@ network_check
 update_os
 
 msg_info "Installing Dependencies"
-$STD apt-get install -y curl
-$STD apt-get install -y sudo
-$STD apt-get install -y mc
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc
 msg_ok "Installed Dependencies"
 
+msg_info "Setup TriliumNext"
+cd /opt
 RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
-
-msg_info "Installing TriliumNext"
 wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 tar -xf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 mv trilium-linux-x64-server /opt/trilium
-msg_ok "Installed TriliumNext"
+echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
+msg_ok "Setup TriliumNext"
 
 msg_info "Creating Service"
-service_path="/etc/systemd/system/trilium.service"
-
-echo "[Unit]
+cat </etc/systemd/system/trilium.service
+[Unit]
 Description=Trilium Daemon
 After=syslog.target network.target
 
@@ -43,7 +43,8 @@ TimeoutStopSec=20
 Restart=always
 
 [Install]
-WantedBy=multi-user.target" >$service_path
+WantedBy=multi-user.target
+EOF
 systemctl enable --now -q trilium
 msg_ok "Created Service"
 
@@ -51,7 +52,7 @@ motd_ssh
 customize
 
 msg_info "Cleaning up"
+rm -rf /opt/TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 $STD apt-get -y autoremove
 $STD apt-get -y autoclean
-rm -rf TriliumNextNotes-linux-x64-${RELEASE}.tar.xz
 msg_ok "Cleaned"

From 7c13a7bce0e24b5b5fd94e90aafedae95a66c0ab Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Fri, 7 Feb 2025 23:07:53 +0100
Subject: [PATCH 180/480] Update CHANGELOG.md (#2152)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index b73f0f5f3..58f0bb410 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,6 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
+- Fix: Trillium Update Function & Harmonize Installation [@MickLesk](https://github.com/MickLesk) ([#2148](https://github.com/community-scripts/ProxmoxVE/pull/2148))
 - Fix: Zerotier-One fixed missing dependency [@tremor021](https://github.com/tremor021) ([#2147](https://github.com/community-scripts/ProxmoxVE/pull/2147))
 - Fix: Openwrt Version checking [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2137](https://github.com/community-scripts/ProxmoxVE/pull/2137))
 - Fix: PeaNUT Increase HDD & RAM Size [@MickLesk](https://github.com/MickLesk) ([#2127](https://github.com/community-scripts/ProxmoxVE/pull/2127))

From 57c3a42a6ea6bb591a1ba2c014a7eb5d1238b9f9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Fri, 7 Feb 2025 23:08:53 +0100
Subject: [PATCH 181/480] add 10.000 Star to Changelog

---
 CHANGELOG.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 58f0bb410..0aa45b359 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,7 +17,7 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
-## 2025-02-07
+## 2025-02-07 - 10.000 ⭐
 
 ### Changed
 

From c15e34143f8b5bf7d6527bb2ec11019bb12d01e2 Mon Sep 17 00:00:00 2001
From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com>
Date: Sat, 8 Feb 2025 14:33:17 +0100
Subject: [PATCH 182/480] Update cosmos.json (#2162)

---
 json/cosmos.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/json/cosmos.json b/json/cosmos.json
index d1f50ae66..21ab85e01 100644
--- a/json/cosmos.json
+++ b/json/cosmos.json
@@ -13,7 +13,7 @@
   "documentation": "https://cosmos-cloud.io/doc/1%20index/",
   "website": "https://cosmos-cloud.io/",
   "logo": "https://cosmos-cloud.io/Logo.png",
-  "description": "Selfhosting your own cloud and web services is so satisfying, but it's also very time consuming, and dangerous. With Cosmos, take the chore out of selfhosting, with automated maintenance and fully secured setup out of the box. It even integrates to your existing setup.",
+  "description": "Cosmos Cloud is a self-hosting platform that automates maintenance and security. It offers an app marketplace, reverse proxy management, container control, VPN integration, real-time monitoring, and disk management. Security features include SSO, anti-DDoS, and encryption. It simplifies self-hosting for all users.",
   "install_methods": [
     {
       "type": "default",

From 5863d815718d1ec7c3a16117967f24687bfff51d Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Sat, 8 Feb 2025 14:49:23 +0100
Subject: [PATCH 183/480] Update CHANGELOG.md (#2164)

---
 CHANGELOG.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0aa45b359..2f0324ac3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
+## 2025-02-08
+
+### Changed
+
+### 🌐 Website
+
+- Update cosmos.json description [@BramSuurdje](https://github.com/BramSuurdje) ([#2162](https://github.com/community-scripts/ProxmoxVE/pull/2162))
+
 ## 2025-02-07 - 10.000 ⭐
 
 ### Changed

From 782e0a853583084d68c035faf6610125915da162 Mon Sep 17 00:00:00 2001
From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Date: Sat, 8 Feb 2025 21:59:42 +0100
Subject: [PATCH 184/480] New script: Barcode Buddy (#2167)

---
 ct/barcode-buddy.sh              | 76 ++++++++++++++++++++++++++++++
 install/barcode-buddy-install.sh | 81 ++++++++++++++++++++++++++++++++
 json/barcode-buddy.json          | 39 +++++++++++++++
 3 files changed, 196 insertions(+)
 create mode 100644 ct/barcode-buddy.sh
 create mode 100644 install/barcode-buddy-install.sh
 create mode 100644 json/barcode-buddy.json

diff --git a/ct/barcode-buddy.sh b/ct/barcode-buddy.sh
new file mode 100644
index 000000000..1a9abf1d9
--- /dev/null
+++ b/ct/barcode-buddy.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: bvdberg01
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/Forceu/barcodebuddy
+
+# App Default Values
+APP="Barcode-Buddy"
+var_tags="grocery;household"
+var_cpu="1"
+var_ram="512"
+var_disk="3"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+  header_info
+  check_container_storage
+  check_container_resources
+  if [[ ! -d /opt/barcodebuddy ]]; then
+    msg_error "No ${APP} Installation Found!"
+    exit
+  fi
+  RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
+    msg_info "Stopping Service"
+    systemctl stop apache2
+    systemctl stop barcodebuddy
+    msg_ok "Stopped Service"
+
+    msg_info "Updating ${APP} to v${RELEASE}"
+    cd /opt
+    mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
+    wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
+    unzip -q "v${RELEASE}.zip"
+    mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
+    cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
+    chown -R www-data:www-data /opt/barcodebuddy/data
+    echo "${RELEASE}" >/opt/${APP}_version.txt
+    msg_ok "Updated $APP to v${RELEASE}"
+
+    msg_info "Starting Service"
+    systemctl start apache2
+    systemctl start barcodebuddy
+    msg_ok "Started Service"
+
+    msg_info "Cleaning up"
+    rm -r "/opt/v${RELEASE}.zip"
+    rm -r /opt/barcodebuddy-backup
+    msg_ok "Cleaned"
+    msg_ok "Updated Successfully"
+  else
+    msg_ok "No update required. ${APP} is already at v${RELEASE}"
+  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}${CL}"
diff --git a/install/barcode-buddy-install.sh b/install/barcode-buddy-install.sh
new file mode 100644
index 000000000..36dca7722
--- /dev/null
+++ b/install/barcode-buddy-install.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: bvdberg01
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc \
+  apache2 \
+  redis \
+  php-{curl,date,json,mbstring,redis,sqlite3,sockets} \
+  libapache2-mod-php
+msg_ok "Installed Dependencies"
+
+msg_info "Installing barcodebuddy"
+RELEASE=$(curl -s https://api.github.com/repos/Forceu/barcodebuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+cd /opt
+wget -q "https://github.com/Forceu/barcodebuddy/archive/refs/tags/v${RELEASE}.zip"
+unzip -q "v${RELEASE}.zip"
+mv "/opt/barcodebuddy-${RELEASE}" /opt/barcodebuddy
+chown -R www-data:www-data /opt/barcodebuddy/data
+echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
+msg_ok "Installed barcodebuddy"
+
+msg_info "Creating Services"
+cat </etc/systemd/system/barcodebuddy.service
+[Unit]
+Description=Run websocket server for barcodebuddy screen feature
+After=network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
+StandardOutput=null
+Restart=on-failure
+User=www-data
+
+[Install]
+WantedBy=multi-user.target
+EOF
+cat </etc/apache2/sites-available/barcodebuddy.conf
+
+    ServerName barcodebuddy
+    DocumentRoot /opt/barcodebuddy
+    
+    
+        Options FollowSymLinks
+        AllowOverride All
+        Require all granted
+    
+
+    ErrorLog /var/log/apache2/barcodebuddy_error.log
+    CustomLog /var/log/apache2/barcodebuddy_access.log combined
+
+EOF
+systemctl enable -q --now barcodebuddy
+$STD a2ensite barcodebuddy
+$STD a2enmod rewrite
+$STD a2dissite 000-default.conf
+$STD systemctl reload apache2
+msg_ok "Created Services"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -rf "/opt/v${RELEASE}.zip"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/barcode-buddy.json b/json/barcode-buddy.json
new file mode 100644
index 000000000..a0c6c5faf
--- /dev/null
+++ b/json/barcode-buddy.json
@@ -0,0 +1,39 @@
+{
+  "name": "Barcode buddy",
+  "slug": "barcode-buddy",
+  "categories": [
+    24
+  ],
+  "date_created": "2025-02-08",
+  "type": "ct",
+  "updateable": true,
+  "privileged": false,
+  "interface_port": 80,
+  "documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
+  "website": "https://github.com/Forceu/barcodebuddy",
+  "logo": null,
+  "description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
+  "install_methods": [
+    {
+      "type": "default",
+      "script": "ct/barcode-buddy.sh",
+      "resources": {
+        "cpu": 1,
+        "ram": 512,
+        "hdd": 3,
+        "os": "Debian",
+        "version": "12"
+      }
+    }
+  ],
+  "default_credentials": {
+    "username": null,
+    "password": null
+  },
+  "notes": [
+    {
+      "text": "After install enable  the option \"Use Redis cache\" on the settings page.",
+      "type": "info"
+    }
+  ]
+}
\ No newline at end of file

From 800c1065b96b42ca743f9ea96b668b7fa6217fd7 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Sat, 8 Feb 2025 22:00:37 +0100
Subject: [PATCH 185/480] Update CHANGELOG.md (#2171)

---
 CHANGELOG.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2f0324ac3..648a0237f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### Changed
 
+### ✨ New Scripts
+
+- New script: Barcode Buddy [@bvdberg01](https://github.com/bvdberg01) ([#2167](https://github.com/community-scripts/ProxmoxVE/pull/2167))
+
 ### 🌐 Website
 
 - Update cosmos.json description [@BramSuurdje](https://github.com/BramSuurdje) ([#2162](https://github.com/community-scripts/ProxmoxVE/pull/2162))

From fead4b76f8c5a843ff4b172989c7c3a9ddebb3a6 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 8 Feb 2025 22:46:44 +0100
Subject: [PATCH 186/480] Update .app files (#2170)

Co-authored-by: GitHub Actions 
---
 ct/headers/barcode-buddy | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/barcode-buddy

diff --git a/ct/headers/barcode-buddy b/ct/headers/barcode-buddy
new file mode 100644
index 000000000..81ec8c07a
--- /dev/null
+++ b/ct/headers/barcode-buddy
@@ -0,0 +1,6 @@
+    ____                            __           ____            __    __     
+   / __ )____ _______________  ____/ /__        / __ )__  ______/ /___/ /_  __
+  / __  / __ `/ ___/ ___/ __ \/ __  / _ \______/ __  / / / / __  / __  / / / /
+ / /_/ / /_/ / /  / /__/ /_/ / /_/ /  __/_____/ /_/ / /_/ / /_/ / /_/ / /_/ / 
+/_____/\__,_/_/   \___/\____/\__,_/\___/     /_____/\__,_/\__,_/\__,_/\__, /  
+                                                                     /____/   

From f69d5b5831055f6fba60c05d168d6793b097b357 Mon Sep 17 00:00:00 2001
From: Pascal Bourque 
Date: Sat, 8 Feb 2025 17:36:02 -0500
Subject: [PATCH 187/480] fix(actualbudget): Salvage the `.migrate` file when
 upgrading (#2173)

---
 ct/actualbudget.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh
index 96323aa74..dd59b8bd9 100644
--- a/ct/actualbudget.sh
+++ b/ct/actualbudget.sh
@@ -48,6 +48,7 @@ function update_script() {
         mv *ctual-server-* /opt/actualbudget
         rm -rf /opt/actualbudget/.env
         mv /opt/actualbudget_bak/.env /opt/actualbudget
+        mv /opt/actualbudget_bak/.migrate /opt/actualbudget
         mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
         cd /opt/actualbudget
         yarn install &>/dev/null

From 8fd8ca2c500de9a025523f7154629b8b79b1db79 Mon Sep 17 00:00:00 2001
From: thomashondema 
Date: Sat, 8 Feb 2025 23:37:35 +0100
Subject: [PATCH 188/480] Fixed typos in CONTRIBUTOR_GUIDE (#2174)

Co-authored-by: thomashondema 
---
 .github/CONTRIBUTOR_GUIDE/ct/AppName.md     | 10 +++++-----
 .github/CONTRIBUTOR_GUIDE/json/AppName.json |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.md b/.github/CONTRIBUTOR_GUIDE/ct/AppName.md
index 96d7add38..d1540d80e 100644
--- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.md
+++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.md
@@ -171,7 +171,7 @@ if [[ ! -d /opt/snipe-it ]]; then
 
 ### 3.3 **Check version**
 
-- Befoer updating, check if a new version exists.
+- Before updating, check if a new version exists.
   - We use the `${APPLICATION}_version.txt` file created in `/opt` during the install to compare new versions against the currently installed version.
 
 Example with a Github Release:
@@ -241,7 +241,7 @@ Example:
 
 ### 3.7 **No update function**
 
-- In case you can not provide a update function use the following code to provide user feedback.
+- In case you can not provide an update function use the following code to provide user feedback.
 
 ```bash
 function update_script() {
@@ -252,7 +252,7 @@ function update_script() {
         msg_error "No ${APP} Installation Found!"
         exit
     fi
-    msg_error "Ther is currently no automatic update function for ${APP}."
+    msg_error "There is currently no automatic update function for ${APP}."
     exit
 }
 ```
@@ -286,6 +286,6 @@ echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"
 - [ ] Metadata (author, license) is included at the top.
 - [ ] Variables follow naming conventions.
 - [ ] Update function exists.
-- [ ] Update functions checks if app is installed an for new version.
-- [ ] Update function up temporary files.
+- [ ] Update functions checks if app is installed and for new version.
+- [ ] Update function cleans up temporary files.
 - [ ] Script ends with a helpful message for the user to reach the application.
diff --git a/.github/CONTRIBUTOR_GUIDE/json/AppName.json b/.github/CONTRIBUTOR_GUIDE/json/AppName.json
index 622f370a4..746ebd916 100644
--- a/.github/CONTRIBUTOR_GUIDE/json/AppName.json
+++ b/.github/CONTRIBUTOR_GUIDE/json/AppName.json
@@ -12,7 +12,7 @@
     "documentation": null,
     "website": "LINK TO WEBSITE",
     "logo": "LINK TO LOGO",
-    "description": "Deescription of the app",
+    "description": "Description of the app",
     "install_methods": [
         {
             "type": "default",

From 4bb887a390b33d70be335fa5d1ac8ce80d5b1b2b Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Sat, 8 Feb 2025 23:40:58 +0100
Subject: [PATCH 189/480] Update CHANGELOG.md (#2177)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 648a0237f..a83ee86a2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,10 +25,18 @@ Do not break established syntax in this file, as it is automatically updated by
 
 - New script: Barcode Buddy [@bvdberg01](https://github.com/bvdberg01) ([#2167](https://github.com/community-scripts/ProxmoxVE/pull/2167))
 
+### 🚀 Updated Scripts
+
+- Fix: Actualbudget - salvage the `.migrate` file when upgrading [@bourquep](https://github.com/bourquep) ([#2173](https://github.com/community-scripts/ProxmoxVE/pull/2173))
+
 ### 🌐 Website
 
 - Update cosmos.json description [@BramSuurdje](https://github.com/BramSuurdje) ([#2162](https://github.com/community-scripts/ProxmoxVE/pull/2162))
 
+### 🧰 Maintenance
+
+- fix typos in CONTRIBUTOR_GUIDE [@thomashondema](https://github.com/thomashondema) ([#2174](https://github.com/community-scripts/ProxmoxVE/pull/2174))
+
 ## 2025-02-07 - 10.000 ⭐
 
 ### Changed

From 2ef6ac2fe4c3f561239ef7a0b2031a9910706c6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Sun, 9 Feb 2025 01:46:42 +0100
Subject: [PATCH 190/480] duplicate (#2175)

---
 .github/CONTRIBUTOR_GUIDE/install/AppName-install.sh | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh b/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh
index 4f02c80a7..5b3d6833b 100644
--- a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh
+++ b/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh
@@ -80,7 +80,4 @@ msg_info "Cleaning up"
 rm -f ${RELEASE}.zip
 $STD apt-get -y autoremove
 $STD apt-get -y autoclean
-msg_ok "Cleaned"
-
-motd_ssh
-customize
+msg_ok "Cleaned"
\ No newline at end of file

From 2b0666bcf8f145c59de4071469535ee27e3d9006 Mon Sep 17 00:00:00 2001
From: Gene Hand 
Date: Sun, 9 Feb 2025 01:23:37 -0800
Subject: [PATCH 191/480] Fix: Home Assistant - Keep the same hass_config
 volume (#2160)

---
 ct/homeassistant.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh
index aa35e9416..ecdeb64d7 100644
--- a/ct/homeassistant.sh
+++ b/ct/homeassistant.sh
@@ -49,7 +49,7 @@ function update_script() {
       LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")"
       if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then
         echo "Updating ${container} image ${CONTAINER_IMAGE}"
-        DOCKER_COMMAND="$(runlike "${container}")"
+        DOCKER_COMMAND="$(runlike --use-volume-id "${container}")"
         docker rm --force "${container}"
         eval ${DOCKER_COMMAND}
       fi
@@ -113,4 +113,4 @@ 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}HA: http://${IP}:8123${CL}"
-echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"
\ No newline at end of file
+echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}"

From 5abc84b776e7990aae261b2bf3632ef86cd77e75 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Sun, 9 Feb 2025 10:24:28 +0100
Subject: [PATCH 192/480] Fix: Barcode Buddy Logo & Title (#2183)

---
 json/barcode-buddy.json | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/json/barcode-buddy.json b/json/barcode-buddy.json
index a0c6c5faf..1f9a32478 100644
--- a/json/barcode-buddy.json
+++ b/json/barcode-buddy.json
@@ -1,5 +1,5 @@
 {
-  "name": "Barcode buddy",
+  "name": "Barcode Buddy",
   "slug": "barcode-buddy",
   "categories": [
     24
@@ -11,7 +11,7 @@
   "interface_port": 80,
   "documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
   "website": "https://github.com/Forceu/barcodebuddy",
-  "logo": null,
+  "logo": "https://raw.githubusercontent.com/Forceu/barcodebuddy/refs/heads/master/incl/img/favicon/android-icon-192x192.png",
   "description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
   "install_methods": [
     {
@@ -32,8 +32,8 @@
   },
   "notes": [
     {
-      "text": "After install enable  the option \"Use Redis cache\" on the settings page.",
+      "text": "After install enable the option \"Use Redis cache\" on the settings page.",
       "type": "info"
     }
   ]
-}
\ No newline at end of file
+}

From 64b9fa090a0bb4c4f70b511a8d2e67a85cf5092f Mon Sep 17 00:00:00 2001
From: DonPablo1010 <137032307+DonPablo1010@users.noreply.github.com>
Date: Sun, 9 Feb 2025 11:01:00 +0100
Subject: [PATCH 193/480] New Script: pbs_microcode.sh (#2166)

---
 json/pbs-microcode.json |  43 ++++++++++
 misc/pbs_microcode.sh   | 176 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 219 insertions(+)
 create mode 100644 json/pbs-microcode.json
 create mode 100644 misc/pbs_microcode.sh

diff --git a/json/pbs-microcode.json b/json/pbs-microcode.json
new file mode 100644
index 000000000..1541a82a8
--- /dev/null
+++ b/json/pbs-microcode.json
@@ -0,0 +1,43 @@
+{
+    "name": "Proxmox Backup Server Processor Microcode",
+    "slug": "pbs-microcode",
+    "categories": [
+        1
+    ],
+    "date_created": "2025-02-07",
+    "type": "misc",
+    "updateable": false,
+    "privileged": false,
+    "interface_port": null,
+    "documentation": null,
+    "website": null,
+    "logo": "https://github.com/community-scripts/ProxmoxVE/blob/main/misc/images/processor.png?raw=true",
+    "description": "Processor Microcode is a layer of low-level software that runs on the processor and provides patches or updates to its firmware. Microcode updates can fix hardware bugs, improve performance, and enhance security features of the processor. This script is adapted for the Proxmox Backup Server environment and will only run on bare metal systems. If running in a virtualized environment, the script will exit. Note that firmware update mechanisms, such as Intel's Management Engine (ME) or AMD's Platform Security Processor (PSP), may vary depending on your processor and its implementation. Please consult your processor's documentation to verify if firmware updates can be applied through the operating system.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "misc/pbs_microcode.sh",
+            "resources": {
+                "cpu": null,
+                "ram": null,
+                "hdd": null,
+                "os": null,
+                "version": null
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": [
+        {
+            "text": "Execute within the Proxmox Backup Server shell on a bare metal system. The script will exit if it detects that it is running in a virtualized environment.",
+            "type": "info"
+        },
+        {
+            "text": "After a reboot, you can check whether any microcode updates are currently in effect by running the following command: `journalctl -k | grep -E \"microcode\" | head -n 1`",
+            "type": "info"
+        }
+    ]
+}
diff --git a/misc/pbs_microcode.sh b/misc/pbs_microcode.sh
new file mode 100644
index 000000000..5e94a223c
--- /dev/null
+++ b/misc/pbs_microcode.sh
@@ -0,0 +1,176 @@
+#!/usr/bin/env bash
+# Copyright (c) 2021-2025 tteck
+# Copyright (c) 2025 DonPablo1010
+# Adapted for the Proxmox Backup Server - Baremetal Only
+# License: MIT
+# This script searches for CPU microcode packages (Intel/AMD) and offers the option to install them.
+# A system reboot is required to apply the changes.
+# IMPORTANT: This script will only proceed if running on bare metal. If running in a VM, it will exit.
+
+function header_info {
+  clear
+  cat <<"EOF"
+    ____                                               __  ____                                __
+   / __ \_________  ________  ______________  _____   /  |/  (_)_____________  _________  ____/ /__
+  / /_/ / ___/ __ \/ ___/ _ \/ ___/ ___/ __ \/ ___/  / /|_/ / / ___/ ___/ __ \/ ___/ __ \/ __  / _ \
+ / ____/ /  / /_/ / /__/  __(__  |__  ) /_/ / /     / /  / / / /__/ /  / /_/ / /__/ /_/ / /_/ /  __/
+/_/   /_/   \____/\___/\___/____/____/\____/_/     /_/  /_/_/\___/_/   \____/\___/\____/\__,_/\___/
+
+              Proxmox Backup Server Processor Microcode Updater
+EOF
+}
+
+# Color definitions
+RD=$(echo "\033[01;31m")
+YW=$(echo "\033[33m")
+GN=$(echo "\033[1;92m")
+CL=$(echo "\033[m")
+BFR="\\r\\033[K"
+HOLD="-"
+CM="${GN}✓${CL}"
+CROSS="${RD}✗${CL}"
+
+msg_info() { echo -ne " ${HOLD} ${YW}$1..."; }
+msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; }
+msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; }
+
+header_info
+
+# Check if running on bare metal using systemd-detect-virt.
+virt=$(systemd-detect-virt)
+if [ "$virt" != "none" ]; then
+    msg_error "This script must be run on bare metal. Detected virtual environment: $virt"
+    exit 1
+fi
+
+# Attempt to obtain the current loaded microcode revision
+current_microcode=$(journalctl -k | grep -i 'microcode: Current revision:' | grep -oP 'Current revision: \K0x[0-9a-f]+')
+[ -z "$current_microcode" ] && current_microcode="Not found."
+
+intel() {
+  if ! dpkg -s iucode-tool >/dev/null 2>&1; then
+    msg_info "Installing iucode-tool (Intel microcode updater)"
+    apt-get install -y iucode-tool &>/dev/null
+    msg_ok "Installed iucode-tool"
+  else
+    msg_ok "Intel iucode-tool is already installed"
+    sleep 1
+  fi
+
+  intel_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
+  [ -z "$intel_microcode" ] && { 
+    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
+    msg_info "Exiting"
+    sleep 1
+    msg_ok "Done"
+    exit
+  }
+
+  MICROCODE_MENU=()
+  MSG_MAX_LENGTH=0
+
+  while read -r TAG ITEM; do
+    OFFSET=2
+    (( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
+    MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
+  done < <(echo "$intel_microcode")
+
+  microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
+    --title "Current Microcode Revision: ${current_microcode}" \
+    --radiolist "\nSelect a microcode package to install:\n" \
+    16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
+
+  [ -z "$microcode" ] && { 
+    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
+    msg_info "Exiting"
+    sleep 1
+    msg_ok "Done"
+    exit
+  }
+
+  msg_info "Downloading Intel processor microcode package $microcode"
+  wget -q http://ftp.debian.org/debian/pool/non-free-firmware/i/intel-microcode/$microcode
+  msg_ok "Downloaded Intel processor microcode package $microcode"
+
+  msg_info "Installing $microcode (this might take a while)"
+  dpkg -i $microcode &>/dev/null
+  msg_ok "Installed $microcode"
+
+  msg_info "Cleaning up"
+  rm $microcode
+  msg_ok "Clean up complete"
+  echo -e "\nA system reboot is required to apply the changes.\n"
+}
+
+amd() {
+  amd_microcode=$(curl -fsSL "https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/" | grep -o 'href="[^"]*amd64.deb"' | sed 's/href="//;s/"//')
+
+  [ -z "$amd_microcode" ] && { 
+    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Found" --msgbox "No microcode packages were found.\nTry again later." 10 68
+    msg_info "Exiting"
+    sleep 1
+    msg_ok "Done"
+    exit
+  }
+
+  MICROCODE_MENU=()
+  MSG_MAX_LENGTH=0
+
+  while read -r TAG ITEM; do
+    OFFSET=2
+    (( ${#ITEM} + OFFSET > MSG_MAX_LENGTH )) && MSG_MAX_LENGTH=$(( ${#ITEM} + OFFSET ))
+    MICROCODE_MENU+=("$TAG" "$ITEM " "OFF")
+  done < <(echo "$amd_microcode")
+
+  microcode=$(whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
+    --title "Current Microcode Revision: ${current_microcode}" \
+    --radiolist "\nSelect a microcode package to install:\n" \
+    16 $((MSG_MAX_LENGTH + 58)) 6 "${MICROCODE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit
+
+  [ -z "$microcode" ] && { 
+    whiptail --backtitle "Proxmox Backup Server Helper Scripts" --title "No Microcode Selected" --msgbox "No microcode package was selected." 10 68
+    msg_info "Exiting"
+    sleep 1
+    msg_ok "Done"
+    exit
+  }
+
+  msg_info "Downloading AMD processor microcode package $microcode"
+  wget -q https://ftp.debian.org/debian/pool/non-free-firmware/a/amd64-microcode/$microcode
+  msg_ok "Downloaded AMD processor microcode package $microcode"
+
+  msg_info "Installing $microcode (this might take a while)"
+  dpkg -i $microcode &>/dev/null
+  msg_ok "Installed $microcode"
+
+  msg_info "Cleaning up"
+  rm $microcode
+  msg_ok "Clean up complete"
+  echo -e "\nA system reboot is required to apply the changes.\n"
+}
+
+# Check if this is a Proxmox Backup Server by verifying the presence of the datastore config.
+if [ ! -f /etc/proxmox-backup/datastore.cfg ]; then
+  header_info
+  msg_error "Proxmox Backup Server not detected!"
+  exit
+fi
+
+whiptail --backtitle "Proxmox Backup Server Helper Scripts" \
+  --title "Proxmox Backup Server Processor Microcode" \
+  --yesno "This script searches for CPU microcode packages and offers the option to install them.\nProceed?" 10 68 || exit
+
+msg_info "Checking CPU vendor"
+cpu=$(lscpu | grep -oP 'Vendor ID:\s*\K\S+' | head -n 1)
+if [ "$cpu" == "GenuineIntel" ]; then
+  msg_ok "${cpu} detected"
+  sleep 1
+  intel
+elif [ "$cpu" == "AuthenticAMD" ]; then
+  msg_ok "${cpu} detected"
+  sleep 1
+  amd
+else
+  msg_error "CPU vendor ${cpu} is not supported"
+  exit
+fi

From d20c92bd4f62a060537f91b8ad61d9353e8159f9 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Sun, 9 Feb 2025 11:10:32 +0100
Subject: [PATCH 194/480] Update CHANGELOG.md (#2181)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a83ee86a2..1823d7c4a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,22 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
+## 2025-02-09
+
+### Changed
+
+### ✨ New Scripts
+
+- New Script: pbs_microcode.sh [@DonPablo1010](https://github.com/DonPablo1010) ([#2166](https://github.com/community-scripts/ProxmoxVE/pull/2166))
+
+### 🚀 Updated Scripts
+
+- Keep the same hass_config volume for Home Assistant [@genehand](https://github.com/genehand) ([#2160](https://github.com/community-scripts/ProxmoxVE/pull/2160))
+
+### 🌐 Website
+
+- Fix: Barcode Buddy Logo & Title [@MickLesk](https://github.com/MickLesk) ([#2183](https://github.com/community-scripts/ProxmoxVE/pull/2183))
+
 ## 2025-02-08
 
 ### Changed

From 054829c4d5f4583ac49d3302cc9d25fa579ae546 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Sun, 9 Feb 2025 22:01:25 +0100
Subject: [PATCH 195/480] Website: Set new Logo Paperless-AI (#2194)

set new logo after request
---
 json/paperless-ai.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/json/paperless-ai.json b/json/paperless-ai.json
index 8088dc492..16a0fb8a2 100644
--- a/json/paperless-ai.json
+++ b/json/paperless-ai.json
@@ -11,7 +11,7 @@
   "interface_port": 3000,
   "documentation": null,
   "website": "https://github.com/clusterzx/paperless-ai",
-  "logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg",
+  "logo": "https://raw.githubusercontent.com/clusterzx/paperless-ai/refs/heads/main/icon.png",
   "description": "An automated document analyzer for Paperless-ngx using OpenAI API, Ollama and all OpenAI API compatible Services to automatically analyze and tag your documents.It features: Automode, Manual Mode, Ollama and OpenAI, a Chat function to query your documents with AI, a modern and intuitive Webinterface.",
   "install_methods": [
     {
@@ -31,4 +31,4 @@
         "password": null
     },
     "notes": []
-}
\ No newline at end of file
+}

From f94d727af70cec0decb0f25fcbead77537920210 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Sun, 9 Feb 2025 22:02:28 +0100
Subject: [PATCH 196/480] Update CHANGELOG.md (#2195)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1823d7c4a..8a8c12e88 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🌐 Website
 
+- Website: Set new Logo for Paperless-AI [@MickLesk](https://github.com/MickLesk) ([#2194](https://github.com/community-scripts/ProxmoxVE/pull/2194))
 - Fix: Barcode Buddy Logo & Title [@MickLesk](https://github.com/MickLesk) ([#2183](https://github.com/community-scripts/ProxmoxVE/pull/2183))
 
 ## 2025-02-08

From 31c8617258665ce5784b566722cc0f4863d2d348 Mon Sep 17 00:00:00 2001
From: Michiel van der Wulp 
Date: Mon, 10 Feb 2025 09:04:07 +0100
Subject: [PATCH 197/480] evcc.json Clarify the config file location (#2193)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Clarify the config file location

Clarify the config file location: evcc is set up to use a config file "evcc.yaml" in the "/etc" location. If you do not know this location, you won't get evcc to use it.

* Update json/evcc.json

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
---
 json/evcc.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/json/evcc.json b/json/evcc.json
index dd66f7315..5dfe86d64 100644
--- a/json/evcc.json
+++ b/json/evcc.json
@@ -32,8 +32,8 @@
     },
     "notes": [
         {
-            "text": "entering `evcc configure` in the LXC terminal will guide you through the creation of a configuration file for evcc.",
+            "text": "To configure evcc, type `cd /etc` followed by `evcc configure` in the evcc LXC shell",
             "type": "info"
         }
     ]
-}
\ No newline at end of file
+}

From b9094e306e974d48804fa902ac9a118df8e93f70 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 09:12:19 +0100
Subject: [PATCH 198/480] Update CHANGELOG.md (#2200)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a8c12e88..7593dd48f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
+## 2025-02-10
+
+### Changed
+
+### 🌐 Website
+
+- evcc.json Clarify the config file location [@mvdw](https://github.com/mvdw) ([#2193](https://github.com/community-scripts/ProxmoxVE/pull/2193))
+
 ## 2025-02-09
 
 ### Changed

From a481e89cadde126ffc93bcb4aa6ed92f27c54d7f Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Mon, 10 Feb 2025 09:13:09 +0100
Subject: [PATCH 199/480] [API] Add API to vms (#2021)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* add API to debian-vm.sh

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* [API] Add API calls to VMs

* debian-vm.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* updates

---------

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Co-authored-by: Rögl-Brunner Michel 
---
 misc/api.func           |  8 +++++---
 vm/archlinux-vm.sh      | 18 +++++++++++++++++-
 vm/debian-vm.sh         | 19 +++++++++++++++++--
 vm/docker-vm.sh         | 19 +++++++++++++++++--
 vm/haos-vm.sh           | 23 +++++++++++++++++++++++
 vm/mikrotik-routeros.sh | 18 ++++++++++++++++++
 vm/nextcloud-vm.sh      | 18 ++++++++++++++++++
 vm/openwrt.sh           | 17 +++++++++++++++++
 vm/owncloud-vm.sh       | 18 ++++++++++++++++++
 vm/pimox-haos-vm.sh     | 17 +++++++++++++++++
 vm/ubuntu2204-vm.sh     | 19 ++++++++++++++++---
 vm/ubuntu2404-vm.sh     | 19 ++++++++++++++++---
 vm/ubuntu2410-vm.sh     | 19 ++++++++++++++++---
 13 files changed, 215 insertions(+), 17 deletions(-)

diff --git a/misc/api.func b/misc/api.func
index b9ab5b4de..6c6301b86 100644
--- a/misc/api.func
+++ b/misc/api.func
@@ -46,6 +46,9 @@ EOF
 
 post_to_api_vm() {
 
+  if [[ ! -f /usr/local/community-scripts/diagnostics ]]; then
+    return
+  fi
   DIAGNOSTICS=$(grep -i "^DIAGNOSTICS=" /usr/local/community-scripts/diagnostics | awk -F'=' '{print $2}')
   if ! command -v curl &> /dev/null; then
     return
@@ -55,7 +58,6 @@ post_to_api_vm() {
     return
   fi
 
-
   if [ -z "$RANDOM_UUID" ]; then
     return
   fi
@@ -114,8 +116,8 @@ EOF
 )
    
   RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
-      -H "Content-Type: application/json" \
-      -d "$JSON_PAYLOAD") || true
+    -H "Content-Type: application/json" \
+    -d "$JSON_PAYLOAD") || true
 
   POST_UPDATE_DONE=true
 }
diff --git a/vm/archlinux-vm.sh b/vm/archlinux-vm.sh
index 3ed539fff..8ad66e7c0 100644
--- a/vm/archlinux-vm.sh
+++ b/vm/archlinux-vm.sh
@@ -4,6 +4,9 @@
 # Author: MickLesk (CanbiZ)
 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
+
 function header_info {
   clear
   cat <<"EOF"
@@ -17,6 +20,12 @@ EOF
 }
 header_info
 echo -e "\n Loading..."
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="arch-linux-vm"
+var_os="arch-linux"
+var_version=" "
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
 
@@ -56,10 +65,13 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "${commad}"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -111,7 +123,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -164,6 +176,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
@@ -181,6 +194,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -377,6 +391,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -493,5 +508,6 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Arch Linux VM"
 fi
+post_update_to_api "done" "none"
 
 msg_ok "Completed Successfully!\n"
diff --git a/vm/debian-vm.sh b/vm/debian-vm.sh
index 856078554..6abb669b1 100644
--- a/vm/debian-vm.sh
+++ b/vm/debian-vm.sh
@@ -4,6 +4,8 @@
 # Author: MickLesk (CanbiZ)
 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -19,6 +21,11 @@ header_info
 echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="debian12vm"
+var_os="debian"
+var_version="12"
 
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
@@ -56,11 +63,14 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
+  post_update_to_api "failed" "${command}"
   echo -e "\n$error_message\n"
   cleanup_vmid
 }
@@ -74,6 +84,7 @@ function cleanup_vmid() {
 
 function cleanup() {
   popd >/dev/null
+  post_update_to_api "done" "none"
   rm -rf $TEMP_DIR
 }
 
@@ -111,7 +122,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -164,6 +175,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
@@ -181,6 +193,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -378,6 +391,8 @@ pve_check
 ssh_check
 start_script
 
+post_to_api_vm
+
 msg_info "Validating Storage"
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
@@ -439,7 +454,7 @@ done
 
 msg_info "Creating a Debian 12 VM"
 qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
-  -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
+  -name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
 pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
 qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
 qm set $VMID \
diff --git a/vm/docker-vm.sh b/vm/docker-vm.sh
index 280aeb4c3..38bf0e1e7 100644
--- a/vm/docker-vm.sh
+++ b/vm/docker-vm.sh
@@ -4,6 +4,8 @@
 # Author: thost96 (thost96)
 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -19,6 +21,12 @@ header_info
 echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="debian12vm"
+var_os="debian"
+var_version="12"
+DISK_SIZE="8G"
 
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
@@ -36,10 +44,13 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "${command}"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -91,7 +102,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -144,6 +155,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
@@ -160,6 +172,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -341,6 +354,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -417,7 +431,7 @@ msg_ok "Added Docker and Docker Compose Plugin to Debian 12 Qcow2 Disk Image suc
 
 msg_info "Creating a Docker VM"
 qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
-  -name $HN -tags proxmox-helper-scripts,debian12,docker -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
+  -name $HN -tags community-script,debian12,docker -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
 pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
 qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
 qm set $VMID \
@@ -465,4 +479,5 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Docker VM"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
diff --git a/vm/haos-vm.sh b/vm/haos-vm.sh
index 0b4be157c..f31dbe8ab 100644
--- a/vm/haos-vm.sh
+++ b/vm/haos-vm.sh
@@ -5,6 +5,9 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
+
 function header_info {
   clear
   cat <<"EOF"
@@ -21,6 +24,13 @@ echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
 VERSIONS=(stable beta dev)
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="homeassistant-os"
+var_os="homeassistant"
+DISK_SIZE="32G"
+#
 for version in "${VERSIONS[@]}"; do
   eval "$version=$(curl -s https://raw.githubusercontent.com/home-assistant/version/master/$version.json | grep "ova" | cut -d '"' -f 4)"
 done
@@ -41,6 +51,8 @@ SPINNER_PID=""
 set -Eeuo pipefail
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 
 function error_handler() {
   if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
@@ -48,6 +60,7 @@ function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "${command}"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -167,6 +180,8 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
+  var_version="${stable}"
   echo -e "${DGN}Using HAOS Version: ${BGN}${BRANCH}${CL}"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
@@ -184,11 +199,13 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   if BRANCH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "HAOS VERSION" --radiolist "Choose Version" --cancel-button Exit-Script 10 58 3 \
     "$stable" "Stable  " ON \
     "$beta" "Beta  " OFF \
     "$dev" "Dev  " OFF \
     3>&1 1>&2 2>&3); then
+    var_version="${BRANCH}"
     echo -e "${DGN}Using HAOS Version: ${BGN}$BRANCH${CL}"
   else
     exit-script
@@ -376,6 +393,9 @@ pve_check
 ssh_check
 start_script
 
+
+post_to_api_vm
+
 msg_info "Validating Storage"
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
@@ -463,4 +483,7 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Home Assistant OS VM"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
+
+
diff --git a/vm/mikrotik-routeros.sh b/vm/mikrotik-routeros.sh
index ce5085fbd..ce417ca85 100644
--- a/vm/mikrotik-routeros.sh
+++ b/vm/mikrotik-routeros.sh
@@ -5,6 +5,9 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
+
 function header_info {
   cat <<"EOF"
     __  ____ __              __  _ __      ____              __            ____  _____    ________  ______
@@ -20,6 +23,14 @@ header_info
 echo -e "Loading..."
 GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 NEXTID=$(pvesh get /cluster/nextid)
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="mikrotik-router-os"
+var_os="mikrotik"
+var_version=" "
+DISK_SIZE="1G"
+#
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
 HA=$(echo "\033[1;34m")
@@ -39,6 +50,8 @@ shopt -s expand_aliases
 alias die='EXIT=$? LINE=$LINENO error_exit'
 trap die ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_exit() {
   trap - ERR
   local reason="Unknown failure occurred."
@@ -86,6 +99,7 @@ function msg_ok() {
   echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
 }
 function default_settings() {
+  METHOD="default"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}$NEXTID${CL}"
   VMID=$NEXTID
   echo -e "${DGN}Using Hostname: ${BGN}mikrotik-routeros-chr${CL}"
@@ -107,6 +121,7 @@ function default_settings() {
   echo -e "${BL}Creating a Mikrotik RouterOS CHR VM using the above default settings${CL}"
 }
 function advanced_settings() {
+  METHOD="advanced"
   VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" 3>&1 1>&2 2>&3)
   exitstatus=$?
   if [ $exitstatus = 0 ]; then
@@ -203,6 +218,8 @@ function start_script() {
   fi
 }
 start_script
+
+post_to_api_vm
 msg_info "Validating Storage"
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
@@ -287,4 +304,5 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Mikrotik RouterOS CHR VM"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
diff --git a/vm/nextcloud-vm.sh b/vm/nextcloud-vm.sh
index b7db4c895..ad0dc5417 100644
--- a/vm/nextcloud-vm.sh
+++ b/vm/nextcloud-vm.sh
@@ -5,6 +5,8 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -17,6 +19,14 @@ EOF
 }
 header_info
 echo -e "\n Loading..."
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="turnkey-nextcloud"
+var_os="turnkey-nextcloud"
+var_version=" "
+DISK_SIZE="12G"
+#
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
 NAME="TurnKey Nexcloud VM"
@@ -36,10 +46,13 @@ THIN="discard=on,ssd=1"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "${command}"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -142,6 +155,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="no"
+  METHOD="default"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
@@ -158,6 +172,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -340,6 +355,8 @@ pve_check
 ssh_check
 start_script
 
+post_to_api_vm
+
 msg_info "Validating Storage"
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
@@ -422,4 +439,5 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started $NAME"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
diff --git a/vm/openwrt.sh b/vm/openwrt.sh
index ae60ed0cd..60192ae7e 100644
--- a/vm/openwrt.sh
+++ b/vm/openwrt.sh
@@ -7,6 +7,8 @@
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 # Based on work from https://i12bretro.github.io/tutorials/0405.html
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -21,6 +23,14 @@ EOF
 }
 header_info
 echo -e "Loading..."
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="openwrt-vm"
+var_os="openwrt"
+var_version=" "
+DISK_SIZE="0.5G"
+#
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
@@ -39,10 +49,13 @@ CROSS="${RD}✗${CL}"
 set -Eeo pipefail
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "$command"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -209,6 +222,7 @@ function default_settings() {
   LAN_VLAN=",tag=999"
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}"
   echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}"
@@ -227,6 +241,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -399,6 +414,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -518,4 +534,5 @@ VLAN_FINISH=""
 if [ "$VLAN" == "" ] && [ "$VLAN2" != "999" ]; then
   VLAN_FINISH=" Please remember to adjust the VLAN tags to suit your network."
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n${VLAN_FINISH}"
diff --git a/vm/owncloud-vm.sh b/vm/owncloud-vm.sh
index f81d0fb74..4c49e9a23 100644
--- a/vm/owncloud-vm.sh
+++ b/vm/owncloud-vm.sh
@@ -5,6 +5,8 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -17,6 +19,14 @@ EOF
 }
 header_info
 echo -e "\n Loading..."
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="turnkey-owncloud-vm"
+var_os="owncloud"
+var_version="12"
+DISK_SIZE="12G"
+#
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
 NAME="TurnKey ownCloud VM"
@@ -36,10 +46,13 @@ THIN="discard=on,ssd=1"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "$command"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -142,6 +155,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="no"
+  METHOD="default"
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${DGN}Using Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}"
@@ -158,6 +172,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -340,6 +355,8 @@ pve_check
 ssh_check
 start_script
 
+post_to_api_vm
+
 msg_info "Validating Storage"
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
@@ -422,4 +439,5 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started $NAME"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
diff --git a/vm/pimox-haos-vm.sh b/vm/pimox-haos-vm.sh
index 0db35f733..371034305 100644
--- a/vm/pimox-haos-vm.sh
+++ b/vm/pimox-haos-vm.sh
@@ -5,6 +5,8 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   cat <<"EOF"
                                       ____  _ __  ___                                        
@@ -22,6 +24,14 @@ EOF
 clear
 header_info
 echo -e "Loading..."
+#API VARIABLES
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="pimox-haos-vm"
+var_os="pimox-haos"
+var_version=" "
+DISK_SIZE="32G"
+#
 GEN_MAC=$(echo '00 60 2f'$(od -An -N3 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]')
 USEDID=$(pvesh get /cluster/resources --type vm --output-format yaml | egrep -i 'vmid' | awk '{print substr($2, 1, length($2)-0) }')
 NEXTID=$(pvesh get /cluster/nextid)
@@ -48,11 +58,14 @@ shopt -s expand_aliases
 alias die='EXIT=$? LINE=$LINENO error_exit'
 trap die ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_exit() {
   trap - ERR
   local reason="Unknown failure occurred."
   local msg="${1:-$reason}"
   local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
+  post_update_to_api "failed" "unknown"
   echo -e "$flag $msg" 1>&2
   [ ! -z ${VMID-} ] && cleanup_vmid
   exit $EXIT
@@ -106,6 +119,7 @@ function msg_error() {
 }
 
 function default_settings() {
+  METHOD="default"
   echo -e "${DGN}Using HAOS Version: ${BGN}${STABLE}${CL}"
   BRANCH=${STABLE}
   echo -e "${DGN}Using Virtual Machine ID: ${BGN}$NEXTID${CL}"
@@ -129,6 +143,7 @@ function default_settings() {
   echo -e "${BL}Creating a HAOS VM using the above default settings${CL}"
 }
 function advanced_settings() {
+  METHOD="advanced"
   BRANCH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "HAOS VERSION" --radiolist "Choose Version" --cancel-button Exit-Script 10 58 3 \
     "$STABLE" "Stable" ON \
     "$BETA" "Beta" OFF \
@@ -250,6 +265,7 @@ function START_SCRIPT() {
 }
 ARCH_CHECK
 START_SCRIPT
+post_to_api_vm
 while read -r line; do
   TAG=$(echo $line | awk '{print $1}')
   TYPE=$(echo $line | awk '{printf "%-10s", $2}')
@@ -322,4 +338,5 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Home Assistant OS VM"
 fi
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
diff --git a/vm/ubuntu2204-vm.sh b/vm/ubuntu2204-vm.sh
index e60d7b628..2da417537 100644
--- a/vm/ubuntu2204-vm.sh
+++ b/vm/ubuntu2204-vm.sh
@@ -4,6 +4,8 @@
 # Author: MickLesk (CanbiZ)
 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -19,6 +21,11 @@ header_info
 echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="ubuntu-2204-vm"
+var_os="ubuntu"
+var_version="2204"
 
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
@@ -56,10 +63,13 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "$command"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -111,7 +121,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -164,6 +174,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
@@ -181,6 +192,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -377,6 +389,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -439,7 +452,7 @@ done
 
 msg_info "Creating a Ubuntu 22.04 VM"
 qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
-  -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
+  -name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
 pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
 qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
 qm set $VMID \
@@ -493,7 +506,7 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Ubuntu 22.04 VM"
 fi
-
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
 echo -e "Setup Cloud-Init before starting \n
 More info at https://github.com/community-scripts/ProxmoxVE/discussions/272 \n"
diff --git a/vm/ubuntu2404-vm.sh b/vm/ubuntu2404-vm.sh
index 3d8917913..acabade15 100644
--- a/vm/ubuntu2404-vm.sh
+++ b/vm/ubuntu2404-vm.sh
@@ -5,6 +5,8 @@
 # License: MIT
 # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -20,6 +22,11 @@ header_info
 echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="ubuntu-2404-vm"
+var_os="ubuntu"
+var_version="2404"
 
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")		   
@@ -57,10 +64,13 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "$command"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -112,7 +122,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -165,6 +175,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
@@ -182,6 +193,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -377,6 +389,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -439,7 +452,7 @@ done
 
 msg_info "Creating a Ubuntu 24.04 VM"
 qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
-  -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
+  -name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
 pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
 qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
 qm set $VMID \
@@ -493,7 +506,7 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Ubuntu 24.04 VM"
 fi
-
+post_update_to_api "done" "none"
 msg_ok "Completed Successfully!\n"
 echo -e "Setup Cloud-Init before starting \n
 More info at https://github.com/community-scripts/ProxmoxVE/discussions/272 \n"
diff --git a/vm/ubuntu2410-vm.sh b/vm/ubuntu2410-vm.sh
index 53a0898c7..19c28309a 100644
--- a/vm/ubuntu2410-vm.sh
+++ b/vm/ubuntu2410-vm.sh
@@ -4,6 +4,8 @@
 # Author: MickLesk (CanbiZ)
 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 
+source /dev/stdin <<< $(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func)
+
 function header_info {
   clear
   cat <<"EOF"
@@ -19,6 +21,11 @@ header_info
 echo -e "\n Loading..."
 GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
 NEXTID=$(pvesh get /cluster/nextid)
+RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
+METHOD=""
+NSAPP="ubuntu-2410-vm"
+var_os="ubuntu"
+var_version="2410"
 
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
@@ -56,10 +63,13 @@ THIN="discard=on,ssd=1,"
 set -e
 trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
 trap cleanup EXIT
+trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT 
+trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
 function error_handler() {
   local exit_code="$?"
   local line_number="$1"
   local command="$2"
+  post_update_to_api "failed" "$command"
   local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
   echo -e "\n$error_message\n"
   cleanup_vmid
@@ -111,7 +121,7 @@ function check_root() {
 }
 
 function pve_check() {
-  if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
+ if ! pveversion | grep -Eq "pve-manager/8\.[1-3](\.[0-9]+)*"; then
     msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported"
     echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
     echo -e "Exiting..."
@@ -164,6 +174,7 @@ function default_settings() {
   VLAN=""
   MTU=""
   START_VM="yes"
+  METHOD="default"
   echo -e "${CONTAINERID}${BOLD}${DGN}Virtual Machine ID: ${BGN}${VMID}${CL}"
   echo -e "${CONTAINERTYPE}${BOLD}${DGN}Machine Type: ${BGN}i440fx${CL}"
   echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}${CL}"
@@ -181,6 +192,7 @@ function default_settings() {
 }
 
 function advanced_settings() {
+  METHOD="advanced"
   while true; do
     if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
       if [ -z "$VMID" ]; then
@@ -377,6 +389,7 @@ arch_check
 pve_check
 ssh_check
 start_script
+post_to_api_vm
 
 msg_info "Validating Storage"
 while read -r line; do
@@ -439,7 +452,7 @@ done
 
 msg_info "Creating a Ubuntu 24.10 VM"
 qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
-  -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
+  -name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
 pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
 qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
 qm set $VMID \
@@ -493,7 +506,7 @@ if [ "$START_VM" == "yes" ]; then
   qm start $VMID
   msg_ok "Started Ubuntu 24.10 VM"
 fi
-
+post_update_to_api "done" "none"s
 msg_ok "Completed Successfully!\n"
 echo -e "Setup Cloud-Init before starting \n
 More info at https://github.com/community-scripts/ProxmoxVE/discussions/272 \n"

From b05858c6e9d7b55fd17310299cd35b7c65d7bc8d Mon Sep 17 00:00:00 2001
From: Dave Yap 
Date: Mon, 10 Feb 2025 16:29:38 +0800
Subject: [PATCH 200/480] New Script: Zitadel (#2141)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Create zitadel-install.sh

* Create zitadel.json

* Create zitadel.sh

* Update zitadel.sh

Edit reference back to upstream build.func

* Update zitadel.json

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

* Update zitadel-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update zitadel.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Use declared variables in config files

* Remove other architectures

* Update to fit changes requested

Include mc for install; removal of variable ARCH and put into direct links; correct the default resources required

* Update zitadel.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel-install.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Update zitadel-install.sh

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

* Made changes to fit suggestions

* Update zitadel-install.sh

correct version output

* Update zitadel-install.sh

* Update path for version.txt

* Set update part default to our project defaults

* Update zitadel.sh, Remove v befor ${RELEASE}

* Update zitadel-install.sh

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
---
 ct/zitadel.sh              |  70 +++++++++++++++++
 install/zitadel-install.sh | 155 +++++++++++++++++++++++++++++++++++++
 json/zitadel.json          |  43 ++++++++++
 3 files changed, 268 insertions(+)
 create mode 100644 ct/zitadel.sh
 create mode 100644 install/zitadel-install.sh
 create mode 100644 json/zitadel.json

diff --git a/ct/zitadel.sh b/ct/zitadel.sh
new file mode 100644
index 000000000..f4fc322fa
--- /dev/null
+++ b/ct/zitadel.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: dave-yap (dave-yap)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://zitadel.com/
+
+# App Default Values
+APP="Zitadel"
+var_tags="identity-provider"
+var_cpu="1"
+var_ram="1024"
+var_disk="8"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+    header_info
+    check_container_storage
+    check_container_resources
+    if [[ ! -f /etc/systemd/system/zitadel.service ]]; then
+        msg_error "No ${APP} Installation Found!"
+        exit
+    fi
+    RELEASE=$(curl -si https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
+    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt | grep -oP '\d+\.\d+\.\d+')" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
+        msg_info "Stopping $APP"
+        systemctl stop zitadel
+        msg_ok "Stopped $APP"
+        
+        msg_info "Updating $APP to ${RELEASE}"
+        cd /tmp
+        wget -qc https://github.com/zitadel/zitadel/releases/download/$RELEASE/zitadel-linux-amd64.tar.gz -O - | tar -xz
+        mv zitadel-linux-amd64/zitadel /usr/local/bin
+        zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml --init-projections=true &>/dev/null
+        echo "${RELEASE}" >/opt/${APP}_version.txt
+        msg_ok "Updated $APP to ${RELEASE}"
+
+        msg_info "Starting $APP"
+        systemctl start zitadel
+        msg_ok "Started $APP"
+
+        msg_info "Cleaning Up"
+        rm -rf /tmp/zitadel-linux-amd64
+        msg_ok "Cleanup Completed"
+        msg_ok "Update Successful"
+      else
+        msg_ok "No update required. ${APP} is already at ${RELEASE}"
+    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}:8080/ui/console${CL}"
diff --git a/install/zitadel-install.sh b/install/zitadel-install.sh
new file mode 100644
index 000000000..6ee097ca4
--- /dev/null
+++ b/install/zitadel-install.sh
@@ -0,0 +1,155 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: dave-yap
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+
+source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies (Patience)"
+$STD apt-get install -y \
+    curl \
+    sudo \
+    mc \
+    ca-certificates \
+    wget
+msg_ok "Installed Dependecies"
+
+msg_info "Installing Postgresql"
+$STD apt-get install -y postgresql postgresql-common
+DB_NAME="zitadel"
+DB_USER="zitadel"
+DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
+DB_ADMIN_USER="root"
+DB_ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
+systemctl start postgresql
+$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';"
+$STD sudo -u postgres psql -c "CREATE USER $DB_ADMIN_USER WITH PASSWORD '$DB_ADMIN_PASS' SUPERUSER;"
+$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_ADMIN_USER;"
+{
+    echo "Application Credentials"
+    echo "DB_NAME: $DB_NAME"
+    echo "DB_USER: $DB_USER"
+    echo "DB_PASS: $DB_PASS"
+    echo "DB_ADMIN_USER: $DB_ADMIN_USER"
+    echo "DB_ADMIN_PASS: $DB_ADMIN_PASS"
+} >> ~/zitadel.creds
+msg_ok "Installed PostgreSQL"
+
+msg_info "Installing Zitadel"
+RELEASE=$(curl -si https://github.com/zitadel/zitadel/releases/latest | grep location: | cut -d '/' -f 8 | tr -d '\r')
+wget -qc https://github.com/zitadel/zitadel/releases/download/$RELEASE/zitadel-linux-amd64.tar.gz -O - | tar -xz
+mv zitadel-linux-amd64/zitadel /usr/local/bin
+echo "${RELEASE}" >"/opt/zitadel_version.txt"
+msg_ok "Installed Zitadel"
+
+msg_info "Setting up Zitadel Environments"
+mkdir -p /opt/zitadel
+echo "/opt/zitadel/config.yaml" > "/opt/zitadel/.config"
+head -c 32 < <(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9') > "/opt/zitadel/.masterkey"
+{
+    echo "Config location: $(cat "/opt/zitadel/.config")"
+    echo "Masterkey: $(cat "/opt/zitadel/.masterkey")"
+} >> ~/zitadel.creds
+cat </opt/zitadel/config.yaml
+Port: 8080
+ExternalPort: 8080
+ExternalDomain: localhost
+ExternalSecure: false
+TLS:
+  Enabled: false
+  KeyPath: ""
+  Key: ""
+  CertPath: ""
+  Cert: ""
+
+Database:
+  postgres:
+    Host: localhost
+    Port: 5432
+    Database: ${DB_NAME}
+    User:
+      Username: ${DB_USER}
+      Password: ${DB_PASS}
+      SSL:
+        Mode: disable
+        RootCert: ""
+        Cert: ""
+        Key: ""
+    Admin:
+      Username: ${DB_ADMIN_USER}
+      Password: ${DB_ADMIN_PASS}
+      SSL:
+        Mode: disable
+        RootCert: ""
+        Cert: ""
+        Key: ""
+EOF
+msg_ok "Installed Zitadel Enviroments"
+
+msg_info "Creating Services"
+cat </etc/systemd/system/zitadel.service
+[Unit]
+Description=ZITADEL Identiy Server
+After=network.target postgresql.service
+Wants=postgresql.service
+
+[Service]
+Type=simple
+User=zitadel
+Group=zitadel
+ExecStart=/usr/local/bin/zitadel start --masterkeyFile "/opt/zitadel/.masterkey" --config "/opt/zitadel/config.yaml"
+Restart=always
+RestartSec=5
+TimeoutStartSec=0
+
+# Security Hardening options
+ProtectSystem=full
+ProtectHome=true
+PrivateTmp=true
+NoNewPrivileges=true
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q zitadel.service
+msg_ok "Created Services"
+
+msg_info "Zitadel initial setup"
+zitadel start-from-init --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null &
+sleep 60
+kill $(lsof -i | awk '/zitadel/ {print $2}' | head -n1)
+useradd zitadel
+echo -e "$(zitadel -v | grep -oP 'v\d+\.\d+\.\d+')" > /opt/Zitadel_version.txt
+msg_ok "Zitadel initialized"
+
+msg_info "Set ExternalDomain to current IP and restart Zitadel"
+IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
+sed -i "0,/localhost/s/localhost/${IP}/" /opt/zitadel/config.yaml
+systemctl stop -q zitadel.service
+zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml &>/dev/null 
+systemctl restart -q zitadel.service
+msg_ok "Zitadel restarted with ExternalDomain set to current IP"
+
+msg_info "Create zitadel-rerun.sh"
+cat <~/zitadel-rerun.sh
+systemctl stop zitadel.service
+timeout --kill-after=5s 15s zitadel setup --masterkeyFile /opt/zitadel/.masterkey --config /opt/zitadel/config.yaml
+systemctl restart zitadel.service
+EOF
+msg_ok "Bash script for rerunning Zitadel after changing Zitadel config.yaml"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -rf ~/zitadel-linux-amd64
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/zitadel.json b/json/zitadel.json
new file mode 100644
index 000000000..b2cec903b
--- /dev/null
+++ b/json/zitadel.json
@@ -0,0 +1,43 @@
+{
+    "name": "Zitadel",
+    "slug": "Zitadel",
+    "categories": [
+        6
+    ],
+    "date_created": "2025-02-07",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 8080,
+    "documentation": "https://zitadel.com/docs/guides/overview",
+    "website": "https://zitadel.com",
+    "logo": "https://zitadel.com/zitadel-logo-dark.svg",
+    "description": "Zitadel is an open-source identity and access management (IAM) solution designed to provide secure authentication, authorization, and user management for modern applications and services. Built with a focus on flexibility, scalability, and security, Zitadel offers a comprehensive set of features for developers and organizations looking to implement robust identity management.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/zitadel.sh",
+            "resources": {
+                "cpu": 1,
+                "ram": 1024,
+                "hdd": 8,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": "zitadel-admin@zitadel.localhost",
+        "password": "Password1!"
+    },
+    "notes": [
+        {
+            "text": "Application credentials: `cat ~/zitadel.creds`",
+            "type": "info"
+        },
+        {
+            "text": "Change the ExternalDomain value in `/opt/zitadel/config.yaml` to your domain/hostname/IP and run `bash zitadel-rerun.sh`",
+            "type": "info"
+        }
+    ]
+}
\ No newline at end of file

From 758659a91ee91917a4417cb1d9229300e0f3ef43 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 09:31:45 +0100
Subject: [PATCH 201/480] Update .app files (#2202)

Co-authored-by: GitHub Actions 
---
 ct/headers/zitadel | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/zitadel

diff --git a/ct/headers/zitadel b/ct/headers/zitadel
new file mode 100644
index 000000000..eebdc0929
--- /dev/null
+++ b/ct/headers/zitadel
@@ -0,0 +1,6 @@
+ _____   _ __            __     __
+/__  /  (_) /_____ _____/ /__  / /
+  / /  / / __/ __ `/ __  / _ \/ / 
+ / /__/ / /_/ /_/ / /_/ /  __/ /  
+/____/_/\__/\__,_/\__,_/\___/_/   
+                                  

From 6fc357ecd045162a0d001ce861832ffa4a8b103c Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 10:21:49 +0100
Subject: [PATCH 202/480] Update CHANGELOG.md (#2201)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7593dd48f..e16287608 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,10 +21,18 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### Changed
 
+### ✨ New Scripts
+
+- New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))
+
 ### 🌐 Website
 
 - evcc.json Clarify the config file location [@mvdw](https://github.com/mvdw) ([#2193](https://github.com/community-scripts/ProxmoxVE/pull/2193))
 
+### 🧰 Maintenance
+
+- [API] Add API to vms [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2021](https://github.com/community-scripts/ProxmoxVE/pull/2021))
+
 ## 2025-02-09
 
 ### Changed

From e5f738b5677f5d09265af744577f24e72dccfebd Mon Sep 17 00:00:00 2001
From: Emik 
Date: Mon, 10 Feb 2025 17:29:33 +0800
Subject: [PATCH 203/480] Fix: "read -p" does not support color formatting
 (#2191)

* Fix: "read -p" does not support color formatting

* Fix: "read -p" does not support color formatting
---
 misc/build.func | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/misc/build.func b/misc/build.func
index e0419a2ef..86f01b2f4 100644
--- a/misc/build.func
+++ b/misc/build.func
@@ -956,7 +956,8 @@ check_container_resources() {
   if [[ "$current_ram" -lt "$var_ram" ]] || [[ "$current_cpu" -lt "$var_cpu" ]]; then
     echo -e "\n${INFO}${HOLD} ${GN}Required: ${var_cpu} CPU, ${var_ram}MB RAM ${CL}| ${RD}Current: ${current_cpu} CPU, ${current_ram}MB RAM${CL}"
     echo -e "${YWB}Please ensure that the ${APP} LXC is configured with at least ${var_cpu} vCPU and ${var_ram} MB RAM for the build process.${CL}\n"
-    read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC?   " prompt
+    echo -ne "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC?   "
+    read -r prompt
     # Check if the input is 'yes', otherwise exit with status 1
     if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then
       echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}"
@@ -975,7 +976,8 @@ check_container_storage() {
   if (( usage > 80 )); then
     # Prompt the user for confirmation to continue
     echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
-    read -r -p "Continue anyway?   " prompt
+    echo -ne "Continue anyway?   "
+    read -r prompt
     # Check if the input is 'y' or 'yes', otherwise exit with status 1
     if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
       echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"

From 3f35900914f752fd8760252e0569f593097a4f73 Mon Sep 17 00:00:00 2001
From: Divaksh Jain 
Date: Mon, 10 Feb 2025 15:08:02 +0530
Subject: [PATCH 204/480] Fixed URL typo zerotier-one.json (#2206)

---
 json/zerotier-one.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/json/zerotier-one.json b/json/zerotier-one.json
index 6a22bd585..02d79f626 100644
--- a/json/zerotier-one.json
+++ b/json/zerotier-one.json
@@ -9,7 +9,7 @@
     "updateable": true,
     "privileged": false,
     "interface_port": 3443,
-    "documentation": "https://https://docs.zerotier.com/",
+    "documentation": "https://docs.zerotier.com/",
     "website": "https://www.zerotier.com/",
     "logo": "https://www.zerotier.com/wp-content/uploads/2025/01/Logo-White.svg",
     "description": "ZeroTier is a secure network overlay that allows you to manage all of your network resources as if they were on the same LAN. The software-defined solution can be deployed in minutes from anywhere. No matter how many devices you need to connect, or where they are in the world, ZeroTier makes global networking simple.",
@@ -31,4 +31,4 @@
         "password": "password"
     },
     "notes": []
-}
\ No newline at end of file
+}

From e989bbba29913038db41fa55f33882bbd36e7d45 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:03:56 +0100
Subject: [PATCH 205/480] Update CHANGELOG.md (#2205)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e16287608..5526e9b22 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,10 +27,12 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🌐 Website
 
+- Fixed URL typo zerotier-one.json [@Divaksh](https://github.com/Divaksh) ([#2206](https://github.com/community-scripts/ProxmoxVE/pull/2206))
 - evcc.json Clarify the config file location [@mvdw](https://github.com/mvdw) ([#2193](https://github.com/community-scripts/ProxmoxVE/pull/2193))
 
 ### 🧰 Maintenance
 
+- Fix: "read -p" does not support color formatting [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2191](https://github.com/community-scripts/ProxmoxVE/pull/2191))
 - [API] Add API to vms [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2021](https://github.com/community-scripts/ProxmoxVE/pull/2021))
 
 ## 2025-02-09

From 33ef8aadbeb7df8b09319472cdcc272cab7ea8dd Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:14:24 +0100
Subject: [PATCH 206/480] Prevent double spinner (#2203)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Rögl-Brunner Michel 
---
 ct/create_lxc.sh  | 1 +
 misc/build.func   | 1 +
 misc/install.func | 1 +
 3 files changed, 3 insertions(+)

diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh
index a62fd2d01..df35a03bc 100644
--- a/ct/create_lxc.sh
+++ b/ct/create_lxc.sh
@@ -64,6 +64,7 @@ function spinner() {
 
 # This function displays an informational message with a yellow color.
 function msg_info() {
+  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &
diff --git a/misc/build.func b/misc/build.func
index 86f01b2f4..1800bdc2b 100644
--- a/misc/build.func
+++ b/misc/build.func
@@ -98,6 +98,7 @@ spinner() {
 
 # This function displays an informational message with a yellow color.
 msg_info() {
+  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &
diff --git a/misc/install.func b/misc/install.func
index b02344797..5087510cd 100644
--- a/misc/install.func
+++ b/misc/install.func
@@ -90,6 +90,7 @@ spinner() {
 
 # This function displays an informational message with a yellow color.
 msg_info() {
+  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &

From 70b5c62c9fc12179a5ad5c12c1be42b80bd39a20 Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:15:28 +0100
Subject: [PATCH 207/480] Changes to workflow files (#2204)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Rögl-Brunner Michel 
---
 .github/autolabeler-config.json               | 11 +++-
 .github/changelog-pr-config.json              | 60 ++++++++++---------
 .github/workflows/auto-update-app-headers.yml |  9 ++-
 3 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/.github/autolabeler-config.json b/.github/autolabeler-config.json
index 30e34b972..399004ee1 100644
--- a/.github/autolabeler-config.json
+++ b/.github/autolabeler-config.json
@@ -23,7 +23,7 @@
     {
       "fileStatus": "modified",
       "includeGlobs": ["ct/**", "install/**", "misc/**", "turnkey/**", "vm/**"],
-      "excludeGlobs": ["misc/build.func", "misc/install.func"]
+      "excludeGlobs": ["misc/build.func", "misc/install.func", "misc/api.func"]
     }
   ],
   "delete script": [
@@ -51,13 +51,20 @@
     {
       "fileStatus": null,
       "includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh"],
+      "excludeGlobs": ["misc/api.func"]
+    }
+  ],
+   "api": [
+    {
+      "fileStatus": null,
+      "includeGlobs": ["api/**", "misc/api.func"],
       "excludeGlobs": []
     }
   ],
   "high risk": [
     {
       "fileStatus": null,
-      "includeGlobs": ["misc/build.func", "misc/install.func"],
+      "includeGlobs": ["misc/build.func", "misc/install.func", "ct/create_lxc.sh"],
       "excludeGlobs": []
     }
   ]
diff --git a/.github/changelog-pr-config.json b/.github/changelog-pr-config.json
index 5da6b306a..911098d9d 100644
--- a/.github/changelog-pr-config.json
+++ b/.github/changelog-pr-config.json
@@ -1,30 +1,34 @@
 [
-    {
-        "title": "💥 Breaking Changes",
-        "labels": ["breaking change"]
-    },
-    {
-        "title": "✨ New Scripts",
-        "labels": ["new script"]
-    },
-    {
-        "title": "🚀 Updated Scripts",
-        "labels": ["update script"]
-    },
-    {
-        "title": "🌐 Website",
-        "labels": ["website"]
-    },
-    {
-        "title": "🐞 Bug Fixes",
-        "labels": ["bug fix"]
-    },
-    {
-        "title": "🧰 Maintenance",
-        "labels": ["maintenance"]
-    },
-    {
-        "title": "❔ Unlabelled",
-        "labels": []
-    }
+  {
+      "title": "💥 Breaking Changes",
+      "labels": ["breaking change"]
+  },
+  {
+      "title": "✨ New Scripts",
+      "labels": ["new script"]
+  },
+  {
+      "title": "🚀 Updated Scripts",
+      "labels": ["update script"]
+  },
+  {
+      "title": "🌐 Website",
+      "labels": ["website"]
+  },
+  {
+      "title": "🐞 Bug Fixes",
+      "labels": ["bug fix"]
+  },
+  {
+      "title": "🧰 Maintenance",
+      "labels": ["maintenance"]
+  },
+  {
+      "title": "📡 API",
+      "labels": ["api"]
+  },
+  {
+      "title": "❔ Unlabelled",
+      "labels": []
+  }
 ]
diff --git a/.github/workflows/auto-update-app-headers.yml b/.github/workflows/auto-update-app-headers.yml
index 8e21d7726..5e447ea54 100644
--- a/.github/workflows/auto-update-app-headers.yml
+++ b/.github/workflows/auto-update-app-headers.yml
@@ -17,6 +17,13 @@ jobs:
       pull-requests: write
 
     steps:
+      - name: Generate a token
+        id: generate-token
+        uses: actions/create-github-app-token@v1
+        with:
+          app-id: ${{ vars.APP_ID }}
+          private-key: ${{ secrets.APP_PRIVATE_KEY }}
+
       # Step 1: Checkout repository
       - name: Checkout repository
         uses: actions/checkout@v2
@@ -71,7 +78,7 @@ jobs:
                        --base main \
                        --label "automated pr"
         env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
       
       - name: Approve pull request
         if: env.changed == 'true'

From 5bbf197a8d1f49bd7e0d62d06abd6e0b379ef219 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:20:55 +0100
Subject: [PATCH 208/480] Update CHANGELOG.md (#2208)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5526e9b22..465645f43 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by
 
 - New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))
 
+### 🚀 Updated Scripts
+
+- [core] Prevent double spinner [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2203](https://github.com/community-scripts/ProxmoxVE/pull/2203))
+
 ### 🌐 Website
 
 - Fixed URL typo zerotier-one.json [@Divaksh](https://github.com/Divaksh) ([#2206](https://github.com/community-scripts/ProxmoxVE/pull/2206))
@@ -32,6 +36,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🧰 Maintenance
 
+- [core] Fix app-header workflow and add API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2204](https://github.com/community-scripts/ProxmoxVE/pull/2204))
 - Fix: "read -p" does not support color formatting [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2191](https://github.com/community-scripts/ProxmoxVE/pull/2191))
 - [API] Add API to vms [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2021](https://github.com/community-scripts/ProxmoxVE/pull/2021))
 

From c5101d3358580de7b9ffa28afa4f43022b5188ae Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:29:59 +0100
Subject: [PATCH 209/480] Revert "Prevent double spinner (#2203)" (#2211)

This reverts commit 33ef8aadbeb7df8b09319472cdcc272cab7ea8dd.
---
 ct/create_lxc.sh  | 1 -
 misc/build.func   | 1 -
 misc/install.func | 1 -
 3 files changed, 3 deletions(-)

diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh
index df35a03bc..a62fd2d01 100644
--- a/ct/create_lxc.sh
+++ b/ct/create_lxc.sh
@@ -64,7 +64,6 @@ function spinner() {
 
 # This function displays an informational message with a yellow color.
 function msg_info() {
-  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &
diff --git a/misc/build.func b/misc/build.func
index 1800bdc2b..86f01b2f4 100644
--- a/misc/build.func
+++ b/misc/build.func
@@ -98,7 +98,6 @@ spinner() {
 
 # This function displays an informational message with a yellow color.
 msg_info() {
-  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &
diff --git a/misc/install.func b/misc/install.func
index 5087510cd..b02344797 100644
--- a/misc/install.func
+++ b/misc/install.func
@@ -90,7 +90,6 @@ spinner() {
 
 # This function displays an informational message with a yellow color.
 msg_info() {
-  if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi
   local msg="$1"
   echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}"
   spinner &

From ccc71a7225d03a89a1f3dc0665fdcd2235da6895 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 11:42:11 +0100
Subject: [PATCH 210/480] [Fix] Filebrowser - Add Static Path for DB (#2207)

---
 misc/filebrowser.sh | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index a9ea1186b..644ee88cc 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -76,15 +76,21 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     curl -fsSL https://github.com/filebrowser/filebrowser/releases/latest/download/linux-amd64-filebrowser.tar.gz | tar -xzv -C /usr/local/bin &>/dev/null
     msg_ok "Installed ${APP}"
 
+    msg_info "Creating FileBrowser directory"
+    mkdir -p /var/lib/filebrowser
+    chown root:root /var/lib/filebrowser
+    chmod 755 /var/lib/filebrowser
+    msg_ok "Directory created successfully"
+
     read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
-        filebrowser config init -a '0.0.0.0' &>/dev/null
+        filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
         filebrowser config set -a '0.0.0.0' --auth.method=noauth &>/dev/null
         msg_ok "No Authentication configured"
     else
         msg_info "Setting up default authentication"
-        filebrowser config init -a '0.0.0.0' &>/dev/null
+        filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
         filebrowser config set -a '0.0.0.0' &>/dev/null
         filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
         msg_ok "Default authentication configured (admin:helper-scripts.com)"
@@ -98,11 +104,12 @@ After=network-online.target
 
 [Service]
 User=root
-WorkingDirectory=/root/
-ExecStart=/usr/local/bin/filebrowser -r /
+WorkingDirectory=/var/lib/filebrowser/
+ExecStart=/usr/local/bin/filebrowser -r / --database /var/lib/filebrowser/filebrowser.db
+Restart=always
 
 [Install]
-WantedBy=default.target
+WantedBy=multi-user.target
 EOF
     systemctl enable -q --now filebrowser.service
     msg_ok "Service created successfully"

From 35547c43161b84cff9bd891f2ff28a0e7075021e Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 12:53:34 +0100
Subject: [PATCH 211/480] Update CHANGELOG.md (#2212)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 465645f43..7ebf94055 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### Changed
 
+### 💥 Breaking Changes
+
+- [Fix] Filebrowser - Add Static Path for DB [@MickLesk](https://github.com/MickLesk) ([#2207](https://github.com/community-scripts/ProxmoxVE/pull/2207))
+
 ### ✨ New Scripts
 
 - New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))

From 7105f671451179cae66eb750909162917abbfa07 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:42:17 +0100
Subject: [PATCH 212/480] [gh]: Improve Workflows, Templates, Handling (#2214)

* Remove Game-Relevant in RequestScript

* Update pull_request_template.md

* Update pull_request_template.md

* Update changelog-pr.yml

* Update autolabeler.yml

* Update autolabeler.yml

* Update changelog-pr.yml

* Update changelog-pr.yml
---
 .../DISCUSSION_TEMPLATE/request-script.yml    |  2 -
 .github/pull_request_template.md              | 38 +++++-----
 .github/workflows/autolabeler.yml             | 71 ++++++++++---------
 .github/workflows/changelog-pr.yml            | 62 +++++++---------
 4 files changed, 83 insertions(+), 90 deletions(-)

diff --git a/.github/DISCUSSION_TEMPLATE/request-script.yml b/.github/DISCUSSION_TEMPLATE/request-script.yml
index aac84df60..44ed9b147 100644
--- a/.github/DISCUSSION_TEMPLATE/request-script.yml
+++ b/.github/DISCUSSION_TEMPLATE/request-script.yml
@@ -30,8 +30,6 @@ body:
         required: true
       - label: "I have searched existing [discussions](https://github.com/community-scripts/ProxmoxVE/discussions?discussions_q=) and found no duplicate requests."
         required: true
-      - label: "This is not a game-related request."
-        required: true
 - type: markdown
   attributes:
     value: "Thanks for submitting your request! The team will review it and reach out if we need more information."
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 7613cf4eb..a08e1a6c8 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,28 +1,28 @@
-## ✍️ Description
+## ✍️ Description  
+  
 
+--
 
- 
+## 🔗 Related PR / Discussion / Issue  
+Link: #
 
-- - -
-- Related Issue: #
-- Related PR: #
-- Related Discussion: #
-- - - 
+--
 
+## ✅ Prerequisites  
+Before this PR can be reviewed, the following must be completed:  
+- [] **Self-review performed** – Code follows established patterns and conventions.  
+- [] **Testing performed** – Changes have been thoroughly tested and verified.  
 
-## ✅ Prerequisites
-The following steps must be completed for the pull request to be considered:  
-- [] Self-review performed (I have reviewed my code to ensure it follows established patterns and conventions.)  
-- [] Testing performed (I have thoroughly tested my changes and verified expected functionality.)
+--
 
-## 🛠️ Type of Change
-Please check the relevant options:  
-- [] Bug fix (non-breaking change that resolves an issue)  
-- [] New feature (non-breaking change that adds functionality)  
-- [] Breaking change (fix or feature that would cause existing functionality to change unexpectedly)  
-- [] New script (a fully functional and thoroughly tested script or set of scripts)  
+## 🛠️ Type of Change  
+Select all that apply:  
+- [] 🐞 **Bug fix** – Resolves an issue without breaking functionality.  
+- [] ✨ **New feature** – Adds new, non-breaking functionality.  
+- [] 💥 **Breaking change** – Alters existing functionality in a way that may require updates.  
+- [] 🆕 **New script** – A fully functional and tested script or script set.  
 
 ---
-## 📋 Additional Information (optional)
-Provide any extra context or screenshots about the feature or fix here.  
 
+## 📋 Additional Information (optional)  
+  
diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml
index 660135f5c..2f66f3417 100644
--- a/.github/workflows/autolabeler.yml
+++ b/.github/workflows/autolabeler.yml
@@ -13,50 +13,57 @@ jobs:
     env:
       CONFIG_PATH: .github/autolabeler-config.json
     steps:
-      - name: Checkout repository
-        uses: actions/checkout@v4
-
-      - name: Install minimatch
-        run: npm install minimatch
-
       - name: Label PR based on config rules
         uses: actions/github-script@v7
         with:
           script: |
             const fs = require('fs').promises;
-            const path = require('path');
             const { minimatch } = require('minimatch');
 
-            const configPath = path.resolve(process.env.CONFIG_PATH);
-            const fileContent = await fs.readFile(configPath, 'utf-8');
-            const autolabelerConfig = JSON.parse(fileContent);
- 
+            const configPath = process.env.CONFIG_PATH;
+            let config;
+            try {
+              const fileContent = await fs.readFile(configPath, 'utf-8');
+              config = JSON.parse(fileContent);
+            } catch (error) {
+              console.error(`❌ Issue while load config file: ${error.message}`);
+              return;
+            }
+
             const prNumber = context.payload.pull_request.number;
-            const prListFilesResponse = await github.rest.pulls.listFiles({
+            const prFiles = (await github.rest.pulls.listFiles({
               owner: context.repo.owner,
               repo: context.repo.repo,
               pull_number: prNumber,
-            });
-            const prFiles = prListFilesResponse.data;
+            })).data;
 
-            for (const [label, rules] of Object.entries(autolabelerConfig)) {
-              const shouldAddLabel = prFiles.some((prFile) => {
-                return rules.some((rule) => {
-                  const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
-                  const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
-                  const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
-                  
-                  return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
-                });
-              });
+            let labelsToAdd = new Set();
 
-              if (shouldAddLabel) {
-                console.log(`Adding label ${label} to PR ${prNumber}`);
-                await github.rest.issues.addLabels({
-                  owner: context.repo.owner,
-                  repo: context.repo.repo,
-                  issue_number: prNumber,
-                  labels: [label],
-                });
+            for (const [label, rules] of Object.entries(config)) {
+              if (prFiles.some(prFile =>
+                rules.some(rule =>
+                  (!rule.fileStatus || rule.fileStatus === prFile.status) &&
+                  rule.includeGlobs.some(glob => minimatch(prFile.filename, glob)) &&
+                  !rule.excludeGlobs.some(glob => minimatch(prFile.filename, glob))
+                )
+              )) {
+                labelsToAdd.add(label);
               }
             }
+
+            const existingLabels = new Set((await github.rest.issues.listLabelsOnIssue({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              issue_number: prNumber,
+            })).data.map(l => l.name));
+
+            labelsToAdd = [...labelsToAdd].filter(label => !existingLabels.has(label));
+
+            if (labelsToAdd.length > 0) {
+              await github.rest.issues.addLabels({
+                owner: context.repo.owner,
+                repo: context.repo.repo,
+                issue_number: prNumber,
+                labels: labelsToAdd,
+              });
+            }
diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml
index 48cf49972..5637f5c4f 100644
--- a/.github/workflows/changelog-pr.yml
+++ b/.github/workflows/changelog-pr.yml
@@ -6,7 +6,7 @@ on:
   workflow_dispatch:
 
 jobs:
-  update-changelog-pull-request:
+  update-changelog:
     runs-on: ubuntu-latest
     env:
       CONFIG_PATH: .github/changelog-pr-config.json
@@ -28,21 +28,12 @@ jobs:
         with:
           fetch-depth: 0
 
-      - name: Get latest dates in changelog
+      - name: Get latest date in changelog
         run: |
-          # Extract the latest and second latest dates from changelog
-          DATES=$(grep '^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' CHANGELOG.md | head -n 2 | awk '{print $2}')
-
-          LATEST_DATE=$(echo "$DATES" | sed -n '1p')
-          SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p')
+          LATEST_DATE=$(grep '^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' CHANGELOG.md | head -n 1 | awk '{print $2}')
           TODAY=$(date -u +%Y-%m-%d)
-
+          echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV
           echo "TODAY=$TODAY" >> $GITHUB_ENV
-          if [ "$LATEST_DATE" == "$TODAY" ]; then
-            echo "LATEST_DATE=$SECOND_LATEST_DATE" >> $GITHUB_ENV
-          else
-            echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV
-          fi
 
       - name: Get categorized pull requests
         id: get-categorized-prs
@@ -57,8 +48,8 @@ jobs:
             const changelogConfig = JSON.parse(fileContent);
             const categorizedPRs = changelogConfig.map((obj) => ({ ...obj, notes: [] }));
 
-            const latestDateInChangelog = new Date(process.env.LATEST_DATE);
-            latestDateInChangelog.setUTCHours(23,59,59,999);
+            const latestDate = new Date(process.env.LATEST_DATE);
+            latestDate.setUTCHours(23,59,59,999);
 
             const { data: pulls } = await github.rest.pulls.list({
               owner: context.repo.owner,
@@ -70,18 +61,16 @@ jobs:
               per_page: 100,
             });
 
-            pulls.filter((pr) => 
+            pulls.filter(pr => 
               pr.merged_at && 
-              new Date(pr.merged_at) > latestDateInChangelog && 
-              !pr.labels.some((label) => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase()))
-            ).forEach((pr) => {
-              const prLabels = pr.labels.map((label) => label.name.toLowerCase());
+              new Date(pr.merged_at) > latestDate &&
+              !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase()))
+            ).forEach(pr => {
+              const prLabels = pr.labels.map(label => label.name.toLowerCase());
               const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`;
 
               for (const { labels, notes } of categorizedPRs) {
-                const prHasCategoryLabel = labels.some((label) => prLabels.includes(label));
-                const isUnlabelledCategory = labels.length === 0;
-                if (prHasCategoryLabel || isUnlabelledCategory) {
+                if (labels.length === 0 || labels.some(label => prLabels.includes(label))) {
                   notes.push(prNote);
                   break;
                 }
@@ -98,11 +87,11 @@ jobs:
             const path = require('path');
 
             const today = process.env.TODAY;
-            const latestDateInChangelog = process.env.LATEST_DATE;
+            const latestDate = process.env.LATEST_DATE;
             const changelogPath = path.resolve('CHANGELOG.md');
             const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }};
 
-            let newReleaseNotes = `## ${today}\n\n### Changed\n\n`;
+            let newReleaseNotes = `## ${today}\n\n`;
             for (const { title, notes } of categorizedPRs) {
               if (notes.length > 0) {
                 newReleaseNotes += `### ${title}\n\n${notes.join("\n")}\n\n`;
@@ -112,21 +101,20 @@ jobs:
             const changelogContent = await fs.readFile(changelogPath, 'utf-8');
             const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`);
 
-            // Replace todays release notes or insert release notes above previous release notes
             const regex = changelogIncludesTodaysReleaseNotes ? 
-              new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs") :
-              new RegExp(`(?=## ${latestDateInChangelog})`, "gs");
+              new RegExp(`## ${today}.*(?=## ${latestDate})`, "gs") :
+              new RegExp(`(?=## ${latestDate})`, "gs");
 
-            const newChangelogContent = changelogContent.replace(regex, newReleaseNotes)
+            const newChangelogContent = changelogContent.replace(regex, newReleaseNotes);
             await fs.writeFile(changelogPath, newChangelogContent);
 
-      - name: Check if there are any changes
+      - name: Check for changes
         id: verify-diff
         run: |
-          git diff --quiet . || echo "changed=true" >> $GITHUB_OUTPUT
+          git diff --quiet . || echo "changed=true" >> $GITHUB_ENV
 
-      - name: Commit and push changes to separate branch
-        if: steps.verify-diff.outputs.changed == 'true'
+      - name: Commit and push changes
+        if: env.changed == 'true'
         run: |
           git config --global user.name "github-actions[bot]"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
@@ -136,7 +124,7 @@ jobs:
           git push origin $BRANCH_NAME --force
 
       - name: Create pull request if not exists
-        if: steps.verify-diff.outputs.changed == 'true'
+        if: env.changed == 'true'
         env:
           GH_TOKEN: ${{ steps.generate-token.outputs.token }}
         run: |
@@ -150,7 +138,7 @@ jobs:
           fi
 
       - name: Approve pull request
-        if: steps.verify-diff.outputs.changed == 'true'
+        if: env.changed == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
@@ -158,9 +146,9 @@ jobs:
           if [ -n "$PR_NUMBER" ]; then
             gh pr review $PR_NUMBER --approve
           fi
-          
+
       - name: Re-approve pull request after update
-        if: steps.verify-diff.outputs.changed == 'true'
+        if: env.changed == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |

From 9756ac639b8769922065eecd2251df0b5319f2a9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:47:38 +0100
Subject: [PATCH 213/480] Update changelog-pr.yml

---
 .github/workflows/changelog-pr.yml | 36 +++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml
index 5637f5c4f..19e9a70ed 100644
--- a/.github/workflows/changelog-pr.yml
+++ b/.github/workflows/changelog-pr.yml
@@ -6,7 +6,7 @@ on:
   workflow_dispatch:
 
 jobs:
-  update-changelog:
+  update-changelog-pull-request:
     runs-on: ubuntu-latest
     env:
       CONFIG_PATH: .github/changelog-pr-config.json
@@ -28,12 +28,21 @@ jobs:
         with:
           fetch-depth: 0
 
-      - name: Get latest date in changelog
+      - name: Get latest dates in changelog
         run: |
-          LATEST_DATE=$(grep '^## [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' CHANGELOG.md | head -n 1 | awk '{print $2}')
+          # Extrahiere die neuesten zwei Daten aus dem Changelog
+          DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}')
+
+          LATEST_DATE=$(echo "$DATES" | sed -n '1p')
+          SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p')
           TODAY=$(date -u +%Y-%m-%d)
-          echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV
+
           echo "TODAY=$TODAY" >> $GITHUB_ENV
+          if [[ "$LATEST_DATE" == "$TODAY" ]]; then
+            echo "LATEST_DATE=$SECOND_LATEST_DATE" >> $GITHUB_ENV
+          else
+            echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV
+          fi
 
       - name: Get categorized pull requests
         id: get-categorized-prs
@@ -46,10 +55,10 @@ jobs:
             const configPath = path.resolve(process.env.CONFIG_PATH);
             const fileContent = await fs.readFile(configPath, 'utf-8');
             const changelogConfig = JSON.parse(fileContent);
-            const categorizedPRs = changelogConfig.map((obj) => ({ ...obj, notes: [] }));
+            const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [] }));
 
-            const latestDate = new Date(process.env.LATEST_DATE);
-            latestDate.setUTCHours(23,59,59,999);
+            const latestDateInChangelog = new Date(process.env.LATEST_DATE);
+            latestDateInChangelog.setUTCHours(23, 59, 59, 999);
 
             const { data: pulls } = await github.rest.pulls.list({
               owner: context.repo.owner,
@@ -63,7 +72,7 @@ jobs:
 
             pulls.filter(pr => 
               pr.merged_at && 
-              new Date(pr.merged_at) > latestDate &&
+              new Date(pr.merged_at) > latestDateInChangelog && 
               !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase()))
             ).forEach(pr => {
               const prLabels = pr.labels.map(label => label.name.toLowerCase());
@@ -87,11 +96,11 @@ jobs:
             const path = require('path');
 
             const today = process.env.TODAY;
-            const latestDate = process.env.LATEST_DATE;
+            const latestDateInChangelog = process.env.LATEST_DATE;
             const changelogPath = path.resolve('CHANGELOG.md');
             const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }};
 
-            let newReleaseNotes = `## ${today}\n\n`;
+            let newReleaseNotes = `## ${today}\n\n### Changes\n\n`;
             for (const { title, notes } of categorizedPRs) {
               if (notes.length > 0) {
                 newReleaseNotes += `### ${title}\n\n${notes.join("\n")}\n\n`;
@@ -101,9 +110,10 @@ jobs:
             const changelogContent = await fs.readFile(changelogPath, 'utf-8');
             const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`);
 
-            const regex = changelogIncludesTodaysReleaseNotes ? 
-              new RegExp(`## ${today}.*(?=## ${latestDate})`, "gs") :
-              new RegExp(`(?=## ${latestDate})`, "gs");
+            // Ersetze oder füge Release Notes ein
+            const regex = changelogIncludesTodaysReleaseNotes 
+              ? new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs") 
+              : new RegExp(`(?=## ${latestDateInChangelog})`, "gs");
 
             const newChangelogContent = changelogContent.replace(regex, newReleaseNotes);
             await fs.writeFile(changelogPath, newChangelogContent);

From d380fdd0ea2dff70d57ac5fa9ac778fd8f4dfd71 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:50:04 +0100
Subject: [PATCH 214/480] Update autolabeler.yml

---
 .github/workflows/autolabeler.yml | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml
index 2f66f3417..175572716 100644
--- a/.github/workflows/autolabeler.yml
+++ b/.github/workflows/autolabeler.yml
@@ -13,20 +13,26 @@ jobs:
     env:
       CONFIG_PATH: .github/autolabeler-config.json
     steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+
       - name: Label PR based on config rules
         uses: actions/github-script@v7
         with:
           script: |
             const fs = require('fs').promises;
-            const { minimatch } = require('minimatch');
+            const path = require('path');
 
-            const configPath = process.env.CONFIG_PATH;
+            // `require.resolve()` sorgt dafür, dass `minimatch` aus der GitHub-Umgebung geladen wird.
+            const minimatch = require(require.resolve("minimatch"));
+
+            const configPath = path.resolve(process.env.CONFIG_PATH);
             let config;
             try {
               const fileContent = await fs.readFile(configPath, 'utf-8');
               config = JSON.parse(fileContent);
             } catch (error) {
-              console.error(`❌ Issue while load config file: ${error.message}`);
+              console.error(`❌ Fehler beim Laden der Konfigurationsdatei: ${error.message}`);
               return;
             }
 

From e4ee00b403b66f7bdc5fd99e6bdf32a49c34b504 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:50:46 +0100
Subject: [PATCH 215/480] Update CHANGELOG.md (#2216)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ebf94055..7ba39c1da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,7 +19,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ## 2025-02-10
 
-### Changed
+### Changes
 
 ### 💥 Breaking Changes
 
@@ -40,6 +40,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🧰 Maintenance
 
+- [gh]: Improve Workflows, Templates, Handling [@MickLesk](https://github.com/MickLesk) ([#2214](https://github.com/community-scripts/ProxmoxVE/pull/2214))
 - [core] Fix app-header workflow and add API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2204](https://github.com/community-scripts/ProxmoxVE/pull/2204))
 - Fix: "read -p" does not support color formatting [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2191](https://github.com/community-scripts/ProxmoxVE/pull/2191))
 - [API] Add API to vms [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2021](https://github.com/community-scripts/ProxmoxVE/pull/2021))

From 4c7d82f4eba2860cb5d8b47025948c7e5b546cc9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:58:06 +0100
Subject: [PATCH 216/480] Website: Fix Zitadel Logo & Created-Date (#2217)

* Website: Fix Zitadel Logo & Created-Date

* Update autolabeler.yml

* Update autolabeler.yml
---
 .github/workflows/autolabeler.yml | 69 +++++++++++++------------------
 json/zitadel.json                 |  6 +--
 2 files changed, 31 insertions(+), 44 deletions(-)

diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml
index 175572716..660135f5c 100644
--- a/.github/workflows/autolabeler.yml
+++ b/.github/workflows/autolabeler.yml
@@ -16,60 +16,47 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v4
 
+      - name: Install minimatch
+        run: npm install minimatch
+
       - name: Label PR based on config rules
         uses: actions/github-script@v7
         with:
           script: |
             const fs = require('fs').promises;
             const path = require('path');
-
-            // `require.resolve()` sorgt dafür, dass `minimatch` aus der GitHub-Umgebung geladen wird.
-            const minimatch = require(require.resolve("minimatch"));
+            const { minimatch } = require('minimatch');
 
             const configPath = path.resolve(process.env.CONFIG_PATH);
-            let config;
-            try {
-              const fileContent = await fs.readFile(configPath, 'utf-8');
-              config = JSON.parse(fileContent);
-            } catch (error) {
-              console.error(`❌ Fehler beim Laden der Konfigurationsdatei: ${error.message}`);
-              return;
-            }
-
+            const fileContent = await fs.readFile(configPath, 'utf-8');
+            const autolabelerConfig = JSON.parse(fileContent);
+ 
             const prNumber = context.payload.pull_request.number;
-            const prFiles = (await github.rest.pulls.listFiles({
+            const prListFilesResponse = await github.rest.pulls.listFiles({
               owner: context.repo.owner,
               repo: context.repo.repo,
               pull_number: prNumber,
-            })).data;
+            });
+            const prFiles = prListFilesResponse.data;
 
-            let labelsToAdd = new Set();
+            for (const [label, rules] of Object.entries(autolabelerConfig)) {
+              const shouldAddLabel = prFiles.some((prFile) => {
+                return rules.some((rule) => {
+                  const isFileStatusMatch = rule.fileStatus ? rule.fileStatus === prFile.status : true;
+                  const isIncludeGlobMatch = rule.includeGlobs.some((glob) => minimatch(prFile.filename, glob));
+                  const isExcludeGlobMatch = rule.excludeGlobs.some((glob) => minimatch(prFile.filename, glob));
+                  
+                  return isFileStatusMatch && isIncludeGlobMatch && !isExcludeGlobMatch;
+                });
+              });
 
-            for (const [label, rules] of Object.entries(config)) {
-              if (prFiles.some(prFile =>
-                rules.some(rule =>
-                  (!rule.fileStatus || rule.fileStatus === prFile.status) &&
-                  rule.includeGlobs.some(glob => minimatch(prFile.filename, glob)) &&
-                  !rule.excludeGlobs.some(glob => minimatch(prFile.filename, glob))
-                )
-              )) {
-                labelsToAdd.add(label);
+              if (shouldAddLabel) {
+                console.log(`Adding label ${label} to PR ${prNumber}`);
+                await github.rest.issues.addLabels({
+                  owner: context.repo.owner,
+                  repo: context.repo.repo,
+                  issue_number: prNumber,
+                  labels: [label],
+                });
               }
             }
-
-            const existingLabels = new Set((await github.rest.issues.listLabelsOnIssue({
-              owner: context.repo.owner,
-              repo: context.repo.repo,
-              issue_number: prNumber,
-            })).data.map(l => l.name));
-
-            labelsToAdd = [...labelsToAdd].filter(label => !existingLabels.has(label));
-
-            if (labelsToAdd.length > 0) {
-              await github.rest.issues.addLabels({
-                owner: context.repo.owner,
-                repo: context.repo.repo,
-                issue_number: prNumber,
-                labels: labelsToAdd,
-              });
-            }
diff --git a/json/zitadel.json b/json/zitadel.json
index b2cec903b..8a147db3b 100644
--- a/json/zitadel.json
+++ b/json/zitadel.json
@@ -4,14 +4,14 @@
     "categories": [
         6
     ],
-    "date_created": "2025-02-07",
+    "date_created": "2025-02-10",
     "type": "ct",
     "updateable": true,
     "privileged": false,
     "interface_port": 8080,
     "documentation": "https://zitadel.com/docs/guides/overview",
     "website": "https://zitadel.com",
-    "logo": "https://zitadel.com/zitadel-logo-dark.svg",
+    "logo": "https://raw.githubusercontent.com/zitadel/zitadel/refs/heads/main/console/src/assets/icons/android-chrome-512x512.png",
     "description": "Zitadel is an open-source identity and access management (IAM) solution designed to provide secure authentication, authorization, and user management for modern applications and services. Built with a focus on flexibility, scalability, and security, Zitadel offers a comprehensive set of features for developers and organizations looking to implement robust identity management.",
     "install_methods": [
         {
@@ -40,4 +40,4 @@
             "type": "info"
         }
     ]
-}
\ No newline at end of file
+}

From 0c024515f19075424c28a35706b5455033202677 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 15:02:00 +0100
Subject: [PATCH 217/480] Update CHANGELOG.md (#2218)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ba39c1da..f63bf005c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -35,6 +35,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🌐 Website
 
+- Website: Fix Zitadel Logo & Created-Date [@MickLesk](https://github.com/MickLesk) ([#2217](https://github.com/community-scripts/ProxmoxVE/pull/2217))
 - Fixed URL typo zerotier-one.json [@Divaksh](https://github.com/Divaksh) ([#2206](https://github.com/community-scripts/ProxmoxVE/pull/2206))
 - evcc.json Clarify the config file location [@mvdw](https://github.com/mvdw) ([#2193](https://github.com/community-scripts/ProxmoxVE/pull/2193))
 

From 1c808b95a851ed31312af0785ad789ada3a5ed84 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 15:45:15 +0100
Subject: [PATCH 218/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index 644ee88cc..d5b06bbda 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -86,13 +86,13 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
         filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
-        filebrowser config set -a '0.0.0.0' --auth.method=noauth &>/dev/null
+        filebrowser config set -a '0.0.0.0' --auth.method=noauth --database /var/lib/filebrowser/filebrowser.db &>/dev/null
         msg_ok "No Authentication configured"
     else
         msg_info "Setting up default authentication"
         filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
-        filebrowser config set -a '0.0.0.0' &>/dev/null
-        filebrowser users add admin helper-scripts.com --perm.admin &>/dev/null
+        filebrowser config set -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
+        filebrowser users add admin helper-scripts.com --perm.admin --database /var/lib/filebrowser/filebrowser.db &>/dev/null
         msg_ok "Default authentication configured (admin:helper-scripts.com)"
     fi
 

From a1dd57ded63f71db6581787f5cb7f1dec91e90ba Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 15:46:10 +0100
Subject: [PATCH 219/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index d5b06bbda..df49b9e84 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -26,7 +26,7 @@ INFO="${BL}ℹ️${CL}"
 APP="FileBrowser"
 INSTALL_PATH="/usr/local/bin/filebrowser"
 SERVICE_PATH="/etc/systemd/system/filebrowser.service"
-DB_PATH="/root/filebrowser.db"
+DB_PATH="/var/lib/filebrowser/filebrowser.db"
 IP=$(hostname -I | awk '{print $1}')
 header_info
 
@@ -52,6 +52,7 @@ if [ -f "$INSTALL_PATH" ]; then
         msg_info "Uninstalling ${APP}"
         systemctl disable -q --now filebrowser.service
         rm -f "$INSTALL_PATH" "$DB_PATH" "$SERVICE_PATH"
+        
         msg_ok "${APP} has been uninstalled."
         exit 0
     fi

From 865e6fd3d78652f1cef47bde709f653427cee516 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 16:40:51 +0100
Subject: [PATCH 220/480] Feature: Add optional Port for Filebrowser (#2224)

---
 misc/filebrowser.sh | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index df49b9e84..e5448db6b 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -28,6 +28,8 @@ INSTALL_PATH="/usr/local/bin/filebrowser"
 SERVICE_PATH="/etc/systemd/system/filebrowser.service"
 DB_PATH="/var/lib/filebrowser/filebrowser.db"
 IP=$(hostname -I | awk '{print $1}')
+DEFAULT_PORT=8080
+
 header_info
 
 function msg_info() {
@@ -52,7 +54,6 @@ if [ -f "$INSTALL_PATH" ]; then
         msg_info "Uninstalling ${APP}"
         systemctl disable -q --now filebrowser.service
         rm -f "$INSTALL_PATH" "$DB_PATH" "$SERVICE_PATH"
-        
         msg_ok "${APP} has been uninstalled."
         exit 0
     fi
@@ -70,6 +71,9 @@ if [ -f "$INSTALL_PATH" ]; then
 fi
 
 echo -e "${YW}⚠️ ${APP} is not installed.${CL}"
+read -r -p "Enter port number (Default: ${DEFAULT_PORT}): " PORT
+PORT=${PORT:-$DEFAULT_PORT}
+
 read -r -p "Would you like to install ${APP}? (y/n): " install_prompt
 if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     msg_info "Installing ${APP}"
@@ -86,19 +90,19 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
-        filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
-        filebrowser config set -a '0.0.0.0' --auth.method=noauth --database /var/lib/filebrowser/filebrowser.db &>/dev/null
+        filebrowser config init -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        filebrowser config set -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
         msg_ok "No Authentication configured"
     else
         msg_info "Setting up default authentication"
-        filebrowser config init -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
-        filebrowser config set -a '0.0.0.0' --database /var/lib/filebrowser/filebrowser.db &>/dev/null
-        filebrowser users add admin helper-scripts.com --perm.admin --database /var/lib/filebrowser/filebrowser.db &>/dev/null
+        filebrowser config init -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        filebrowser config set -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        filebrowser users add admin helper-scripts.com --perm.admin --database "$DB_PATH" &>/dev/null
         msg_ok "Default authentication configured (admin:helper-scripts.com)"
     fi
 
     msg_info "Creating service"
-    cat </etc/systemd/system/filebrowser.service
+    cat < "$SERVICE_PATH"
 [Unit]
 Description=Filebrowser
 After=network-online.target
@@ -106,7 +110,7 @@ After=network-online.target
 [Service]
 User=root
 WorkingDirectory=/var/lib/filebrowser/
-ExecStart=/usr/local/bin/filebrowser -r / --database /var/lib/filebrowser/filebrowser.db
+ExecStart=/usr/local/bin/filebrowser -r / --database "$DB_PATH" -p "$PORT"
 Restart=always
 
 [Install]
@@ -115,7 +119,7 @@ EOF
     systemctl enable -q --now filebrowser.service
     msg_ok "Service created successfully"
 
-    echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:8080${CL}"
+    echo -e "${CM} ${GN}${APP} is reachable at: ${BL}http://$IP:$PORT${CL}"
 else
     echo -e "${YW}⚠️ Installation skipped. Exiting.${CL}"
     exit 0

From 10159e934feab2514a7d9c50e573603c65cd6c6e Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 16:50:39 +0100
Subject: [PATCH 221/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index e5448db6b..777b5c09a 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -91,6 +91,8 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
         filebrowser config init -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        filebrowser config set -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        filebrowser config init -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
         filebrowser config set -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
         msg_ok "No Authentication configured"
     else

From e4f756ce73d527be0f783837abf9e37f997fefa9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 17:01:45 +0100
Subject: [PATCH 222/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index 777b5c09a..b8be0b191 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -90,10 +90,7 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
-        filebrowser config init -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
-        filebrowser config set -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
         filebrowser config init -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
-        filebrowser config set -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
         msg_ok "No Authentication configured"
     else
         msg_info "Setting up default authentication"

From 90473b7b1001e1fd4b0b53d0946c12cc86b34a6e Mon Sep 17 00:00:00 2001
From: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
Date: Mon, 10 Feb 2025 17:38:18 +0100
Subject: [PATCH 223/480] Fix: Crafty-Controller java versions and set default
 (#2199)

---
 install/crafty-controller-install.sh | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh
index 88a0fe1a1..5364f7dbb 100644
--- a/install/crafty-controller-install.sh
+++ b/install/crafty-controller-install.sh
@@ -24,12 +24,21 @@ $STD apt-get install -y \
   apt-transport-https \
   coreutils \
   software-properties-common \
-  openjdk-17-jdk 
-wget -q https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb
-$STD sudo dpkg -i jdk-21_linux-x64_bin.deb
-rm -f jdk-21_linux-x64_bin.deb
 msg_ok "Installed Dependencies"
 
+msg_info "Setting up TermurinJDK"
+wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
+$STD echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | $STD tee /etc/apt/sources.list.d/adoptium.list
+$STD apt-get update
+$STD apt-get install -y \
+  temurin-8-jre \
+  temurin-11-jre \
+  temurin-17-jre \
+  temurin-21-jre \
+  temurin-23-jre
+sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java
+msg_ok "Installed TermurinJDK"
+
 msg_info "Setup Python3"
 $STD apt-get install -y \
   python3 \
@@ -94,4 +103,4 @@ msg_info "Cleaning up"
 rm -rf /opt/crafty-4-v${RELEASE}.zip
 $STD apt-get -y autoremove
 $STD apt-get -y autoclean
-msg_ok "Cleaned"
\ No newline at end of file
+msg_ok "Cleaned"

From 4d996c95e0b9becce40db25e2e004c3b05ce77d5 Mon Sep 17 00:00:00 2001
From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
Date: Mon, 10 Feb 2025 17:39:14 +0100
Subject: [PATCH 224/480] New Script: FreshRSS (#2226)

---
 ct/freshrss.sh              | 46 ++++++++++++++++++++
 install/freshrss-install.sh | 84 +++++++++++++++++++++++++++++++++++++
 json/freshrss.json          | 39 +++++++++++++++++
 3 files changed, 169 insertions(+)
 create mode 100644 ct/freshrss.sh
 create mode 100644 install/freshrss-install.sh
 create mode 100644 json/freshrss.json

diff --git a/ct/freshrss.sh b/ct/freshrss.sh
new file mode 100644
index 000000000..020c45b63
--- /dev/null
+++ b/ct/freshrss.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: bvdberg01
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/FreshRSS/FreshRSS
+
+# App Default Values
+APP="FreshRSS"
+var_tags="RSS"
+var_cpu="2"
+var_ram="1024"
+var_disk="4"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+    header_info
+    check_container_storage
+    check_container_resources
+    if [[ ! -d /opt/freshrss ]]; then
+        msg_error "No ${APP} Installation Found!"
+        exit
+    fi
+    msg_error "FreshRSS should be updated via the user interface."
+    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}${CL}"
diff --git a/install/freshrss-install.sh b/install/freshrss-install.sh
new file mode 100644
index 000000000..8a6a1135c
--- /dev/null
+++ b/install/freshrss-install.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: bvdberg01
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc \
+  postgresql \
+  apache2 \
+  php-{curl,dom,json,ctype,pgsql,gmp,mbstring,iconv,zip} \
+  libapache2-mod-php
+msg_ok "Installed Dependencies"
+
+
+msg_info "Setting up PostgreSQL"
+DB_NAME=freshrss
+DB_USER=freshrss
+DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
+$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
+$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
+{
+echo "FreshRSS Credentials"
+echo "FreshRSS Database User: $DB_USER"
+echo "FreshRSS Database Password: $DB_PASS"
+echo "FreshRSS Database Name: $DB_NAME"
+} >> ~/freshrss.creds
+msg_ok "Set up PostgreSQL"
+
+msg_info "Installing FreshRSS"
+RELEASE=$(curl -s https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
+cd /opt
+wget -q "https://github.com/FreshRSS/FreshRSS/archive/refs/tags/${RELEASE}.zip"
+unzip -q "${RELEASE}.zip"
+mv "/opt/FreshRSS-${RELEASE}" /opt/freshrss
+cd /opt/freshrss
+chown -R www-data:www-data /opt/freshrss
+chmod -R g+rX /opt/freshrss
+chmod -R g+w /opt/freshrss/data/
+msg_ok "Installed FreshRSS"
+
+msg_info "Creating Service"
+cat </etc/apache2/sites-available/freshrss.conf
+
+    ServerName freshrss
+    DocumentRoot /opt/freshrss/p
+
+    
+        Options FollowSymLinks
+        AllowOverride All
+        Require all granted
+    
+
+    ErrorLog /var/log/apache2/freshrss_error.log
+    CustomLog /var/log/apache2/freshrss_access.log combined
+
+    AllowEncodedSlashes On
+
+EOF
+$STD a2ensite freshrss
+$STD a2enmod rewrite
+$STD a2dissite 000-default.conf
+$STD systemctl reload apache2
+msg_ok "Created Service"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -rf "/opt/${RELEASE}.zip"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/freshrss.json b/json/freshrss.json
new file mode 100644
index 000000000..de1aa28a4
--- /dev/null
+++ b/json/freshrss.json
@@ -0,0 +1,39 @@
+{
+  "name": "FreshRSS",
+  "slug": "freshrss",
+  "categories": [
+    12
+  ],
+  "date_created": "2025-02-10",
+  "type": "ct",
+  "updateable": true,
+  "privileged": false,
+  "interface_port": 80,
+  "documentation": "https://freshrss.github.io/FreshRSS/en/",
+  "website": "https://freshrss.org/",
+  "logo": "https://freshrss.org/images/icon.svg",
+  "description": "FreshRSS is a self-hosted RSS and Atom feed aggregator that lets users collect, organize, and read from multiple sources in one place. It is lightweight, easy to work with, powerful, and customizable.",
+  "install_methods": [
+    {
+      "type": "default",
+      "script": "ct/freshrss.sh",
+      "resources": {
+        "cpu": 2,
+        "ram": 1024,
+        "hdd": 4,
+        "os": "Debian",
+        "version": "12"
+      }
+    }
+  ],
+  "default_credentials": {
+    "username": null,
+    "password": null
+  },
+  "notes": [
+    {
+      "text": "Database credentials: `cat ~/freshrss.creds`",
+      "type": "info"
+    }
+  ]
+}

From 2c32b7fa94896ce06d11eb787d8ca2a2314873ad Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 18:17:31 +0100
Subject: [PATCH 225/480] Update .app files (#2230)

Co-authored-by: GitHub Actions 
---
 ct/headers/freshrss | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/freshrss

diff --git a/ct/headers/freshrss b/ct/headers/freshrss
new file mode 100644
index 000000000..4c66d21c8
--- /dev/null
+++ b/ct/headers/freshrss
@@ -0,0 +1,6 @@
+    ______               __    ____  __________
+   / ____/_______  _____/ /_  / __ \/ ___/ ___/
+  / /_  / ___/ _ \/ ___/ __ \/ /_/ /\__ \\__ \ 
+ / __/ / /  /  __(__  ) / / / _, _/___/ /__/ / 
+/_/   /_/   \___/____/_/ /_/_/ |_|/____/____/  
+                                               

From d47bd677da2df189967e84ae0da582b323c8151d Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 18:18:45 +0100
Subject: [PATCH 226/480] Update CHANGELOG.md (#2227)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index f63bf005c..c00c7b79c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,10 +27,13 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### ✨ New Scripts
 
+- New Script: FreshRSS [@bvdberg01](https://github.com/bvdberg01) ([#2226](https://github.com/community-scripts/ProxmoxVE/pull/2226))
 - New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))
 
 ### 🚀 Updated Scripts
 
+- Fix: Crafty-Controller java versions and set default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2199](https://github.com/community-scripts/ProxmoxVE/pull/2199))
+- Feature: Add optional Port for Filebrowser [@MickLesk](https://github.com/MickLesk) ([#2224](https://github.com/community-scripts/ProxmoxVE/pull/2224))
 - [core] Prevent double spinner [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2203](https://github.com/community-scripts/ProxmoxVE/pull/2203))
 
 ### 🌐 Website

From f82eb87476213896e911e3a364ca4a3d4b2f6643 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 19:59:00 +0100
Subject: [PATCH 227/480] Quickfix: Crafty-Controller remove unnecessary \
 (#2233)

---
 install/crafty-controller-install.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh
index 5364f7dbb..093afee29 100644
--- a/install/crafty-controller-install.sh
+++ b/install/crafty-controller-install.sh
@@ -23,7 +23,7 @@ $STD apt-get install -y \
   lsb-release \
   apt-transport-https \
   coreutils \
-  software-properties-common \
+  software-properties-common
 msg_ok "Installed Dependencies"
 
 msg_info "Setting up TermurinJDK"

From b81b9c574be36ee5dbe451a3d3ba8858687d1891 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Mon, 10 Feb 2025 19:59:23 +0100
Subject: [PATCH 228/480] Feature: Automatic Deletion of choosen LXC's
 (lxc-delete.sh) (#2228)

* Feature: Automatic Deletion of choosen LXC's (lxc-delete.sh)

* fix appname

* fix header
---
 misc/lxc-delete.sh | 62 ++++++++++++++++++++++------------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/misc/lxc-delete.sh b/misc/lxc-delete.sh
index 2e76d5963..df9685de0 100644
--- a/misc/lxc-delete.sh
+++ b/misc/lxc-delete.sh
@@ -7,12 +7,12 @@
 function header_info {
   clear
   cat <<"EOF"
-    ____  ____  ____ _  __ __  _______ _  __    __   _  ________   ____  ________    __________________
-   / __ \/ __ \/ __ \ |/ //  |/  / __ \ |/ /   / /  | |/ / ____/  / __ \/ ____/ /   / ____/_  __/ ____/
-  / /_/ / /_/ / / / /   // /|_/ / / / /   /   / /   |   / /      / / / / __/ / /   / __/   / / / __/   
- / ____/ _, _/ /_/ /   |/ /  / / /_/ /   |   / /___/   / /___   / /_/ / /___/ /___/ /___  / / / /___   
-/_/   /_/ |_|\____/_/|_/_/  /_/\____/_/|_|  /_____/_/|_\____/  /_____/_____/_____/_____/ /_/ /_____/   
-                                                                                                       
+    ____                                          __   _  ________   ____       __     __     
+   / __ \_________  _  ______ ___  ____  _  __   / /  | |/ / ____/  / __ \___  / /__  / /____ 
+  / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/  / /   |   / /      / / / / _ \/ / _ \/ __/ _ \
+ / ____/ /  / /_/ />    <   / /___/   / /___   / /_/ /  __/ /  __/ /_/  __/
+/_/   /_/   \____/_/|_/_/ /_/ /_/\____/_/|_|  /_____/_/|_\____/  /_____/\___/_/\___/\__/\___/ 
+                                                                                              
 EOF
 }
 
@@ -33,29 +33,26 @@ set -eEuo pipefail
 YW=$(echo "\033[33m")
 BL=$(echo "\033[36m")
 RD=$(echo "\033[01;31m")
-CM='\xE2\x9C\x94\033'
 GN=$(echo "\033[1;92m")
 CL=$(echo "\033[m")
+TAB="  "
+CM="${TAB}✔️${TAB}${CL}"
 
 header_info
 echo "Loading..."
-whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE LXC Deletion" --yesno "This Will Delete LXC Containers. Proceed?" 10 58 || exit
+whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE LXC Deletion" --yesno "This will delete LXC containers. Proceed?" 10 58 || exit
 
 NODE=$(hostname)
-
-# Get list of containers with ID and hostname
 containers=$(pct list | tail -n +2 | awk '{print $0 " " $4}')
 
-# Exit if no containers are found
 if [ -z "$containers" ]; then
-    whiptail --title "LXC Container Delete" --msgbox "There are no LXC Container available!" 10 60
+    whiptail --title "LXC Container Delete" --msgbox "No LXC containers available!" 10 60
     exit 1
 fi
 
 menu_items=()
 FORMAT="%-10s %-15s %-10s"
 
-# Format container data for menu display
 while read -r container; do
     container_id=$(echo $container | awk '{print $1}')
     container_name=$(echo $container | awk '{print $2}')
@@ -64,49 +61,50 @@ while read -r container; do
     menu_items+=("$container_id" "$formatted_line" "OFF")
 done <<< "$containers"
 
-# Display selection menu
 CHOICES=$(whiptail --title "LXC Container Delete" \
-                   --checklist "Choose LXC container to delete:" 25 60 13 \
+                   --checklist "Select LXC containers to delete:" 25 60 13 \
                    "${menu_items[@]}" 3>&2 2>&1 1>&3)
 
 if [ -z "$CHOICES" ]; then
     whiptail --title "LXC Container Delete" \
-             --msgbox "No containers have been selected!" 10 60
+             --msgbox "No containers selected!" 10 60
     exit 1
 fi
 
-# Process selected containers
+read -p "Delete containers manually or automatically? (Default: manual) m/a: " DELETE_MODE
+DELETE_MODE=${DELETE_MODE:-m}
+
 selected_ids=$(echo "$CHOICES" | tr -d '"' | tr -s ' ' '\n')
 
 for container_id in $selected_ids; do
     status=$(pct status $container_id)
 
-    # Stop container if running
     if [ "$status" == "status: running" ]; then
-        echo -e "${BL}[Info]${GN} Stop container $container_id...${CL}"
+        echo -e "${BL}[Info]${GN} Stopping container $container_id...${CL}"
         pct stop $container_id &
         sleep 5
         echo -e "${BL}[Info]${GN} Container $container_id stopped.${CL}"
     fi
 
-    # Confirm deletion
-    read -p "Are you sure you want to delete Container $container_id? (y/N): " CONFIRM
-    if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
-        echo -e "${BL}[Info]${GN} Deleting container $container_id...${CL}"
+    if [[ "$DELETE_MODE" == "a" ]]; then
+        echo -e "${BL}[Info]${GN} Automatically deleting container $container_id...${CL}"
         pct destroy "$container_id" -f &
         pid=$!
         spinner $pid
-        if [ $? -eq 0 ]; then
-            echo "Container $container_id was successfully deleted."
-        else
-            whiptail --title "Error" --msgbox "Error deleting container $container_id." 10 60
-        fi
-    elif [[ "$CONFIRM" =~ ^[Nn]$ ]]; then
-        echo -e "${BL}[Info]${RD} Skipping container $container_id...${CL}"
+        [ $? -eq 0 ] && echo "Container $container_id deleted." || whiptail --title "Error" --msgbox "Failed to delete container $container_id." 10 60
     else
-        echo -e "${RD}[Error]${CL} Invalid input, skipping container $container_id."
+        read -p "Delete container $container_id? (y/N): " CONFIRM
+        if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
+            echo -e "${BL}[Info]${GN} Deleting container $container_id...${CL}"
+            pct destroy "$container_id" -f &
+            pid=$!
+            spinner $pid
+            [ $? -eq 0 ] && echo "Container $container_id deleted." || whiptail --title "Error" --msgbox "Failed to delete container $container_id." 10 60
+        else
+            echo -e "${BL}[Info]${RD} Skipping container $container_id...${CL}"
+        fi
     fi
 done
 
 header_info
-echo -e "${GN}The deletion process has been completed.${CL}\n"
+echo -e "${GN}Deletion process completed.${CL}\n"

From dff4e735f0db87162ede533e1600c53391d3ffda Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 20:01:15 +0100
Subject: [PATCH 229/480] Update CHANGELOG.md (#2234)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c00c7b79c..6cb26ced2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,6 +32,8 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
+- Feature: Automatic Deletion of choosen LXC's (lxc-delete.sh) [@MickLesk](https://github.com/MickLesk) ([#2228](https://github.com/community-scripts/ProxmoxVE/pull/2228))
+- Quickfix: Crafty-Controller remove unnecessary \ [@MickLesk](https://github.com/MickLesk) ([#2233](https://github.com/community-scripts/ProxmoxVE/pull/2233))
 - Fix: Crafty-Controller java versions and set default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2199](https://github.com/community-scripts/ProxmoxVE/pull/2199))
 - Feature: Add optional Port for Filebrowser [@MickLesk](https://github.com/MickLesk) ([#2224](https://github.com/community-scripts/ProxmoxVE/pull/2224))
 - [core] Prevent double spinner [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2203](https://github.com/community-scripts/ProxmoxVE/pull/2203))

From 85bf9f319b92683b42fe4e115604614fa62f4a0f Mon Sep 17 00:00:00 2001
From: Thorsten 
Date: Mon, 10 Feb 2025 23:43:44 +0100
Subject: [PATCH 230/480] New Script: Proxmox Mail Gateway (#1906)

* Proxmox Mail Gateway LXC

* improvements

* renamed to long name and added install check

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.json

* Update proxmox-mail-gateway-install.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway.sh

* Update proxmox-mail-gateway-install.sh

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
---
 ct/proxmox-mail-gateway.sh              | 43 +++++++++++++++++++++++++
 install/proxmox-mail-gateway-install.sh | 36 +++++++++++++++++++++
 json/proxmox-mail-gateway.json          | 39 ++++++++++++++++++++++
 3 files changed, 118 insertions(+)
 create mode 100644 ct/proxmox-mail-gateway.sh
 create mode 100644 install/proxmox-mail-gateway-install.sh
 create mode 100644 json/proxmox-mail-gateway.json

diff --git a/ct/proxmox-mail-gateway.sh b/ct/proxmox-mail-gateway.sh
new file mode 100644
index 000000000..7aba78ed3
--- /dev/null
+++ b/ct/proxmox-mail-gateway.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: thost96 (thost96)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://www.proxmox.com/en/products/proxmox-mail-gateway
+
+APP="Proxmox-Mail-Gateway"
+var_tags="mail"
+var_cpu="2"
+var_ram="4096"
+var_disk="10"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+header_info "$APP"
+base_settings
+
+variables
+color
+catch_errors
+
+function update_script() {
+  header_info
+  check_container_storage
+  check_container_resources
+  if [[ ! -e /usr/bin/pmgproxy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi
+  msg_info "Updating ${APP}"
+  apt-get update &>/dev/null
+  apt-get -y upgrade &>/dev/null
+  msg_ok "Updated ${APP}"
+  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}https://${IP}:8006/${CL}"
diff --git a/install/proxmox-mail-gateway-install.sh b/install/proxmox-mail-gateway-install.sh
new file mode 100644
index 000000000..0b0ef63de
--- /dev/null
+++ b/install/proxmox-mail-gateway-install.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: thost96 (thost96)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+
+source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get -y install \
+  curl \
+  sudo \
+  mc \
+  wget
+msg_ok "Installed Dependencies"
+
+msg_info "Installing Proxmox Mail Gateway"
+wget -q https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
+echo "deb http://download.proxmox.com/debian/pmg bookworm pmg-no-subscription" > /etc/apt/sources.list.d/pmg.list
+$STD apt-get update 
+$STD apt-get -y install proxmox-mailgateway-container
+msg_ok "Installed Proxmox Mail Gateway"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/proxmox-mail-gateway.json b/json/proxmox-mail-gateway.json
new file mode 100644
index 000000000..3028dbd20
--- /dev/null
+++ b/json/proxmox-mail-gateway.json
@@ -0,0 +1,39 @@
+{
+    "name": "Promox Mail Gateway",
+    "slug": "proxmox-mail-gateway",
+    "categories": [
+            1
+    ],
+    "date_created": "2025-02-04",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 8006,
+    "documentation": "https://pmg.proxmox.com/pmg-docs/pmg-admin-guide.html",
+    "website": "https://www.proxmox.com/en/products/proxmox-mail-gateway/overview",
+    "logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/proxmoxve/icon.png",
+    "description": "Proxmox Mail Gateway is the leading open-source email security solution helping you to protect your mail server against all email threats from the moment they emerge.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/proxmox-mail-gateway.sh",
+            "resources": {
+                "cpu": 2,
+                "ram": 4096,
+                "hdd": 10,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": "root",
+        "password": null
+    },
+    "notes": [
+        {
+        "text": "Set a root password if using autologin. This will be the PMG password. `passwd root`",
+        "type": "warning"
+        }
+    ]
+}

From 514ff1fbe7a60c0199046ba04c287b64be573afe Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 23:47:13 +0100
Subject: [PATCH 231/480] Update .app files (#2239)

Co-authored-by: GitHub Actions 
---
 ct/headers/proxmox-mail-gateway | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/proxmox-mail-gateway

diff --git a/ct/headers/proxmox-mail-gateway b/ct/headers/proxmox-mail-gateway
new file mode 100644
index 000000000..9aab2dae4
--- /dev/null
+++ b/ct/headers/proxmox-mail-gateway
@@ -0,0 +1,6 @@
+    ____                                             __  ___      _ __      ______      __                          
+   / __ \_________  _  ______ ___  ____  _  __      /  |/  /___ _(_) /     / ____/___ _/ /____ _      ______ ___  __
+  / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/_____/ /|_/ / __ `/ / /_____/ / __/ __ `/ __/ _ \ | /| / / __ `/ / / /
+ / ____/ /  / /_/ />    
Date: Mon, 10 Feb 2025 23:48:48 +0100
Subject: [PATCH 232/480] Update CHANGELOG.md (#2238)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6cb26ced2..9bb4ec787 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### ✨ New Scripts
 
+- New Script: Proxmox Mail Gateway [@thost96](https://github.com/thost96) ([#1906](https://github.com/community-scripts/ProxmoxVE/pull/1906))
 - New Script: FreshRSS [@bvdberg01](https://github.com/bvdberg01) ([#2226](https://github.com/community-scripts/ProxmoxVE/pull/2226))
 - New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))
 

From 6a775f6026e44c5031d2189634e5500709a49cb0 Mon Sep 17 00:00:00 2001
From: Andy Grunwald 
Date: Mon, 10 Feb 2025 23:57:29 +0100
Subject: [PATCH 233/480] New Script: Prometheus Paperless-NGX Exporter (#2153)

* New Script: Prometheus Paperless NGX Exporter

* Temp: Change import URLs to test fork

* Prometheus Paperless NGX Exporter: Fix double `=`  in systemd unit file

* Revert "Temp: Change import URLs to test fork"

This reverts commit f78d295c0233cb3ca358d9c8067fb500bfda58b3.

* Fix script in `install_methods`
---
 ct/prometheus-paperless-ngx-exporter.sh       | 67 +++++++++++++++++++
 ...ometheus-paperless-ngx-exporter-install.sh | 64 ++++++++++++++++++
 json/prometheus-paperless-ngx-exporter.json   | 43 ++++++++++++
 3 files changed, 174 insertions(+)
 create mode 100755 ct/prometheus-paperless-ngx-exporter.sh
 create mode 100755 install/prometheus-paperless-ngx-exporter-install.sh
 create mode 100644 json/prometheus-paperless-ngx-exporter.json

diff --git a/ct/prometheus-paperless-ngx-exporter.sh b/ct/prometheus-paperless-ngx-exporter.sh
new file mode 100755
index 000000000..22ffec882
--- /dev/null
+++ b/ct/prometheus-paperless-ngx-exporter.sh
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: Andy Grunwald (andygrunwald)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/hansmi/prometheus-paperless-exporter
+
+# App Default Values
+APP="Prometheus-Paperless-NGX-Exporter"
+var_tags="monitoring;alerting"
+var_cpu="1"
+var_ram="256"
+var_disk="2"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+# App Output & Base Settings
+header_info "$APP"
+base_settings
+
+# Core
+variables
+color
+catch_errors
+
+function update_script() {
+  header_info
+  check_container_storage
+  check_container_resources
+  if [[ ! -f /etc/systemd/system/prometheus-paperless-ngx-exporter.service ]]; then
+    msg_error "No ${APP} Installation Found!"
+    exit
+  fi
+  RELEASE=$(curl -s https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+  if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
+    msg_info "Stopping ${APP}"
+    systemctl stop prometheus-paperless-ngx-exporter
+    msg_ok "Stopped ${APP}"
+
+    msg_info "Updating ${APP} to v${RELEASE}"
+    cd /opt
+    wget -q https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+    tar -xf prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+    cp -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/
+    rm -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/ prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+    echo "${RELEASE}" >/opt/${APP}_version.txt
+    msg_ok "Updated ${APP} to v${RELEASE}"
+
+    msg_info "Starting ${APP}"
+    systemctl start prometheus-paperless-ngx-exporter
+    msg_ok "Started ${APP}"
+    msg_ok "Updated Successfully"
+  else
+    msg_ok "No update required. ${APP} is already at v${RELEASE}"
+  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}:8081/metrics${CL}"
\ No newline at end of file
diff --git a/install/prometheus-paperless-ngx-exporter-install.sh b/install/prometheus-paperless-ngx-exporter-install.sh
new file mode 100755
index 000000000..bb21e802a
--- /dev/null
+++ b/install/prometheus-paperless-ngx-exporter-install.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: Andy Grunwald (andygrunwald)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/hansmi/prometheus-paperless-exporter
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc
+msg_ok "Installed Dependencies"
+
+msg_info "Installing Prometheus Paperless NGX Exporter"
+RELEASE=$(curl -s https://api.github.com/repos/hansmi/prometheus-paperless-exporter/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+wget -q https://github.com/hansmi/prometheus-paperless-exporter/releases/download/v${RELEASE}/prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+tar -xf prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+mv prometheus-paperless-exporter_${RELEASE}_linux_amd64/prometheus-paperless-exporter /usr/local/bin/
+mkdir -p /etc/prometheus-paperless-ngx-exporter
+cat < /etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
+SECRET_AUTH_TOKEN
+EOF
+echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
+msg_ok "Installed Prometheus Paperless NGX Exporter"
+
+msg_info "Creating Service"
+cat </etc/systemd/system/prometheus-paperless-ngx-exporter.service
+[Unit]
+Description=Prometheus Paperless NGX Exporter
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+User=root
+Restart=always
+Type=simple
+ExecStart=/usr/local/bin/prometheus-paperless-exporter \
+    --paperless_url=http://paperless.example.org \
+    --paperless_auth_token_file=/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
+ExecReload=/bin/kill -HUP \$MAINPID
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q --now prometheus-paperless-ngx-exporter
+msg_ok "Created Service"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+rm -rf prometheus-paperless-exporter_${RELEASE}_linux_amd64/ prometheus-paperless-exporter_${RELEASE}_linux_amd64.tar.gz
+msg_ok "Cleaned"
diff --git a/json/prometheus-paperless-ngx-exporter.json b/json/prometheus-paperless-ngx-exporter.json
new file mode 100644
index 000000000..36d06cd4c
--- /dev/null
+++ b/json/prometheus-paperless-ngx-exporter.json
@@ -0,0 +1,43 @@
+{
+    "name": "Prometheus Paperless NGX Exporter",
+    "slug": "prometheus-paperless-ngx-exporter",
+    "categories": [
+        9
+    ],
+    "date_created": "2025-02-07",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 3000,
+    "documentation": null,
+    "website": "https://github.com/hansmi/prometheus-paperless-exporter",
+    "logo": "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/resources/logo/web/svg/square.svg",
+    "description": "Prometheus metrics exporter for Paperless-NGX, a document management system transforming physical documents into a searchable online archive. The exporter relies on Paperless' REST API.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/prometheus-paperless-ngx-exporter.sh",
+            "resources": {
+                "cpu": 1,
+                "ram": 256,
+                "hdd": 2,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": [
+        {
+            "text": "Please adjust the Paperless URL in the systemd unit file: /etc/systemd/system/prometheus-paperless-ngx-exporter.service",
+            "type": "info"
+        },
+        {
+            "text": "Please adjust the Paperless authentication token in the configuration file: /etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file",
+            "type": "info"
+        }
+    ]
+}

From 1731f5274bc4033b263b9bbe87bee4c0f883f3bf Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Mon, 10 Feb 2025 23:59:47 +0100
Subject: [PATCH 234/480] Update .app files (#2241)

Co-authored-by: GitHub Actions 
---
 ct/headers/prometheus-paperless-ngx-exporter | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/prometheus-paperless-ngx-exporter

diff --git a/ct/headers/prometheus-paperless-ngx-exporter b/ct/headers/prometheus-paperless-ngx-exporter
new file mode 100644
index 000000000..b0f56e64b
--- /dev/null
+++ b/ct/headers/prometheus-paperless-ngx-exporter
@@ -0,0 +1,6 @@
+    ____                            __  __                          ____                        __                     _   _________  __      ______                      __           
+   / __ \_________  ____ ___  ___  / /_/ /_  ___  __  _______      / __ \____ _____  ___  _____/ /__  __________      / | / / ____/ |/ /     / ____/  ______  ____  _____/ /____  _____
+  / /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/  |/ / / __ |   /_____/ __/ | |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/
+ / ____/ /  / /_/ / / / / / /  __/ /_/ / / /  __/ /_/ (__  )_____/ ____/ /_/ / /_/ /  __/ /  / /  __(__  |__  )_____/ /|  / /_/ //   /_____/ /____>  
Date: Mon, 10 Feb 2025 23:59:59 +0100
Subject: [PATCH 235/480] Update CHANGELOG.md (#2240)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9bb4ec787..10547ed3d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### ✨ New Scripts
 
+- New Script: Prometheus Paperless-NGX Exporter [@andygrunwald](https://github.com/andygrunwald) ([#2153](https://github.com/community-scripts/ProxmoxVE/pull/2153))
 - New Script: Proxmox Mail Gateway [@thost96](https://github.com/thost96) ([#1906](https://github.com/community-scripts/ProxmoxVE/pull/1906))
 - New Script: FreshRSS [@bvdberg01](https://github.com/bvdberg01) ([#2226](https://github.com/community-scripts/ProxmoxVE/pull/2226))
 - New Script: Zitadel [@dave-yap](https://github.com/dave-yap) ([#2141](https://github.com/community-scripts/ProxmoxVE/pull/2141))

From 85956755317c206c3440ebbf21af76ab37924a49 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 00:13:36 +0100
Subject: [PATCH 236/480] Update CHANGELOG.md (#2242)

Co-authored-by: github-actions[bot] 

From a0e0f28c66e5c397e7f20c7cec61f53210cd1649 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:41:38 +0100
Subject: [PATCH 237/480] Update and rename update_json_date.yml.bak to
 update_json_date.yml

---
 .github/workflows/update_json_date.yml     | 58 ++++++++++++++++++++++
 .github/workflows/update_json_date.yml.bak | 48 ------------------
 2 files changed, 58 insertions(+), 48 deletions(-)
 create mode 100644 .github/workflows/update_json_date.yml
 delete mode 100644 .github/workflows/update_json_date.yml.bak

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
new file mode 100644
index 000000000..e0dd8bb0f
--- /dev/null
+++ b/.github/workflows/update_json_date.yml
@@ -0,0 +1,58 @@
+name: Update JSON Date
+on:
+  schedule:
+    - cron: "0 */6 * * *"
+  workflow_dispatch:
+  pull_request:
+    types: [opened, synchronize, reopened]
+
+jobs:
+  check-and-update-json:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout PR Branch
+        uses: actions/checkout@v4
+        with:
+          ref: ${{ github.event.pull_request.head.ref || github.head_ref }}
+
+      - name: List changed files
+        id: changed-files
+        run: |
+          PR_NUMBER="${{ github.event.pull_request.number }}"
+          if [[ -n "$PR_NUMBER" ]]; then
+            FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --jq '.[].filename' | tr '\n' ' ')
+          else
+            FILES=$(git diff --name-status HEAD~1 | awk '$1 == "A" {print $2}')
+          fi
+          
+          echo "FILES=$FILES" >> $GITHUB_ENV
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Process JSON files
+        run: |
+          TODAY=$(date -u +"%Y-%m-%d")
+          UPDATED=false
+
+          for FILE in $FILES; do
+            if [[ "$FILE" =~ ^json/.*\.json$ ]]; then
+              DATE_IN_JSON=$(jq -r '.date_created' "$FILE")
+
+              if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
+                echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
+                jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
+                UPDATED=true
+              fi
+            fi
+          done
+
+          if [[ "$UPDATED" == "true" ]]; then
+            git config --global user.name "github-actions[bot]"
+            git config --global user.email "github-actions[bot]@users.noreply.github.com"
+            git commit -am "Update date_created in new JSON files"
+            git push
+          else
+            echo "No updates needed."
+          fi
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/update_json_date.yml.bak b/.github/workflows/update_json_date.yml.bak
deleted file mode 100644
index afaf8eda2..000000000
--- a/.github/workflows/update_json_date.yml.bak
+++ /dev/null
@@ -1,48 +0,0 @@
-name: Update JSON Date
-on:
-  pull_request:
-    types: [opened, synchronize, reopened]
-        
-jobs:
-  list-files:
-    runs-on: ubuntu-latest
-    steps:
-    - name: Checkout PR Branch
-      uses: actions/checkout@v4
-      with:
-        ref: ${{ github.event.pull_request.head.ref }}
-
-    - name: Fetch PR changes
-      run: |
-          git remote add fork https://github.com/${{ github.event.pull_request.head.repo.full_name }}.git
-          git fetch fork ${{ github.event.pull_request.head.ref }}:pullreq
-          git checkout pullreq
-
-    - name: Update JSON
-      id: changed-files
-      run: |
-          FILES=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files --jq '.[].filename' | tr '\n' ' ')
-          echo "changed_files=${FILES}"
-          for FILE in $FILES; do
-            if [[ "$FILE" =~ /(.*)\.json ]]; then
-              NAME="${BASH_REMATCH[1]}"
-            else
-              echo "no new JSON in ${FILES}"
-              continue
-            fi
-          
-            JSON_FILE="json/${NAME}.json"
-            if [[ -f "$JSON_FILE" ]]; then
-              echo "Updating date_created in $JSON_FILE"
-              jq --arg date "$(date +%Y-%m-%d)" '.date_created = $date' "$JSON_FILE" > tmp.json && mv tmp.json "$JSON_FILE"
-            else
-              echo "JSON file $FILES not found"
-            fi
-          done
-             
-          git config --global user.name "github-actions[bot]"
-          git config --global user.email "github-actions[bot]@users.noreply.github.com"
-          git diff --exit-code || git commit -am "Updating Dates in affected JSON files."
-          git push 
-      env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

From d859646dacca194523e56e4ba7c43bea1e04da44 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:43:21 +0100
Subject: [PATCH 238/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 71 +++++++++++++++-----------
 1 file changed, 40 insertions(+), 31 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index e0dd8bb0f..afcdc3a0d 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,41 +1,50 @@
 name: Update JSON Date
+
 on:
   schedule:
-    - cron: "0 */6 * * *"
+    - cron: "0 */6 * * *"  # Läuft alle 6 Stunden
   workflow_dispatch:
-  pull_request:
-    types: [opened, synchronize, reopened]
 
 jobs:
-  check-and-update-json:
+  check-open-prs:
     runs-on: ubuntu-latest
     steps:
-      - name: Checkout PR Branch
+      - name: Checkout Repository
         uses: actions/checkout@v4
-        with:
-          ref: ${{ github.event.pull_request.head.ref || github.head_ref }}
 
-      - name: List changed files
-        id: changed-files
+      - name: Get Open PRs
+        id: list_prs
         run: |
-          PR_NUMBER="${{ github.event.pull_request.number }}"
-          if [[ -n "$PR_NUMBER" ]]; then
-            FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --jq '.[].filename' | tr '\n' ' ')
-          else
-            FILES=$(git diff --name-status HEAD~1 | awk '$1 == "A" {print $2}')
-          fi
-          
-          echo "FILES=$FILES" >> $GITHUB_ENV
+          PRS=$(gh pr list --state open --json number --jq '.[].number')
+          echo "OPEN_PRS=$PRS" >> $GITHUB_ENV
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
-      - name: Process JSON files
+      - name: Process Each PR
+        if: env.OPEN_PRS != ''
         run: |
-          TODAY=$(date -u +"%Y-%m-%d")
-          UPDATED=false
+          for PR_NUMBER in $OPEN_PRS; do
+            echo "Checking PR #$PR_NUMBER"
+            
+            BRANCH_NAME=$(gh pr view $PR_NUMBER --json headRefName --jq '.headRefName')
+            REPO_NAME="${{ github.repository }}"
 
-          for FILE in $FILES; do
-            if [[ "$FILE" =~ ^json/.*\.json$ ]]; then
+            # Checkout PR Branch
+            git fetch origin $BRANCH_NAME
+            git checkout $BRANCH_NAME
+
+            # Get newly added JSON files
+            NEW_JSON_FILES=$(gh api repos/$REPO_NAME/pulls/$PR_NUMBER/files --jq '.[] | select(.status == "added") | .filename' | grep '^json/.*\.json$' || true)
+
+            if [[ -z "$NEW_JSON_FILES" ]]; then
+              echo "No new JSON files in PR #$PR_NUMBER"
+              continue
+            fi
+
+            TODAY=$(date -u +"%Y-%m-%d")
+            UPDATED=false
+
+            for FILE in $NEW_JSON_FILES; do
               DATE_IN_JSON=$(jq -r '.date_created' "$FILE")
 
               if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
@@ -43,16 +52,16 @@ jobs:
                 jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
                 UPDATED=true
               fi
+            done
+
+            if [[ "$UPDATED" == "true" ]]; then
+              git config --global user.name "github-actions[bot]"
+              git config --global user.email "github-actions[bot]@users.noreply.github.com"
+              git commit -am "Update date_created in new JSON files"
+              git push origin $BRANCH_NAME
+            else
+              echo "No updates needed for PR #$PR_NUMBER"
             fi
           done
-
-          if [[ "$UPDATED" == "true" ]]; then
-            git config --global user.name "github-actions[bot]"
-            git config --global user.email "github-actions[bot]@users.noreply.github.com"
-            git commit -am "Update date_created in new JSON files"
-            git push
-          else
-            echo "No updates needed."
-          fi
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

From c40fc2b159e47f772e45e32021e9dc1a7d47fdd1 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:44:17 +0100
Subject: [PATCH 239/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index afcdc3a0d..09cde35cb 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -15,16 +15,25 @@ jobs:
       - name: Get Open PRs
         id: list_prs
         run: |
-          PRS=$(gh pr list --state open --json number --jq '.[].number')
-          echo "OPEN_PRS=$PRS" >> $GITHUB_ENV
+          echo "Fetching open PRs..."
+          PRS=$(gh pr list --state open --json number --jq '.[].number' || echo "")
+
+          if [[ -z "$PRS" ]]; then
+            echo "No open PRs found."
+            exit 0
+          fi
+
+          echo "$PRS" | tr ' ' '\n' > pr_list.txt
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Process Each PR
-        if: env.OPEN_PRS != ''
+        if: success()
         run: |
-          for PR_NUMBER in $OPEN_PRS; do
-            echo "Checking PR #$PR_NUMBER"
+          TODAY=$(date -u +"%Y-%m-%d")
+          
+          while read -r PR_NUMBER; do
+            echo "Processing PR #$PR_NUMBER"
             
             BRANCH_NAME=$(gh pr view $PR_NUMBER --json headRefName --jq '.headRefName')
             REPO_NAME="${{ github.repository }}"
@@ -41,7 +50,6 @@ jobs:
               continue
             fi
 
-            TODAY=$(date -u +"%Y-%m-%d")
             UPDATED=false
 
             for FILE in $NEW_JSON_FILES; do
@@ -62,6 +70,6 @@ jobs:
             else
               echo "No updates needed for PR #$PR_NUMBER"
             fi
-          done
+          done < pr_list.txt
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

From a51e688388b1702457bf14a486e0d1bd97406b22 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:46:06 +0100
Subject: [PATCH 240/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 09cde35cb..0304ba897 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -34,13 +34,19 @@ jobs:
           
           while read -r PR_NUMBER; do
             echo "Processing PR #$PR_NUMBER"
-            
+
             BRANCH_NAME=$(gh pr view $PR_NUMBER --json headRefName --jq '.headRefName')
             REPO_NAME="${{ github.repository }}"
 
+            # Prüfen, ob der Branch remote existiert
+            if ! git ls-remote --exit-code origin "$BRANCH_NAME"; then
+              echo "Branch $BRANCH_NAME für PR #$PR_NUMBER existiert nicht, überspringe..."
+              continue
+            fi
+
             # Checkout PR Branch
-            git fetch origin $BRANCH_NAME
-            git checkout $BRANCH_NAME
+            git fetch origin "$BRANCH_NAME"
+            git checkout -B "$BRANCH_NAME" "origin/$BRANCH_NAME"
 
             # Get newly added JSON files
             NEW_JSON_FILES=$(gh api repos/$REPO_NAME/pulls/$PR_NUMBER/files --jq '.[] | select(.status == "added") | .filename' | grep '^json/.*\.json$' || true)
@@ -66,7 +72,7 @@ jobs:
               git config --global user.name "github-actions[bot]"
               git config --global user.email "github-actions[bot]@users.noreply.github.com"
               git commit -am "Update date_created in new JSON files"
-              git push origin $BRANCH_NAME
+              git push origin "$BRANCH_NAME"
             else
               echo "No updates needed for PR #$PR_NUMBER"
             fi

From 1bca424acf92280273a82a25eb955c557ca44b26 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 09:59:09 +0100
Subject: [PATCH 241/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 96 ++++++++++++++++++--------
 1 file changed, 68 insertions(+), 28 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 0304ba897..e29df9787 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Update JSON Date
+name: Update JSON Date via GitHub App
 
 on:
   schedule:
@@ -12,59 +12,95 @@ jobs:
       - name: Checkout Repository
         uses: actions/checkout@v4
 
+      - name: Install Dependencies
+        run: |
+          sudo apt update && sudo apt install -y jq
+
+      - name: Authenticate GitHub App
+        id: auth
+        run: |
+          echo "Generating JWT for GitHub App authentication..."
+
+          # Header und Payload Base64 encodieren
+          HEADER_B64=$(echo -n '{"alg":"RS256","typ":"JWT"}' | openssl base64 -A | tr -d '=' | tr '/+' '_-')
+          NOW=$(date +%s)
+          EXP=$((NOW + 600))  # 10 Minuten gültig
+          PAYLOAD_B64=$(echo -n "{\"iat\":$NOW,\"exp\":$EXP,\"iss\":${{ secrets.JSON_APP_ID }}}" | openssl base64 -A | tr -d '=' | tr '/+' '_-')
+
+          # Signatur mit dem privaten Schlüssel erstellen
+          SIGNATURE=$(echo -n "$HEADER_B64.$PAYLOAD_B64" | openssl dgst -sha256 -sign <(echo "${{ secrets.JSON_APP_KEY }}") | openssl base64 -A | tr -d '=' | tr '/+' '_-')
+
+          # Komplette JWT-Token-Zeichenkette erstellen
+          JWT="$HEADER_B64.$PAYLOAD_B64.$SIGNATURE"
+
+          # App-Installation abrufen
+          INSTALLATION_ID=$(curl -s -X GET -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
+            https://api.github.com/app/installations | jq -r '.[0].id')
+
+          # Access Token generieren
+          ACCESS_TOKEN=$(curl -s -X POST -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
+            https://api.github.com/app/installations/$INSTALLATION_ID/access_tokens | jq -r '.token')
+
+          echo "GH_ACCESS_TOKEN=$ACCESS_TOKEN" >> $GITHUB_ENV
+
       - name: Get Open PRs
-        id: list_prs
         run: |
           echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number --jq '.[].number' || echo "")
+          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName \
+            --jq '.[] | {number: .number, repo: .headRepositoryOwner, branch: .headRefName}' || echo "")
 
           if [[ -z "$PRS" ]]; then
             echo "No open PRs found."
             exit 0
           fi
 
-          echo "$PRS" | tr ' ' '\n' > pr_list.txt
+          echo "$PRS" | jq -c '.[]' > pr_list.json
         env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}
 
       - name: Process Each PR
-        if: success()
         run: |
           TODAY=$(date -u +"%Y-%m-%d")
-          
-          while read -r PR_NUMBER; do
-            echo "Processing PR #$PR_NUMBER"
 
-            BRANCH_NAME=$(gh pr view $PR_NUMBER --json headRefName --jq '.headRefName')
-            REPO_NAME="${{ github.repository }}"
+          while read -r PR_ENTRY; do
+            PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number')
+            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo')
+            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch')
 
-            # Prüfen, ob der Branch remote existiert
-            if ! git ls-remote --exit-code origin "$BRANCH_NAME"; then
-              echo "Branch $BRANCH_NAME für PR #$PR_NUMBER existiert nicht, überspringe..."
-              continue
-            fi
+            echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
 
-            # Checkout PR Branch
-            git fetch origin "$BRANCH_NAME"
-            git checkout -B "$BRANCH_NAME" "origin/$BRANCH_NAME"
+            # Fork klonen mit App-Token
+            git clone --depth=1 https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git
+            cd ProxmoxVE || exit 1
+
+            # PR-Branch auschecken
+            git fetch origin "$PR_BRANCH"
+            git checkout "$PR_BRANCH"
 
             # Get newly added JSON files
-            NEW_JSON_FILES=$(gh api repos/$REPO_NAME/pulls/$PR_NUMBER/files --jq '.[] | select(.status == "added") | .filename' | grep '^json/.*\.json$' || true)
+            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files \
+              --jq '.[] | select(.status == "added") | .filename' | grep '^json/.*\.json$' || true)
 
             if [[ -z "$NEW_JSON_FILES" ]]; then
               echo "No new JSON files in PR #$PR_NUMBER"
+              cd ..
+              rm -rf ProxmoxVE
               continue
             fi
 
             UPDATED=false
 
             for FILE in $NEW_JSON_FILES; do
-              DATE_IN_JSON=$(jq -r '.date_created' "$FILE")
+              if [[ -f "$FILE" ]]; then
+                DATE_IN_JSON=$(jq -r '.date_created' "$FILE")
 
-              if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
-                echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
-                jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
-                UPDATED=true
+                if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
+                  echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
+                  jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
+                  UPDATED=true
+                fi
+              else
+                echo "File $FILE not found in the forked repo"
               fi
             done
 
@@ -72,10 +108,14 @@ jobs:
               git config --global user.name "github-actions[bot]"
               git config --global user.email "github-actions[bot]@users.noreply.github.com"
               git commit -am "Update date_created in new JSON files"
-              git push origin "$BRANCH_NAME"
+              git push origin "$PR_BRANCH"
+              echo "Updated PR #$PR_NUMBER and pushed changes."
             else
               echo "No updates needed for PR #$PR_NUMBER"
             fi
-          done < pr_list.txt
+
+            cd ..
+            rm -rf ProxmoxVE
+          done < pr_list.json
         env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}

From 6de6216bc6f340b662a247db6ff86bc4222412d5 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:00:30 +0100
Subject: [PATCH 242/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 39 +++++++++++++-------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index e29df9787..511c80085 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -13,31 +13,25 @@ jobs:
         uses: actions/checkout@v4
 
       - name: Install Dependencies
-        run: |
-          sudo apt update && sudo apt install -y jq
+        run: sudo apt update && sudo apt install -y jq
 
       - name: Authenticate GitHub App
         id: auth
         run: |
-          echo "Generating JWT for GitHub App authentication..."
+          echo "Authenticating GitHub App..."
 
-          # Header und Payload Base64 encodieren
           HEADER_B64=$(echo -n '{"alg":"RS256","typ":"JWT"}' | openssl base64 -A | tr -d '=' | tr '/+' '_-')
           NOW=$(date +%s)
-          EXP=$((NOW + 600))  # 10 Minuten gültig
+          EXP=$((NOW + 600))
           PAYLOAD_B64=$(echo -n "{\"iat\":$NOW,\"exp\":$EXP,\"iss\":${{ secrets.JSON_APP_ID }}}" | openssl base64 -A | tr -d '=' | tr '/+' '_-')
 
-          # Signatur mit dem privaten Schlüssel erstellen
           SIGNATURE=$(echo -n "$HEADER_B64.$PAYLOAD_B64" | openssl dgst -sha256 -sign <(echo "${{ secrets.JSON_APP_KEY }}") | openssl base64 -A | tr -d '=' | tr '/+' '_-')
 
-          # Komplette JWT-Token-Zeichenkette erstellen
           JWT="$HEADER_B64.$PAYLOAD_B64.$SIGNATURE"
 
-          # App-Installation abrufen
           INSTALLATION_ID=$(curl -s -X GET -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
             https://api.github.com/app/installations | jq -r '.[0].id')
 
-          # Access Token generieren
           ACCESS_TOKEN=$(curl -s -X POST -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
             https://api.github.com/app/installations/$INSTALLATION_ID/access_tokens | jq -r '.token')
 
@@ -46,10 +40,9 @@ jobs:
       - name: Get Open PRs
         run: |
           echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName \
-            --jq '.[] | {number: .number, repo: .headRepositoryOwner, branch: .headRefName}' || echo "")
+          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName --jq '.' || echo "")
 
-          if [[ -z "$PRS" ]]; then
+          if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."
             exit 0
           fi
@@ -63,23 +56,29 @@ jobs:
           TODAY=$(date -u +"%Y-%m-%d")
 
           while read -r PR_ENTRY; do
-            PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number')
-            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo')
-            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch')
+            if [[ -z "$PR_ENTRY" ]]; then
+              echo "Skipping empty PR entry."
+              continue
+            fi
+
+            PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number // empty')
+            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.headRepositoryOwner // empty')
+            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.headRefName // empty')
+
+            if [[ -z "$PR_NUMBER" || -z "$PR_REPO" || -z "$PR_BRANCH" ]]; then
+              echo "Skipping invalid PR entry: $PR_ENTRY"
+              continue
+            fi
 
             echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
 
-            # Fork klonen mit App-Token
             git clone --depth=1 https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git
             cd ProxmoxVE || exit 1
 
-            # PR-Branch auschecken
             git fetch origin "$PR_BRANCH"
             git checkout "$PR_BRANCH"
 
-            # Get newly added JSON files
-            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files \
-              --jq '.[] | select(.status == "added") | .filename' | grep '^json/.*\.json$' || true)
+            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --jq '.[].filename' | grep '^json/.*\.json$' || true)
 
             if [[ -z "$NEW_JSON_FILES" ]]; then
               echo "No new JSON files in PR #$PR_NUMBER"

From 55fa65e1684356c05af01e9f6992d4ff2512348b Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:02:05 +0100
Subject: [PATCH 243/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 511c80085..550a2a9fd 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -40,7 +40,8 @@ jobs:
       - name: Get Open PRs
         run: |
           echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName --jq '.' || echo "")
+          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName \
+            --jq '[.[] | {number: .number, repo: .headRepositoryOwner.login, branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."
@@ -62,8 +63,8 @@ jobs:
             fi
 
             PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number // empty')
-            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.headRepositoryOwner // empty')
-            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.headRefName // empty')
+            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
+            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch // empty')
 
             if [[ -z "$PR_NUMBER" || -z "$PR_REPO" || -z "$PR_BRANCH" ]]; then
               echo "Skipping invalid PR entry: $PR_ENTRY"
@@ -72,13 +73,20 @@ jobs:
 
             echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
 
-            git clone --depth=1 https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git
+            # Richtige Repository-URL setzen
+            REPO_URL="https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git"
+
+            # Fork klonen
+            git clone --depth=1 "$REPO_URL"
             cd ProxmoxVE || exit 1
 
+            # PR-Branch auschecken
             git fetch origin "$PR_BRANCH"
             git checkout "$PR_BRANCH"
 
-            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files --jq '.[].filename' | grep '^json/.*\.json$' || true)
+            # Get newly added JSON files
+            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files \
+              --jq '.[].filename' | grep '^json/.*\.json$' || true)
 
             if [[ -z "$NEW_JSON_FILES" ]]; then
               echo "No new JSON files in PR #$PR_NUMBER"

From 12ec0b46bca536a22f521dafabaac47e1e3591d6 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:04:37 +0100
Subject: [PATCH 244/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 550a2a9fd..156c66211 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -73,15 +73,20 @@ jobs:
 
             echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
 
-            # Richtige Repository-URL setzen
+            # Fork-Repo klonen (anstatt community-scripts)
             REPO_URL="https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git"
 
-            # Fork klonen
+            # Sicherstellen, dass der Fork existiert
+            if ! git ls-remote --exit-code "$REPO_URL" &>/dev/null; then
+              echo "Repository $PR_REPO/ProxmoxVE does not exist or is private. Skipping..."
+              continue
+            fi
+
             git clone --depth=1 "$REPO_URL"
             cd ProxmoxVE || exit 1
 
-            # PR-Branch auschecken
-            git fetch origin "$PR_BRANCH"
+            # Alle Branches abrufen & den richtigen Branch auschecken
+            git fetch origin "$PR_BRANCH" || { echo "Branch $PR_BRANCH does not exist in fork. Skipping..."; cd ..; rm -rf ProxmoxVE; continue; }
             git checkout "$PR_BRANCH"
 
             # Get newly added JSON files

From e793dfff3ab047131ed712bb72752d86c7b2a0b9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:07:13 +0100
Subject: [PATCH 245/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 156c66211..410a6f627 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -40,8 +40,8 @@ jobs:
       - name: Get Open PRs
         run: |
           echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRefName \
-            --jq '[.[] | {number: .number, repo: .headRepositoryOwner.login, branch: .headRefName}]' || echo "")
+          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRepositoryUrl,headRefName \
+            --jq '[.[] | {number: .number, repo: .headRepositoryUrl, branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."
@@ -63,29 +63,24 @@ jobs:
             fi
 
             PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number // empty')
-            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
+            PR_REPO_URL=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
             PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch // empty')
 
-            if [[ -z "$PR_NUMBER" || -z "$PR_REPO" || -z "$PR_BRANCH" ]]; then
+            if [[ -z "$PR_NUMBER" || -z "$PR_REPO_URL" || -z "$PR_BRANCH" ]]; then
               echo "Skipping invalid PR entry: $PR_ENTRY"
               continue
             fi
 
-            echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
+            echo "Processing PR #$PR_NUMBER from $PR_REPO_URL:$PR_BRANCH"
 
-            # Fork-Repo klonen (anstatt community-scripts)
-            REPO_URL="https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO/ProxmoxVE.git"
-
-            # Sicherstellen, dass der Fork existiert
-            if ! git ls-remote --exit-code "$REPO_URL" &>/dev/null; then
-              echo "Repository $PR_REPO/ProxmoxVE does not exist or is private. Skipping..."
-              continue
-            fi
+            # Fork-Repo klonen
+            REPO_URL="${PR_REPO_URL/github.com/x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com}"
 
+            echo "Cloning $REPO_URL"
             git clone --depth=1 "$REPO_URL"
             cd ProxmoxVE || exit 1
 
-            # Alle Branches abrufen & den richtigen Branch auschecken
+            # Sicherstellen, dass der Branch existiert
             git fetch origin "$PR_BRANCH" || { echo "Branch $PR_BRANCH does not exist in fork. Skipping..."; cd ..; rm -rf ProxmoxVE; continue; }
             git checkout "$PR_BRANCH"
 

From bc3abdfe919ea7bdb2f45c551b60e736817264d7 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:10:06 +0100
Subject: [PATCH 246/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 410a6f627..cbb25bfb4 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -40,8 +40,8 @@ jobs:
       - name: Get Open PRs
         run: |
           echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number,headRepositoryOwner,headRepositoryUrl,headRefName \
-            --jq '[.[] | {number: .number, repo: .headRepositoryUrl, branch: .headRefName}]' || echo "")
+          PRS=$(gh pr list --state open --json number,headRepository,headRefName \
+            --jq '[.[] | {number: .number, repo: .headRepository.nameWithOwner, branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."
@@ -63,25 +63,25 @@ jobs:
             fi
 
             PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number // empty')
-            PR_REPO_URL=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
+            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
             PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch // empty')
 
-            if [[ -z "$PR_NUMBER" || -z "$PR_REPO_URL" || -z "$PR_BRANCH" ]]; then
+            if [[ -z "$PR_NUMBER" || -z "$PR_REPO" || -z "$PR_BRANCH" ]]; then
               echo "Skipping invalid PR entry: $PR_ENTRY"
               continue
             fi
 
-            echo "Processing PR #$PR_NUMBER from $PR_REPO_URL:$PR_BRANCH"
+            echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
 
             # Fork-Repo klonen
-            REPO_URL="${PR_REPO_URL/github.com/x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com}"
+            REPO_URL="https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO.git"
 
             echo "Cloning $REPO_URL"
             git clone --depth=1 "$REPO_URL"
-            cd ProxmoxVE || exit 1
+            cd "$(basename "$PR_REPO")" || exit 1
 
             # Sicherstellen, dass der Branch existiert
-            git fetch origin "$PR_BRANCH" || { echo "Branch $PR_BRANCH does not exist in fork. Skipping..."; cd ..; rm -rf ProxmoxVE; continue; }
+            git fetch origin "$PR_BRANCH" || { echo "Branch $PR_BRANCH does not exist in fork. Skipping..."; cd ..; rm -rf "$(basename "$PR_REPO")"; continue; }
             git checkout "$PR_BRANCH"
 
             # Get newly added JSON files
@@ -91,7 +91,7 @@ jobs:
             if [[ -z "$NEW_JSON_FILES" ]]; then
               echo "No new JSON files in PR #$PR_NUMBER"
               cd ..
-              rm -rf ProxmoxVE
+              rm -rf "$(basename "$PR_REPO")"
               continue
             fi
 
@@ -122,7 +122,7 @@ jobs:
             fi
 
             cd ..
-            rm -rf ProxmoxVE
+            rm -rf "$(basename "$PR_REPO")"
           done < pr_list.json
         env:
           GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}

From 8cda7e4dd87ff83878f22d5ebf72b788c7d865f5 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:24:21 +0100
Subject: [PATCH 247/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index cbb25bfb4..e8f1ab80d 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -41,7 +41,7 @@ jobs:
         run: |
           echo "Fetching open PRs..."
           PRS=$(gh pr list --state open --json number,headRepository,headRefName \
-            --jq '[.[] | {number: .number, repo: .headRepository.nameWithOwner, branch: .headRefName}]' || echo "")
+            --jq '[.[] | {number: .number, repo: (.headRepository.owner.login + "/" + .headRepository.name), branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."

From dd62089b611de6adef87275f76908a2af55c4638 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:27:06 +0100
Subject: [PATCH 248/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index e8f1ab80d..613595dea 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -41,7 +41,7 @@ jobs:
         run: |
           echo "Fetching open PRs..."
           PRS=$(gh pr list --state open --json number,headRepository,headRefName \
-            --jq '[.[] | {number: .number, repo: (.headRepository.owner.login + "/" + .headRepository.name), branch: .headRefName}]' || echo "")
+            --jq '[.[] | select(.headRepository.owner.login and .headRepository.name) | {number: .number, repo: (.headRepository.owner.login + "/" + .headRepository.name), branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
             echo "No open PRs found."

From 1ce3929d6609d712f6e54c6da86f8ed89de4bb78 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:30:20 +0100
Subject: [PATCH 249/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 613595dea..f263e48bd 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -37,6 +37,12 @@ jobs:
 
           echo "GH_ACCESS_TOKEN=$ACCESS_TOKEN" >> $GITHUB_ENV
 
+      - name: Debug: Anzeigen aller offenen PRs als JSON
+        run: |
+          echo "Fetching open PRs with full JSON output..."
+          gh pr list --state open --json number,headRepository,headRefName > pr_debug.json || echo "Failed to fetch PRs"
+          cat pr_debug.json || echo "No PR data"
+
       - name: Get Open PRs
         run: |
           echo "Fetching open PRs..."
@@ -44,7 +50,8 @@ jobs:
             --jq '[.[] | select(.headRepository.owner.login and .headRepository.name) | {number: .number, repo: (.headRepository.owner.login + "/" + .headRepository.name), branch: .headRefName}]' || echo "")
 
           if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
-            echo "No open PRs found."
+            echo "No open PRs found. Debug output:"
+            cat pr_debug.json || echo "No PRs available"
             exit 0
           fi
 
@@ -53,7 +60,13 @@ jobs:
           GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}
 
       - name: Process Each PR
+        if: success()
         run: |
+          if [[ ! -f "pr_list.json" ]]; then
+            echo "pr_list.json not found, skipping PR processing"
+            exit 0
+          fi
+
           TODAY=$(date -u +"%Y-%m-%d")
 
           while read -r PR_ENTRY; do

From 8a1446ac4e913b5154e4a68e740a988a15e68540 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:31:02 +0100
Subject: [PATCH 250/480] Update update_json_date.yml


From 5d58d6d14fab490ae88e05341bedc6309601c11a Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:33:05 +0100
Subject: [PATCH 251/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 205 ++++++++++---------------
 1 file changed, 83 insertions(+), 122 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index f263e48bd..f71f56ee0 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,141 +1,102 @@
-name: Update JSON Date via GitHub App
+name: Auto Update JSON-Dateien
 
 on:
-  schedule:
-    - cron: "0 */6 * * *"  # Läuft alle 6 Stunden
+  push:
+    branches:
+      - main
+    paths:
+      - 'json/**.json'
   workflow_dispatch:
 
 jobs:
-  check-open-prs:
+  update-json-dates:
     runs-on: ubuntu-latest
+
+    permissions:
+      contents: write
+      pull-requests: write
+
     steps:
-      - name: Checkout Repository
+      - name: Generate a token
+        id: generate-token
+        uses: actions/create-github-app-token@v1
+        with:
+          app-id: ${{ vars.APP_ID }}
+          private-key: ${{ secrets.APP_PRIVATE_KEY }}
+
+      # Repository auschecken
+      - name: Checkout repository
         uses: actions/checkout@v4
 
-      - name: Install Dependencies
-        run: sudo apt update && sudo apt install -y jq
-
-      - name: Authenticate GitHub App
-        id: auth
+      # Git-Setup
+      - name: Set up Git
         run: |
-          echo "Authenticating GitHub App..."
+          git config --global user.name "GitHub Actions"
+          git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-          HEADER_B64=$(echo -n '{"alg":"RS256","typ":"JWT"}' | openssl base64 -A | tr -d '=' | tr '/+' '_-')
-          NOW=$(date +%s)
-          EXP=$((NOW + 600))
-          PAYLOAD_B64=$(echo -n "{\"iat\":$NOW,\"exp\":$EXP,\"iss\":${{ secrets.JSON_APP_ID }}}" | openssl base64 -A | tr -d '=' | tr '/+' '_-')
-
-          SIGNATURE=$(echo -n "$HEADER_B64.$PAYLOAD_B64" | openssl dgst -sha256 -sign <(echo "${{ secrets.JSON_APP_KEY }}") | openssl base64 -A | tr -d '=' | tr '/+' '_-')
-
-          JWT="$HEADER_B64.$PAYLOAD_B64.$SIGNATURE"
-
-          INSTALLATION_ID=$(curl -s -X GET -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
-            https://api.github.com/app/installations | jq -r '.[0].id')
-
-          ACCESS_TOKEN=$(curl -s -X POST -H "Authorization: Bearer $JWT" -H "Accept: application/vnd.github+json" \
-            https://api.github.com/app/installations/$INSTALLATION_ID/access_tokens | jq -r '.token')
-
-          echo "GH_ACCESS_TOKEN=$ACCESS_TOKEN" >> $GITHUB_ENV
-
-      - name: Debug: Anzeigen aller offenen PRs als JSON
+      # JSON-Dateien aktualisieren
+      - name: Update JSON date_created
         run: |
-          echo "Fetching open PRs with full JSON output..."
-          gh pr list --state open --json number,headRepository,headRefName > pr_debug.json || echo "Failed to fetch PRs"
-          cat pr_debug.json || echo "No PR data"
-
-      - name: Get Open PRs
-        run: |
-          echo "Fetching open PRs..."
-          PRS=$(gh pr list --state open --json number,headRepository,headRefName \
-            --jq '[.[] | select(.headRepository.owner.login and .headRepository.name) | {number: .number, repo: (.headRepository.owner.login + "/" + .headRepository.name), branch: .headRefName}]' || echo "")
-
-          if [[ -z "$PRS" || "$PRS" == "[]" ]]; then
-            echo "No open PRs found. Debug output:"
-            cat pr_debug.json || echo "No PRs available"
-            exit 0
-          fi
-
-          echo "$PRS" | jq -c '.[]' > pr_list.json
-        env:
-          GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}
-
-      - name: Process Each PR
-        if: success()
-        run: |
-          if [[ ! -f "pr_list.json" ]]; then
-            echo "pr_list.json not found, skipping PR processing"
-            exit 0
-          fi
-
           TODAY=$(date -u +"%Y-%m-%d")
+          CHANGED=false
 
-          while read -r PR_ENTRY; do
-            if [[ -z "$PR_ENTRY" ]]; then
-              echo "Skipping empty PR entry."
-              continue
-            fi
+          for FILE in json/*.json; do
+            if [[ -f "$FILE" ]]; then
+              DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
 
-            PR_NUMBER=$(echo "$PR_ENTRY" | jq -r '.number // empty')
-            PR_REPO=$(echo "$PR_ENTRY" | jq -r '.repo // empty')
-            PR_BRANCH=$(echo "$PR_ENTRY" | jq -r '.branch // empty')
-
-            if [[ -z "$PR_NUMBER" || -z "$PR_REPO" || -z "$PR_BRANCH" ]]; then
-              echo "Skipping invalid PR entry: $PR_ENTRY"
-              continue
-            fi
-
-            echo "Processing PR #$PR_NUMBER from $PR_REPO:$PR_BRANCH"
-
-            # Fork-Repo klonen
-            REPO_URL="https://x-access-token:${{ env.GH_ACCESS_TOKEN }}@github.com/$PR_REPO.git"
-
-            echo "Cloning $REPO_URL"
-            git clone --depth=1 "$REPO_URL"
-            cd "$(basename "$PR_REPO")" || exit 1
-
-            # Sicherstellen, dass der Branch existiert
-            git fetch origin "$PR_BRANCH" || { echo "Branch $PR_BRANCH does not exist in fork. Skipping..."; cd ..; rm -rf "$(basename "$PR_REPO")"; continue; }
-            git checkout "$PR_BRANCH"
-
-            # Get newly added JSON files
-            NEW_JSON_FILES=$(gh api repos/${{ github.repository }}/pulls/$PR_NUMBER/files \
-              --jq '.[].filename' | grep '^json/.*\.json$' || true)
-
-            if [[ -z "$NEW_JSON_FILES" ]]; then
-              echo "No new JSON files in PR #$PR_NUMBER"
-              cd ..
-              rm -rf "$(basename "$PR_REPO")"
-              continue
-            fi
-
-            UPDATED=false
-
-            for FILE in $NEW_JSON_FILES; do
-              if [[ -f "$FILE" ]]; then
-                DATE_IN_JSON=$(jq -r '.date_created' "$FILE")
-
-                if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
-                  echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
-                  jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
-                  UPDATED=true
-                fi
-              else
-                echo "File $FILE not found in the forked repo"
+              if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
+                echo "Updating date_created in $FILE: $DATE_IN_JSON -> $TODAY"
+                jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
+                CHANGED=true
               fi
-            done
-
-            if [[ "$UPDATED" == "true" ]]; then
-              git config --global user.name "github-actions[bot]"
-              git config --global user.email "github-actions[bot]@users.noreply.github.com"
-              git commit -am "Update date_created in new JSON files"
-              git push origin "$PR_BRANCH"
-              echo "Updated PR #$PR_NUMBER and pushed changes."
-            else
-              echo "No updates needed for PR #$PR_NUMBER"
             fi
+          done
 
-            cd ..
-            rm -rf "$(basename "$PR_REPO")"
-          done < pr_list.json
+          if [[ "$CHANGED" == "true" ]]; then
+            echo "CHANGED=true" >> $GITHUB_ENV
+          else
+            echo "CHANGED=false" >> $GITHUB_ENV
+          fi
+
+      # Falls Änderungen existieren: Commit und PR erstellen
+      - name: Commit and create PR if changes exist
+        if: env.CHANGED == 'true'
+        run: |
+          git add json/*.json
+          git commit -m "Auto-update JSON date_created fields"
+          git checkout -b pr-update-json-dates
+          git push origin pr-update-json-dates --force
+          gh pr create --title "[core] Auto-update JSON files" \
+                       --body "This PR is auto-generated by a GitHub Action to update the `date_created` field in JSON files." \
+                       --head pr-update-json-dates \
+                       --base main \
+                       --label "automated pr"
         env:
-          GH_TOKEN: ${{ env.GH_ACCESS_TOKEN }}
+          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
+
+      # PR automatisch approven
+      - name: Approve pull request
+        if: env.CHANGED == 'true'
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
+          if [ -n "$PR_NUMBER" ]; then
+            gh pr review $PR_NUMBER --approve
+          fi
+
+      # PR erneut approven, falls erforderlich
+      - name: Re-approve pull request after update
+        if: env.CHANGED == 'true'
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
+          if [ -n "$PR_NUMBER" ]; then
+            gh pr review $PR_NUMBER --approve
+          fi
+
+      # Falls keine Änderungen erkannt wurden
+      - name: No changes detected
+        if: env.CHANGED == 'false'
+        run: echo "No changes to commit. Workflow completed successfully."

From a4037c151eed656d629bac17284ba2d09d215e5a Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:34:00 +0100
Subject: [PATCH 252/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 55 ++++++++++++++++----------
 1 file changed, 35 insertions(+), 20 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index f71f56ee0..f06792b54 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,11 +1,9 @@
-name: Auto Update JSON-Dateien
+name: Auto Update JSON-Dateien (nur neue Dateien)
 
 on:
   push:
     branches:
       - main
-    paths:
-      - 'json/**.json'
   workflow_dispatch:
 
 jobs:
@@ -34,40 +32,57 @@ jobs:
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      # JSON-Dateien aktualisieren
-      - name: Update JSON date_created
+      # Finde neu hinzugefügte JSON-Dateien
+      - name: Find newly added JSON files
+        id: find_new_json
+        run: |
+          NEW_JSON_FILES=$(git log --diff-filter=A --name-only --pretty=format: -- json/*.json || true)
+
+          if [[ -z "$NEW_JSON_FILES" ]]; then
+            echo "No new JSON files found."
+            echo "CHANGED=false" >> $GITHUB_ENV
+          else
+            echo "New JSON files detected:"
+            echo "$NEW_JSON_FILES"
+            echo "$NEW_JSON_FILES" > new_json_files.txt
+            echo "CHANGED=true" >> $GITHUB_ENV
+          fi
+
+      # JSON-Dateien aktualisieren (nur wenn neue gefunden wurden)
+      - name: Update date_created in new JSON files
+        if: env.CHANGED == 'true'
         run: |
           TODAY=$(date -u +"%Y-%m-%d")
-          CHANGED=false
+          UPDATED=false
 
-          for FILE in json/*.json; do
+          while read -r FILE; do
             if [[ -f "$FILE" ]]; then
               DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
 
               if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
                 echo "Updating date_created in $FILE: $DATE_IN_JSON -> $TODAY"
                 jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
-                CHANGED=true
+                UPDATED=true
               fi
             fi
-          done
+          done < new_json_files.txt
 
-          if [[ "$CHANGED" == "true" ]]; then
-            echo "CHANGED=true" >> $GITHUB_ENV
+          if [[ "$UPDATED" == "true" ]]; then
+            echo "UPDATED=true" >> $GITHUB_ENV
           else
-            echo "CHANGED=false" >> $GITHUB_ENV
+            echo "UPDATED=false" >> $GITHUB_ENV
           fi
 
       # Falls Änderungen existieren: Commit und PR erstellen
       - name: Commit and create PR if changes exist
-        if: env.CHANGED == 'true'
+        if: env.UPDATED == 'true'
         run: |
           git add json/*.json
-          git commit -m "Auto-update JSON date_created fields"
+          git commit -m "Auto-update JSON date_created fields (new files only)"
           git checkout -b pr-update-json-dates
           git push origin pr-update-json-dates --force
-          gh pr create --title "[core] Auto-update JSON files" \
-                       --body "This PR is auto-generated by a GitHub Action to update the `date_created` field in JSON files." \
+          gh pr create --title "[core] Auto-update new JSON files" \
+                       --body "This PR is auto-generated by a GitHub Action to update the `date_created` field in newly created JSON files." \
                        --head pr-update-json-dates \
                        --base main \
                        --label "automated pr"
@@ -76,7 +91,7 @@ jobs:
 
       # PR automatisch approven
       - name: Approve pull request
-        if: env.CHANGED == 'true'
+        if: env.UPDATED == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
@@ -87,7 +102,7 @@ jobs:
 
       # PR erneut approven, falls erforderlich
       - name: Re-approve pull request after update
-        if: env.CHANGED == 'true'
+        if: env.UPDATED == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
@@ -98,5 +113,5 @@ jobs:
 
       # Falls keine Änderungen erkannt wurden
       - name: No changes detected
-        if: env.CHANGED == 'false'
-        run: echo "No changes to commit. Workflow completed successfully."
+        if: env.UPDATED == 'false'
+        run: echo "No new JSON files needed an update. Workflow completed successfully."

From 0122e70b1d40d2ad6cc95a2cc654ff36cd54b024 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:35:53 +0100
Subject: [PATCH 253/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index f06792b54..9e1937651 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dateien (nur neue Dateien)
+name: Auto Update JSON-Dateien (new files only)
 
 on:
   push:
@@ -22,33 +22,26 @@ jobs:
           app-id: ${{ vars.APP_ID }}
           private-key: ${{ secrets.APP_PRIVATE_KEY }}
 
-      # Repository auschecken
       - name: Checkout repository
         uses: actions/checkout@v4
 
-      # Git-Setup
       - name: Set up Git
         run: |
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      # Finde neu hinzugefügte JSON-Dateien
       - name: Find newly added JSON files
         id: find_new_json
         run: |
           NEW_JSON_FILES=$(git log --diff-filter=A --name-only --pretty=format: -- json/*.json || true)
 
           if [[ -z "$NEW_JSON_FILES" ]]; then
-            echo "No new JSON files found."
             echo "CHANGED=false" >> $GITHUB_ENV
           else
-            echo "New JSON files detected:"
-            echo "$NEW_JSON_FILES"
             echo "$NEW_JSON_FILES" > new_json_files.txt
             echo "CHANGED=true" >> $GITHUB_ENV
           fi
 
-      # JSON-Dateien aktualisieren (nur wenn neue gefunden wurden)
       - name: Update date_created in new JSON files
         if: env.CHANGED == 'true'
         run: |
@@ -60,7 +53,6 @@ jobs:
               DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
 
               if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
-                echo "Updating date_created in $FILE: $DATE_IN_JSON -> $TODAY"
                 jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
                 UPDATED=true
               fi
@@ -73,7 +65,6 @@ jobs:
             echo "UPDATED=false" >> $GITHUB_ENV
           fi
 
-      # Falls Änderungen existieren: Commit und PR erstellen
       - name: Commit and create PR if changes exist
         if: env.UPDATED == 'true'
         run: |
@@ -82,14 +73,13 @@ jobs:
           git checkout -b pr-update-json-dates
           git push origin pr-update-json-dates --force
           gh pr create --title "[core] Auto-update new JSON files" \
-                       --body "This PR is auto-generated by a GitHub Action to update the `date_created` field in newly created JSON files." \
+                       --body "This PR is auto-generated to update the `date_created` field in newly created JSON files." \
                        --head pr-update-json-dates \
                        --base main \
                        --label "automated pr"
         env:
           GH_TOKEN: ${{ steps.generate-token.outputs.token }}
 
-      # PR automatisch approven
       - name: Approve pull request
         if: env.UPDATED == 'true'
         env:
@@ -100,7 +90,6 @@ jobs:
             gh pr review $PR_NUMBER --approve
           fi
 
-      # PR erneut approven, falls erforderlich
       - name: Re-approve pull request after update
         if: env.UPDATED == 'true'
         env:
@@ -111,7 +100,6 @@ jobs:
             gh pr review $PR_NUMBER --approve
           fi
 
-      # Falls keine Änderungen erkannt wurden
       - name: No changes detected
         if: env.UPDATED == 'false'
         run: echo "No new JSON files needed an update. Workflow completed successfully."

From cdbabcac89f19d1090bb11e7cdcf7a1963dc3f08 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:37:55 +0100
Subject: [PATCH 254/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 9e1937651..d99688358 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dateien (new files only)
+name: Auto Update JSON-Date
 
 on:
   push:
@@ -33,7 +33,7 @@ jobs:
       - name: Find newly added JSON files
         id: find_new_json
         run: |
-          NEW_JSON_FILES=$(git log --diff-filter=A --name-only --pretty=format: -- json/*.json || true)
+          NEW_JSON_FILES=$(git diff --diff-filter=A --name-only HEAD~1 -- json/*.json || true)
 
           if [[ -z "$NEW_JSON_FILES" ]]; then
             echo "CHANGED=false" >> $GITHUB_ENV

From f03471133e82a2a68049d845dd039721e39b14d6 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:40:06 +0100
Subject: [PATCH 255/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index d99688358..10bfd140f 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -24,16 +24,24 @@ jobs:
 
       - name: Checkout repository
         uses: actions/checkout@v4
+        with:
+          fetch-depth: 2  # Ensure we have at least the last commit for comparison
 
       - name: Set up Git
         run: |
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      - name: Find newly added JSON files
+      - name: Find newly added JSON files (created today)
         id: find_new_json
         run: |
-          NEW_JSON_FILES=$(git diff --diff-filter=A --name-only HEAD~1 -- json/*.json || true)
+          TODAY=$(date -u +"%Y-%m-%d")
+          
+          # Fetch latest main for proper diff
+          git fetch origin main --depth=1
+
+          # Find new JSON files added today
+          NEW_JSON_FILES=$(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true)
 
           if [[ -z "$NEW_JSON_FILES" ]]; then
             echo "CHANGED=false" >> $GITHUB_ENV

From 33ee969d91b0cf798bce3351d6df436c756b2a7a Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:42:47 +0100
Subject: [PATCH 256/480] Create update-json.sh

---
 .github/workflows/scripts/update-json.sh | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 .github/workflows/scripts/update-json.sh

diff --git a/.github/workflows/scripts/update-json.sh b/.github/workflows/scripts/update-json.sh
new file mode 100644
index 000000000..df1ae26f7
--- /dev/null
+++ b/.github/workflows/scripts/update-json.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+FILE=$1
+TODAY=$(date -u +"%Y-%m-%d")
+
+if [[ -z "$FILE" ]]; then
+    echo "No file specified. Exiting."
+    exit 1
+fi
+
+if [[ ! -f "$FILE" ]]; then
+    echo "File $FILE not found. Exiting."
+    exit 1
+fi
+
+DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
+
+if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
+    echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
+    jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
+else
+    echo "No update needed."
+fi

From f1683ad39f1c55362133794b2c310e8ed1eee9d2 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:43:57 +0100
Subject: [PATCH 257/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 77 +++++++-------------------
 1 file changed, 20 insertions(+), 57 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 10bfd140f..488d68598 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Date
+name: Auto Update Latest JSON-Datei
 
 on:
   push:
@@ -24,90 +24,53 @@ jobs:
 
       - name: Checkout repository
         uses: actions/checkout@v4
-        with:
-          fetch-depth: 2  # Ensure we have at least the last commit for comparison
 
       - name: Set up Git
         run: |
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      - name: Find newly added JSON files (created today)
-        id: find_new_json
+      - name: Find latest created JSON file
+        id: find_latest_json
         run: |
-          TODAY=$(date -u +"%Y-%m-%d")
-          
-          # Fetch latest main for proper diff
-          git fetch origin main --depth=1
+          LATEST_JSON=$(git log --diff-filter=A --name-only --pretty=format: -- json/*.json | tail -n 1 || true)
 
-          # Find new JSON files added today
-          NEW_JSON_FILES=$(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true)
-
-          if [[ -z "$NEW_JSON_FILES" ]]; then
+          if [[ -z "$LATEST_JSON" ]]; then
+            echo "No new JSON files found."
             echo "CHANGED=false" >> $GITHUB_ENV
           else
-            echo "$NEW_JSON_FILES" > new_json_files.txt
+            echo "Latest JSON file: $LATEST_JSON"
+            echo "LATEST_JSON=$LATEST_JSON" >> $GITHUB_ENV
             echo "CHANGED=true" >> $GITHUB_ENV
           fi
 
-      - name: Update date_created in new JSON files
+      - name: Run update script
         if: env.CHANGED == 'true'
         run: |
-          TODAY=$(date -u +"%Y-%m-%d")
-          UPDATED=false
-
-          while read -r FILE; do
-            if [[ -f "$FILE" ]]; then
-              DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
-
-              if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
-                jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
-                UPDATED=true
-              fi
-            fi
-          done < new_json_files.txt
-
-          if [[ "$UPDATED" == "true" ]]; then
-            echo "UPDATED=true" >> $GITHUB_ENV
-          else
-            echo "UPDATED=false" >> $GITHUB_ENV
-          fi
+          chmod +x .github/workflows/scripts/update-json.sh
+          .github/workflows/scripts/update-json.sh "$LATEST_JSON"
 
       - name: Commit and create PR if changes exist
-        if: env.UPDATED == 'true'
+        if: env.CHANGED == 'true'
         run: |
           git add json/*.json
-          git commit -m "Auto-update JSON date_created fields (new files only)"
-          git checkout -b pr-update-json-dates
-          git push origin pr-update-json-dates --force
-          gh pr create --title "[core] Auto-update new JSON files" \
-                       --body "This PR is auto-generated to update the `date_created` field in newly created JSON files." \
-                       --head pr-update-json-dates \
+          git commit -m "Auto-update date_created in latest JSON file"
+          git checkout -b pr-update-json-date
+          git push origin pr-update-json-date --force
+          gh pr create --title "[core] Auto-update latest JSON file" \
+                       --body "This PR is auto-generated to update the `date_created` field in the latest created JSON file." \
+                       --head pr-update-json-date \
                        --base main \
                        --label "automated pr"
         env:
           GH_TOKEN: ${{ steps.generate-token.outputs.token }}
 
       - name: Approve pull request
-        if: env.UPDATED == 'true'
+        if: env.CHANGED == 'true'
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
-          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
+          PR_NUMBER=$(gh pr list --head "pr-update-json-date" --json number --jq '.[].number')
           if [ -n "$PR_NUMBER" ]; then
             gh pr review $PR_NUMBER --approve
           fi
-
-      - name: Re-approve pull request after update
-        if: env.UPDATED == 'true'
-        env:
-          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        run: |
-          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
-          if [ -n "$PR_NUMBER" ]; then
-            gh pr review $PR_NUMBER --approve
-          fi
-
-      - name: No changes detected
-        if: env.UPDATED == 'false'
-        run: echo "No new JSON files needed an update. Workflow completed successfully."

From 8acf81b93714a0b17e2219bad0e0e1552f1d2679 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:46:57 +0100
Subject: [PATCH 258/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 41 ++++++++++++++++----------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 488d68598..205a604b1 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update Latest JSON-Datei
+name: Auto Update JSON-Dates
 
 on:
   push:
@@ -24,23 +24,30 @@ jobs:
 
       - name: Checkout repository
         uses: actions/checkout@v4
+        with:
+          fetch-depth: 10  # Fetch at least 2 commits to compare changes
 
       - name: Set up Git
         run: |
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      - name: Find latest created JSON file
-        id: find_latest_json
+      - name: Find newly created JSON files from today
+        id: find_new_json
         run: |
-          LATEST_JSON=$(git log --diff-filter=A --name-only --pretty=format: -- json/*.json | tail -n 1 || true)
+          TODAY=$(date -u +"%Y-%m-%d")
 
-          if [[ -z "$LATEST_JSON" ]]; then
-            echo "No new JSON files found."
+          git fetch origin main --depth=1
+
+          NEW_JSON_FILES=$(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true)
+
+          if [[ -z "$NEW_JSON_FILES" ]]; then
+            echo "No new JSON files created today."
             echo "CHANGED=false" >> $GITHUB_ENV
           else
-            echo "Latest JSON file: $LATEST_JSON"
-            echo "LATEST_JSON=$LATEST_JSON" >> $GITHUB_ENV
+            echo "New JSON files detected today:"
+            echo "$NEW_JSON_FILES"
+            echo "$NEW_JSON_FILES" > new_json_files.txt
             echo "CHANGED=true" >> $GITHUB_ENV
           fi
 
@@ -48,18 +55,20 @@ jobs:
         if: env.CHANGED == 'true'
         run: |
           chmod +x .github/workflows/scripts/update-json.sh
-          .github/workflows/scripts/update-json.sh "$LATEST_JSON"
+          while read -r FILE; do
+            .github/workflows/scripts/update-json.sh "$FILE"
+          done < new_json_files.txt
 
       - name: Commit and create PR if changes exist
         if: env.CHANGED == 'true'
         run: |
           git add json/*.json
-          git commit -m "Auto-update date_created in latest JSON file"
-          git checkout -b pr-update-json-date
-          git push origin pr-update-json-date --force
-          gh pr create --title "[core] Auto-update latest JSON file" \
-                       --body "This PR is auto-generated to update the `date_created` field in the latest created JSON file." \
-                       --head pr-update-json-date \
+          git commit -m "Auto-update date_created in new JSON files"
+          git checkout -b pr-update-json-dates
+          git push origin pr-update-json-dates --force
+          gh pr create --title "[core] Auto-update new JSON files" \
+                       --body "This PR is auto-generated to update the `date_created` field in newly created JSON files." \
+                       --head pr-update-json-dates \
                        --base main \
                        --label "automated pr"
         env:
@@ -70,7 +79,7 @@ jobs:
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
-          PR_NUMBER=$(gh pr list --head "pr-update-json-date" --json number --jq '.[].number')
+          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
           if [ -n "$PR_NUMBER" ]; then
             gh pr review $PR_NUMBER --approve
           fi

From e23137eb6340d2ecb6780aaa63ea6b19d8026b95 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:48:58 +0100
Subject: [PATCH 259/480] Update update-json.sh

---
 .github/workflows/scripts/update-json.sh | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.github/workflows/scripts/update-json.sh b/.github/workflows/scripts/update-json.sh
index df1ae26f7..b51df649f 100644
--- a/.github/workflows/scripts/update-json.sh
+++ b/.github/workflows/scripts/update-json.sh
@@ -16,8 +16,5 @@ fi
 DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
 
 if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
-    echo "Updating $FILE: $DATE_IN_JSON -> $TODAY"
     jq --arg date "$TODAY" '.date_created = $date' "$FILE" > tmp.json && mv tmp.json "$FILE"
-else
-    echo "No update needed."
 fi

From 61567a66b09bfaa51b40ab4e5ccf58fabf71b057 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:49:19 +0100
Subject: [PATCH 260/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 28 +++++++++++++-------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 205a604b1..530743822 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dates
+name: Auto Update JSON-Dateien (new files only)
 
 on:
   push:
@@ -25,7 +25,7 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v4
         with:
-          fetch-depth: 10  # Fetch at least 2 commits to compare changes
+          fetch-depth: 0  # Fetch full history to check commit timestamps
 
       - name: Set up Git
         run: |
@@ -36,27 +36,27 @@ jobs:
         id: find_new_json
         run: |
           TODAY=$(date -u +"%Y-%m-%d")
+          > new_json_files.txt
 
-          git fetch origin main --depth=1
+          for FILE in $(git ls-files --json | jq -r '.[]'); do
+            COMMIT_DATE=$(git log --format=%cI -- "$FILE" | tail -n 1 | cut -dT -f1)
+            if [[ "$COMMIT_DATE" == "$TODAY" ]]; then
+              echo "$FILE" >> new_json_files.txt
+            fi
+          done
 
-          NEW_JSON_FILES=$(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true)
-
-          if [[ -z "$NEW_JSON_FILES" ]]; then
-            echo "No new JSON files created today."
-            echo "CHANGED=false" >> $GITHUB_ENV
-          else
-            echo "New JSON files detected today:"
-            echo "$NEW_JSON_FILES"
-            echo "$NEW_JSON_FILES" > new_json_files.txt
+          if [[ -s new_json_files.txt ]]; then
             echo "CHANGED=true" >> $GITHUB_ENV
+          else
+            echo "CHANGED=false" >> $GITHUB_ENV
           fi
 
       - name: Run update script
         if: env.CHANGED == 'true'
         run: |
-          chmod +x .github/workflows/scripts/update-json.sh
+          chmod +x .github/scripts/update-json.sh
           while read -r FILE; do
-            .github/workflows/scripts/update-json.sh "$FILE"
+            .github/scripts/update-json.sh "$FILE"
           done < new_json_files.txt
 
       - name: Commit and create PR if changes exist

From c30b080e442b48629c18719d6d8f991957fc9512 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:49:37 +0100
Subject: [PATCH 261/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 530743822..647f88e36 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -54,9 +54,9 @@ jobs:
       - name: Run update script
         if: env.CHANGED == 'true'
         run: |
-          chmod +x .github/scripts/update-json.sh
+          chmod +x .github/workflows/scripts/update-json.sh
           while read -r FILE; do
-            .github/scripts/update-json.sh "$FILE"
+            .github/workflows/scripts/update-json.sh "$FILE"
           done < new_json_files.txt
 
       - name: Commit and create PR if changes exist

From 5736b6aa5c2cb4f4a36d89ab034bdd2023b27711 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:52:43 +0100
Subject: [PATCH 262/480] Update update-json.sh


From f6bc82e77abac901b05c824f0a005fc27f38879d Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:52:46 +0100
Subject: [PATCH 263/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 647f88e36..f65fdefc0 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dateien (new files only)
+name: Auto Update JSON-Dates
 
 on:
   push:
@@ -25,7 +25,7 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v4
         with:
-          fetch-depth: 0  # Fetch full history to check commit timestamps
+          fetch-depth: 0  # Fetch full history for commit checks
 
       - name: Set up Git
         run: |
@@ -38,7 +38,9 @@ jobs:
           TODAY=$(date -u +"%Y-%m-%d")
           > new_json_files.txt
 
-          for FILE in $(git ls-files --json | jq -r '.[]'); do
+          git fetch origin main --depth=1
+
+          for FILE in $(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true); do
             COMMIT_DATE=$(git log --format=%cI -- "$FILE" | tail -n 1 | cut -dT -f1)
             if [[ "$COMMIT_DATE" == "$TODAY" ]]; then
               echo "$FILE" >> new_json_files.txt

From a71bdb6f06342cdcfc4e6e12dbb5f4bc8bca4fb6 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:54:51 +0100
Subject: [PATCH 264/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index f65fdefc0..692d7737c 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dates
+name: Auto Update JSON-Dateien (new files only)
 
 on:
   push:
@@ -25,7 +25,7 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v4
         with:
-          fetch-depth: 0  # Fetch full history for commit checks
+          fetch-depth: 0  # Full history to check commit timestamps
 
       - name: Set up Git
         run: |
@@ -36,11 +36,12 @@ jobs:
         id: find_new_json
         run: |
           TODAY=$(date -u +"%Y-%m-%d")
+          git fetch origin main --depth=1
+          LATEST_COMMIT=$(git rev-parse origin/main)
+
           > new_json_files.txt
 
-          git fetch origin main --depth=1
-
-          for FILE in $(git log --since="$TODAY 00:00:00" --diff-filter=A --name-only --pretty=format: origin/main -- json/*.json || true); do
+          for FILE in $(git diff --diff-filter=A --name-only $LATEST_COMMIT -- json/); do
             COMMIT_DATE=$(git log --format=%cI -- "$FILE" | tail -n 1 | cut -dT -f1)
             if [[ "$COMMIT_DATE" == "$TODAY" ]]; then
               echo "$FILE" >> new_json_files.txt
@@ -56,9 +57,9 @@ jobs:
       - name: Run update script
         if: env.CHANGED == 'true'
         run: |
-          chmod +x .github/workflows/scripts/update-json.sh
+          chmod +x .github/scripts/update-json.sh
           while read -r FILE; do
-            .github/workflows/scripts/update-json.sh "$FILE"
+            .github/scripts/update-json.sh "$FILE"
           done < new_json_files.txt
 
       - name: Commit and create PR if changes exist

From c32e71cae3a5efcf561d0bfa30d7a434b066135c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:55:27 +0100
Subject: [PATCH 265/480] New Script: Suwayomi-Server (#2139)

* add suwayomi-server script

* fix header

* Update ct/suwayomiserver.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* Update ct/suwayomiserver.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* fixes

* more fixes

* fixes

* Update json/suwayomi-server.json

Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com>
---
 ct/suwayomiserver.sh              | 66 +++++++++++++++++++++++++++++++
 install/suwayomiserver-install.sh | 53 +++++++++++++++++++++++++
 json/suwayomi-server.json         | 39 ++++++++++++++++++
 3 files changed, 158 insertions(+)
 create mode 100644 ct/suwayomiserver.sh
 create mode 100644 install/suwayomiserver-install.sh
 create mode 100644 json/suwayomi-server.json

diff --git a/ct/suwayomiserver.sh b/ct/suwayomiserver.sh
new file mode 100644
index 000000000..afbd192f9
--- /dev/null
+++ b/ct/suwayomiserver.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: tremor021
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/Suwayomi/Suwayomi-Server
+
+APP="Suwayomi-Server"
+TAGS="media;manga"
+var_cpu="1"
+var_ram="1024"
+var_disk="4"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+header_info "$APP"
+base_settings
+
+variables
+color
+catch_errors
+
+function update_script() {
+    header_info
+    check_container_storage
+    check_container_resources
+
+    if [[ ! -f /usr/bin/suwayomi-server ]]; then
+        msg_error "No ${APP} Installation Found!"
+        exit
+    fi
+    RELEASE=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
+    if [[ "${RELEASE}" != "$(cat /opt/suwayomi-server_version.txt)" ]] || [[ ! -f /opt/suwayomi-server_version.txt ]]; then
+        msg_info "Updating $APP"
+        msg_info "Stopping $APP"
+        systemctl stop suwayomi-server
+        msg_ok "Stopped $APP"
+        msg_info "Updating $APP to v${RELEASE}"
+        cd /tmp
+        URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' |  tail -n+2 | head -n 1)
+        wget -q $URL
+        $STD dpkg -i /tmp/*.deb
+        msg_ok "Updated $APP to v${RELEASE}"
+        msg_info "Starting $APP"
+        systemctl start suwayomi-server
+        msg_ok "Started $APP"
+        msg_info "Cleaning Up"
+        rm -f *.deb
+        msg_ok "Cleanup Completed"
+        echo "${RELEASE}" >/opt/suwayomi-server_version.txt.txt
+        msg_ok "Update Successful"
+    else
+        msg_ok "No update required. ${APP} is already at v${RELEASE}"
+    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}:4567${CL}"
diff --git a/install/suwayomiserver-install.sh b/install/suwayomiserver-install.sh
new file mode 100644
index 000000000..3d0354a90
--- /dev/null
+++ b/install/suwayomiserver-install.sh
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: tremor021
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/Suwayomi/Suwayomi-Server
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc \
+  openjdk-17-jre \
+  libc++-dev
+msg_ok "Installed Dependencies"
+
+msg_info "Settting up Suwayomi-Server"
+URL=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "browser_download_url" | awk '{print substr($2, 2, length($2)-2) }' |  tail -n+2 | head -n 1)
+RELEASE=$(curl -s https://api.github.com/repos/Suwayomi/Suwayomi-Server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
+wget -q $URL
+$STD dpkg -i *.deb
+echo ${RELEASE} >/opt/suwayomi-server_version.txt
+msg_ok "Done setting up Suwayomi-Server"
+msg_info "Creating Service"
+cat </etc/systemd/system/suwayomi-server.service
+[Unit]
+Description=Suwayomi-Server Service
+After=network.target
+
+[Service]
+ExecStart=/usr/bin/suwayomi-server
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q --now suwayomi-server
+msg_ok "Created Service"
+motd_ssh
+customize
+msg_info "Cleaning up"
+rm -f *.deb
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
diff --git a/json/suwayomi-server.json b/json/suwayomi-server.json
new file mode 100644
index 000000000..b28a99132
--- /dev/null
+++ b/json/suwayomi-server.json
@@ -0,0 +1,39 @@
+{
+    "name": "Suwayomi-Server",
+    "slug": "suwayomi-server",
+    "categories": [
+        13
+    ],
+    "date_created": "2025-02-07",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 4567,
+    "documentation": "https://github.com/Suwayomi/Suwayomi-Server/wiki",
+    "website": "https://github.com/Suwayomi/Suwayomi-Server",
+    "logo": "https://github.com/Suwayomi/Suwayomi-Server/raw/master/server/src/main/resources/icon/faviconlogo.png",
+    "description": "A free and open source manga reader server that runs extensions built for Mihon (Tachiyomi).",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/suwayomiserver.sh",
+            "resources": {
+                "cpu": 1,
+                "ram": 1024,
+                "hdd": 4,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": [
+        {
+            "text": "This application is conflicting with Kaspersky products. You need to disable Kaspersky in order to use this application.",
+            "type": "info"
+        }
+    ]
+}
\ No newline at end of file

From 133aa1a1f288ec73b09c5ff78857b66b893f2565 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:57:21 +0100
Subject: [PATCH 266/480] Update .app files (#2256)

Co-authored-by: GitHub Actions 
---
 ct/headers/suwayomiserver | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/suwayomiserver

diff --git a/ct/headers/suwayomiserver b/ct/headers/suwayomiserver
new file mode 100644
index 000000000..034e40621
--- /dev/null
+++ b/ct/headers/suwayomiserver
@@ -0,0 +1,6 @@
+   _____                                            _      _____                          
+  / ___/__  ___      ______ ___  ______  ____ ___  (_)    / ___/___  ______   _____  _____
+  \__ \/ / / / | /| / / __ `/ / / / __ \/ __ `__ \/ /_____\__ \/ _ \/ ___/ | / / _ \/ ___/
+ ___/ / /_/ /| |/ |/ / /_/ / /_/ / /_/ / / / / / / /_____/__/ /  __/ /   | |/ /  __/ /    
+/____/\__,_/ |__/|__/\__,_/\__, /\____/_/ /_/ /_/_/     /____/\___/_/    |___/\___/_/     
+                          /____/                                                          

From 0877e6a2f234ffd8ba7bd7e89e01acd06f78e55b Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 10:58:53 +0100
Subject: [PATCH 267/480] Update update_json_date.yml

---
 .github/workflows/update_json_date.yml | 44 +++++++++++++-------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml
index 692d7737c..cb9bc8559 100644
--- a/.github/workflows/update_json_date.yml
+++ b/.github/workflows/update_json_date.yml
@@ -1,4 +1,4 @@
-name: Auto Update JSON-Dateien (new files only)
+name: Auto Update JSON-Date
 
 on:
   push:
@@ -25,30 +25,30 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v4
         with:
-          fetch-depth: 0  # Full history to check commit timestamps
+          fetch-depth: 0  # Full history for proper detection
 
       - name: Set up Git
         run: |
           git config --global user.name "GitHub Actions"
           git config --global user.email "github-actions[bot]@users.noreply.github.com"
 
-      - name: Find newly created JSON files from today
-        id: find_new_json
+      - name: Find JSON files with incorrect date_created
+        id: find_wrong_json
         run: |
           TODAY=$(date -u +"%Y-%m-%d")
-          git fetch origin main --depth=1
-          LATEST_COMMIT=$(git rev-parse origin/main)
+          > incorrect_json_files.txt
 
-          > new_json_files.txt
+          for FILE in json/*.json; do
+            if [[ -f "$FILE" ]]; then
+              DATE_IN_JSON=$(jq -r '.date_created' "$FILE" 2>/dev/null || echo "")
 
-          for FILE in $(git diff --diff-filter=A --name-only $LATEST_COMMIT -- json/); do
-            COMMIT_DATE=$(git log --format=%cI -- "$FILE" | tail -n 1 | cut -dT -f1)
-            if [[ "$COMMIT_DATE" == "$TODAY" ]]; then
-              echo "$FILE" >> new_json_files.txt
+              if [[ "$DATE_IN_JSON" != "$TODAY" ]]; then
+                echo "$FILE" >> incorrect_json_files.txt
+              fi
             fi
           done
 
-          if [[ -s new_json_files.txt ]]; then
+          if [[ -s incorrect_json_files.txt ]]; then
             echo "CHANGED=true" >> $GITHUB_ENV
           else
             echo "CHANGED=false" >> $GITHUB_ENV
@@ -57,21 +57,21 @@ jobs:
       - name: Run update script
         if: env.CHANGED == 'true'
         run: |
-          chmod +x .github/scripts/update-json.sh
+          chmod +x .github/workflows/scripts/update-json.sh
           while read -r FILE; do
-            .github/scripts/update-json.sh "$FILE"
-          done < new_json_files.txt
+            .github/workflows/scripts/update-json.sh "$FILE"
+          done < incorrect_json_files.txt
 
       - name: Commit and create PR if changes exist
         if: env.CHANGED == 'true'
         run: |
           git add json/*.json
-          git commit -m "Auto-update date_created in new JSON files"
-          git checkout -b pr-update-json-dates
-          git push origin pr-update-json-dates --force
-          gh pr create --title "[core] Auto-update new JSON files" \
-                       --body "This PR is auto-generated to update the `date_created` field in newly created JSON files." \
-                       --head pr-update-json-dates \
+          git commit -m "Auto-update date_created in incorrect JSON files"
+          git checkout -b pr-fix-json-dates
+          git push origin pr-fix-json-dates --force
+          gh pr create --title "[core] Fix incorrect JSON date_created fields" \
+                       --body "This PR is auto-generated to fix incorrect `date_created` fields in JSON files." \
+                       --head pr-fix-json-dates \
                        --base main \
                        --label "automated pr"
         env:
@@ -82,7 +82,7 @@ jobs:
         env:
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
-          PR_NUMBER=$(gh pr list --head "pr-update-json-dates" --json number --jq '.[].number')
+          PR_NUMBER=$(gh pr list --head "pr-fix-json-dates" --json number --jq '.[].number')
           if [ -n "$PR_NUMBER" ]; then
             gh pr review $PR_NUMBER --approve
           fi

From c548c3bd88b2d39a1ba0dd1dcadf6abe0e07d951 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
 <58952836+tremor021@users.noreply.github.com>
Date: Tue, 11 Feb 2025 11:45:25 +0100
Subject: [PATCH 268/480] New Script: Watcharr (#2243)

* add watcharr script

* fix author name
---
 ct/watcharr.sh              | 80 +++++++++++++++++++++++++++++++
 install/watcharr-install.sh | 93 +++++++++++++++++++++++++++++++++++++
 json/watcharr.json          | 34 ++++++++++++++
 3 files changed, 207 insertions(+)
 create mode 100644 ct/watcharr.sh
 create mode 100644 install/watcharr-install.sh
 create mode 100644 json/watcharr.json

diff --git a/ct/watcharr.sh b/ct/watcharr.sh
new file mode 100644
index 000000000..3290e0735
--- /dev/null
+++ b/ct/watcharr.sh
@@ -0,0 +1,80 @@
+#!/usr/bin/env bash
+source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: Slaviša Arežina (tremor021)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/sbondCo/Watcharr
+
+APP="Watcharr"
+TAGS="media"
+var_cpu="1"
+var_ram="1024"
+var_disk="4"
+var_os="debian"
+var_version="12"
+var_unprivileged="1"
+
+header_info "$APP"
+base_settings
+
+variables
+color
+catch_errors
+
+function update_script() {
+    header_info
+    check_container_storage
+    check_container_resources
+    if [[ ! -d /opt/watcharr ]]; then
+        msg_error "No ${APP} Installation Found!"
+        exit
+    fi
+    RELEASE=$(curl -s https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+    if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
+        msg_info "Updating $APP"
+
+        msg_info "Stopping $APP"
+        systemctl stop watcharr
+        msg_ok "Stopped $APP"
+
+        msg_info "Updating $APP to v${RELEASE}"
+        temp_file=$(mktemp)
+        wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
+        tar -xzf "$temp_file"
+        rm -f /opt/watcharr/server/watcharr
+        rm -rf /opt/watcharr/server/ui
+        mv Watcharr-${RELEASE}/ /opt/watcharr
+        cd /opt/watcharr
+        export GOOS=linux
+        npm i &> /dev/null
+        npm run build &> /dev/null
+        mv ./build ./server/ui
+        cd server
+        go mod download
+        go build -o ./watcharr
+        msg_ok "Updated $APP to v${RELEASE}"
+
+        msg_info "Starting $APP"
+        systemctl start watcharr
+        msg_ok "Started $APP"
+
+        msg_info "Cleaning Up"
+        rm -f ${temp_file}
+        msg_ok "Cleanup Completed"
+
+        echo "${RELEASE}" >/opt/${APP}_version.txt
+        msg_ok "Update Successful"
+    else
+        msg_ok "No update required. ${APP} is already at v${RELEASE}"
+    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}:3080${CL}"
diff --git a/install/watcharr-install.sh b/install/watcharr-install.sh
new file mode 100644
index 000000000..aa3c249df
--- /dev/null
+++ b/install/watcharr-install.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2021-2025 community-scripts ORG
+# Author: Slaviša Arežina (tremor021)
+# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
+# Source: https://github.com/sbondCo/Watcharr
+
+source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
+color
+verb_ip6
+catch_errors
+setting_up_container
+network_check
+update_os
+
+msg_info "Installing Dependencies"
+$STD apt-get install -y \
+  curl \
+  sudo \
+  mc \
+  gcc \
+  gnupg
+msg_ok "Installed Dependencies"
+
+msg_info "Setup Golang"
+set +o pipefail
+temp_file=$(mktemp)
+golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1)
+wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file"
+tar -C /usr/local -xzf "$temp_file"
+ln -sf /usr/local/go/bin/go /usr/local/bin/go
+rm -f "$temp_file"
+set -o pipefail
+msg_ok "Setup Golang"
+
+msg_info "Setup Node.js"
+mkdir -p /etc/apt/keyrings
+curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
+echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
+$STD apt-get update
+$STD apt-get install -y nodejs
+msg_ok "Setup Node.js"
+
+msg_info "Setup Watcharr"
+temp_file=$(mktemp)
+RELEASE=$(curl -s https://api.github.com/repos/sbondCo/Watcharr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
+wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file"
+tar -xzf "$temp_file"
+mv Watcharr-${RELEASE}/ /opt/watcharr
+cd /opt/watcharr
+$STD npm i
+$STD npm run build
+mv ./build ./server/ui
+cd server
+export CGO_ENABLED=1 GOOS=linux
+go mod download
+go build -o ./watcharr
+cat </opt/start.sh
+#! /bin/bash
+source ~/.bashrc
+cd /opt/watcharr/server
+./watcharr
+EOF
+chmod +x /opt/start.sh
+echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
+msg_ok "Setup Watcharr"
+
+msg_info "Creating Service"
+cat </etc/systemd/system/watcharr.service
+[Unit]
+Description=Watcharr Service
+After=network.target
+
+[Service]
+WorkingDirectory=/opt/watcharr/server
+ExecStart=/opt/start.sh
+Restart=always
+User=root
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable -q --now watcharr
+msg_ok "Created Service"
+
+motd_ssh
+customize
+
+msg_info "Cleaning up"
+rm -f "$temp_file"
+$STD apt-get -y autoremove
+$STD apt-get -y autoclean
+msg_ok "Cleaned"
\ No newline at end of file
diff --git a/json/watcharr.json b/json/watcharr.json
new file mode 100644
index 000000000..e2f3476f6
--- /dev/null
+++ b/json/watcharr.json
@@ -0,0 +1,34 @@
+{
+    "name": "Watcharr",
+    "slug": "watcharr",
+    "categories": [
+        13
+    ],
+    "date_created": "2025-02-12",
+    "type": "ct",
+    "updateable": true,
+    "privileged": false,
+    "interface_port": 3080,
+    "documentation": "https://watcharr.app/docs/introduction",
+    "website": "https://watcharr.app/",
+    "logo": "https://watcharr.app/img/favicon.png",
+    "description": "Open source, self-hostable watched list for all your content with user authentication, modern and clean UI and a very simple setup.",
+    "install_methods": [
+        {
+            "type": "default",
+            "script": "ct/watcharr.sh",
+            "resources": {
+                "cpu": 1,
+                "ram": 1024,
+                "hdd": 4,
+                "os": "debian",
+                "version": "12"
+            }
+        }
+    ],
+    "default_credentials": {
+        "username": null,
+        "password": null
+    },
+    "notes": []
+}
\ No newline at end of file

From 51f3f9796711e2614e85721d7fd7b52f1229b4ad Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 11:45:41 +0100
Subject: [PATCH 269/480] Fix: Apache Guacamole Version Crawling - only latest
 Version (#2258)

---
 install/apache-guacamole-install.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh
index 435193e14..0597a4e6a 100644
--- a/install/apache-guacamole-install.sh
+++ b/install/apache-guacamole-install.sh
@@ -41,7 +41,7 @@ $STD apt-get install -y \
 msg_ok "Installed Dependencies"
 
 msg_info "Setup Apache Tomcat"
-RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//')
+RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//' | sort -V | tail -n1)
 mkdir -p /opt/apache-guacamole/tomcat9
 mkdir -p /opt/apache-guacamole/server
 wget -qO- "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1

From 229016ca109201781a1be5fbba139175cc67bf47 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 11:49:14 +0100
Subject: [PATCH 270/480] Update .app files (#2260)

Co-authored-by: GitHub Actions 
---
 ct/headers/watcharr | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 ct/headers/watcharr

diff --git a/ct/headers/watcharr b/ct/headers/watcharr
new file mode 100644
index 000000000..e1a5a70a9
--- /dev/null
+++ b/ct/headers/watcharr
@@ -0,0 +1,6 @@
+ _       __      __       __                   
+| |     / /___ _/ /______/ /_  ____ ___________
+| | /| / / __ `/ __/ ___/ __ \/ __ `/ ___/ ___/
+| |/ |/ / /_/ / /_/ /__/ / / / /_/ / /  / /    
+|__/|__/\__,_/\__/\___/_/ /_/\__,_/_/  /_/     
+                                               

From 4af819f449698a2b90f09767b6da817138d81643 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 11:55:26 +0100
Subject: [PATCH 271/480] Update CHANGELOG.md (#2245)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10547ed3d..edf57631c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,19 @@ All LXC instances created using this repository come pre-installed with Midnight
 Do not break established syntax in this file, as it is automatically updated by a Github Workflow
 
 
+## 2025-02-11
+
+### Changes
+
+### ✨ New Scripts
+
+- New Script: Watcharr [@tremor021](https://github.com/tremor021) ([#2243](https://github.com/community-scripts/ProxmoxVE/pull/2243))
+- New Script: Suwayomi-Server [@tremor021](https://github.com/tremor021) ([#2139](https://github.com/community-scripts/ProxmoxVE/pull/2139))
+
+### 🚀 Updated Scripts
+
+- Fix: Apache Guacamole Version Crawling - only latest Version [@MickLesk](https://github.com/MickLesk) ([#2258](https://github.com/community-scripts/ProxmoxVE/pull/2258))
+
 ## 2025-02-10
 
 ### Changes

From 414a6617f89520bca445ee8f4c4c5bbf1170248c Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 12:30:03 +0100
Subject: [PATCH 272/480] Rename update_json_date.yml to
 update_json_date.yml.bak

---
 .../workflows/{update_json_date.yml => update_json_date.yml.bak}  | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename .github/workflows/{update_json_date.yml => update_json_date.yml.bak} (100%)

diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml.bak
similarity index 100%
rename from .github/workflows/update_json_date.yml
rename to .github/workflows/update_json_date.yml.bak

From 81a64c2cff257b44c669b48821ab97ac61b7348f Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 12:36:38 +0100
Subject: [PATCH 273/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index b8be0b191..f62884e7f 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -26,7 +26,7 @@ INFO="${BL}ℹ️${CL}"
 APP="FileBrowser"
 INSTALL_PATH="/usr/local/bin/filebrowser"
 SERVICE_PATH="/etc/systemd/system/filebrowser.service"
-DB_PATH="/var/lib/filebrowser/filebrowser.db"
+DB_PATH="/usr/local/community-scripts/filebrowser.db"
 IP=$(hostname -I | awk '{print $1}')
 DEFAULT_PORT=8080
 
@@ -82,9 +82,9 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     msg_ok "Installed ${APP}"
 
     msg_info "Creating FileBrowser directory"
-    mkdir -p /var/lib/filebrowser
-    chown root:root /var/lib/filebrowser
-    chmod 755 /var/lib/filebrowser
+    mkdir -p /usr/local/community-scripts
+    chown root:root /usr/local/community-scripts
+    chmod 755 /usr/local/community-scripts
     msg_ok "Directory created successfully"
 
     read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt

From a34da2459d09b8d262369f0cccc207ff44de0fc9 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 12:46:45 +0100
Subject: [PATCH 274/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index f62884e7f..fb03f502a 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -90,12 +90,18 @@ if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
     read -r -p "Would you like to use No Authentication? (y/N): " auth_prompt
     if [[ "${auth_prompt,,}" =~ ^(y|yes)$ ]]; then
         msg_info "Configuring No Authentication"
-        filebrowser config init -a '0.0.0.0' -p "$PORT" --auth.method=noauth --database "$DB_PATH" &>/dev/null
+          cd /usr/local/community-scripts
+          filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
+          filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
+          filebrowser config init --auth.method=noauth &>/dev/null
+          filebrowser config set --auth.method=noauth &>/dev/null
+          filebrowser users add ID 1 --perm.admin &>/dev/null  
         msg_ok "No Authentication configured"
     else
         msg_info "Setting up default authentication"
-        filebrowser config init -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
-        filebrowser config set -a '0.0.0.0' -p "$PORT" --database "$DB_PATH" &>/dev/null
+        cd /usr/local/community-scripts
+        filebrowser config init -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
+        filebrowser config set -a '0.0.0.0' -p "$PORT" -d "$DB_PATH" &>/dev/null
         filebrowser users add admin helper-scripts.com --perm.admin --database "$DB_PATH" &>/dev/null
         msg_ok "Default authentication configured (admin:helper-scripts.com)"
     fi

From 8e8e631d2234c9759b47af9cdf24e888fcf8a3cc Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 12:47:33 +0100
Subject: [PATCH 275/480] Update filebrowser.sh

---
 misc/filebrowser.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh
index fb03f502a..ec57f7ded 100644
--- a/misc/filebrowser.sh
+++ b/misc/filebrowser.sh
@@ -114,8 +114,8 @@ After=network-online.target
 
 [Service]
 User=root
-WorkingDirectory=/var/lib/filebrowser/
-ExecStart=/usr/local/bin/filebrowser -r / --database "$DB_PATH" -p "$PORT"
+WorkingDirectory=/usr/local/community-scripts
+ExecStart=/usr/local/bin/filebrowser -r / -d "$DB_PATH" -p "$PORT"
 Restart=always
 
 [Install]

From b39078af7ef52e9f5f89e5c86e7254b5de6d97d4 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 13:20:12 +0100
Subject: [PATCH 276/480] Update crafty-controller-install.sh

---
 install/crafty-controller-install.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh
index 093afee29..7fe28b2a8 100644
--- a/install/crafty-controller-install.sh
+++ b/install/crafty-controller-install.sh
@@ -28,7 +28,7 @@ msg_ok "Installed Dependencies"
 
 msg_info "Setting up TermurinJDK"
 wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
-$STD echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | $STD tee /etc/apt/sources.list.d/adoptium.list
+$STD echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
 $STD apt-get update
 $STD apt-get install -y \
   temurin-8-jre \

From e55db3cb75466f30d8e3b1808c5762a53c1b938b Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Tue, 11 Feb 2025 13:43:48 +0100
Subject: [PATCH 277/480] Update pull_request_template.md (#2266)

---
 .github/pull_request_template.md | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index a08e1a6c8..11a90a774 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,19 +1,17 @@
 ## ✍️ Description  
   
 
---
 
 ## 🔗 Related PR / Discussion / Issue  
 Link: #
 
---
+
 
 ## ✅ Prerequisites  
 Before this PR can be reviewed, the following must be completed:  
 - [] **Self-review performed** – Code follows established patterns and conventions.  
 - [] **Testing performed** – Changes have been thoroughly tested and verified.  
 
---
 
 ## 🛠️ Type of Change  
 Select all that apply:  
@@ -22,7 +20,6 @@ Select all that apply:
 - [] 💥 **Breaking change** – Alters existing functionality in a way that may require updates.  
 - [] 🆕 **New script** – A fully functional and tested script or script set.  
 
----
 
 ## 📋 Additional Information (optional)  
   

From 6a486d4d73f1939b31181e5bef096bf8f643a639 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 14:08:59 +0100
Subject: [PATCH 278/480] Update crafty-controller-install.sh

---
 install/crafty-controller-install.sh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh
index 7fe28b2a8..b02322e3d 100644
--- a/install/crafty-controller-install.sh
+++ b/install/crafty-controller-install.sh
@@ -27,8 +27,9 @@ $STD apt-get install -y \
 msg_ok "Installed Dependencies"
 
 msg_info "Setting up TermurinJDK"
-wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
-$STD echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
+mkdir -p /etc/apt/keyrings
+wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
+echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
 $STD apt-get update
 $STD apt-get install -y \
   temurin-8-jre \

From 9338fdeebf125537b0c38011c96e23f5d0a11e9e Mon Sep 17 00:00:00 2001
From: bannert <58707896+bannert1337@users.noreply.github.com>
Date: Tue, 11 Feb 2025 14:22:12 +0100
Subject: [PATCH 279/480] Update Komodo icon (#2263)

Old icon link was dead.
Replaced with selfh.st svg icon
---
 json/komodo.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/json/komodo.json b/json/komodo.json
index f168b4613..cddf046c0 100644
--- a/json/komodo.json
+++ b/json/komodo.json
@@ -11,7 +11,7 @@
   "interface_port": 9120,
   "documentation": "https://komo.do/docs/intro",
   "website": "https://komo.do",
-  "logo": "https://komo.do/img/logo512.png",
+  "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/komodo.svg",
   "description": "Komodo is a build and deployment system that automates the creation of versioned Docker images from Git repositories and facilitates the deployment of Docker containers and Docker Compose setups. It provides features such as build automation triggered by Git pushes, deployment management, and monitoring of uptime and logs across multiple servers. The core API and associated agent are developed in Rust.",
   "install_methods": [
     {
@@ -36,4 +36,4 @@
       "type": "info"
     }
   ]
-}
\ No newline at end of file
+}

From a5a143111c677e267f089bde423b4504f03d9b2c Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Tue, 11 Feb 2025 14:42:09 +0100
Subject: [PATCH 280/480] Update Checkmk version grepping (#2264)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Rögl-Brunner Michel 
---
 ct/checkmk.sh              | 2 +-
 install/checkmk-install.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/ct/checkmk.sh b/ct/checkmk.sh
index f1f930b8e..9088ee9b7 100644
--- a/ct/checkmk.sh
+++ b/ct/checkmk.sh
@@ -29,7 +29,7 @@ function update_script() {
     msg_error "No ${APP} Installation Found!"
     exit
   fi
-  RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }') 
+  RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -v '\-rc' | sort -V | tail -n 1) 
   if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
     msg_info "Updating ${APP} to v${RELEASE}"
     omd stop monitoring &>/dev/null
diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh
index 12328af75..e718894e5 100644
--- a/install/checkmk-install.sh
+++ b/install/checkmk-install.sh
@@ -22,7 +22,7 @@ $STD apt-get install -y \
 msg_ok "Installed Dependencies"
 
 msg_info "Install Checkmk"
-RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | head -n 1)
+RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -v '\-rc' | sort -V | tail -n 1)
 wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb
 $STD apt-get install -y /opt/checkmk.deb
 echo "${RELEASE}" >"/opt/checkmk_version.txt"

From b2d022edff2945214ddb4b705efa69e32a6d52a7 Mon Sep 17 00:00:00 2001
From: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date: Tue, 11 Feb 2025 14:43:04 +0100
Subject: [PATCH 281/480] Fix Photoprism: Add defaults.yml for CLI Tool (#2261)

---
 install/photoprism-install.sh | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/install/photoprism-install.sh b/install/photoprism-install.sh
index ca02c4e9d..e14939a6d 100644
--- a/install/photoprism-install.sh
+++ b/install/photoprism-install.sh
@@ -62,6 +62,35 @@ PHOTOPRISM_PUBLIC='false'
 PHOTOPRISM_DEBUG='false'
 EOF
 ln -sf /opt/photoprism/bin/photoprism /usr/local/bin/photoprism
+
+mkdir -p /etc/photoprism/
+cat </etc/photoprism/defaults.yml
+ConfigPath: "~/.config/photoprism"
+StoragePath: "/opt/photoprism/storage"
+OriginalsPath: "/opt/photoprism/photos/originals"
+ImportPath: "/media"
+AdminUser: "admin"
+AdminPassword: "changeme"
+AuthMode: "password"
+DatabaseDriver: "sqlite"
+HttpHost: "0.0.0.0"
+HttpPort: 2342
+HttpCompression: "gzip"
+DisableTLS: false
+DefaultTLS: true
+Experimental: false
+DisableWebDAV: false
+DisableSettings: false
+DisableTensorFlow: false
+DisableFaces: false
+DisableClassification: false
+DisableVectors: false
+DisableRaw: false
+RawPresets: false
+JpegQuality: 85
+DetectNSFW: false
+UploadNSFW: true
+EOF
 msg_ok "Installed PhotoPrism"
 
 msg_info "Creating Service"

From 1c89ef3f12cac02ed00439def1cabd03c0b47029 Mon Sep 17 00:00:00 2001
From: "community-scripts-pr-app[bot]"
 <189241966+community-scripts-pr-app[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 14:43:35 +0100
Subject: [PATCH 282/480] Update CHANGELOG.md (#2267)

Co-authored-by: github-actions[bot] 
---
 CHANGELOG.md | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index edf57631c..a5618b360 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,8 +28,14 @@ Do not break established syntax in this file, as it is automatically updated by
 
 ### 🚀 Updated Scripts
 
+- Fix Photoprism: Add defaults.yml for CLI Tool [@MickLesk](https://github.com/MickLesk) ([#2261](https://github.com/community-scripts/ProxmoxVE/pull/2261))
+- Update Checkmk: include Patch versions in Release grepping [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2264](https://github.com/community-scripts/ProxmoxVE/pull/2264))
 - Fix: Apache Guacamole Version Crawling - only latest Version [@MickLesk](https://github.com/MickLesk) ([#2258](https://github.com/community-scripts/ProxmoxVE/pull/2258))
 
+### 🌐 Website
+
+- Update Komodo icon [@bannert1337](https://github.com/bannert1337) ([#2263](https://github.com/community-scripts/ProxmoxVE/pull/2263))
+
 ## 2025-02-10
 
 ### Changes

From bf5fc97e1acc35aaf3aeedfe380233cc20cb9cbe Mon Sep 17 00:00:00 2001
From: Michel Roegl-Brunner
 <73236783+michelroegl-brunner@users.noreply.github.com>
Date: Tue, 11 Feb 2025 18:45:50 +0100
Subject: [PATCH 283/480] Add Workflow to test Scripts (#2269)

---
 .github/workflows/script-test.yml             | 139 ++++++++++
 .../scripts/app-test/pr-alpine-install.func   |  88 ++++++
 .../workflows/scripts/app-test/pr-build.func  | 259 ++++++++++++++++++
 .../scripts/app-test/pr-create-lxc.sh         | 158 +++++++++++
 .../scripts/app-test/pr-install.func          |  93 +++++++
 5 files changed, 737 insertions(+)
 create mode 100644 .github/workflows/script-test.yml
 create mode 100644 .github/workflows/scripts/app-test/pr-alpine-install.func
 create mode 100644 .github/workflows/scripts/app-test/pr-build.func
 create mode 100644 .github/workflows/scripts/app-test/pr-create-lxc.sh
 create mode 100644 .github/workflows/scripts/app-test/pr-install.func

diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml
new file mode 100644
index 000000000..d3fc16ca3
--- /dev/null
+++ b/.github/workflows/script-test.yml
@@ -0,0 +1,139 @@
+name: Run Scripts on PVE Node
+on:
+  pull_request:
+    branches:
+      - main
+    paths:
+      - 'install/*.sh'
+      - 'ct/*.sh'
+
+jobs:
+  run-install-script:
+    runs-on: pvenode
+    steps:          
+      - name: Checkout PR branch
+        uses: actions/checkout@v4
+        with:
+          ref: ${{ github.event.pull_request.head.ref }}
+          fetch-depth: 0  
+      - name: Add Git safe directory
+        run: |
+          git config --global --add safe.directory /__w/ProxmoxVE/ProxmoxVE
+      
+      - name: Set up GH_TOKEN
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV
+
+      - name: Get changed files in PR
+        id: changed-files
+        run: | 
+          CHANGED_FILES=$(gh pr diff --name-only ${{ github.event.pull_request.number }})  
+          CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ')  
+          echo "Changed files: $CHANGED_FILES"  
+          echo "SCRIPT=$CHANGED_FILES" >> $GITHUB_ENV
+
+      - name: Get scripts
+        id: check-install-script
+        run: |
+          ALL_FILES=()
+          ADDED_FILES=()  
+          for FILE in ${{ env.SCRIPT }}; do           
+            if [[ $FILE =~ ^install/.*-install\.sh$ ]] || [[ $FILE =~ ^ct/.*\.sh$ ]]; then             
+              STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
+              if [[ ! " ${ADDED_FILES[@]} " =~ " $STRIPPED_NAME " ]]; then
+                ALL_FILES+=("$FILE")
+                ADDED_FILES+=("$STRIPPED_NAME")  # Mark this base file as added (without the path)
+              fi
+            fi
+          done
+          ALL_FILES=$(echo "${ALL_FILES[@]}" | xargs)
+          echo "$ALL_FILES"
+          echo "ALL_FILES=$ALL_FILES" >> $GITHUB_ENV
+        
+      - name: Run scripts
+        id: run-install
+        continue-on-error: true
+        run: |
+          set +e  
+          #run for each files in /ct
+          for FILE in ${{ env.ALL_FILES }}; do            
+            echo "Running: $FILE"
+            STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
+            if [[ $FILE =~ ^install/.*-install\.sh$ ]]; then
+              CT_SCRIPT="ct/$STRIPPED_NAME.sh"
+              if [[ ! -f $CT_SCRIPT ]]; then
+                echo "No CT script found for $STRIPPED_NAME"
+                exit 1
+              fi
+                echo "Found CT script for $STRIPPED_NAME"
+                chmod +x "$CT_SCRIPT"
+                RUNNING_FILE=$CT_SCRIPT
+            elif [[ $FILE =~ ^ct/.*\.sh$ ]]; then
+              INSTALL_SCRIPT="install/$STRIPPED_NAME-install.sh"
+              if [[ ! -f $INSTALL_SCRIPT ]]; then
+                echo "No install script found for $STRIPPED_NAME"
+                exit 1
+              fi
+                echo "Found install script for $STRIPPED_NAME"
+                chmod +x "$INSTALL_SCRIPT"
+                RUNNING_FILE=$FILE
+            fi
+            git checkout origin/main .github/workflows/scripts/app-test/pr-build.func
+            git checkout origin/main .github/workflows/scripts/app-test/pr-install.func
+            git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func
+            git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh
+            sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE"
+            chmod +x $RUNNING_FILE         
+            chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh
+            chmod +x .github/workflows/scripts/app-test/pr-install.func
+            chmod +x .github/workflows/scripts/app-test/pr-alpine-install.func
+            chmod +x .github/workflows/scripts/app-test/pr-build.func
+
+            ERROR_MSG=$(./$RUNNING_FILE 2>&1 > /dev/null)
+            echo "Finished running $FILE"
+            if [ -n "$ERROR_MSG" ]; then
+              echo "ERROR in $STRIPPED_NAME: $ERROR_MSG"
+              echo "$ERROR_MSG" > result_$STRIPPED_NAME.log
+            fi
+          done
+          set -e  # Restore exit-on-error
+      
+      - name: Cleanup PVE Node
+        run: |
+          containers=$(pct list | tail -n +2 | awk '{print $0 " " $4}' | awk '{print $1}')
+        
+          for container_id in $containers; do
+            status=$(pct status $container_id | awk '{print $2}')
+            if [[ $status == "running" ]]; then
+                pct stop $container_id
+                pct destroy $container_id
+            fi            
+          done
+      
+      - name: Post error comments
+        run: |
+          ERROR="false"
+          SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line 113:"
+          for FILE in ${{ env.ALL_FILES }}; do
+            STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//')
+            if [[ ! -f result_$STRIPPED_NAME.log ]]; then
+              continue
+            fi
+            ERROR_MSG=$(cat result_$STRIPPED_NAME.log)
+      
+            if [ -n "$ERROR_MSG" ]; then
+              CLEANED_ERROR_MSG=$(echo "$ERROR_MSG" | sed "s|$SEARCH_LINE.*||")
+              echo "Posting error message for $FILE"
+              echo ${CLEANED_ERROR_MSG}
+              gh pr comment ${{ github.event.pull_request.number }} \
+                --body ":warning: The script _**$FILE**_ failed with the following message: 
${CLEANED_ERROR_MSG}
" + + ERROR="true" + fi + done + echo "ERROR=$ERROR" >> $GITHUB_ENV + - name: Fail if error + if: ${{ env.ERROR }} == 'true' + run: exit 1 diff --git a/.github/workflows/scripts/app-test/pr-alpine-install.func b/.github/workflows/scripts/app-test/pr-alpine-install.func new file mode 100644 index 000000000..39a6a82fb --- /dev/null +++ b/.github/workflows/scripts/app-test/pr-alpine-install.func @@ -0,0 +1,88 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +color() { + return +} +catch_errors() { + set -Eeuo pipefail + trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +} + + +error_handler() { + local line_number="$1" + local command="$2" + SCRIPT_NAME=$(basename "$0") + local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" + echo -e "\n$error_message" + exit 0 +} +verb_ip6() { + STD="" + return +} + +msg_info() { + local msg="$1" + echo -ne "${msg}\n" +} + +msg_ok() { + local msg="$1" + echo -e "${msg}\n" +} + +msg_error() { + + local msg="$1" + echo -e "${msg}\n" +} + +RETRY_NUM=10 +RETRY_EVERY=3 +i=$RETRY_NUM + +setting_up_container() { + while [ $i -gt 0 ]; do + if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" != "" ]; then + break + fi + echo 1>&2 -en "No Network! " + sleep $RETRY_EVERY + i=$((i - 1)) + done + + if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" = "" ]; then + echo 1>&2 -e "\n No Network After $RETRY_NUM Tries" + echo -e "Check Network Settings" + exit 1 + fi + msg_ok "Set up Container OS" + msg_ok "Network Connected: $(hostname -i)" +} + +network_check() { + RESOLVEDIP=$(getent hosts github.com | awk '{ print $1 }') + if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure"; else msg_ok "DNS Resolved github.com to $RESOLVEDIP"; fi + set -e +} + +update_os() { + msg_info "Updating Container OS" + apk update + apk upgrade + msg_ok "Updated Container OS" +} + +motd_ssh() { + return +} + +customize() { + return +} + + diff --git a/.github/workflows/scripts/app-test/pr-build.func b/.github/workflows/scripts/app-test/pr-build.func new file mode 100644 index 000000000..5706dbbb0 --- /dev/null +++ b/.github/workflows/scripts/app-test/pr-build.func @@ -0,0 +1,259 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +variables() { + NSAPP=$(echo ${APP,,} | tr -d ' ') + var_install="${NSAPP}-install" + +} + +NEXTID=$(pvesh get /cluster/nextid) +timezone=$(cat /etc/timezone) +header_info(){ + return +} + +base_settings() { + + CT_TYPE="1" + DISK_SIZE="4" + CORE_COUNT="1" + RAM_SIZE="1024" + VERBOSE="${1:-no}" + PW="" + CT_ID=$NEXTID + HN="Testing" + BRG="vmbr0" + NET="dhcp" + GATE="" + APT_CACHER="" + APT_CACHER_IP="" + DISABLEIP6="no" + MTU="" + SD="" + NS="" + MAC="" + VLAN="" + SSH="no" + SSH_AUTHORIZED_KEY="" + TAGS="community-script;" + + + CT_TYPE=${var_unprivileged:-$CT_TYPE} + DISK_SIZE=${var_disk:-$DISK_SIZE} + CORE_COUNT=${var_cpu:-$CORE_COUNT} + RAM_SIZE=${var_ram:-$RAM_SIZE} + VERB=${var_verbose:-$VERBOSE} + TAGS="${TAGS}${var_tags:-}" + + if [ -z "$var_os" ]; then + var_os="debian" + fi + if [ -z "$var_version" ]; then + var_version="12" + fi +} + +color() { + # Colors + YW=$(echo "\033[33m") + YWB=$(echo "\033[93m") + BL=$(echo "\033[36m") + RD=$(echo "\033[01;31m") + BGN=$(echo "\033[4;92m") + GN=$(echo "\033[1;92m") + DGN=$(echo "\033[32m") + + # Formatting + CL=$(echo "\033[m") + UL=$(echo "\033[4m") + BOLD=$(echo "\033[1m") + BFR="\\r\\033[K" + HOLD=" " + TAB=" " + + # Icons + CM="${TAB}✔️${TAB}${CL}" + CROSS="${TAB}✖️${TAB}${CL}" + INFO="${TAB}💡${TAB}${CL}" + OS="${TAB}🖥️${TAB}${CL}" + OSVERSION="${TAB}🌟${TAB}${CL}" + CONTAINERTYPE="${TAB}📦${TAB}${CL}" + DISKSIZE="${TAB}💾${TAB}${CL}" + CPUCORE="${TAB}🧠${TAB}${CL}" + RAMSIZE="${TAB}🛠️${TAB}${CL}" + SEARCH="${TAB}🔍${TAB}${CL}" + VERIFYPW="${TAB}🔐${TAB}${CL}" + CONTAINERID="${TAB}🆔${TAB}${CL}" + HOSTNAME="${TAB}🏠${TAB}${CL}" + BRIDGE="${TAB}🌉${TAB}${CL}" + NETWORK="${TAB}📡${TAB}${CL}" + GATEWAY="${TAB}🌐${TAB}${CL}" + DISABLEIPV6="${TAB}🚫${TAB}${CL}" + DEFAULT="${TAB}⚙️${TAB}${CL}" + MACADDRESS="${TAB}🔗${TAB}${CL}" + VLANTAG="${TAB}🏷️${TAB}${CL}" + ROOTSSH="${TAB}🔑${TAB}${CL}" + CREATING="${TAB}🚀${TAB}${CL}" + ADVANCED="${TAB}🧩${TAB}${CL}" +} + +catch_errors() { + set -Eeuo pipefail + trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +} + +# This function handles errors +error_handler() { + local line_number="$1" + local command="$2" + SCRIPT_NAME=$(basename "$0") + local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" + echo -e "\n$error_message" + exit "$error_message" +} + + +msg_info() { + local msg="$1" + echo -ne "${msg}\n" +} + +msg_ok() { + local msg="$1" + echo -e "${msg}\n" +} + +msg_error() { + + local msg="$1" + echo -e "${msg}\n" +} +start(){ + return +} + +build_container() { + + if [ "$CT_TYPE" == "1" ]; then + FEATURES="keyctl=1,nesting=1" + else + FEATURES="nesting=1" + fi + TEMP_DIR=$(mktemp -d) + pushd $TEMP_DIR >/dev/null + if [ "$var_os" == "alpine" ]; then + export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-alpine-install.func)" + else + export FUNCTIONS_FILE_PATH="$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-install.func)" + fi + + export CACHER="$APT_CACHER" + export CACHER_IP="$APT_CACHER_IP" + export tz="" + export DISABLEIPV6="$DISABLEIP6" + export APPLICATION="$APP" + export app="$NSAPP" + export PASSWORD="$PW" + export VERBOSE="$VERB" + export SSH_ROOT="${SSH}" + export SSH_AUTHORIZED_KEY + export CTID="$CT_ID" + export CTTYPE="$CT_TYPE" + export PCT_OSTYPE="$var_os" + export PCT_OSVERSION="$var_version" + export PCT_DISK_SIZE="$DISK_SIZE" + export tz="$timezone" + export PCT_OPTIONS=" + -features $FEATURES + -hostname $HN + -tags $TAGS + $SD + $NS + -net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU + -onboot 1 + -cores $CORE_COUNT + -memory $RAM_SIZE + -unprivileged $CT_TYPE + $PW + " + echo "Container ID: $CTID" + + + # This executes create_lxc.sh and creates the container and .conf file + bash /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/.github/workflows/scripts/app-test/pr-create-lxc.sh + + LXC_CONFIG=/etc/pve/lxc/${CTID}.conf + if [ "$CT_TYPE" == "0" ]; then + cat <>$LXC_CONFIG +# USB passthrough +lxc.cgroup2.devices.allow: a +lxc.cap.drop: +lxc.cgroup2.devices.allow: c 188:* rwm +lxc.cgroup2.devices.allow: c 189:* rwm +lxc.mount.entry: /dev/serial/by-id dev/serial/by-id none bind,optional,create=dir +lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file +lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file +lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create=file +lxc.mount.entry: /dev/ttyACM1 dev/ttyACM1 none bind,optional,create=file +EOF + fi + + if [ "$CT_TYPE" == "0" ]; then + if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then + cat <>$LXC_CONFIG +# VAAPI hardware transcoding +lxc.cgroup2.devices.allow: c 226:0 rwm +lxc.cgroup2.devices.allow: c 226:128 rwm +lxc.cgroup2.devices.allow: c 29:0 rwm +lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file +lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir +lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file +EOF + fi + else + if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then + if [[ -e "/dev/dri/renderD128" ]]; then + if [[ -e "/dev/dri/card0" ]]; then + cat <>$LXC_CONFIG +# VAAPI hardware transcoding +dev0: /dev/dri/card0,gid=44 +dev1: /dev/dri/renderD128,gid=104 +EOF + else + cat <>$LXC_CONFIG +# VAAPI hardware transcoding +dev0: /dev/dri/card1,gid=44 +dev1: /dev/dri/renderD128,gid=104 +EOF + fi + fi + fi + fi + + # This starts the container and executes -install.sh + msg_info "Starting LXC Container" + pct start "$CTID" + msg_ok "Started LXC Container" + + if [[ ! -f "/root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh" ]]; then + msg_error "No install script found for $APP" + exit 1 + fi + if [ "$var_os" == "alpine" ]; then + sleep 3 + pct exec "$CTID" -- /bin/sh -c 'cat </etc/apk/repositories +http://dl-cdn.alpinelinux.org/alpine/latest-stable/main +http://dl-cdn.alpinelinux.org/alpine/latest-stable/community +EOF' + pct exec "$CTID" -- ash -c "apk add bash >/dev/null" + fi + lxc-attach -n "$CTID" -- bash -c "$(< /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)" + +} + +description(){ + return +} diff --git a/.github/workflows/scripts/app-test/pr-create-lxc.sh b/.github/workflows/scripts/app-test/pr-create-lxc.sh new file mode 100644 index 000000000..3dd792b17 --- /dev/null +++ b/.github/workflows/scripts/app-test/pr-create-lxc.sh @@ -0,0 +1,158 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +color() { + return +} +catch_errors() { + set -Eeuo pipefail + trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +} + + +error_handler() { + local exit_code="$?" + local line_number="$1" + local command="$2" + local error_message="Failure in line $line_number: exit code $exit_code: while executing command $command" + echo -e "\n$error_message" + exit 100 +} +verb_ip6() { + return +} + +msg_info() { + local msg="$1" + echo -ne "${msg}\n" +} + +msg_ok() { + local msg="$1" + echo -e "${msg}\n" +} + +msg_error() { + + local msg="$1" + echo -e "${msg}\n" +} + + +VALIDCT=$(pvesm status -content rootdir | awk 'NR>1') +if [ -z "$VALIDCT" ]; then + msg_error "Unable to detect a valid Container Storage location." + exit 1 +fi +VALIDTMP=$(pvesm status -content vztmpl | awk 'NR>1') +if [ -z "$VALIDTMP" ]; then + msg_error "Unable to detect a valid Template Storage location." + exit 1 +fi + +function select_storage() { + local CLASS=$1 + local CONTENT + local CONTENT_LABEL + case $CLASS in + container) + CONTENT='rootdir' + CONTENT_LABEL='Container' + ;; + template) + CONTENT='vztmpl' + CONTENT_LABEL='Container template' + ;; + *) false || { msg_error "Invalid storage class."; exit 201; };; + esac + + local -a MENU + while read -r line; do + local TAG=$(echo $line | awk '{print $1}') + local TYPE=$(echo $line | awk '{printf "%-10s", $2}') + local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}') + local ITEM="Type: $TYPE Free: $FREE " + local OFFSET=2 + if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then + local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET)) + fi + MENU+=("$TAG" "$ITEM" "OFF") + done < <(pvesm status -content $CONTENT | awk 'NR>1') + + if [ $((${#MENU[@]}/3)) -eq 1 ]; then + printf ${MENU[0]} + else + msg_error "STORAGE ISSUES!" + exit 202 + fi +} + + + +[[ "${CTID:-}" ]] || { msg_error "You need to set 'CTID' variable."; exit 203; } +[[ "${PCT_OSTYPE:-}" ]] || { msg_error "You need to set 'PCT_OSTYPE' variable."; exit 204; } + +[ "$CTID" -ge "100" ] || { msg_error "ID cannot be less than 100."; exit 205; } + +if pct status $CTID &>/dev/null; then + echo -e "ID '$CTID' is already in use." + unset CTID + msg_error "Cannot use ID that is already in use." + exit 206 +fi + + +TEMPLATE_STORAGE=$(select_storage template) || exit +msg_ok "Using $TEMPLATE_STORAGE for Template Storage." + + +CONTAINER_STORAGE=$(select_storage container) || exit +msg_ok "Using $CONTAINER_STORAGE for Container Storage." + +msg_info "Updating LXC Template List" +pveam update >/dev/null +msg_ok "Updated LXC Template List" + +TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-} +mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V) +[ ${#TEMPLATES[@]} -gt 0 ] || { msg_error "Unable to find a template when searching for '$TEMPLATE_SEARCH'."; exit 207; } +TEMPLATE="${TEMPLATES[-1]}" + +TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE" + +if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then + [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH" + msg_info "Downloading LXC Template" + pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null || + { msg_error "A problem occurred while downloading the LXC template."; exit 208; } + msg_ok "Downloaded LXC Template" +fi + + +grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid +grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid + + +PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}}) +[[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}") + +echo "${PCT_OPTIONS[@]}" + + +msg_info "Creating LXC Container" + if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then + [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH" + + msg_ok "Template integrity check completed" + pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null || + { msg_error "A problem occurred while re-downloading the LXC template."; exit 208; } + + msg_ok "Re-downloaded LXC Template" + if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then + msg_error "A problem occurred while trying to create container after re-downloading template." + exit 200 + fi + fi +msg_ok "LXC Container $CTID was successfully created." diff --git a/.github/workflows/scripts/app-test/pr-install.func b/.github/workflows/scripts/app-test/pr-install.func new file mode 100644 index 000000000..60e202d58 --- /dev/null +++ b/.github/workflows/scripts/app-test/pr-install.func @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +color() { + return +} +catch_errors() { + set -Eeuo pipefail + trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +} + +error_handler() { + local line_number="$1" + local command="$2" + SCRIPT_NAME=$(basename "$0") + local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" + echo -e "\n$error_message" + exit "$error_message" +} +verb_ip6() { + STD="" + return +} + +msg_info() { + local msg="$1" + echo -ne "${msg}\n" +} + +msg_ok() { + local msg="$1" + echo -e "${msg}\n" +} + +msg_error() { + + local msg="$1" + echo -e "${msg}\n" +} + RETRY_NUM=10 + RETRY_EVERY=3 +setting_up_container() { + sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen + locale_line=$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print $1}' | head -n 1) + echo "LANG=${locale_line}" >/etc/default/locale + locale-gen >/dev/null + export LANG=${locale_line} + echo $tz >/etc/timezone + ln -sf /usr/share/zoneinfo/$tz /etc/localtime + + for ((i = RETRY_NUM; i > 0; i--)); do + if [ "$(hostname -I)" != "" ]; then + break + fi + echo 1>&2 -en "No Network! " + sleep $RETRY_EVERY + done + if [ "$(hostname -I)" = "" ]; then + echo 1>&2 -e "\nNo Network After $RETRY_NUM Tries" + echo -e "Check Network Settings" + exit 101 + fi + rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED + systemctl disable -q --now systemd-networkd-wait-online.service + msg_ok "Set up Container OS" + msg_ok "Network Connected: $(hostname -I)" +} + +network_check() { + RESOLVEDIP=$(getent hosts github.com | awk '{ print $1 }') + if [[ -z "$RESOLVEDIP" ]]; then msg_error "DNS Lookup Failure"; else msg_ok "DNS Resolved github.com to $RESOLVEDIP"; fi + set -e +} + +update_os() { + msg_info "Updating Container OS" + apt-get update + apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade + rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED + msg_ok "Updated Container OS" +} + +motd_ssh() { + return +} + +customize() { + return +} + + From 37016259e1e5a834c6fd96faad2ef961bb50aab4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 18:59:50 +0100 Subject: [PATCH 284/480] Update CHANGELOG.md (#2273) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5618b360..5d5c8e7b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Do not break established syntax in this file, as it is automatically updated by - Update Komodo icon [@bannert1337](https://github.com/bannert1337) ([#2263](https://github.com/community-scripts/ProxmoxVE/pull/2263)) +### 🧰 Maintenance + +- Add Workflow to test Scripts [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2269](https://github.com/community-scripts/ProxmoxVE/pull/2269)) + ## 2025-02-10 ### Changes From 4a420129063a13671504ac790282b41810bdc6f8 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 11 Feb 2025 20:07:51 +0100 Subject: [PATCH 285/480] New Script: Opnsense VM (#2097) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * New Script: Opnsense VM * update json * update json * update opensens-vm.sh * update opensens-vm.sh * update opensens-vm.sh * update opensens-vm.sh * update opensens-vm.sh * update opensens-vm.sh * Update opnsense-vm.sh * Update opnsense-vm.sh * Update opnsense-vm.sh * opnsense-vm.sh update * Update date_created in new JSON files * Update opnsens.sh * Update vm/opnsense-vm.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update opnsense-vm.sh * Update json/opnsense-vm.json Co-authored-by: Emik * updates --------- Co-authored-by: Rögl-Brunner Michel Co-authored-by: github-actions[bot] Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Co-authored-by: Emik --- json/opnsense-vm.json | 39 +++ vm/opnsense-vm.sh | 677 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 716 insertions(+) create mode 100644 json/opnsense-vm.json create mode 100644 vm/opnsense-vm.sh diff --git a/json/opnsense-vm.json b/json/opnsense-vm.json new file mode 100644 index 000000000..18da1516c --- /dev/null +++ b/json/opnsense-vm.json @@ -0,0 +1,39 @@ +{ + "name": "OPNsense-VM", + "slug": "opnsense-vm", + "categories": [ + 4 + ], + "date_created": "2025-02-11", + "type": "vm", + "updateable": false, + "privileged": false, + "interface_port": 443, + "documentation": "https://docs.opnsense.org/", + "website": "https://opnsense.org/", + "logo": "https://raw.githubusercontent.com/opnsense/core/master/src/opnsense/scripts/OPNsense/CaptivePortal/htdocs_default/images/default-logo.png", + "description": "OPNsense is an open-source firewall and routing platform based on FreeBSD. It provides advanced security features, including intrusion detection, VPN support, traffic shaping, and web filtering, with an intuitive web interface for easy management. Known for its reliability and regular updates, OPNsense is a popular choice for both businesses and home networks.", + "install_methods": [ + { + "type": "default", + "script": "vm/opnsense-vm.sh", + "resources": { + "cpu": 4, + "ram": 8192, + "hdd": 10, + "os": "FreeBSD", + "version": "latest" + } + } + ], + "default_credentials": { + "username": "root", + "password": "opnsense" + }, + "notes": [ + { + "text": "It will fail with default settings if there is no vmbr0 and vmbr1 on your node. Use advanced settings in this case.", + "type": "warning" + } + ] +} diff --git a/vm/opnsense-vm.sh b/vm/opnsense-vm.sh new file mode 100644 index 000000000..9e4439d8f --- /dev/null +++ b/vm/opnsense-vm.sh @@ -0,0 +1,677 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/api.func) + +function header_info { + clear + cat <<"EOF" + ____ ____ _ __ + / __ \/ __ \/ | / /_______ ____ ________ + / / / / /_/ / |/ / ___/ _ \/ __ \/ ___/ _ \ +/ /_/ / ____/ /| (__ ) __/ / / (__ ) __/ +\____/_/ /_/ |_/____/\___/_/ /_/____/\___/ + +EOF +} +header_info +echo -e "Loading..." +#API VARIABLES +RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)" +METHOD="" +NSAPP="opnsense-vm" +var_os="opnsense" +var_version="25.1" +# +GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//') +GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//') +NEXTID=$(pvesh get /cluster/nextid) +YW=$(echo "\033[33m") +BL=$(echo "\033[36m") +HA=$(echo "\033[1;34m") +RD=$(echo "\033[01;31m") +BGN=$(echo "\033[4;92m") +GN=$(echo "\033[1;92m") +DGN=$(echo "\033[32m") +CL=$(echo "\033[m") +BFR="\\r\\033[K" +HOLD="-" +CM="${GN}✓${CL}" +CROSS="${RD}✗${CL}" +set -Eeo pipefail +trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +trap cleanup EXIT +function error_handler() { + local exit_code="$?" + local line_number="$1" + local command="$2" + post_update_to_api "failed" "$command" + local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" + echo -e "\n$error_message\n" + cleanup_vmid +} + +function cleanup_vmid() { + if qm status $VMID &>/dev/null; then + qm stop $VMID &>/dev/null + qm destroy $VMID &>/dev/null + fi +} + +function cleanup() { + popd >/dev/null + post_update_to_api "done" "none" + rm -rf $TEMP_DIR +} + +TEMP_DIR=$(mktemp -d) +pushd $TEMP_DIR >/dev/null +function send_line_to_vm() { + echo -e "${DGN}Sending line: ${YW}$1${CL}" + for ((i = 0; i < ${#1}; i++)); do + character=${1:i:1} + case $character in + " ") character="spc" ;; + "-") character="minus" ;; + "=") character="equal" ;; + ",") character="comma" ;; + ".") character="dot" ;; + "/") character="slash" ;; + "'") character="apostrophe" ;; + ";") character="semicolon" ;; + '\') character="backslash" ;; + '`') character="grave_accent" ;; + "[") character="bracket_left" ;; + "]") character="bracket_right" ;; + "_") character="shift-minus" ;; + "+") character="shift-equal" ;; + "?") character="shift-slash" ;; + "<") character="shift-comma" ;; + ">") character="shift-dot" ;; + '"') character="shift-apostrophe" ;; + ":") character="shift-semicolon" ;; + "|") character="shift-backslash" ;; + "~") character="shift-grave_accent" ;; + "{") character="shift-bracket_left" ;; + "}") character="shift-bracket_right" ;; + "A") character="shift-a" ;; + "B") character="shift-b" ;; + "C") character="shift-c" ;; + "D") character="shift-d" ;; + "E") character="shift-e" ;; + "F") character="shift-f" ;; + "G") character="shift-g" ;; + "H") character="shift-h" ;; + "I") character="shift-i" ;; + "J") character="shift-j" ;; + "K") character="shift-k" ;; + "L") character="shift-l" ;; + "M") character="shift-m" ;; + "N") character="shift-n" ;; + "O") character="shift-o" ;; + "P") character="shift-p" ;; + "Q") character="shift-q" ;; + "R") character="shift-r" ;; + "S") character="shift-s" ;; + "T") character="shift-t" ;; + "U") character="shift-u" ;; + "V") character="shift-v" ;; + "W") character="shift-w" ;; + "X") character="shift=x" ;; + "Y") character="shift-y" ;; + "Z") character="shift-z" ;; + "!") character="shift-1" ;; + "@") character="shift-2" ;; + "#") character="shift-3" ;; + '$') character="shift-4" ;; + "%") character="shift-5" ;; + "^") character="shift-6" ;; + "&") character="shift-7" ;; + "*") character="shift-8" ;; + "(") character="shift-9" ;; + ")") character="shift-0" ;; + esac + qm sendkey $VMID "$character" + done + qm sendkey $VMID ret +} + +TEMP_DIR=$(mktemp -d) +pushd $TEMP_DIR >/dev/null + +if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "OpnSense VM" --yesno "This will create a New OpnSense VM. Proceed?" 10 58); then + : +else + header_info && echo -e "⚠ User exited script \n" && exit +fi + +function msg_info() { + local msg="$1" + echo -ne " ${HOLD} ${YW}${msg}..." +} + +function msg_ok() { + local msg="$1" + echo -e "${BFR} ${CM} ${GN}${msg}${CL}" +} + +function msg_error() { + local msg="$1" + echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" +} + +function pve_check() { + if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then + msg_error "This version of Proxmox Virtual Environment is not supported" + echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." + echo -e "Exiting..." + sleep 2 + exit + fi +} + +function arch_check() { + if [ "$(dpkg --print-architecture)" != "amd64" ]; then + echo -e "\n ${CROSS} This script will not work with PiMox! \n" + echo -e "Exiting..." + sleep 2 + exit + fi +} + +function ssh_check() { + if command -v pveversion >/dev/null 2>&1; then + if [ -n "${SSH_CLIENT:+x}" ]; then + if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then + echo "you've been warned" + else + clear + exit + fi + fi + fi +} + +function exit-script() { + clear + echo -e "⚠ User exited script \n" + exit +} + +function default_settings() { + VMID="$NEXTID" + FORMAT=",efitype=4m" + MACHINE="" + DISK_CACHE="" + HN="opnsense" + CPU_TYPE="" + CORE_COUNT="4" + RAM_SIZE="8192" + BRG="vmbr0" + IP_ADDR="" + WAN_IP_ADDR="" + LAN_GW="" + WAN_GW="" + NETMASK="" + WAN_NETMASK="" + VLAN="" + MAC=$GEN_MAC + WAN_MAC=$GEN_MAC_LAN + WAN_BRG="vmbr1" + MTU="" + START_VM="yes" + METHOD="default" + + echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}" + echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}" + echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}" + echo -e "${DGN}Allocated RAM: ${BGN}${RAM_SIZE}${CL}" + if ! grep -q "^iface ${BRG}" /etc/network/interfaces; then + msg_error "Bridge '${BRG}' does not exist in /etc/network/interfaces" + exit + else + echo -e "${DGN}Using LAN Bridge: ${BGN}${BRG}${CL}" + fi + echo -e "${DGN}Using LAN VLAN: ${BGN}Default${CL}" + echo -e "${DGN}Using LAN MAC Address: ${BGN}${MAC}${CL}" + echo -e "${DGN}Using WAN MAC Address: ${BGN}${WAN_MAC}${CL}" + if ! grep -q "^iface ${WAN_BRG}" /etc/network/interfaces; then + msg_error "Bridge '${WAN_BRG}' does not exist in /etc/network/interfaces" + exit + else + echo -e "${DGN}Using WAN Bridge: ${BGN}${WAN_BRG}${CL}" + fi + echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}" + echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}" + echo -e "${BL}Creating a OpnSense VM using the above default settings${CL}" +} + +function advanced_settings() { + local ip_regex='^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$' + METHOD="advanced" + while true; do + if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z "$VMID" ]; then + VMID="$NEXTID" + fi + if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then + echo -e "${CROSS}${RD} ID $VMID is already in use${CL}" + sleep 2 + continue + fi + echo -e "${DGN}Virtual Machine ID: ${BGN}$VMID${CL}" + break + else + exit-script + fi + done + + if MACH=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "MACHINE TYPE" --radiolist --cancel-button Exit-Script "Choose Type" 10 58 2 \ + "i440fx" "Machine i440fx" ON \ + "q35" "Machine q35" OFF \ + 3>&1 1>&2 2>&3); then + if [ $MACH = q35 ]; then + echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}" + FORMAT="" + MACHINE=" -machine q35" + else + echo -e "${DGN}Using Machine Type: ${BGN}$MACH${CL}" + FORMAT=",efitype=4m" + MACHINE="" + fi + else + exit-script + fi + + if CPU_TYPE1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CPU MODEL" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \ + "0" "KVM64 (Default)" ON \ + "1" "Host" OFF \ + 3>&1 1>&2 2>&3); then + if [ $CPU_TYPE1 = "1" ]; then + echo -e "${DGN}Using CPU Model: ${BGN}Host${CL}" + CPU_TYPE=" -cpu host" + else + echo -e "${DGN}Using CPU Model: ${BGN}KVM64${CL}" + CPU_TYPE="" + fi + else + exit-script + fi + + if DISK_CACHE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "DISK CACHE" --radiolist "Choose" --cancel-button Exit-Script 10 58 2 \ + "0" "None (Default)" ON \ + "1" "Write Through" OFF \ + 3>&1 1>&2 2>&3); then + if [ $DISK_CACHE = "1" ]; then + echo -e "${DGN}Using Disk Cache: ${BGN}Write Through${CL}" + DISK_CACHE="cache=writethrough," + else + echo -e "${DGN}Using Disk Cache: ${BGN}None${CL}" + DISK_CACHE="" + fi + else + exit-script + fi + + if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 OpnSense --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $VM_NAME ]; then + HN="OpnSense" + else + HN=$(echo ${VM_NAME,,} | tr -d ' ') + fi + echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}" + else + exit-script + fi + + if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 4 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $CORE_COUNT ]; then + CORE_COUNT="2" + fi + echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}" + else + exit-script + fi + + if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 8192 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $RAM_SIZE ]; then + RAM_SIZE="8192" + fi + echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}" + else + exit-script + fi + + if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN Bridge" 8 58 vmbr0 --title "LAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $BRG ]; then + BRG="vmbr0" + fi + if ! grep -q "^iface ${BRG}" /etc/network/interfaces; then + msg_error "Bridge '${BRG}' does not exist in /etc/network/interfaces" + exit + fi + echo -e "${DGN}Using LAN Bridge: ${BGN}$BRG${CL}" + else + exit-script + fi + + if IP_ADDR=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN IP" 8 58 $IP_ADDR --title "LAN IP ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $IP_ADDR ]; then + echo -e "${DGN}Using DHCP AS LAN IP ADDRESS${CL}" + else + if [[ -n "$IP_ADDR" && ! "$IP_ADDR" =~ $ip_regex ]]; then + msg_error "Invalid IP Address format for LAN IP. Needs to be 0.0.0.0, was $IP_ADDR" + exit + fi + echo -e "${DGN}Using LAN IP ADDRESS: ${BGN}$IP_ADDR${CL}" + if LAN_GW=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN GATEWAY IP" 8 58 $LAN_GW --title "LAN GATEWAY IP ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $LAN_GW ]; then + echo -e "${DGN}Gateway needs to be set if ip is not dhcp${CL}" + exit-script + fi + if [[ -n "$LAN_GW" && ! "$LAN_GW" =~ $ip_regex ]]; then + msg_error "Invalid IP Address format for Gateway. Needs to be 0.0.0.0, was $LAN_GW" + exit + fi + echo -e "${DGN}Using LAN GATEWAY ADDRESS: ${BGN}$LAN_GW${CL}" + fi + if NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN netmmask (24 for example)" 8 58 $NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $NETMASK ]; then + echo -e "${DGN}Netmask needs to be set if ip is not dhcp${CL}" + fi + if [[ -n "$NETMASK" && ! ("$NETMASK" =~ ^[0-9]+$ && "$NETMASK" -ge 1 && "$NETMASK" -le 32) ]]; then + msg_error "Invalid LAN NETMASK format. Needs to be 1-32, was $NETMASK" + exit + fi + echo -e "${DGN}Using LAN NETMASK: ${BGN}$NETMASK${CL}" + else + exit-script + fi + fi + else + exit-script + fi + + if WAN_BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN Bridge" 8 58 vmbr1 --title "WAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $WAN_BRG ]; then + WAN_BRG="vmbr1" + fi + if ! grep -q "^iface ${WAN_BRG}" /etc/network/interfaces; then + msg_error "WAN Bridge '${WAN_BRG}' does not exist in /etc/network/interfaces" + exit + fi + echo -e "${DGN}Using WAN Bridge: ${BGN}$WAN_BRG${CL}" + else + exit-script + fi + + if WAN_IP_ADDR=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN IP" 8 58 $WAN_IP_ADDR --title "WAN IP ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $WAN_IP_ADDR ]; then + echo -e "${DGN}Using DHCP AS WAN IP ADDRESS${CL}" + else + if [[ -n "$WAN_IP_ADDR" && ! "$WAN_IP_ADDR" =~ $ip_regex ]]; then + msg_error "Invalid IP Address format for WAN IP. Needs to be 0.0.0.0, was $WAN_IP_ADDR" + exit + fi + echo -e "${DGN}Using WAN IP ADDRESS: ${BGN}$WAN_IP_ADDR${CL}" + if WAN_GW=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN GATEWAY IP" 8 58 $WAN_GW --title "WAN GATEWAY IP ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $WAN_GW ]; then + echo -e "${DGN}Gateway needs to be set if ip is not dhcp${CL}" + exit-script + fi + if [[ -n "$WAN_GW" && ! "$WAN_GW" =~ $ip_regex ]]; then + msg_error "Invalid IP Address format for WAN Gateway. Needs to be 0.0.0.0, was $WAN_GW" + exit + fi + echo -e "${DGN}Using WAN GATEWAY ADDRESS: ${BGN}$WAN_GW${CL}" + else + exit-script + fi + if WAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN netmmask (24 for example)" 8 58 $WAN_NETMASK --title "WAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $WAN_NETMASK ]; then + echo -e "${DGN}WAN Netmask needs to be set if ip is not dhcp${CL}" + fi + if [[ -n "$WAN_NETMASK" && ! ("$WAN_NETMASK" =~ ^[0-9]+$ && "$WAN_NETMASK" -ge 1 && "$WAN_NETMASK" -le 32) ]]; then + msg_error "Invalid WAN NETMASK format. Needs to be 1-32, was $WAN_NETMASK" + exit + fi + echo -e "${DGN}Using WAN NETMASK: ${BGN}$WAN_NETMASK${CL}" + else + exit-script + fi + fi + else + exit-script + fi + if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN MAC Address" 8 58 $GEN_MAC --title "WAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $MAC1 ]; then + MAC="$GEN_MAC" + else + MAC="$MAC1" + fi + echo -e "${DGN}Using LAN MAC Address: ${BGN}$MAC${CL}" + else + exit-script + fi + + if MAC2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN MAC Address" 8 58 $GEN_MAC_LAN --title "LAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if [ -z $MAC2 ]; then + WAN_MAC="$GEN_MAC_LAN" + else + WAN_MAC="$MAC2" + fi + echo -e "${DGN}Using WAN MAC Address: ${BGN}$WAN_MAC${CL}" + else + exit-script + fi + + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create OpnSense VM?" --no-button Do-Over 10 58); then + echo -e "${RD}Creating a OpnSense VM using the above advanced settings${CL}" + else + header_info + echo -e "${RD}Using Advanced Settings${CL}" + advanced_settings + fi +} + +function start_script() { + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then + header_info + echo -e "${BL}Using Default Settings${CL}" + default_settings + else + header_info + echo -e "${RD}Using Advanced Settings${CL}" + advanced_settings + fi +} + +arch_check +pve_check +ssh_check +start_script +post_to_api_vm + +msg_info "Validating Storage" +while read -r line; do + TAG=$(echo $line | awk '{print $1}') + TYPE=$(echo $line | awk '{printf "%-10s", $2}') + FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}') + ITEM=" Type: $TYPE Free: $FREE " + OFFSET=2 + if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then + MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET)) + fi + STORAGE_MENU+=("$TAG" "$ITEM" "OFF") +done < <(pvesm status -content images | awk 'NR>1') +VALID=$(pvesm status -content images | awk 'NR>1') +if [ -z "$VALID" ]; then + msg_error "Unable to detect a valid storage location." + exit +elif [ $((${#STORAGE_MENU[@]} / 3)) -eq 1 ]; then + STORAGE=${STORAGE_MENU[0]} +else + while [ -z "${STORAGE:+x}" ]; do + STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \ + "Which storage pool you would like to use for ${HN}?\nTo make a selection, use the Spacebar.\n" \ + 16 $(($MSG_MAX_LENGTH + 23)) 6 \ + "${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit + done +fi +msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." +msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." +msg_info "Retrieving the URL for the OpnSense Qcow2 Disk Image" +URL=https://download.freebsd.org/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64.qcow2.xz +sleep 2 +msg_ok "${CL}${BL}${URL}${CL}" +wget -q --show-progress $URL +echo -en "\e[1A\e[0K" +FILE=Fressbsd.qcow2 +unxz -cv $(basename $URL) > ${FILE} +msg_ok "Downloaded ${CL}${BL}${FILE}${CL}" + +STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}') +case $STORAGE_TYPE in +nfs | dir) + DISK_EXT=".qcow2" + DISK_REF="$VMID/" + DISK_IMPORT="-format qcow2" + THIN="" + ;; +btrfs) + DISK_EXT=".raw" + DISK_REF="$VMID/" + DISK_IMPORT="-format raw" + FORMAT=",efitype=4m" + THIN="" + ;; +esac +for i in {0,1}; do + disk="DISK$i" + eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-} + eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk} +done + +msg_info "Creating a OpnSense VM" +qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \ + -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci +pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null +qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null +qm set $VMID \ + -efidisk0 ${DISK0_REF}${FORMAT} \ + -scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=2G \ + -boot order=scsi0 \ + -serial0 socket >/dev/null \ + -tags community-scripts +qm resize $VMID scsi0 10G >/dev/null + DESCRIPTION=$(cat < + + Logo + + +

OpnSense VM

+ +

+ + spend Coffee + +

+ + + + GitHub + + + + Discussions + + + + Issues + +
+EOF +) + qm set "$VMID" -description "$DESCRIPTION" >/dev/null + +msg_info "Bridge interfaces are being added." +qm set $VMID \ + -net0 virtio,bridge=${BRG},macaddr=${MAC}${VLAN}${MTU} 2>/dev/null +msg_ok "Bridge interfaces have been successfully added." + +msg_ok "Created a OpnSense VM ${CL}${BL}(${HN})" + msg_ok "Starting OpnSense VM (Patience this takes 20-30 minutes)" + qm start $VMID + sleep 90 + send_line_to_vm "root" + send_line_to_vm "fetch https://raw.githubusercontent.com/opnsense/update/master/src/bootstrap/opnsense-bootstrap.sh.in" + qm set $VMID \ + -net1 virtio,bridge=${WAN_BRG},macaddr=${WAN_MAC} &>/dev/null + sleep 10 + send_line_to_vm "sh ./opnsense-bootstrap.sh.in -y -f -r 25.1" + msg_ok "OpnSense VM is being installed, do not close the terminal, or the installation will fail." + #We need to wait for the OpnSense build proccess to finish, this takes a few minutes + sleep 1000 + send_line_to_vm "root" + send_line_to_vm "opnsense" + send_line_to_vm "2" + + if [ "$IP_ADDR" != "" ]; then + send_line_to_vm "1" + send_line_to_vm "n" + send_line_to_vm "${IP_ADDR}" + send_line_to_vm "${NETMASK}" + send_line_to_vm "${LAN_GW}" + send_line_to_vm "n" + send_line_to_vm " " + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm " " + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm "n" + else + send_line_to_vm "1" + send_line_to_vm "y" + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm " " + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm "n" + fi + #we need to wait for the Config changes to be saved + sleep 20 + if [ "$WAN_IP_ADDR" != "" ]; then + send_line_to_vm "2" + send_line_to_vm "2" + send_line_to_vm "n" + send_line_to_vm "${WAN_IP_ADDR}" + send_line_to_vm "${NETMASK}" + send_line_to_vm "${LAN_GW}" + send_line_to_vm "n" + send_line_to_vm " " + send_line_to_vm "n" + send_line_to_vm " " + send_line_to_vm "n" + send_line_to_vm "n" + send_line_to_vm "n" + fi + sleep 10 + send_line_to_vm "0" + msg_ok "Started OpnSense VM" + +msg_ok "Completed Successfully!\n" +if [ "$IP_ADDR" != "" ]; then + echo -e "${INFO}${YW} Access it using the following URL:${CL}" + echo -e "${TAB}${GATEWAY}${BGN}http://${IP_ADDR}${CL}" +else + echo -e "${INFO}${YW} LAN IP was DHCP.${CL}" + echo -e "${INFO}${BGN}To find the IP login to the VM shell${CL}" +fi From e9d8b30de0b3d49cd9b724b1a896e65d87607f50 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 20:09:16 +0100 Subject: [PATCH 286/480] Update CHANGELOG.md (#2275) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d5c8e7b4..0dd262fd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Opnsense VM [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2097](https://github.com/community-scripts/ProxmoxVE/pull/2097)) - New Script: Watcharr [@tremor021](https://github.com/tremor021) ([#2243](https://github.com/community-scripts/ProxmoxVE/pull/2243)) - New Script: Suwayomi-Server [@tremor021](https://github.com/tremor021) ([#2139](https://github.com/community-scripts/ProxmoxVE/pull/2139)) From ecc294953bc9ec111cec78c4e524afe227243cec Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 11 Feb 2025 20:32:31 +0100 Subject: [PATCH 287/480] Update script-test.yml (#2276) --- .github/workflows/script-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml index d3fc16ca3..a9e62f607 100644 --- a/.github/workflows/script-test.yml +++ b/.github/workflows/script-test.yml @@ -115,7 +115,7 @@ jobs: - name: Post error comments run: | ERROR="false" - SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line 113:" + SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line" for FILE in ${{ env.ALL_FILES }}; do STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//') if [[ ! -f result_$STRIPPED_NAME.log ]]; then From e797cba5046e94bb756ae03036997f6240b2ade7 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Wed, 12 Feb 2025 08:20:35 +0100 Subject: [PATCH 288/480] fix: fix default java version (#2286) --- install/crafty-controller-install.sh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh index b02322e3d..6e5f68785 100644 --- a/install/crafty-controller-install.sh +++ b/install/crafty-controller-install.sh @@ -26,19 +26,14 @@ $STD apt-get install -y \ software-properties-common msg_ok "Installed Dependencies" -msg_info "Setting up TermurinJDK" +msg_info "Setting up TemurinJDK" mkdir -p /etc/apt/keyrings wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list $STD apt-get update -$STD apt-get install -y \ - temurin-8-jre \ - temurin-11-jre \ - temurin-17-jre \ - temurin-21-jre \ - temurin-23-jre +$STD apt-get install -y temurin-{8,11,17,21}-jre sudo update-alternatives --set java /usr/lib/jvm/temurin-21-jre-amd64/bin/java -msg_ok "Installed TermurinJDK" +msg_ok "Installed TemurinJDK" msg_info "Setup Python3" $STD apt-get install -y \ @@ -49,7 +44,6 @@ $STD apt-get install -y \ rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED msg_ok "Setup Python3" - msg_info "Installing Craty-Controller (Patience)" useradd crafty -m -s /bin/bash cd /opt @@ -81,7 +75,7 @@ After=network.target Type=simple User=crafty WorkingDirectory=/opt/crafty-controller/crafty/crafty-4 -Environment=PATH=/opt/crafty-controller/crafty/.venv/bin:$PATH +Environment=PATH=/usr/lib/jvm/temurin-21-jre-amd64/bin:/opt/crafty-controller/crafty/.venv/bin:$PATH ExecStart=/opt/crafty-controller/crafty/.venv/bin/python3 main.py -d Restart=on-failure From ba636ed25d3f06eb50649b178cd40c9f4c3fa03f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 08:21:37 +0100 Subject: [PATCH 289/480] remove sudo (#2282) --- install/sqlserver2022-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index a79c8a1cc..617e9cf38 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -23,7 +23,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" msg_info "Setup SQL Server 2022" -$STD curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc +$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc $STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list $STD apt-get clean * $STD apt-get update -y From 8181518c24128a3697f0561f7f43ed4b05c95e97 Mon Sep 17 00:00:00 2001 From: Jakub Matraszek Date: Wed, 12 Feb 2025 10:04:27 +0100 Subject: [PATCH 290/480] New script: cross-seed (#2186) --- ct/cross-seed.sh | 54 ++++++++++++++++++++++++++++++ install/cross-seed-install.sh | 63 +++++++++++++++++++++++++++++++++++ json/cross-seed.json | 39 ++++++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 ct/cross-seed.sh create mode 100644 install/cross-seed-install.sh create mode 100644 json/cross-seed.json diff --git a/ct/cross-seed.sh b/ct/cross-seed.sh new file mode 100644 index 000000000..fa704c025 --- /dev/null +++ b/ct/cross-seed.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Jakub Matraszek (jmatraszek) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.cross-seed.org + +APP="cross-seed" +var_tags="arr" +var_cpu="1" +var_ram="1024" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if command -v cross-seed &> /dev/null; then + current_version=$(cross-seed --version) + latest_version=$(npm show cross-seed version) + if [ "$current_version" != "$latest_version" ]; then + msg_info "Updating ${APP} from version v${current_version} to v${latest_version}" + npm install -g cross-seed@latest &> /dev/null + systemctl restart cross-seed + msg_ok "Updated Successfully" + else + msg_ok "${APP} is already at v${current_version}" + fi + else + msg_error "No ${APP} Installation Found!" + exit + 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 cross-seed API using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2468${CL}" diff --git a/install/cross-seed-install.sh b/install/cross-seed-install.sh new file mode 100644 index 000000000..278c01928 --- /dev/null +++ b/install/cross-seed-install.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Jakub Matraszek (jmatraszek) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.cross-seed.org + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_23.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Setup Node.js Repository" + +msg_info "Setting up Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Setup Node.js" + +msg_info "Setup Cross-Seed" +$STD npm install cross-seed@latest -g +$STD cross-seed gen-config +msg_ok "Setup Cross-Seed" + +msg_info "Creating Service" +cat </etc/systemd/system/cross-seed.service +[Unit] +Description=Cross-Seed daemon Service +After=network.target + +[Service] +ExecStart=cross-seed daemon +Restart=always +User=root + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now cross-seed +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/cross-seed.json b/json/cross-seed.json new file mode 100644 index 000000000..a8a8a7cde --- /dev/null +++ b/json/cross-seed.json @@ -0,0 +1,39 @@ +{ + "name": "cross-seed", + "slug": "cross-seed", + "categories": [ + 14 + ], + "date_created": "2025-02-07", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 2468, + "documentation": "https://www.cross-seed.org/docs/category/basics", + "website": "https://www.cross-seed.org/", + "logo": "https://www.cross-seed.org/img/cross-seed.svg", + "description": "cross-seed is an app designed to help you download torrents that you can cross seed based on your existing torrents. It is designed to match conservatively to minimize manual intervention.", + "install_methods": [ + { + "type": "default", + "script": "ct/cross-seed.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "After the installation cross-seed will fail to start with an empty configuration. To fix this, edit `~/.cross-seed/config.js` to properly configure cross-seed, then restart by running `systemctl restart cross-seed`.", + "type": "info" + } + ] +} From 76ca5181ae6ddd04b8f25c1b57c88cfa04cebecc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 10:05:02 +0100 Subject: [PATCH 291/480] Update .app files (#2290) --- ct/headers/cross-seed | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/cross-seed diff --git a/ct/headers/cross-seed b/ct/headers/cross-seed new file mode 100644 index 000000000..2047cd2c1 --- /dev/null +++ b/ct/headers/cross-seed @@ -0,0 +1,6 @@ + __ + ______________ __________ ________ ___ ____/ / + / ___/ ___/ __ \/ ___/ ___/_____/ ___/ _ \/ _ \/ __ / +/ /__/ / / /_/ (__ |__ )_____(__ ) __/ __/ /_/ / +\___/_/ \____/____/____/ /____/\___/\___/\__,_/ + From 56de05a3928b8567eab63587bd3c184119e539e3 Mon Sep 17 00:00:00 2001 From: chpego <38792705+chpego@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:05:08 +0100 Subject: [PATCH 292/480] Fix: Typo OPNsense VM (#2291) --- vm/opnsense-vm.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/vm/opnsense-vm.sh b/vm/opnsense-vm.sh index 9e4439d8f..0d298e4e0 100644 --- a/vm/opnsense-vm.sh +++ b/vm/opnsense-vm.sh @@ -142,7 +142,7 @@ function send_line_to_vm() { TEMP_DIR=$(mktemp -d) pushd $TEMP_DIR >/dev/null -if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "OpnSense VM" --yesno "This will create a New OpnSense VM. Proceed?" 10 58); then +if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "OPNsense VM" --yesno "This will create a New OPNsense VM. Proceed?" 10 58); then : else header_info && echo -e "⚠ User exited script \n" && exit @@ -246,7 +246,7 @@ function default_settings() { fi echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}" echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}" - echo -e "${BL}Creating a OpnSense VM using the above default settings${CL}" + echo -e "${BL}Creating a OPNsense VM using the above default settings${CL}" } function advanced_settings() { @@ -316,9 +316,9 @@ function advanced_settings() { exit-script fi - if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 OpnSense --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then + if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 OPNsense --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then if [ -z $VM_NAME ]; then - HN="OpnSense" + HN="OPNsense" else HN=$(echo ${VM_NAME,,} | tr -d ' ') fi @@ -468,8 +468,8 @@ function advanced_settings() { exit-script fi - if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create OpnSense VM?" --no-button Do-Over 10 58); then - echo -e "${RD}Creating a OpnSense VM using the above advanced settings${CL}" + if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create OPNsense VM?" --no-button Do-Over 10 58); then + echo -e "${RD}Creating a OPNsense VM using the above advanced settings${CL}" else header_info echo -e "${RD}Using Advanced Settings${CL}" @@ -523,7 +523,7 @@ else fi msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." -msg_info "Retrieving the URL for the OpnSense Qcow2 Disk Image" +msg_info "Retrieving the URL for the OPNsense Qcow2 Disk Image" URL=https://download.freebsd.org/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64.qcow2.xz sleep 2 msg_ok "${CL}${BL}${URL}${CL}" @@ -555,7 +555,7 @@ for i in {0,1}; do eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk} done -msg_info "Creating a OpnSense VM" +msg_info "Creating a OPNsense VM" qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \ -name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null @@ -573,7 +573,7 @@ qm resize $VMID scsi0 10G >/dev/null Logo -

OpnSense VM

+

OPNsense VM

@@ -603,8 +603,8 @@ qm set $VMID \ -net0 virtio,bridge=${BRG},macaddr=${MAC}${VLAN}${MTU} 2>/dev/null msg_ok "Bridge interfaces have been successfully added." -msg_ok "Created a OpnSense VM ${CL}${BL}(${HN})" - msg_ok "Starting OpnSense VM (Patience this takes 20-30 minutes)" +msg_ok "Created a OPNsense VM ${CL}${BL}(${HN})" + msg_ok "Starting OPNsense VM (Patience this takes 20-30 minutes)" qm start $VMID sleep 90 send_line_to_vm "root" @@ -613,8 +613,8 @@ msg_ok "Created a OpnSense VM ${CL}${BL}(${HN})" -net1 virtio,bridge=${WAN_BRG},macaddr=${WAN_MAC} &>/dev/null sleep 10 send_line_to_vm "sh ./opnsense-bootstrap.sh.in -y -f -r 25.1" - msg_ok "OpnSense VM is being installed, do not close the terminal, or the installation will fail." - #We need to wait for the OpnSense build proccess to finish, this takes a few minutes + msg_ok "OPNsense VM is being installed, do not close the terminal, or the installation will fail." + #We need to wait for the OPNsense build proccess to finish, this takes a few minutes sleep 1000 send_line_to_vm "root" send_line_to_vm "opnsense" @@ -665,7 +665,7 @@ msg_ok "Created a OpnSense VM ${CL}${BL}(${HN})" fi sleep 10 send_line_to_vm "0" - msg_ok "Started OpnSense VM" + msg_ok "Started OPNsense VM" msg_ok "Completed Successfully!\n" if [ "$IP_ADDR" != "" ]; then From c014bc200ecd54cfcc0cc7095d7c0c0c68e37c57 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:26:41 +0100 Subject: [PATCH 293/480] Paperless-AI: add dependency "make" (#2289) --- install/paperless-ai-install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh index 18d1ed241..24af53848 100644 --- a/install/paperless-ai-install.sh +++ b/install/paperless-ai-install.sh @@ -17,7 +17,8 @@ $STD apt-get install -y \ curl \ sudo \ mc \ - gpg + gpg \ + make msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" From 5d56822d1bb8fb5466d29e62761427e80bad1fb8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:26:54 +0100 Subject: [PATCH 294/480] Frigate: Use Fixed Version 14 (#2288) --- install/frigate-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 81f78f36f..51f2da94b 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -48,13 +48,13 @@ if [[ "$CTTYPE" == "0" ]]; then fi msg_ok "Set Up Hardware Acceleration" -RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name') +#RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name') msg_ok "Stop spinner to prevent segmentation fault" msg_info "Installing Frigate $RELEASE (Perseverance)" if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi cd ~ mkdir -p /opt/frigate/models -wget -q https://github.com/blakeblackshear/frigate/archive/refs/tags/${RELEASE}.tar.gz -O frigate.tar.gz +wget -q https://github.com/blakeblackshear/frigate/archive/refs/tags/v0.14.1.tar.gz -O frigate.tar.gz tar -xzf frigate.tar.gz -C /opt/frigate --strip-components 1 rm -rf frigate.tar.gz cd /opt/frigate From 8cf1c2969ba98448ff9cf48348bc656bf58de1b1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:27:27 +0100 Subject: [PATCH 295/480] Update CHANGELOG.md (#2287) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dd262fd7..7c9cd653f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,25 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-12 + +### Changes + +### 💥 Breaking Changes + +- Frigate: Use Fixed Version 14 [@MickLesk](https://github.com/MickLesk) ([#2288](https://github.com/community-scripts/ProxmoxVE/pull/2288)) + +### ✨ New Scripts + +- New script: cross-seed [@jmatraszek](https://github.com/jmatraszek) ([#2186](https://github.com/community-scripts/ProxmoxVE/pull/2186)) + +### 🚀 Updated Scripts + +- Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289)) +- Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291)) +- Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) +- Fix: CraftyControler fix java default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2286](https://github.com/community-scripts/ProxmoxVE/pull/2286)) + ## 2025-02-11 ### Changes From 62425bc51499f1bc94f83ca923ce7c7c47f00d60 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:35:23 +0100 Subject: [PATCH 296/480] add more deps --- install/paperless-ai-install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh index 24af53848..0c469e9cc 100644 --- a/install/paperless-ai-install.sh +++ b/install/paperless-ai-install.sh @@ -18,7 +18,10 @@ $STD apt-get install -y \ sudo \ mc \ gpg \ - make + make \ + gcc \ + g++ \ + build-essential msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" From 6de6b1542c3c71405044d037e6752491130dc2ba Mon Sep 17 00:00:00 2001 From: Saif <3879349+nayzm@users.noreply.github.com> Date: Wed, 12 Feb 2025 12:20:55 +0000 Subject: [PATCH 297/480] fix duplicate 'VM' in name opnsense-vm.json (#2293) --- json/opnsense-vm.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/opnsense-vm.json b/json/opnsense-vm.json index 18da1516c..e2c92b52e 100644 --- a/json/opnsense-vm.json +++ b/json/opnsense-vm.json @@ -1,5 +1,5 @@ { - "name": "OPNsense-VM", + "name": "OPNsense", "slug": "opnsense-vm", "categories": [ 4 From 6c495bcafc90fae32c56c1d33d27c43e13b3780e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:24:31 +0100 Subject: [PATCH 298/480] Update CHANGELOG.md (#2294) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c9cd653f..977218afc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) - Fix: CraftyControler fix java default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2286](https://github.com/community-scripts/ProxmoxVE/pull/2286)) +### 🌐 Website + +- Fix: duplicate 'VM' name in opnsense-vm.json [@nayzm](https://github.com/nayzm) ([#2293](https://github.com/community-scripts/ProxmoxVE/pull/2293)) + ## 2025-02-11 ### Changes From 58eff8c4cb280729c14956760b4160e0a0fbb3de Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:29:20 +0100 Subject: [PATCH 299/480] remove wrong msg --- .github/CONTRIBUTOR_GUIDE/ct/AppName.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh index 160e9e25c..72a70d3a1 100644 --- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh +++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh @@ -46,8 +46,6 @@ function update_script() { # Crawling the new version and checking whether an update is required RELEASE=$(curl -fsSL [RELEASE_URL] | [PARSE_RELEASE_COMMAND]) if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Updating $APP" - # Stopping Services msg_info "Stopping $APP" systemctl stop [SERVICE_NAME] From 3f779e14fa097116188e6db6923e927fb8ddd80d Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:29:51 +0100 Subject: [PATCH 300/480] Fix changedetection: Correct Browser install (#2277) --- install/changedetection-install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install/changedetection-install.sh b/install/changedetection-install.sh index 660da465c..f96fcc966 100644 --- a/install/changedetection-install.sh +++ b/install/changedetection-install.sh @@ -76,7 +76,10 @@ mkdir /opt/browserless $STD python3 -m pip install playwright $STD git clone https://github.com/browserless/chrome /opt/browserless $STD npm install --prefix /opt/browserless -$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps chrome chromium firefox webkit +$STD /opt/browserless/node_modules/playwright-core/cli.js install --with-deps &>/dev/null +$STD /opt/browserless/node_modules/playwright-core/cli.js install --force chrome &>/dev/null +$STD /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit &>/dev/null +$STD /opt/browserless/node_modules/playwright-core/cli.js install --force msedge $STD npm run build --prefix /opt/browserless $STD npm run build:function --prefix /opt/browserless $STD npm prune production --prefix /opt/browserless From 1c9d23713d996b6ca854fcc69463c214895c46e9 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:56:31 +0100 Subject: [PATCH 301/480] Update CHANGELOG.md (#2295) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 977218afc..4ed0ba44f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix changedetection: Correct Browser install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2277](https://github.com/community-scripts/ProxmoxVE/pull/2277)) - Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289)) - Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291)) - Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) From 17885513933641a50fb337446ff5c6cf65db34b3 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:27:33 +0100 Subject: [PATCH 302/480] fix: frigate pin version (#2296) --- install/frigate-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 51f2da94b..2df70806d 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -50,7 +50,7 @@ msg_ok "Set Up Hardware Acceleration" #RELEASE=$(curl -s https://api.github.com/repos/blakeblackshear/frigate/releases/latest | jq -r '.tag_name') msg_ok "Stop spinner to prevent segmentation fault" -msg_info "Installing Frigate $RELEASE (Perseverance)" +msg_info "Installing Frigate v0.14.1 (Perseverance)" if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi cd ~ mkdir -p /opt/frigate/models From 0f7ff181dfceeacc2805a41c975ae5d17bb3098a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:30:38 +0100 Subject: [PATCH 303/480] Update CHANGELOG.md (#2298) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ed0ba44f..644da4404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- fix: frigate pin version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2296](https://github.com/community-scripts/ProxmoxVE/pull/2296)) - Fix changedetection: Correct Browser install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2277](https://github.com/community-scripts/ProxmoxVE/pull/2277)) - Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289)) - Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291)) From a5f77f23e9d0d80e9295c6f8332f0c68098ced1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:10:24 +0100 Subject: [PATCH 304/480] New Script: TasmoCompiler (#2235) * add tasmocompiler script * bunch of script fixes * remove typo * Update json/tasmocompiler.json Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update ct/tasmocompiler.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update json/tasmocompiler.json Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update ct/tasmocompiler.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> --------- Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> --- ct/tasmocompiler.sh | 71 ++++++++++++++++++++++++++ install/tasmocompiler-install.sh | 87 ++++++++++++++++++++++++++++++++ json/tasmocompiler.json | 34 +++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 ct/tasmocompiler.sh create mode 100644 install/tasmocompiler-install.sh create mode 100644 json/tasmocompiler.json diff --git a/ct/tasmocompiler.sh b/ct/tasmocompiler.sh new file mode 100644 index 000000000..2917227a9 --- /dev/null +++ b/ct/tasmocompiler.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/benzino77/tasmocompiler + +APP="TasmoCompiler" +TAGS="compiler" +var_cpu="2" +var_ram="2048" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/tasmocompiler ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping $APP" + systemctl stop tasmocompiler + msg_ok "Stopped $APP" + msg_info "Updating $APP to v${RELEASE}" + cd /opt + rm -rf /opt/tasmocompiler + RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + wget -q https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz + tar xzf v${RELEASE}.tar.gz + mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/ + cd /opt/tasmocompiler + yarn install &> /dev/null + export NODE_OPTIONS=--openssl-legacy-provider + npm i &> /dev/null + yarn build &> /dev/null + msg_ok "Updated $APP to v${RELEASE}" + msg_info "Starting $APP" + systemctl start tasmocompiler + msg_ok "Started $APP" + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_info "Cleaning up" + rm -r "/opt/v${RELEASE}.tar.gz" + msg_ok "Cleaned" + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" diff --git a/install/tasmocompiler-install.sh b/install/tasmocompiler-install.sh new file mode 100644 index 000000000..452d56e8a --- /dev/null +++ b/install/tasmocompiler-install.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/benzino77/tasmocompiler + +# Import Functions und Setup +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies. Patience" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg \ + git +msg_ok "Installed Dependencies" + +msg_info "Setup Python3" +$STD apt-get install python3-venv +msg_ok "Setup Python3" + +msg_info "Setup Node.js & yarn" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g yarn +msg_ok "Setup Node.js & yarn" + +msg_info "Setup Platformio" +curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py +$STD python3 get-platformio.py +msg_ok "Setup Platformio" + +msg_info "Setup TasmoCompiler" +mkdir /tmp/Tasmota +RELEASE=$(curl -s https://api.github.com/repos/benzino77/tasmocompiler/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q https://github.com/benzino77/tasmocompiler/archive/refs/tags/v${RELEASE}.tar.gz -O /tmp/v${RELEASE}.tar.gz +cd /tmp +tar xzf /tmp/v${RELEASE}.tar.gz +mv tasmocompiler-${RELEASE}/ /opt/tasmocompiler/ +cd /opt/tasmocompiler +$STD yarn install +export NODE_OPTIONS=--openssl-legacy-provider +$STD npm i +$STD yarn build +mkdir -p /usr/local/bin +ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio +ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio +ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb +echo "${RELEASE}" >"/opt/tasmocompiler_version.txt" +msg_ok "Setup TasmoCompiler" + +msg_info "Creating Service" +cat </etc/systemd/system/tasmocompiler.service +[Unit] +Description=TasmoCompiler Service +After=multi-user.target + +[Service] +Type=simple +User=root +ExecStart=/usr/bin/node /opt/tasmocompiler/server/app.js + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now tasmocompiler +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f /tmp/v${RELEASE}.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/tasmocompiler.json b/json/tasmocompiler.json new file mode 100644 index 000000000..be7400407 --- /dev/null +++ b/json/tasmocompiler.json @@ -0,0 +1,34 @@ +{ + "name": "TasmoCompiler", + "slug": "tasmocompiler", + "categories": [ + 16 + ], + "date_created": "2025-02-10", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://github.com/benzino77/tasmocompiler/blob/master/README.md", + "website": "https://github.com/benzino77/tasmocompiler", + "logo": "https://github.com/benzino77/tasmocompiler/raw/master/docs/logo/tasmocompiler-symbol.svg", + "description": "TasmoCompiler is a simple web GUI which allows you to compile fantastic Tasmota firmware with your own settings.", + "install_methods": [ + { + "type": "default", + "script": "ct/tasmocompiler.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 10, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From e4c2485823931bde66e1888b99491179c5e7a0ce Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:12:17 +0100 Subject: [PATCH 305/480] Update .app files (#2300) Co-authored-by: GitHub Actions --- ct/headers/tasmocompiler | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/tasmocompiler diff --git a/ct/headers/tasmocompiler b/ct/headers/tasmocompiler new file mode 100644 index 000000000..8cb131a42 --- /dev/null +++ b/ct/headers/tasmocompiler @@ -0,0 +1,6 @@ + ______ ______ _ __ + /_ __/___ __________ ___ ____ / ____/___ ____ ___ ____ (_) /__ _____ + / / / __ `/ ___/ __ `__ \/ __ \/ / / __ \/ __ `__ \/ __ \/ / / _ \/ ___/ + / / / /_/ (__ ) / / / / / /_/ / /___/ /_/ / / / / / / /_/ / / / __/ / +/_/ \__,_/____/_/ /_/ /_/\____/\____/\____/_/ /_/ /_/ .___/_/_/\___/_/ + /_/ From 64e9eac80f59b40d6c15a1546026713f5857070d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:12:53 +0100 Subject: [PATCH 306/480] Update CHANGELOG.md (#2299) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 644da4404..d3782bf3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: TasmoCompiler [@tremor021](https://github.com/tremor021) ([#2235](https://github.com/community-scripts/ProxmoxVE/pull/2235)) - New script: cross-seed [@jmatraszek](https://github.com/jmatraszek) ([#2186](https://github.com/community-scripts/ProxmoxVE/pull/2186)) ### 🚀 Updated Scripts From 362b5cd0318dc5c759823cc3fbedb72894e60b2c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:42:36 +0100 Subject: [PATCH 307/480] Update sqlserver2022.sh --- ct/sqlserver2022.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/sqlserver2022.sh b/ct/sqlserver2022.sh index fe7ab57e3..a303e79de 100644 --- a/ct/sqlserver2022.sh +++ b/ct/sqlserver2022.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/kris701/ProxmoxVE/refs/heads/main/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: Kristian Skov # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -46,4 +46,4 @@ 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 IP:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}${IP}:1433${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}${IP}:1433${CL}" From ca010155866021285d03cf5f06a2989433103ccf Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:42:54 +0100 Subject: [PATCH 308/480] remove empty line From f06b37f1800a016018d9cfe34d2841ec6549340a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 17:02:02 +0100 Subject: [PATCH 309/480] Update sqlserver2022-install.sh --- install/sqlserver2022-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index 617e9cf38..5e48bc99d 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -27,7 +27,7 @@ $STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trust $STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list $STD apt-get clean * $STD apt-get update -y -$STD apt-get install -y mssql-server +apt-get install -y mssql-server msg_ok "Setup Server 2022" msg_info "Installing SQL Server Tools" From 9ec1b651cd663c87e4a19660a4876a9582790eeb Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 17:10:20 +0100 Subject: [PATCH 310/480] Update sqlserver2022-install.sh --- install/sqlserver2022-install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index 5e48bc99d..cc8b92d3e 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -23,8 +23,10 @@ $STD apt install -y \ msg_ok "Installed Dependencies" msg_info "Setup SQL Server 2022" -$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc -$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list +curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg +curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list +#$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc +#$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list $STD apt-get clean * $STD apt-get update -y apt-get install -y mssql-server From 3483ea702516b6b8882246ee86fbaf1983eab85b Mon Sep 17 00:00:00 2001 From: Davide Alberani Date: Wed, 12 Feb 2025 18:20:00 +0100 Subject: [PATCH 311/480] fixes #2301: check for a file named pingvin_version, not a variable with the same name (#2302) --- ct/pingvin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/pingvin.sh b/ct/pingvin.sh index 6e8eadc1d..425240dc0 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -34,7 +34,7 @@ function update_script() { fi RELEASE=$(curl -s https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ ! -f /opt/$pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then + if [[ ! -f /opt/pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then msg_info "Stopping Pingvin Share" systemctl stop pm2-root.service From c8924012183ea9aacf2e662bd81bd0568693c3f9 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 18:28:47 +0100 Subject: [PATCH 312/480] Update CHANGELOG.md (#2303) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3782bf3e..a20cb2de0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,11 +32,12 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Pingvin wrong variable used for version tracking [@alberanid](https://github.com/alberanid) ([#2302](https://github.com/community-scripts/ProxmoxVE/pull/2302)) +- Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) - fix: frigate pin version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2296](https://github.com/community-scripts/ProxmoxVE/pull/2296)) - Fix changedetection: Correct Browser install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2277](https://github.com/community-scripts/ProxmoxVE/pull/2277)) - Paperless-AI: add dependency "make" [@MickLesk](https://github.com/MickLesk) ([#2289](https://github.com/community-scripts/ProxmoxVE/pull/2289)) - Fix: Typo OPNsense VM [@chpego](https://github.com/chpego) ([#2291](https://github.com/community-scripts/ProxmoxVE/pull/2291)) -- Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) - Fix: CraftyControler fix java default [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2286](https://github.com/community-scripts/ProxmoxVE/pull/2286)) ### 🌐 Website From 417d4089d76878122571ec017066444836d33376 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 19:01:56 +0100 Subject: [PATCH 313/480] Fix Myspeed Installtion (#2308) --- install/myspeed-install.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/install/myspeed-install.sh b/install/myspeed-install.sh index 3af647492..6aac988dc 100644 --- a/install/myspeed-install.sh +++ b/install/myspeed-install.sh @@ -1,10 +1,8 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/gnmyt/myspeed source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" @@ -18,6 +16,9 @@ update_os msg_info "Installing Dependencies" $STD apt-get install -y \ curl \ + build-essential \ + g++ \ + make \ sudo \ make \ gpg \ @@ -73,4 +74,4 @@ msg_info "Cleaning up" $STD apt-get -y autoremove rm -rf /opt/MySpeed-$RELEASE.zip $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" From 22f44d117a8569d95e95f9630791bbe8f3a5fd4e Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 12 Feb 2025 19:19:57 +0100 Subject: [PATCH 314/480] Update ubuntu2410-vm.sh: Fix typo in API call. (#2305) --- vm/ubuntu2410-vm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/ubuntu2410-vm.sh b/vm/ubuntu2410-vm.sh index 19c28309a..4f78d256c 100644 --- a/vm/ubuntu2410-vm.sh +++ b/vm/ubuntu2410-vm.sh @@ -506,7 +506,7 @@ if [ "$START_VM" == "yes" ]; then qm start $VMID msg_ok "Started Ubuntu 24.10 VM" fi -post_update_to_api "done" "none"s +post_update_to_api "done" "none" msg_ok "Completed Successfully!\n" echo -e "Setup Cloud-Init before starting \n More info at https://github.com/community-scripts/ProxmoxVE/discussions/272 \n" From 03d8d095cceaa9833b2f530490444c1d590f5c42 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 19:20:08 +0100 Subject: [PATCH 315/480] Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM (#2307) * add note for debian12 vm * add note for ubuntu 22.04 vm * add note to ubuntu 24.04 vm * add note to ubuntu 24.10 vm --- json/debian-vm.json | 7 ++++++- json/ubuntu2204-vm.json | 7 ++++++- json/ubuntu2404-vm.json | 7 ++++++- json/ubuntu2410-vm.json | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/json/debian-vm.json b/json/debian-vm.json index c2d3aab27..7727315ea 100644 --- a/json/debian-vm.json +++ b/json/debian-vm.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´", + "type": "info" + } + ] } diff --git a/json/ubuntu2204-vm.json b/json/ubuntu2204-vm.json index d3a347761..f27c51c83 100644 --- a/json/ubuntu2204-vm.json +++ b/json/ubuntu2204-vm.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´", + "type": "info" + } + ] } diff --git a/json/ubuntu2404-vm.json b/json/ubuntu2404-vm.json index 9c2b9a45c..9494ceb54 100644 --- a/json/ubuntu2404-vm.json +++ b/json/ubuntu2404-vm.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´", + "type": "info" + } + ] } diff --git a/json/ubuntu2410-vm.json b/json/ubuntu2410-vm.json index a1715368a..70ae32586 100644 --- a/json/ubuntu2410-vm.json +++ b/json/ubuntu2410-vm.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´", + "type": "info" + } + ] } From e5c6953e98dad815acaa61459a4fc4cb791e4b06 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:02:23 +0100 Subject: [PATCH 316/480] Update CHANGELOG.md (#2309) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a20cb2de0..ec1f30535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305)) +- Fix: Myspeed Installation (g++) [@MickLesk](https://github.com/MickLesk) ([#2308](https://github.com/community-scripts/ProxmoxVE/pull/2308)) - Fix: Pingvin wrong variable used for version tracking [@alberanid](https://github.com/alberanid) ([#2302](https://github.com/community-scripts/ProxmoxVE/pull/2302)) - Fix: SQL Server 2022 - remove unnecessary sudo [@tremor021](https://github.com/tremor021) ([#2282](https://github.com/community-scripts/ProxmoxVE/pull/2282)) - fix: frigate pin version [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2296](https://github.com/community-scripts/ProxmoxVE/pull/2296)) @@ -42,6 +44,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM [@MickLesk](https://github.com/MickLesk) ([#2307](https://github.com/community-scripts/ProxmoxVE/pull/2307)) - Fix: duplicate 'VM' name in opnsense-vm.json [@nayzm](https://github.com/nayzm) ([#2293](https://github.com/community-scripts/ProxmoxVE/pull/2293)) ## 2025-02-11 From 067c962baf1d31f44a77f7cb1a5595d665cb5ce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:05:42 +0100 Subject: [PATCH 317/480] New Script: Graylog (#2270) * add graylog script * Update install/graylog-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * fixes * Update ct/graylog.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * used wildcard to remove repo deb * fixes v2 --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> --- ct/graylog.sh | 59 ++++++++++++++++++++++++++++++++++ install/graylog-install.sh | 65 ++++++++++++++++++++++++++++++++++++++ json/graylog.json | 43 +++++++++++++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 ct/graylog.sh create mode 100644 install/graylog-install.sh create mode 100644 json/graylog.json diff --git a/ct/graylog.sh b/ct/graylog.sh new file mode 100644 index 000000000..b4f855292 --- /dev/null +++ b/ct/graylog.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://graylog.org/ + +APP="Graylog" +TAGS="logging" +var_cpu="2" +var_ram="8192" +var_disk="30" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /etc/graylog ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping $APP" + systemctl stop graylog-datanode + systemctl stop graylog-server + msg_ok "Stopped $APP" + + msg_info "Updating $APP" + apt-get update &> /dev/null + apt-get upgrade -y &> /dev/null + msg_ok "Updated $APP" + + msg_info "Starting $APP" + systemctl start graylog-datanode + systemctl start graylog-server + msg_ok "Started $APP" + + msg_ok "Update Successful" + 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}:9000${CL}" diff --git a/install/graylog-install.sh b/install/graylog-install.sh new file mode 100644 index 000000000..351e8c1f5 --- /dev/null +++ b/install/graylog-install.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://graylog.org/ + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg +msg_ok "Installed Dependencies" + +msg_info "Setup MongoDB" +curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor +echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list +$STD apt-get update +$STD apt-get install -y mongodb-org +$STD apt-mark hold mongodb-org +systemctl enable -q --now mongod +msg_ok "Setup MongoDB" + +msg_info "Setup Graylog Data Node" +PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16) +wget -q https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb +$STD dpkg -i graylog-6.1-repository_latest.deb +$STD apt-get update +$STD apt-get install graylog-datanode -y +sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf +systemctl enable -q --now graylog-datanode +msg_ok "Setup Graylog Data Node" + +msg_info "Setup ${APPLICATION}" +$STD apt-get install graylog-server +ROOT_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16) +{ + echo "${APPLICATION} Credentials" + echo "Admin User: admin" + echo "Admin Password: ${ROOT_PASSWORD}" +} >> ~/graylog.creds +ROOT_PASSWORD=$(echo -n $ROOT_PASSWORD | shasum -a 256 | awk '{print $1}') +sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/server/server.conf +sed -i "s/root_password_sha2 =/root_password_sha2 = $ROOT_PASSWORD/g" /etc/graylog/server/server.conf +sed -i 's/#http_bind_address = 127.0.0.1.*/http_bind_address = 0.0.0.0:9000/g' /etc/graylog/server/server.conf +systemctl enable -q --now graylog-server +msg_ok "Setup ${APPLICATION}" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f graylog-*-repository_latest.deb +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/graylog.json b/json/graylog.json new file mode 100644 index 000000000..66226f3d0 --- /dev/null +++ b/json/graylog.json @@ -0,0 +1,43 @@ +{ + "name": "Graylog", + "slug": "graylog", + "categories": [ + 9 + ], + "date_created": "2025-02-12", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://go2docs.graylog.org/current/home.htm", + "website": "https://graylog.org/", + "logo": "https://graylog.org/wp-content/uploads/2023/11/gl-logo-horiz-all-white-1200w-300x96.png.webp", + "description": "Graylog is a free and open log management platform.", + "install_methods": [ + { + "type": "default", + "script": "ct/graylog.sh", + "resources": { + "cpu": 2, + "ram": 8192, + "hdd": 30, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Initial Setup credentials: `tail /var/log/graylog-server/server.log` after the server starts for the first time.", + "type": "info" + }, + { + "text": "Type `cat ~/graylog.creds` to get admin password that you use to log in AFTER the Initial Setup", + "type": "info" + } + ] +} \ No newline at end of file From 80053c1cc32edc587933152cf2316b7a5adefd4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:06:33 +0100 Subject: [PATCH 318/480] New Script: Excalidraw (#2285) * add excalidraw script * made suggested fixes * more fixes * some more fixes * even more fixes * fix debian --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/excalidraw.sh | 74 +++++++++++++++++++++++++++++++++++ install/excalidraw-install.sh | 73 ++++++++++++++++++++++++++++++++++ json/excalidraw.json | 34 ++++++++++++++++ 3 files changed, 181 insertions(+) create mode 100644 ct/excalidraw.sh create mode 100644 install/excalidraw-install.sh create mode 100644 json/excalidraw.json diff --git a/ct/excalidraw.sh b/ct/excalidraw.sh new file mode 100644 index 000000000..62c3782cc --- /dev/null +++ b/ct/excalidraw.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/excalidraw/excalidraw + +APP="Excalidraw" +TAGS="diagrams" +var_cpu="2" +var_ram="3072" +var_disk="6" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/excalidraw ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop excalidraw + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + cd /tmp + temp_file=$(mktemp) + wget -q "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file + tar xzf $temp_file + rm -rf /opt/excalidraw + mv excalidraw-${RELEASE} /opt/excalidraw + cd /opt/excalidraw + yarn &> /dev/null + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start excalidraw + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf $temp_file + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/excalidraw_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:3000${CL}" diff --git a/install/excalidraw-install.sh b/install/excalidraw-install.sh new file mode 100644 index 000000000..e83c5aae2 --- /dev/null +++ b/install/excalidraw-install.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/excalidraw/excalidraw + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg \ + xdg-utils +msg_ok "Installed Dependencies" + +msg_info "Setup Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Setup Node.js Repository" + +msg_info "Setup Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g yarn +msg_ok "Setup Node.js" + +msg_info "Setup Excalidraw" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file +tar xzf $temp_file +mv excalidraw-${RELEASE} /opt/excalidraw +cd /opt/excalidraw +$STD yarn +echo "${RELEASE}" >/opt/excalidraw_version.txt +msg_ok "Setup Excalidraw" + +msg_info "Creating Service" +cat </etc/systemd/system/excalidraw.service +[Unit] +Description=Excalidraw Service +After=network.target + +[Service] +Type=simple +WorkingDirectory=/opt/excalidraw +ExecStart=/usr/bin/yarn start --host +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now excalidraw +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/excalidraw.json b/json/excalidraw.json new file mode 100644 index 000000000..8768fade7 --- /dev/null +++ b/json/excalidraw.json @@ -0,0 +1,34 @@ +{ + "name": "Excalidraw", + "slug": "excalidraw", + "categories": [ + 12 + ], + "date_created": "2025-02-12", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docs.excalidraw.com/docs", + "website": "https://excalidraw.com/", + "logo": "https://docs.excalidraw.com/img/logo.svg", + "description": "An open source virtual hand-drawn style whiteboard. Collaborative and end-to-end encrypted.", + "install_methods": [ + { + "type": "default", + "script": "ct/excalidraw.sh", + "resources": { + "cpu": 2, + "ram": 3072, + "hdd": 6, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] + } From ab64e7e01304e243d61e76d4ce5e13a33a96870a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:06:42 +0100 Subject: [PATCH 319/480] Update .app files (#2313) Co-authored-by: GitHub Actions --- ct/headers/graylog | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/graylog diff --git a/ct/headers/graylog b/ct/headers/graylog new file mode 100644 index 000000000..f29f205f5 --- /dev/null +++ b/ct/headers/graylog @@ -0,0 +1,6 @@ + ______ __ + / ____/________ ___ __/ /___ ____ _ + / / __/ ___/ __ `/ / / / / __ \/ __ `/ +/ /_/ / / / /_/ / /_/ / / /_/ / /_/ / +\____/_/ \__,_/\__, /_/\____/\__, / + /____/ /____/ From 65f8495a121b7c43c02658902459f41c5af01722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:07:32 +0100 Subject: [PATCH 320/480] New Script: Kometa (#2281) * add kometa script * scale up LXC a bit * fixes * Update kometa.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/kometa.sh | 80 +++++++++++++++++++++++++++++++++++++++ install/kometa-install.sh | 74 ++++++++++++++++++++++++++++++++++++ json/kometa.json | 39 +++++++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 ct/kometa.sh create mode 100644 install/kometa-install.sh create mode 100644 json/kometa.json diff --git a/ct/kometa.sh b/ct/kometa.sh new file mode 100644 index 000000000..bd1c86b29 --- /dev/null +++ b/ct/kometa.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Snawoot/kometa + +# App Default Values +APP="Kometa" +TAGS="media;streaming" +var_cpu="1" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f "/opt/kometa/kometa.py" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/kometa_version.txt)" ]] || [[ ! -f /opt/kometa_version.txt ]]; then + msg_info "Updating $APP" + msg_info "Stopping $APP" + systemctl stop kometa + msg_ok "Stopped $APP" + + msg_info "Updating $APP to ${RELEASE}" + cd /tmp + temp_file=$(mktemp) + RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + wget -q "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" + tar -xzf "$temp_file" + cp /opt/kometa/config/config.yml /opt + rm -rf /opt/kometa + mv Kometa-${RELEASE} /opt/kometa + cd /opt/kometa + rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED + pip install -r requirements.txt --ignore-installed &> /dev/null + mkdir -p config/assets + cp /opt/config.yml config/config.yml + echo "${RELEASE}" >/opt/kometa_version.txt + msg_ok "Updated $APP to ${RELEASE}" + + msg_info "Starting $APP" + systemctl start kometa + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -f $temp_file + msg_ok "Cleanup Completed" + + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}${CL}" \ No newline at end of file diff --git a/install/kometa-install.sh b/install/kometa-install.sh new file mode 100644 index 000000000..524759568 --- /dev/null +++ b/install/kometa-install.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Snawoot/kometa + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo +msg_ok "Installed Dependencies" + +msg_info "Setup Python 3" +$STD apt-get install python3-pip -y +rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED +msg_ok "Setup Python 3" + +msg_info "Setup Kometa" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/Kometa-Team/Kometa/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/Kometa-Team/Kometa/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv Kometa-${RELEASE} /opt/kometa +cd /opt/kometa +$STD pip install -r requirements.txt --ignore-installed +mkdir -p config/assets +cp config/config.yml.template config/config.yml +echo "${RELEASE}" >/opt/kometa_version.txt +msg_ok "Setup Kometa" + +read -p "Enter your TMDb API key: " TMDBKEY +read -p "Enter your Plex URL: " PLEXURL +read -p "Enter your Plex token: " PLEXTOKEN +sed -i -e "s#url: http://192.168.1.12:32400#url: $PLEXURL#g" /opt/kometa/config/config.yml +sed -i -e "s/token: ####################/token: $PLEXTOKEN/g" /opt/kometa/config/config.yml +sed -i -e "s/apikey: ################################/apikey: $TMDBKEY/g" /opt/kometa/config/config.yml + +msg_info "Creating Service" +cat </etc/systemd/system/kometa.service +[Unit] +Description=Kometa Service +After=network-online.target + +[Service] +Type=simple +WorkingDirectory=/opt/kometa +ExecStart=/usr/bin/python3 kometa.py +Restart=always +RestartSec=30 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable --now -q kometa +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/kometa.json b/json/kometa.json new file mode 100644 index 000000000..715437ecd --- /dev/null +++ b/json/kometa.json @@ -0,0 +1,39 @@ +{ + "name": "Kometa", + "slug": "kometa", + "categories": [ + 13 + ], + "date_created": "2025-02-12", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": null, + "documentation": "https://kometa.wiki/en/latest/", + "website": "https://github.com/Snawoot/Kometa", + "logo": "https://kometa.wiki/en/latest/assets/icon.png", + "description": "Kometa (formerly known as Plex Meta Manager) is a powerful tool designed to give you complete control over your media libraries", + "install_methods": [ + { + "type": "default", + "script": "ct/kometa.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "During installation you will be prompted to input your TMDb key, Plex URL and Plex token. Make sure you have them ready.", + "type": "info" + } + ] + } From 72b546e94570de81bdca76ae74d9268056f97bfe Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:08:26 +0100 Subject: [PATCH 321/480] Fix some jsons (debian instead Debian in OS) (#2311) --- json/2fauth.json | 2 +- json/apache-guacamole.json | 2 +- json/firefly.json | 2 +- json/jenkins.json | 2 +- json/kimai.json | 2 +- json/komodo.json | 2 +- json/nextpvr.json | 2 +- json/onedev.json | 2 +- json/proxmox-datacenter-manager.json | 2 +- json/semaphore.json | 2 +- json/wallos.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/json/2fauth.json b/json/2fauth.json index 4c2dda8bb..4989ac9db 100644 --- a/json/2fauth.json +++ b/json/2fauth.json @@ -21,7 +21,7 @@ "cpu": 1, "ram": 512, "hdd": 2, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/apache-guacamole.json b/json/apache-guacamole.json index 490a2acbf..408eb64f7 100644 --- a/json/apache-guacamole.json +++ b/json/apache-guacamole.json @@ -21,7 +21,7 @@ "cpu": 1, "ram": 2048, "hdd": 4, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/firefly.json b/json/firefly.json index c2d7fc6e2..93cb7904a 100644 --- a/json/firefly.json +++ b/json/firefly.json @@ -21,7 +21,7 @@ "cpu": 1, "ram": 1024, "hdd": 2, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/jenkins.json b/json/jenkins.json index 7147e6dc1..786791675 100644 --- a/json/jenkins.json +++ b/json/jenkins.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 1024, "hdd": 4, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/kimai.json b/json/kimai.json index 15b470e01..b9b7c9c04 100644 --- a/json/kimai.json +++ b/json/kimai.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 2048, "hdd": 7, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/komodo.json b/json/komodo.json index cddf046c0..cbe372963 100644 --- a/json/komodo.json +++ b/json/komodo.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 2048, "hdd": 10, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/nextpvr.json b/json/nextpvr.json index c3c453985..3424a3d2a 100644 --- a/json/nextpvr.json +++ b/json/nextpvr.json @@ -21,7 +21,7 @@ "cpu": 1, "ram": 1024, "hdd": 5, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/onedev.json b/json/onedev.json index 12bc3a4a0..d8ce9c168 100644 --- a/json/onedev.json +++ b/json/onedev.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 2048, "hdd": 4, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/proxmox-datacenter-manager.json b/json/proxmox-datacenter-manager.json index f7417f386..892ed30c6 100644 --- a/json/proxmox-datacenter-manager.json +++ b/json/proxmox-datacenter-manager.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 2048, "hdd": 10, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/semaphore.json b/json/semaphore.json index d839790fc..19bcbdf22 100644 --- a/json/semaphore.json +++ b/json/semaphore.json @@ -21,7 +21,7 @@ "cpu": 2, "ram": 2048, "hdd": 4, - "os": "Debian", + "os": "debian", "version": "12" } } diff --git a/json/wallos.json b/json/wallos.json index be8648078..0ff7ac1c3 100644 --- a/json/wallos.json +++ b/json/wallos.json @@ -21,7 +21,7 @@ "cpu": 1, "ram": 1024, "hdd": 5, - "os": "Debian", + "os": "debian", "version": "12" } } From 5946079f47786eb7609fbc2b1276db19d20ed1d6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:08:44 +0100 Subject: [PATCH 322/480] Fix: var_tags instead of TAGS in some CT's (#2310) * Fix some Tags in CTS * fix some others * Update suwayomiserver.sh --- ct/2fauth.sh | 2 +- ct/apache-guacamole.sh | 2 +- ct/duplicati.sh | 2 +- ct/pocketid.sh | 2 +- ct/seelf.sh | 2 +- ct/suwayomiserver.sh | 4 ++-- ct/tasmocompiler.sh | 2 +- ct/watcharr.sh | 2 +- ct/zammad.sh | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ct/2fauth.sh b/ct/2fauth.sh index 3ef44999c..f808f05ec 100644 --- a/ct/2fauth.sh +++ b/ct/2fauth.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="2FAuth" -TAGS="2fa;authenticator" +var_tags="2fa;authenticator" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/apache-guacamole.sh b/ct/apache-guacamole.sh index 35a2fceaf..c4a86f007 100644 --- a/ct/apache-guacamole.sh +++ b/ct/apache-guacamole.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/r #App Default Values APP="Apache-Guacamole" -TAGS="webserver;remote" +var_tags="webserver;remote" var_disk="4" var_cpu="1" var_ram="2048" diff --git a/ct/duplicati.sh b/ct/duplicati.sh index ec68cb5e5..628f624a3 100644 --- a/ct/duplicati.sh +++ b/ct/duplicati.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Source: https://github.com/duplicati/duplicati/ APP="Duplicati" -TAGS="backup" +var_tags="backup" var_cpu="1" var_ram="1024" var_disk="10" diff --git a/ct/pocketid.sh b/ct/pocketid.sh index 5d306f06b..ce639a9f1 100755 --- a/ct/pocketid.sh +++ b/ct/pocketid.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PocketID" -TAGS="identity-provider" +var_tags="identity-provider" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/seelf.sh b/ct/seelf.sh index a1bb677d6..33c3c4fd9 100644 --- a/ct/seelf.sh +++ b/ct/seelf.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Source: https://github.com/YuukanOO/seelf APP="seelf" -TAGS="server;docker" +var_tags="server;docker" var_cpu="2" var_ram="4096" var_disk="10" diff --git a/ct/suwayomiserver.sh b/ct/suwayomiserver.sh index afbd192f9..af3251028 100644 --- a/ct/suwayomiserver.sh +++ b/ct/suwayomiserver.sh @@ -5,8 +5,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Suwayomi/Suwayomi-Server -APP="Suwayomi-Server" -TAGS="media;manga" +APP="SuwayomiServer" +var_tags="media;manga" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/tasmocompiler.sh b/ct/tasmocompiler.sh index 2917227a9..f2205b1fd 100644 --- a/ct/tasmocompiler.sh +++ b/ct/tasmocompiler.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Source: https://github.com/benzino77/tasmocompiler APP="TasmoCompiler" -TAGS="compiler" +var_tags="compiler" var_cpu="2" var_ram="2048" var_disk="10" diff --git a/ct/watcharr.sh b/ct/watcharr.sh index 3290e0735..eeb7ee3b9 100644 --- a/ct/watcharr.sh +++ b/ct/watcharr.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Source: https://github.com/sbondCo/Watcharr APP="Watcharr" -TAGS="media" +var_tags="media" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/zammad.sh b/ct/zammad.sh index e96d4f6c6..cdb4ab8b1 100644 --- a/ct/zammad.sh +++ b/ct/zammad.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m #App Default Values APP="Zammad" -TAGS="webserver;ticket-system" +var_tags="webserver;ticket-system" var_disk="8" var_cpu="2" var_ram="4096" From bd90b303005c3ee24ac8841904f78243524e6530 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:08:56 +0100 Subject: [PATCH 323/480] Update .app files (#2314) Co-authored-by: GitHub Actions --- ct/headers/excalidraw | 6 ++++++ ct/headers/kometa | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 ct/headers/excalidraw create mode 100644 ct/headers/kometa diff --git a/ct/headers/excalidraw b/ct/headers/excalidraw new file mode 100644 index 000000000..4cda874bf --- /dev/null +++ b/ct/headers/excalidraw @@ -0,0 +1,6 @@ + ______ ___ __ + / ____/ ___________ _/ (_)___/ /________ __ __ + / __/ | |/_/ ___/ __ `/ / / __ / ___/ __ `/ | /| / / + / /____> Date: Wed, 12 Feb 2025 20:09:28 +0100 Subject: [PATCH 324/480] Update CHANGELOG.md (#2312) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec1f30535..778357df2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,11 +27,15 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Kometa [@tremor021](https://github.com/tremor021) ([#2281](https://github.com/community-scripts/ProxmoxVE/pull/2281)) +- New Script: Excalidraw [@tremor021](https://github.com/tremor021) ([#2285](https://github.com/community-scripts/ProxmoxVE/pull/2285)) +- New Script: Graylog [@tremor021](https://github.com/tremor021) ([#2270](https://github.com/community-scripts/ProxmoxVE/pull/2270)) - New Script: TasmoCompiler [@tremor021](https://github.com/tremor021) ([#2235](https://github.com/community-scripts/ProxmoxVE/pull/2235)) - New script: cross-seed [@jmatraszek](https://github.com/jmatraszek) ([#2186](https://github.com/community-scripts/ProxmoxVE/pull/2186)) ### 🚀 Updated Scripts +- Fix: var_tags instead of TAGS in some CT's [@MickLesk](https://github.com/MickLesk) ([#2310](https://github.com/community-scripts/ProxmoxVE/pull/2310)) - Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305)) - Fix: Myspeed Installation (g++) [@MickLesk](https://github.com/MickLesk) ([#2308](https://github.com/community-scripts/ProxmoxVE/pull/2308)) - Fix: Pingvin wrong variable used for version tracking [@alberanid](https://github.com/alberanid) ([#2302](https://github.com/community-scripts/ProxmoxVE/pull/2302)) @@ -44,6 +48,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Fix: some jsons (debian instead Debian in OS) [@MickLesk](https://github.com/MickLesk) ([#2311](https://github.com/community-scripts/ProxmoxVE/pull/2311)) - Website: Add After-Install Note for Ubuntu VM 22.04/24.04/24.10 and Debian VM [@MickLesk](https://github.com/MickLesk) ([#2307](https://github.com/community-scripts/ProxmoxVE/pull/2307)) - Fix: duplicate 'VM' name in opnsense-vm.json [@nayzm](https://github.com/nayzm) ([#2293](https://github.com/community-scripts/ProxmoxVE/pull/2293)) From dc3a0eca6945ddda795142afade9c705ea13e0e1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:09:40 +0100 Subject: [PATCH 325/480] Update .app files (#2315) Co-authored-by: GitHub Actions --- ct/headers/suwayomiserver | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ct/headers/suwayomiserver b/ct/headers/suwayomiserver index 034e40621..df4896f61 100644 --- a/ct/headers/suwayomiserver +++ b/ct/headers/suwayomiserver @@ -1,6 +1,6 @@ - _____ _ _____ - / ___/__ ___ ______ ___ ______ ____ ___ (_) / ___/___ ______ _____ _____ - \__ \/ / / / | /| / / __ `/ / / / __ \/ __ `__ \/ /_____\__ \/ _ \/ ___/ | / / _ \/ ___/ - ___/ / /_/ /| |/ |/ / /_/ / /_/ / /_/ / / / / / / /_____/__/ / __/ / | |/ / __/ / -/____/\__,_/ |__/|__/\__,_/\__, /\____/_/ /_/ /_/_/ /____/\___/_/ |___/\___/_/ - /____/ + _____ _ _____ + / ___/__ ___ ______ ___ ______ ____ ___ (_) ___/___ ______ _____ _____ + \__ \/ / / / | /| / / __ `/ / / / __ \/ __ `__ \/ /\__ \/ _ \/ ___/ | / / _ \/ ___/ + ___/ / /_/ /| |/ |/ / /_/ / /_/ / /_/ / / / / / / /___/ / __/ / | |/ / __/ / +/____/\__,_/ |__/|__/\__,_/\__, /\____/_/ /_/ /_/_//____/\___/_/ |___/\___/_/ + /____/ From 24924974171cf33aa6717c86a71fde5185839635 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 12 Feb 2025 20:59:23 +0100 Subject: [PATCH 326/480] add -y --- install/tasmocompiler-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tasmocompiler-install.sh b/install/tasmocompiler-install.sh index 452d56e8a..24997303d 100644 --- a/install/tasmocompiler-install.sh +++ b/install/tasmocompiler-install.sh @@ -24,7 +24,7 @@ $STD apt-get install -y \ msg_ok "Installed Dependencies" msg_info "Setup Python3" -$STD apt-get install python3-venv +$STD apt-get install -y python3-venv msg_ok "Setup Python3" msg_info "Setup Node.js & yarn" From 2a91a5d2e9d5d035fcb06d602a97bdf7e1c25dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 22:45:28 +0100 Subject: [PATCH 327/480] Fix: Kometa - Fix wrong web site address (#2318) * fix web address * fix another bad web address --- ct/kometa.sh | 2 +- install/kometa-install.sh | 2 +- json/kometa.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/kometa.sh b/ct/kometa.sh index bd1c86b29..11650d7ef 100644 --- a/ct/kometa.sh +++ b/ct/kometa.sh @@ -3,7 +3,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts ORG # Author: Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/Snawoot/kometa +# Source: https://github.com/Kometa-Team/Kometa # App Default Values APP="Kometa" diff --git a/install/kometa-install.sh b/install/kometa-install.sh index 524759568..23c0f5516 100644 --- a/install/kometa-install.sh +++ b/install/kometa-install.sh @@ -3,7 +3,7 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/Snawoot/kometa +# Source: https://github.com/Kometa-Team/Kometa source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color diff --git a/json/kometa.json b/json/kometa.json index 715437ecd..3183a7ea7 100644 --- a/json/kometa.json +++ b/json/kometa.json @@ -10,7 +10,7 @@ "privileged": false, "interface_port": null, "documentation": "https://kometa.wiki/en/latest/", - "website": "https://github.com/Snawoot/Kometa", + "website": "https://github.com/Kometa-Team/Kometa", "logo": "https://kometa.wiki/en/latest/assets/icon.png", "description": "Kometa (formerly known as Plex Meta Manager) is a powerful tool designed to give you complete control over your media libraries", "install_methods": [ From 29d30735394e7132606d363a8c14346ba5e47b6e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 22:53:31 +0100 Subject: [PATCH 328/480] Update CHANGELOG.md (#2320) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 778357df2..3d2ff07a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Kometa - Fix wrong web site address [@tremor021](https://github.com/tremor021) ([#2318](https://github.com/community-scripts/ProxmoxVE/pull/2318)) - Fix: var_tags instead of TAGS in some CT's [@MickLesk](https://github.com/MickLesk) ([#2310](https://github.com/community-scripts/ProxmoxVE/pull/2310)) - Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305)) - Fix: Myspeed Installation (g++) [@MickLesk](https://github.com/MickLesk) ([#2308](https://github.com/community-scripts/ProxmoxVE/pull/2308)) From f2512b032f8dc7293728d8c420d9331b9fe4aacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 12 Feb 2025 23:31:00 +0100 Subject: [PATCH 329/480] fix message (#2323) --- install/frigate-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 2df70806d..1b58740eb 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -102,7 +102,7 @@ else sed -i -e 's/^kvm:x:104:$/render:x:104:frigate/' -e 's/^render:x:105:$/kvm:x:105:/' /etc/group fi echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab -msg_ok "Installed Frigate $RELEASE" +msg_ok "Installed Frigate" if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then msg_ok "AVX Support Detected" From 3b905f29ef251f52dc14e0428fdde89fcfee312b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 23:32:04 +0100 Subject: [PATCH 330/480] Update CHANGELOG.md (#2324) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d2ff07a6..e7dbd0e3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- FIX: Frigate - remove bad variable [@tremor021](https://github.com/tremor021) ([#2323](https://github.com/community-scripts/ProxmoxVE/pull/2323)) - Fix: Kometa - Fix wrong web site address [@tremor021](https://github.com/tremor021) ([#2318](https://github.com/community-scripts/ProxmoxVE/pull/2318)) - Fix: var_tags instead of TAGS in some CT's [@MickLesk](https://github.com/MickLesk) ([#2310](https://github.com/community-scripts/ProxmoxVE/pull/2310)) - Update ubuntu2410-vm.sh: Fix typo in API call. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2305](https://github.com/community-scripts/ProxmoxVE/pull/2305)) From 585bb697b528e81dc6892b177f6b5eae6dc95e60 Mon Sep 17 00:00:00 2001 From: Gene Hand Date: Wed, 12 Feb 2025 22:57:00 -0800 Subject: [PATCH 331/480] Use the latest versions of runlike with --use-volume-id (#2325) --- ct/homeassistant.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index ecdeb64d7..1b495905d 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -48,6 +48,7 @@ function update_script() { docker pull "${CONTAINER_IMAGE}" LATEST_IMAGE="$(docker inspect --format "{{.Id}}" --type image "${CONTAINER_IMAGE}")" if [[ "${RUNNING_IMAGE}" != "${LATEST_IMAGE}" ]]; then + pip install -U runlike echo "Updating ${container} image ${CONTAINER_IMAGE}" DOCKER_COMMAND="$(runlike --use-volume-id "${container}")" docker rm --force "${container}" From 8a720c328a88d73eff0f36b4f7a76b7d65490efa Mon Sep 17 00:00:00 2001 From: Gabriel David Pragin Date: Wed, 12 Feb 2025 22:57:58 -0800 Subject: [PATCH 332/480] add server build code (#2327) --- ct/authentik.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ct/authentik.sh b/ct/authentik.sh index fbe6739a2..a73ff4532 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -52,6 +52,13 @@ function update_script() { npm run build &>/dev/null msg_ok "Built ${APP} website" + msg_info "Building ${APP} server" + cd /opt/authentik + go mod download + go build -o /go/authentik ./cmd/server + go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/ + msg_ok "Built ${APP} server" + msg_info "Installing Python Dependencies" cd /opt/authentik poetry install --only=main --no-ansi --no-interaction --no-root &>/dev/null From 3b01e633a75bbe711910fb1b16d8f565e20c6fd5 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 07:59:56 +0100 Subject: [PATCH 333/480] Update CHANGELOG.md (#2329) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7dbd0e3d..fc8174a51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,15 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-13 + +### Changes + +### 🚀 Updated Scripts + +- Bugfix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) +- Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) + ## 2025-02-12 ### Changes From 2692cbe5e0a197c03965cd5af0be3af519f42caa Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 08:04:48 +0100 Subject: [PATCH 334/480] Update CHANGELOG.md (#2330) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc8174a51..958689b72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Bugfix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) +- Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) - Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) ## 2025-02-12 From 24a2bbdb65a5e6af1b9ac8af0ac9d702cf4c8030 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 09:22:56 +0100 Subject: [PATCH 335/480] [gh] Workflow to change date on new json files (#2319) --- .github/workflows/delete-json-branch.yml | 28 +++++ .github/workflows/update-json-date.yml | 131 +++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 .github/workflows/delete-json-branch.yml create mode 100644 .github/workflows/update-json-date.yml diff --git a/.github/workflows/delete-json-branch.yml b/.github/workflows/delete-json-branch.yml new file mode 100644 index 000000000..e4cdcf24f --- /dev/null +++ b/.github/workflows/delete-json-branch.yml @@ -0,0 +1,28 @@ + +name: Delete JSON date PR Branch + +on: + pull_request: + types: [closed] + branches: + - main + +jobs: + delete_branch: + runs-on: ubuntu-latest + steps: + - name: Checkout the code + uses: actions/checkout@v3 + + - name: Delete PR Update Branch + if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'pr-update-json-') + run: | + PR_BRANCH="${{ github.event.pull_request.head.ref }}" + echo "Deleting branch $PR_BRANCH..." + + # Avoid deleting the default branch (e.g., main) + if [[ "$PR_BRANCH" != "main" ]]; then + git push origin --delete "$PR_BRANCH" + else + echo "Skipping deletion of the main branch" + fi \ No newline at end of file diff --git a/.github/workflows/update-json-date.yml b/.github/workflows/update-json-date.yml new file mode 100644 index 000000000..7e9c24973 --- /dev/null +++ b/.github/workflows/update-json-date.yml @@ -0,0 +1,131 @@ +name: Update JSON Date + +on: + push: + branches: + - main + paths: + - 'json/**.json' + workflow_dispatch: + +jobs: + update-app-files: + runs-on: ubuntu-latest + + permissions: + contents: write + pull-requests: write + + steps: + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ vars.APP_ID }} + private-key: ${{ secrets.APP_PRIVATE_KEY }} + + - name: Generate dynamic branch name + id: timestamp + run: echo "BRANCH_NAME=pr-update-json-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV + + - name: Set up GH_TOKEN + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV + + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 # Ensure we have the last two commits + + - name: Get Previous Commit + id: prev_commit + run: | + PREV_COMMIT=$(git rev-parse HEAD^) + echo "Previous commit: $PREV_COMMIT" + echo "prev_commit=$PREV_COMMIT" >> $GITHUB_ENV + + - name: Get Newly Added JSON Files + id: new_json_files + run: | + git diff --name-only --diff-filter=A ${{ env.prev_commit }} HEAD | grep '^json/.*\.json$' > new_files.txt || true + echo "New files detected:" + cat new_files.txt || echo "No new files." + + - name: Disable file mode changes + run: git config core.fileMode false + + - name: Set up Git + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Change JSON Date + id: change-json-date + run: | + current_date=$(date +"%Y-%m-%d") + while IFS= read -r file; do + # Skip empty lines + [[ -z "$file" ]] && continue + + if [[ -f "$file" ]]; then + echo "Processing $file..." + current_json_date=$(jq -r '.date_created // empty' "$file") + if [[ -z "$current_json_date" || "$current_json_date" != "$current_date" ]]; then + echo "Updating $file with date $current_date" + jq --arg date "$current_date" '.date_created = $date' "$file" > temp.json && mv temp.json "$file" + else + echo "Date in $file is already up to date." + fi + else + echo "Warning: File $file not found!" + fi + done < new_files.txt + rm new_files.txt + + - name: Check if there are any changes + run: | + echo "Checking for changes..." + git add -A # Untracked Dateien aufnehmen + git status + if git diff --cached --quiet; then + echo "No changes detected." + echo "changed=false" >> "$GITHUB_ENV" + else + echo "Changes detected:" + git diff --stat --cached + echo "changed=true" >> "$GITHUB_ENV" + fi + + # Step 7: Commit and create PR if changes exist + - name: Commit and create PR if changes exist + if: env.changed == 'true' + run: | + + + git commit -m "Update date in json" + git checkout -b ${{ env.BRANCH_NAME }} + git push origin ${{ env.BRANCH_NAME }} + + gh pr create --title "[core] update date in json" \ + --body "This PR is auto-generated by a GitHub Action to update the date in json." \ + --head ${{ env.BRANCH_NAME }} \ + --base main \ + --label "automated pr" + env: + GH_TOKEN: ${{ steps.generate-token.outputs.token }} + + - name: Approve pull request + if: env.changed == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --head "${{ env.BRANCH_NAME }}" --json number --jq '.[].number') + if [ -n "$PR_NUMBER" ]; then + gh pr review $PR_NUMBER --approve + fi + + - name: No changes detected + if: env.changed == 'false' + run: echo "No changes to commit. Workflow completed successfully." From 8b327552b24d8ffdd24f286847caf977c5104bfe Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 09:28:40 +0100 Subject: [PATCH 336/480] Update CHANGELOG.md (#2331) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 958689b72..c13b6724e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) - Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) +### 🧰 Maintenance + +- [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319)) + ## 2025-02-12 ### Changes From 819bda45732e8af28fa7c6074fa95de83e55f5d2 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 11:20:35 +0100 Subject: [PATCH 337/480] New Script: MinIO (#2333) * New Script: MinIO * switch category to database * update tag * optimize tag to object-storage * harmonize path * Update minio.sh --- ct/minio.sh | 71 ++++++++++++++++++++++++++++++++++++ install/minio-install.sh | 77 ++++++++++++++++++++++++++++++++++++++++ json/minio.json | 39 ++++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100644 ct/minio.sh create mode 100644 install/minio-install.sh create mode 100644 json/minio.json diff --git a/ct/minio.sh b/ct/minio.sh new file mode 100644 index 000000000..e06492e13 --- /dev/null +++ b/ct/minio.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/minio/minio + +# App Default Values +APP="MinIO" +var_tags="object-storage" +var_cpu="1" +var_ram="1024" +var_disk="5" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/bin/minio ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop minio + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + mv /usr/local/bin/minio /usr/local/bin/minio_bak + wget -q https://dl.min.io/server/minio/release/linux-amd64/minio + mv minio /usr/local/bin/ + chmod +x /usr/local/bin/minio + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start minio + msg_ok "Started ${APP}" + + msg_info "Cleaning up" + rm -f /usr/local/bin/minio_bak + msg_ok "Cleaned" + + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:9000${CL}" diff --git a/install/minio-install.sh b/install/minio-install.sh new file mode 100644 index 000000000..6dd7b947c --- /dev/null +++ b/install/minio-install.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/minio/minio + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Setup MinIO" +RELEASE=$(curl -s https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') +wget -q https://dl.min.io/server/minio/release/linux-amd64/minio +mv minio /usr/local/bin/ +chmod +x /usr/local/bin/minio +useradd -r minio-user -s /sbin/nologin +mkdir -p /home/minio-user +chown minio-user:minio-user /home/minio-user +mkdir -p /data +chown minio-user:minio-user /data +MINIO_ADMIN_USER="minioadmin" +MINIO_ADMIN_PASSWORD="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +cat </etc/default/minio +MINIO_ROOT_USER=${MINIO_ADMIN_USER} +MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD} +EOF +{ + echo "" + echo "MinIO-Credentials" + echo "MinIO Admin User: $MINIO_ADMIN_USER" + echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD" +} >> ~/minio.creds +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup MinIO" + +msg_info "Creating Service" +cat </etc/systemd/system/minio.service +[Unit] +Description=MinIO +Documentation=https://docs.min.io +Wants=network-online.target +After=network-online.target + +[Service] +User=minio-user +Group=minio-user +EnvironmentFile=-/etc/default/minio +ExecStart=/usr/local/bin/minio server /data +Restart=always +RestartSec=5 +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now minio +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/minio.json b/json/minio.json new file mode 100644 index 000000000..5d307bb32 --- /dev/null +++ b/json/minio.json @@ -0,0 +1,39 @@ +{ + "name": "MinIO", + "slug": "minio", + "categories": [ + 8 + ], + "date_created": "2025-02-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://min.io/docs/minio/linux/index.html", + "website": "https://min.io/", + "logo": "https://raw.githubusercontent.com/minio/minio/refs/heads/master/.github/logo.svg", + "description": "MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads.", + "install_methods": [ + { + "type": "default", + "script": "ct/minio.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 5, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "minioadmin", + "password": null + }, + "notes": [ + { + "text": "Application credentials: `cat ~/minio.creds`", + "type": "info" + } + ] +} From 4b430aac7ca48c9e3a8ba1c11e547341fc98da26 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 11:27:23 +0100 Subject: [PATCH 338/480] Update .app files (#2339) Co-authored-by: GitHub Actions --- ct/headers/minio | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/minio diff --git a/ct/headers/minio b/ct/headers/minio new file mode 100644 index 000000000..04cc48ef7 --- /dev/null +++ b/ct/headers/minio @@ -0,0 +1,6 @@ + __ ____ ________ + / |/ (_)___ / _/ __ \ + / /|_/ / / __ \ / // / / / + / / / / / / / // // /_/ / +/_/ /_/_/_/ /_/___/\____/ + From 880b6e04760a6565d19cb002260899206451b333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 13 Feb 2025 11:57:22 +0100 Subject: [PATCH 339/480] New Script: RustDesk Server (#2326) * add rustdesk server script * remove http from server address --- ct/rustdeskserver.sh | 67 +++++++++++++++++++++++++++++++ install/rustdeskserver-install.sh | 40 ++++++++++++++++++ json/rustdeskserver.json | 39 ++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 ct/rustdeskserver.sh create mode 100644 install/rustdeskserver-install.sh create mode 100644 json/rustdeskserver.json diff --git a/ct/rustdeskserver.sh b/ct/rustdeskserver.sh new file mode 100644 index 000000000..38f2ee3d3 --- /dev/null +++ b/ct/rustdeskserver.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/rustdesk/rustdesk-server + +APP="RustDesk Server" +TAGS="remote-desktop" +var_cpu="1" +var_ram="512" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -x /usr/bin/hbbr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/rustdesk_version.txt)" ]] || [[ ! -f /opt/rustdesk_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop rustdesk-hbbr + systemctl stop rustdesk-hbbs + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + TEMPDIR=$(mktemp -d) + wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbr_${RELEASE}_amd64.deb" -P $TEMPDIR + wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbs_${RELEASE}_amd64.deb" -P $TEMPDIR + wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-utils_${RELEASE}_amd64.deb" -P $TEMPDIR + dpkg -i $TEMPDIR/*.deb &> /dev/null + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Cleaning Up" + rm -rf $TEMPDIR + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/rustdesk_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}${IP}${CL}" diff --git a/install/rustdeskserver-install.sh b/install/rustdeskserver-install.sh new file mode 100644 index 000000000..fc08b2c2b --- /dev/null +++ b/install/rustdeskserver-install.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/rustdesk/rustdesk-server + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Setup RustDesk" +RELEASE=$(curl -s https://api.github.com/repos/rustdesk/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +TEMPDIR=$(mktemp -d) +wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbr_${RELEASE}_amd64.deb" -P $TEMPDIR +wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-hbbs_${RELEASE}_amd64.deb" -P $TEMPDIR +wget -q "https://github.com/rustdesk/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-utils_${RELEASE}_amd64.deb" -P $TEMPDIR +$STD dpkg -i $TEMPDIR/*.deb +echo "${RELEASE}" >/opt/rustdesk.txt +msg_ok "Setup RustDesk" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf $TEMPDIR +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/rustdeskserver.json b/json/rustdeskserver.json new file mode 100644 index 000000000..583d5ba73 --- /dev/null +++ b/json/rustdeskserver.json @@ -0,0 +1,39 @@ +{ + "name": "RustDesk Server", + "slug": "rustdesk-server", + "categories": [ + 21 + ], + "date_created": "2025-02-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": null, + "documentation": "https://rustdesk.com/docs/en/", + "website": "https://rustdesk.com/", + "logo": "https://rustdesk.com/_astro/logo.BKb61-he.svg", + "description": "RustDesk is a full-featured open source remote control alternative for self-hosting and security with minimal configuration.", + "install_methods": [ + { + "type": "default", + "script": "ct/rustdeskserver.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Check documentation on how to configure RustDesk Server. `https://rustdesk.com/docs/en/`", + "type": "info" + } + ] +} \ No newline at end of file From 504cecfe97ebc472f23d2139071a62aa089a2238 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:28:09 +0100 Subject: [PATCH 340/480] Update .app files (#2340) Co-authored-by: GitHub Actions --- ct/headers/rustdeskserver | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/rustdeskserver diff --git a/ct/headers/rustdeskserver b/ct/headers/rustdeskserver new file mode 100644 index 000000000..90d701cab --- /dev/null +++ b/ct/headers/rustdeskserver @@ -0,0 +1,6 @@ + ____ __ ____ __ _____ + / __ \__ _______/ /_/ __ \___ _____/ /__ / ___/___ ______ _____ _____ + / /_/ / / / / ___/ __/ / / / _ \/ ___/ //_/ \__ \/ _ \/ ___/ | / / _ \/ ___/ + / _, _/ /_/ (__ ) /_/ /_/ / __(__ ) ,< ___/ / __/ / | |/ / __/ / +/_/ |_|\__,_/____/\__/_____/\___/____/_/|_| /____/\___/_/ |___/\___/_/ + From 3c82ae04d7f07f13ad75061d0e6ae7423bbd8f85 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:29:34 +0100 Subject: [PATCH 341/480] Update CHANGELOG.md (#2338) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c13b6724e..4cc36e6f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,11 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### ✨ New Scripts + +- New Script: RustDesk Server [@tremor021](https://github.com/tremor021) ([#2326](https://github.com/community-scripts/ProxmoxVE/pull/2326)) +- New Script: MinIO [@MickLesk](https://github.com/MickLesk) ([#2333](https://github.com/community-scripts/ProxmoxVE/pull/2333)) + ### 🚀 Updated Scripts - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) From 8b23cafed91f917af1087cd98d411599e12377ea Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:48:42 +0100 Subject: [PATCH 342/480] Fix script category name text alignment in ScriptAccordion (#2342) --- frontend/src/app/scripts/_components/ScriptAccordion.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/scripts/_components/ScriptAccordion.tsx b/frontend/src/app/scripts/_components/ScriptAccordion.tsx index 3864c4b20..11bd26e66 100644 --- a/frontend/src/app/scripts/_components/ScriptAccordion.tsx +++ b/frontend/src/app/scripts/_components/ScriptAccordion.tsx @@ -72,7 +72,7 @@ export default function ScriptAccordion({ )} >

- {category.name} + {category.name} {category.scripts.length} From b99adb5e1a6404337113900e1ffc50e33a6b107d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:52:42 +0100 Subject: [PATCH 343/480] Update CHANGELOG.md (#2344) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cc36e6f3..c53d22c2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) - Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) +### 🌐 Website + +- Fix script category name text alignment in ScriptAccordion [@BramSuurdje](https://github.com/BramSuurdje) ([#2342](https://github.com/community-scripts/ProxmoxVE/pull/2342)) + ### 🧰 Maintenance - [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319)) From caa4b7d19e8444961cbe65231a424fad6b30778a Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:00:35 +0100 Subject: [PATCH 344/480] [GH] Remove unwanted output from script test workflow (#2337) * Remove unwanted output from workflow * Remove unwanted output from workflow * update .yml so it supports external repos * update .yml so it supports external repos --- .github/workflows/script-test.yml | 58 ++++++++++++------- .../workflows/scripts/app-test/pr-build.func | 18 +++--- .../scripts/app-test/pr-create-lxc.sh | 24 +++----- .../scripts/app-test/pr-install.func | 23 ++++---- 4 files changed, 63 insertions(+), 60 deletions(-) diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml index a9e62f607..1c895f9ae 100644 --- a/.github/workflows/script-test.yml +++ b/.github/workflows/script-test.yml @@ -1,21 +1,25 @@ -name: Run Scripts on PVE Node +name: Run Scripts on PVE Node for testing +permissions: + pull-requests: write on: - pull_request: + pull_request_target: branches: - main paths: - - 'install/*.sh' - - 'ct/*.sh' + - 'install/**.sh' + - 'ct/**.sh' jobs: run-install-script: runs-on: pvenode steps: - - name: Checkout PR branch + - name: Checkout PR branch (supports forks) uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.ref }} - fetch-depth: 0 + repository: ${{ github.event.pull_request.head.repo.full_name }} + fetch-depth: 0 + - name: Add Git safe directory run: | git config --global --add safe.directory /__w/ProxmoxVE/ProxmoxVE @@ -26,13 +30,14 @@ jobs: run: | echo "GH_TOKEN=${GH_TOKEN}" >> $GITHUB_ENV - - name: Get changed files in PR - id: changed-files - run: | - CHANGED_FILES=$(gh pr diff --name-only ${{ github.event.pull_request.number }}) - CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ') - echo "Changed files: $CHANGED_FILES" + - name: Get Changed Files + run: | + CHANGED_FILES=$(gh pr diff ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --name-only) + CHANGED_FILES=$(echo "$CHANGED_FILES" | tr '\n' ' ') + echo "Changed files: $CHANGED_FILES" echo "SCRIPT=$CHANGED_FILES" >> $GITHUB_ENV + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Get scripts id: check-install-script @@ -51,7 +56,7 @@ jobs: ALL_FILES=$(echo "${ALL_FILES[@]}" | xargs) echo "$ALL_FILES" echo "ALL_FILES=$ALL_FILES" >> $GITHUB_ENV - + - name: Run scripts id: run-install continue-on-error: true @@ -59,13 +64,15 @@ jobs: set +e #run for each files in /ct for FILE in ${{ env.ALL_FILES }}; do - echo "Running: $FILE" STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//') + echo "Running Test for: $STRIPPED_NAME" if [[ $FILE =~ ^install/.*-install\.sh$ ]]; then CT_SCRIPT="ct/$STRIPPED_NAME.sh" if [[ ! -f $CT_SCRIPT ]]; then echo "No CT script found for $STRIPPED_NAME" - exit 1 + ERROR_MSG="No CT script found for $FILE" + echo "$ERROR_MSG" > result_$STRIPPED_NAME.log + continue fi echo "Found CT script for $STRIPPED_NAME" chmod +x "$CT_SCRIPT" @@ -74,8 +81,10 @@ jobs: INSTALL_SCRIPT="install/$STRIPPED_NAME-install.sh" if [[ ! -f $INSTALL_SCRIPT ]]; then echo "No install script found for $STRIPPED_NAME" - exit 1 - fi + ERROR_MSG="No install script found for $FILE" + echo "$ERROR_MSG" > result_$STRIPPED_NAME.log + continue + fi echo "Found install script for $STRIPPED_NAME" chmod +x "$INSTALL_SCRIPT" RUNNING_FILE=$FILE @@ -84,13 +93,13 @@ jobs: git checkout origin/main .github/workflows/scripts/app-test/pr-install.func git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh - sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE" chmod +x $RUNNING_FILE chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh chmod +x .github/workflows/scripts/app-test/pr-install.func chmod +x .github/workflows/scripts/app-test/pr-alpine-install.func chmod +x .github/workflows/scripts/app-test/pr-build.func - + sed -i 's|source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)|source .github/workflows/scripts/app-test/pr-build.func|g' "$RUNNING_FILE" + echo "Executing $RUNNING_FILE" ERROR_MSG=$(./$RUNNING_FILE 2>&1 > /dev/null) echo "Finished running $FILE" if [ -n "$ERROR_MSG" ]; then @@ -110,8 +119,8 @@ jobs: pct stop $container_id pct destroy $container_id fi - done - + done + - name: Post error comments run: | ERROR="false" @@ -128,12 +137,17 @@ jobs: echo "Posting error message for $FILE" echo ${CLEANED_ERROR_MSG} gh pr comment ${{ github.event.pull_request.number }} \ + --repo ${{ github.repository }} \ --body ":warning: The script _**$FILE**_ failed with the following message:
${CLEANED_ERROR_MSG}
" + ERROR="true" fi done echo "ERROR=$ERROR" >> $GITHUB_ENV + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Fail if error - if: ${{ env.ERROR }} == 'true' + if: ${{ env.ERROR == 'true' }} run: exit 1 diff --git a/.github/workflows/scripts/app-test/pr-build.func b/.github/workflows/scripts/app-test/pr-build.func index 5706dbbb0..1a2dde75e 100644 --- a/.github/workflows/scripts/app-test/pr-build.func +++ b/.github/workflows/scripts/app-test/pr-build.func @@ -1,12 +1,11 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 community-scripts ORG -# Author: michelroegl-brunner +# Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE variables() { - NSAPP=$(echo ${APP,,} | tr -d ' ') - var_install="${NSAPP}-install" - + NSAPP=$(echo ${APP,,} | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces. + var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP. } NEXTID=$(pvesh get /cluster/nextid) @@ -16,7 +15,7 @@ header_info(){ } base_settings() { - + # Default Settings CT_TYPE="1" DISK_SIZE="4" CORE_COUNT="1" @@ -40,7 +39,7 @@ base_settings() { SSH_AUTHORIZED_KEY="" TAGS="community-script;" - + # Override default settings with variables from ct script CT_TYPE=${var_unprivileged:-$CT_TYPE} DISK_SIZE=${var_disk:-$DISK_SIZE} CORE_COUNT=${var_cpu:-$CORE_COUNT} @@ -48,6 +47,7 @@ base_settings() { VERB=${var_verbose:-$VERBOSE} TAGS="${TAGS}${var_tags:-}" + # Since these 2 are only defined outside of default_settings function, we add a temporary fallback. TODO: To align everything, we should add these as constant variables (e.g. OSTYPE and OSVERSION), but that would currently require updating the default_settings function for all existing scripts if [ -z "$var_os" ]; then var_os="debian" fi @@ -112,10 +112,9 @@ error_handler() { SCRIPT_NAME=$(basename "$0") local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" echo -e "\n$error_message" - exit "$error_message" + exit 100 } - msg_info() { local msg="$1" echo -ne "${msg}\n" @@ -136,7 +135,8 @@ start(){ } build_container() { - + # if [ "$VERB" == "yes" ]; then set -x; fi + if [ "$CT_TYPE" == "1" ]; then FEATURES="keyctl=1,nesting=1" else diff --git a/.github/workflows/scripts/app-test/pr-create-lxc.sh b/.github/workflows/scripts/app-test/pr-create-lxc.sh index 3dd792b17..6ca899cf4 100644 --- a/.github/workflows/scripts/app-test/pr-create-lxc.sh +++ b/.github/workflows/scripts/app-test/pr-create-lxc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 community-scripts ORG -# Author: michelroegl-brunner +# Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE color() { @@ -11,7 +11,6 @@ catch_errors() { trap 'error_handler $LINENO "$BASH_COMMAND"' ERR } - error_handler() { local exit_code="$?" local line_number="$1" @@ -68,6 +67,7 @@ function select_storage() { *) false || { msg_error "Invalid storage class."; exit 201; };; esac + # This Queries all storage locations local -a MENU while read -r line; do local TAG=$(echo $line | awk '{print $1}') @@ -81,6 +81,7 @@ function select_storage() { MENU+=("$TAG" "$ITEM" "OFF") done < <(pvesm status -content $CONTENT | awk 'NR>1') + # Select storage location if [ $((${#MENU[@]}/3)) -eq 1 ]; then printf ${MENU[0]} else @@ -103,17 +104,12 @@ if pct status $CTID &>/dev/null; then exit 206 fi - TEMPLATE_STORAGE=$(select_storage template) || exit -msg_ok "Using $TEMPLATE_STORAGE for Template Storage." - CONTAINER_STORAGE=$(select_storage container) || exit -msg_ok "Using $CONTAINER_STORAGE for Container Storage." -msg_info "Updating LXC Template List" pveam update >/dev/null -msg_ok "Updated LXC Template List" + TEMPLATE_SEARCH=${PCT_OSTYPE}-${PCT_OSVERSION:-} mapfile -t TEMPLATES < <(pveam available -section system | sed -n "s/.*\($TEMPLATE_SEARCH.*\)/\1/p" | sort -t - -k 2 -V) @@ -124,35 +120,29 @@ TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE" if ! pveam list "$TEMPLATE_STORAGE" | grep -q "$TEMPLATE"; then [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH" - msg_info "Downloading LXC Template" pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null || { msg_error "A problem occurred while downloading the LXC template."; exit 208; } - msg_ok "Downloaded LXC Template" fi grep -q "root:100000:65536" /etc/subuid || echo "root:100000:65536" >> /etc/subuid grep -q "root:100000:65536" /etc/subgid || echo "root:100000:65536" >> /etc/subgid - PCT_OPTIONS=(${PCT_OPTIONS[@]:-${DEFAULT_PCT_OPTIONS[@]}}) [[ " ${PCT_OPTIONS[@]} " =~ " -rootfs " ]] || PCT_OPTIONS+=(-rootfs "$CONTAINER_STORAGE:${PCT_DISK_SIZE:-8}") -echo "${PCT_OPTIONS[@]}" - -msg_info "Creating LXC Container" if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then [[ -f "$TEMPLATE_PATH" ]] && rm -f "$TEMPLATE_PATH" - msg_ok "Template integrity check completed" + pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null || { msg_error "A problem occurred while re-downloading the LXC template."; exit 208; } - msg_ok "Re-downloaded LXC Template" + if ! pct create "$CTID" "${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE}" "${PCT_OPTIONS[@]}" &>/dev/null; then msg_error "A problem occurred while trying to create container after re-downloading template." exit 200 fi fi -msg_ok "LXC Container $CTID was successfully created." + diff --git a/.github/workflows/scripts/app-test/pr-install.func b/.github/workflows/scripts/app-test/pr-install.func index 60e202d58..03e82335e 100644 --- a/.github/workflows/scripts/app-test/pr-install.func +++ b/.github/workflows/scripts/app-test/pr-install.func @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 community-scripts ORG -# Author: michelroegl-brunner +# Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE color() { @@ -11,13 +11,14 @@ catch_errors() { trap 'error_handler $LINENO "$BASH_COMMAND"' ERR } + error_handler() { local line_number="$1" local command="$2" SCRIPT_NAME=$(basename "$0") local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" echo -e "\n$error_message" - exit "$error_message" + exit 200 } verb_ip6() { STD="" @@ -39,9 +40,11 @@ msg_error() { local msg="$1" echo -e "${msg}\n" } - RETRY_NUM=10 - RETRY_EVERY=3 + +RETRY_NUM=10 +RETRY_EVERY=3 setting_up_container() { + sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen locale_line=$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print $1}' | head -n 1) echo "LANG=${locale_line}" >/etc/default/locale @@ -54,7 +57,6 @@ setting_up_container() { if [ "$(hostname -I)" != "" ]; then break fi - echo 1>&2 -en "No Network! " sleep $RETRY_EVERY done if [ "$(hostname -I)" = "" ]; then @@ -64,8 +66,6 @@ setting_up_container() { fi rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED systemctl disable -q --now systemd-networkd-wait-online.service - msg_ok "Set up Container OS" - msg_ok "Network Connected: $(hostname -I)" } network_check() { @@ -75,11 +75,10 @@ network_check() { } update_os() { - msg_info "Updating Container OS" - apt-get update - apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade - rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED - msg_ok "Updated Container OS" + export DEBIAN_FRONTEND=noninteractive + apt-get update >/dev/null 2>&1 + apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade >/dev/null 2>&1 + rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED } motd_ssh() { From da8c40dca8b4797f2eb2cfb27fc1e0c816e24f35 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 13:50:16 +0100 Subject: [PATCH 345/480] Update script-test.yml (#2347) * Update script-test.yml * Update script-test.yml --- .github/workflows/script-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml index 1c895f9ae..3428cfce7 100644 --- a/.github/workflows/script-test.yml +++ b/.github/workflows/script-test.yml @@ -124,7 +124,7 @@ jobs: - name: Post error comments run: | ERROR="false" - SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line" + SEARCH_LINE=".github/workflows/scripts/app-test/pr-build.func: line 253:" for FILE in ${{ env.ALL_FILES }}; do STRIPPED_NAME=$(basename "$FILE" | sed 's/-install//' | sed 's/\.sh$//') if [[ ! -f result_$STRIPPED_NAME.log ]]; then From aaa6ae879ba0877fa1b96ae43dde5de35a520ab7 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 14:04:43 +0100 Subject: [PATCH 346/480] Update CHANGELOG.md (#2345) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c53d22c2a..670ef9613 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance +- [gh] Remove unwanted output from script test workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2337](https://github.com/community-scripts/ProxmoxVE/pull/2337)) - [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319)) ## 2025-02-12 From 6f131933b79966384dd35b1d334fb389d6bccdac Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 14:40:49 +0100 Subject: [PATCH 347/480] [core] cleanup (remove base_settings & unneeded comments) (#2351) --- .github/CONTRIBUTOR_GUIDE/ct/AppName.md | 5 ----- .github/CONTRIBUTOR_GUIDE/ct/AppName.sh | 4 ---- ct/2fauth.sh | 4 ---- ct/actualbudget.sh | 4 ---- ct/adguard.sh | 4 ---- ct/adventurelog.sh | 4 ---- ct/agentdvr.sh | 4 ---- ct/alpine-docker.sh | 4 ---- ct/alpine-grafana.sh | 4 ---- ct/alpine-it-tools.sh | 4 ---- ct/alpine-nextcloud.sh | 6 +----- ct/alpine-vaultwarden.sh | 4 ---- ct/alpine-zigbee2mqtt.sh | 4 ---- ct/alpine.sh | 4 ---- ct/apache-cassandra.sh | 4 ---- ct/apache-couchdb.sh | 4 ---- ct/apache-guacamole.sh | 4 ---- ct/apache-tika.sh | 4 ---- ct/apt-cacher-ng.sh | 4 ---- ct/archivebox.sh | 4 ---- ct/aria2.sh | 4 ---- ct/audiobookshelf.sh | 4 ---- ct/authentik.sh | 4 ---- ct/autobrr.sh | 4 ---- ct/baikal.sh | 4 ---- ct/barcode-buddy.sh | 4 ---- ct/bazarr.sh | 6 +----- ct/beszel.sh | 4 ---- ct/blocky.sh | 6 +----- ct/bookstack.sh | 4 ---- ct/bunkerweb.sh | 6 +----- ct/caddy.sh | 4 ---- ct/calibre-web.sh | 4 ---- ct/casaos.sh | 4 ---- ct/changedetection.sh | 4 ---- ct/channels.sh | 4 ---- ct/cloudflared.sh | 4 ---- ct/cockpit.sh | 4 ---- ct/commafeed.sh | 4 ---- ct/cosmos.sh | 4 ---- ct/crafty-controller.sh | 4 ---- ct/cronicle.sh | 4 ---- ct/daemonsync.sh | 4 ---- ct/dashy.sh | 4 ---- ct/debian.sh | 4 ---- ct/deconz.sh | 4 ---- ct/deluge.sh | 4 ---- ct/docker.sh | 4 ---- ct/dockge.sh | 4 ---- ct/dotnetaspwebapi.sh | 4 ---- ct/elementsynapse.sh | 6 +----- ct/emby.sh | 4 ---- ct/emqx.sh | 4 ---- ct/ersatztv.sh | 4 ---- ct/esphome.sh | 4 ---- ct/evcc.sh | 4 ---- ct/fenrus.sh | 4 ---- ct/fhem.sh | 4 ---- ct/firefly.sh | 4 ---- ct/flaresolverr.sh | 4 ---- ct/flowiseai.sh | 4 ---- ct/forgejo.sh | 4 ---- ct/freshrss.sh | 4 ---- ct/frigate.sh | 4 ---- ct/ghost.sh | 4 ---- ct/gitea.sh | 4 ---- ct/glance.sh | 4 ---- ct/glpi.sh | 4 ---- ct/go2rtc.sh | 4 ---- ct/gokapi.sh | 4 ---- ct/gotify.sh | 4 ---- ct/grafana.sh | 4 ---- ct/grist.sh | 4 ---- ct/grocy.sh | 4 ---- ct/headscale.sh | 4 ---- ct/heimdall-dashboard.sh | 4 ---- ct/hivemq.sh | 4 ---- ct/hoarder.sh | 4 ---- ct/homarr.sh | 4 ---- ct/homeassistant-core.sh | 4 ---- ct/homeassistant.sh | 4 ---- ct/homebox.sh | 4 ---- ct/homebridge.sh | 4 ---- ct/homepage.sh | 4 ---- ct/homer.sh | 4 ---- ct/hyperhdr.sh | 4 ---- ct/hyperion.sh | 4 ---- ct/influxdb.sh | 4 ---- ct/inspircd.sh | 4 ---- ct/iobroker.sh | 4 ---- ct/iventoy.sh | 4 ---- ct/jackett.sh | 4 ---- ct/jellyfin.sh | 4 ---- ct/jellyseerr.sh | 6 +----- ct/jenkins.sh | 4 ---- ct/kavita.sh | 4 ---- ct/keycloak.sh | 4 ---- ct/kimai.sh | 4 ---- ct/koillection.sh | 4 ---- ct/komga.sh | 4 ---- ct/komodo.sh | 4 ---- ct/kubo.sh | 4 ---- ct/lazylibrarian.sh | 4 ---- ct/lidarr.sh | 4 ---- ct/linkwarden.sh | 4 ---- ct/listmonk.sh | 4 ---- ct/lldap.sh | 4 ---- ct/lubelogger.sh | 4 ---- ct/mafl.sh | 4 ---- ct/magicmirror.sh | 4 ---- ct/mariadb.sh | 4 ---- ct/matterbridge.sh | 4 ---- ct/mattermost.sh | 4 ---- ct/mediamtx.sh | 4 ---- ct/medusa.sh | 4 ---- ct/memos.sh | 4 ---- ct/meshcentral.sh | 4 ---- ct/metube.sh | 4 ---- ct/minio.sh | 4 ---- ct/mongodb.sh | 4 ---- ct/monica.sh | 4 ---- ct/motioneye.sh | 4 ---- ct/mqtt.sh | 4 ---- ct/mylar3.sh | 4 ---- ct/myspeed.sh | 4 ---- ct/mysql.sh | 4 ---- ct/n8n.sh | 4 ---- ct/navidrome.sh | 4 ---- ct/neo4j.sh | 4 ---- ct/netbox.sh | 4 ---- ct/nextcloudpi.sh | 4 ---- ct/nextpvr.sh | 4 ---- ct/nginxproxymanager.sh | 6 +----- ct/nocodb.sh | 4 ---- ct/node-red.sh | 4 ---- ct/notifiarr.sh | 4 ---- ct/ntfy.sh | 4 ---- ct/nzbget.sh | 4 ---- ct/octoprint.sh | 4 ---- ct/ollama.sh | 4 ---- ct/omada.sh | 4 ---- ct/ombi.sh | 4 ---- ct/omv.sh | 4 ---- ct/onedev.sh | 4 ---- ct/opengist.sh | 4 ---- ct/openhab.sh | 4 ---- ct/openobserve.sh | 4 ---- ct/openwebui.sh | 4 ---- ct/overseerr.sh | 4 ---- ct/owncast.sh | 4 ---- ct/pairdrop.sh | 4 ---- ct/paperless-ai.sh | 4 ---- ct/paperless-ngx.sh | 4 ---- ct/part-db.sh | 4 ---- ct/paymenter.sh | 4 ---- ct/peanut.sh | 4 ---- ct/petio.sh | 4 ---- ct/photoprism.sh | 4 ---- ct/phpipam.sh | 4 ---- ct/pialert.sh | 4 ---- ct/pihole.sh | 4 ---- ct/pingvin.sh | 4 ---- ct/plex.sh | 4 ---- ct/pocketbase.sh | 4 ---- ct/pocketid.sh | 4 ---- ct/podman-homeassistant.sh | 6 +----- ct/podman.sh | 4 ---- ct/postgresql.sh | 4 ---- ct/privatebin.sh | 4 ---- ct/projectsend.sh | 4 ---- ct/prometheus-alertmanager.sh | 4 ---- ct/prometheus-paperless-ngx-exporter.sh | 4 ---- ct/prometheus-pve-exporter.sh | 4 ---- ct/prometheus.sh | 4 ---- ct/prowlarr.sh | 4 ---- ct/proxmox-datacenter-manager.sh | 4 ---- ct/ps5-mqtt.sh | 4 ---- ct/qbittorrent.sh | 4 ---- ct/rabbitmq.sh | 4 ---- ct/radarr.sh | 4 ---- ct/radicale.sh | 4 ---- ct/rdtclient.sh | 4 ---- ct/readarr.sh | 4 ---- ct/readeck.sh | 4 ---- ct/recyclarr.sh | 4 ---- ct/redis.sh | 4 ---- ct/rtsptoweb.sh | 4 ---- ct/runtipi.sh | 4 ---- ct/sabnzbd.sh | 4 ---- ct/searxng.sh | 4 ---- ct/semaphore.sh | 4 ---- ct/sftpgo.sh | 4 ---- ct/shinobi.sh | 4 ---- ct/smokeping.sh | 4 ---- ct/snipeit.sh | 4 ---- ct/sonarr.sh | 4 ---- ct/spoolman.sh | 4 ---- ct/sqlserver2022.sh | 4 ---- ct/stirling-pdf.sh | 4 ---- ct/syncthing.sh | 4 ---- ct/tandoor.sh | 4 ---- ct/tasmoadmin.sh | 4 ---- ct/tautulli.sh | 4 ---- ct/tdarr.sh | 4 ---- ct/technitiumdns.sh | 4 ---- ct/the-lounge.sh | 4 ---- ct/threadfin.sh | 4 ---- ct/tianji.sh | 4 ---- ct/traccar.sh | 4 ---- ct/traefik.sh | 4 ---- ct/transmission.sh | 4 ---- ct/trilium.sh | 4 ---- ct/typesense.sh | 4 ---- ct/ubuntu.sh | 4 ---- ct/umami.sh | 4 ---- ct/umbrel.sh | 4 ---- ct/unbound.sh | 4 ---- ct/unifi.sh | 4 ---- ct/unmanic.sh | 4 ---- ct/uptimekuma.sh | 4 ---- ct/urbackupserver.sh | 4 ---- ct/vaultwarden.sh | 4 ---- ct/vikunja.sh | 4 ---- ct/wallos.sh | 4 ---- ct/wastebin.sh | 4 ---- ct/watchyourlan.sh | 4 ---- ct/wavelog.sh | 4 ---- ct/whisparr.sh | 4 ---- ct/whoogle.sh | 4 ---- ct/wikijs.sh | 4 ---- ct/wireguard.sh | 4 ---- ct/wordpress.sh | 6 +----- ct/yunohost.sh | 4 ---- ct/zabbix.sh | 4 ---- ct/zammad.sh | 4 ---- ct/zerotier-one.sh | 4 ---- ct/zigbee2mqtt.sh | 4 ---- ct/zipline.sh | 4 ---- ct/zitadel.sh | 4 ---- ct/zoraxy.sh | 4 ---- ct/zwave-js-ui.sh | 4 ---- 241 files changed, 9 insertions(+), 974 deletions(-) diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.md b/.github/CONTRIBUTOR_GUIDE/ct/AppName.md index d1540d80e..89421da2d 100644 --- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.md +++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.md @@ -119,18 +119,13 @@ var_unprivileged="1" ## 2.2 **📋 App output & base settings** ```bash -# App Output & Base Settings header_info "$APP" -base_settings ``` - - `header_info`: Generates ASCII header for APP -- `base_settings`: Allows overwriting variable values ## 2.3 **🛠 Core functions** ```bash -# Core variables color catch_errors diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh index 72a70d3a1..ff8d03c27 100644 --- a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh +++ b/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh @@ -23,11 +23,7 @@ var_version="[VERSION]" var_unprivileged="[UNPRIVILEGED]" # 1 = unprivileged container, 0 = privileged container -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/2fauth.sh b/ct/2fauth.sh index f808f05ec..5204ee236 100644 --- a/ct/2fauth.sh +++ b/ct/2fauth.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index dd59b8bd9..349eda5bb 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/adguard.sh b/ct/adguard.sh index d4d94f593..9be9c8b1c 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index 463762f48..4a71e6c26 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index 2e5cda1b7..1054ba68b 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index 42799442e..74b4dae84 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index 4c7b7d3f8..97c906623 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine-it-tools.sh b/ct/alpine-it-tools.sh index 3b83b6ee0..e91b9dfa8 100644 --- a/ct/alpine-it-tools.sh +++ b/ct/alpine-it-tools.sh @@ -15,11 +15,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index 74e54bb90..6fc613e6c 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/alpine-vaultwarden.sh b/ct/alpine-vaultwarden.sh index bd701d4ef..6a2656c30 100644 --- a/ct/alpine-vaultwarden.sh +++ b/ct/alpine-vaultwarden.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index 9f251b110..7d97ae642 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/alpine.sh b/ct/alpine.sh index 2cde457c5..6bec650f1 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -14,11 +14,7 @@ var_os="alpine" var_version="3.21" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh index 8e1270291..188686c03 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -16,11 +16,7 @@ var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/apache-couchdb.sh b/ct/apache-couchdb.sh index 9df39570f..c922dc530 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/apache-guacamole.sh b/ct/apache-guacamole.sh index c4a86f007..dfa6b1704 100644 --- a/ct/apache-guacamole.sh +++ b/ct/apache-guacamole.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/apache-tika.sh b/ct/apache-tika.sh index 6227de95c..56adfc168 100755 --- a/ct/apache-tika.sh +++ b/ct/apache-tika.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index d8b85dd63..95559b0dd 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 1fd6f0980..7b7638e73 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/aria2.sh b/ct/aria2.sh index 366d7279a..897a7b92e 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/audiobookshelf.sh b/ct/audiobookshelf.sh index ccb1cac6b..57c32cc33 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/authentik.sh b/ct/authentik.sh index a73ff4532..684cde65e 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/autobrr.sh b/ct/autobrr.sh index 383f81df7..6d08279b6 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/baikal.sh b/ct/baikal.sh index 531577fa9..c09750be8 100644 --- a/ct/baikal.sh +++ b/ct/baikal.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/barcode-buddy.sh b/ct/barcode-buddy.sh index 1a9abf1d9..ed3ebf888 100644 --- a/ct/barcode-buddy.sh +++ b/ct/barcode-buddy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/bazarr.sh b/ct/bazarr.sh index 698344b2d..b0ab7547c 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/beszel.sh b/ct/beszel.sh index b0b87e1d8..48dd371ab 100644 --- a/ct/beszel.sh +++ b/ct/beszel.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/blocky.sh b/ct/blocky.sh index dd1309acc..338ceb7d0 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/bookstack.sh b/ct/bookstack.sh index 6b5f5c873..9e9c04946 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index d539cc5fe..f1de768b2 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/caddy.sh b/ct/caddy.sh index 96246a79c..cc261b415 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 3980f37ac..b5bcf3626 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/casaos.sh b/ct/casaos.sh index 76e226a0b..467b25f49 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/changedetection.sh b/ct/changedetection.sh index a6075cf24..21e4b2cb9 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/channels.sh b/ct/channels.sh index d7f23d366..0e34160a4 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/cloudflared.sh b/ct/cloudflared.sh index 16f8d6254..0648e23b7 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/cockpit.sh b/ct/cockpit.sh index 266d36219..edeea83e7 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/commafeed.sh b/ct/commafeed.sh index 4d5d29947..4a6402d48 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/cosmos.sh b/ct/cosmos.sh index 92fd6474b..7d4fe151f 100644 --- a/ct/cosmos.sh +++ b/ct/cosmos.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh index 211ab9f6a..58b32d24e 100644 --- a/ct/crafty-controller.sh +++ b/ct/crafty-controller.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/cronicle.sh b/ct/cronicle.sh index 7d2768314..ec68db946 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/daemonsync.sh b/ct/daemonsync.sh index 1d9b31375..2b66df116 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/dashy.sh b/ct/dashy.sh index 9f9c77aa6..520d4b1bd 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/debian.sh b/ct/debian.sh index fd5dae410..e6273ab6f 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/deconz.sh b/ct/deconz.sh index e8233a595..96206ca4f 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/deluge.sh b/ct/deluge.sh index 1f80e8db1..cd4d0cd30 100644 --- a/ct/deluge.sh +++ b/ct/deluge.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/docker.sh b/ct/docker.sh index 5af992b23..0f787723d 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/dockge.sh b/ct/dockge.sh index 8f5fd9d2e..65175facc 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/dotnetaspwebapi.sh b/ct/dotnetaspwebapi.sh index faf86d296..1a9e3928d 100644 --- a/ct/dotnetaspwebapi.sh +++ b/ct/dotnetaspwebapi.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="24.04" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/elementsynapse.sh b/ct/elementsynapse.sh index 376cac8fe..35745246a 100644 --- a/ct/elementsynapse.sh +++ b/ct/elementsynapse.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/emby.sh b/ct/emby.sh index 364fb1663..cbc9148d6 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/emqx.sh b/ct/emqx.sh index 348f0b7ef..b7496c774 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index c77cc7a79..f042cbca0 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/esphome.sh b/ct/esphome.sh index 6b381486c..80b02db3d 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/evcc.sh b/ct/evcc.sh index bf1070edb..6badc3026 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/fenrus.sh b/ct/fenrus.sh index f3ae35507..6f8ff787f 100644 --- a/ct/fenrus.sh +++ b/ct/fenrus.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/fhem.sh b/ct/fhem.sh index 922cad73b..ccb79bb24 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/firefly.sh b/ct/firefly.sh index 542f84ec3..4f1642491 100644 --- a/ct/firefly.sh +++ b/ct/firefly.sh @@ -16,11 +16,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index d212c00f7..85a5d2b7f 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index ab26b1139..5240e7b0f 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 3e9223ba0..7503c28a7 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/freshrss.sh b/ct/freshrss.sh index 020c45b63..6d2672f99 100644 --- a/ct/freshrss.sh +++ b/ct/freshrss.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/frigate.sh b/ct/frigate.sh index 40e14e1db..d2168f068 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="11" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ghost.sh b/ct/ghost.sh index 29f748c09..8187c15fe 100644 --- a/ct/ghost.sh +++ b/ct/ghost.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/gitea.sh b/ct/gitea.sh index ed7fbca44..6f3d0bc32 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/glance.sh b/ct/glance.sh index 7ef2b4587..fb665ca0c 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/glpi.sh b/ct/glpi.sh index a485061b3..9680dc6a2 100644 --- a/ct/glpi.sh +++ b/ct/glpi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/go2rtc.sh b/ct/go2rtc.sh index e577388f5..2f597004f 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/gokapi.sh b/ct/gokapi.sh index 1a86e0ce0..3259a1738 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/gotify.sh b/ct/gotify.sh index a31273f41..747cd8ead 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/grafana.sh b/ct/grafana.sh index 7547f14fa..b1fe394e4 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/grist.sh b/ct/grist.sh index ad1c53a94..35696f19b 100644 --- a/ct/grist.sh +++ b/ct/grist.sh @@ -12,11 +12,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/grocy.sh b/ct/grocy.sh index f6bfc8ecb..ad4fe7efa 100644 --- a/ct/grocy.sh +++ b/ct/grocy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/headscale.sh b/ct/headscale.sh index e63aa6a7e..f10e71d19 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/heimdall-dashboard.sh b/ct/heimdall-dashboard.sh index 4613040d5..d4d16ac45 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/hivemq.sh b/ct/hivemq.sh index fe9aa2ba5..e396a3cab 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/hoarder.sh b/ct/hoarder.sh index d5cf4f086..91be4f32b 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homarr.sh b/ct/homarr.sh index 986763562..f51ea3bf7 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 4e601361e..5230b67b0 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="24.10" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index 1b495905d..073c00a73 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homebox.sh b/ct/homebox.sh index d719007f5..c8260c648 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homebridge.sh b/ct/homebridge.sh index 3253b79e4..85e60fdc0 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homepage.sh b/ct/homepage.sh index e2c74b367..e4cc719aa 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/homer.sh b/ct/homer.sh index 1445fceea..5aecfeccc 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/hyperhdr.sh b/ct/hyperhdr.sh index bbdc82d39..ed558539b 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/hyperion.sh b/ct/hyperion.sh index 28b310b5f..e41a59bc6 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/influxdb.sh b/ct/influxdb.sh index 0824effef..a808c660e 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/inspircd.sh b/ct/inspircd.sh index 749911e5b..f0d8d47b4 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/iobroker.sh b/ct/iobroker.sh index 310f0a29c..432b2e2b4 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/iventoy.sh b/ct/iventoy.sh index 12a434fff..e7bebe75e 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/jackett.sh b/ct/jackett.sh index 0c1c91717..0d42fcba5 100644 --- a/ct/jackett.sh +++ b/ct/jackett.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index 0e44bcf5f..097a79370 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 66eb632bf..c3447dcb6 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/jenkins.sh b/ct/jenkins.sh index 49e4fcda0..48a8b54f3 100644 --- a/ct/jenkins.sh +++ b/ct/jenkins.sh @@ -16,11 +16,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/kavita.sh b/ct/kavita.sh index 4303d04aa..dfdf9a943 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 668a866b4..243b06307 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/kimai.sh b/ct/kimai.sh index 1ca15fac6..7f5f58ccc 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/koillection.sh b/ct/koillection.sh index a78e2b2cd..b041d2cdb 100644 --- a/ct/koillection.sh +++ b/ct/koillection.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/komga.sh b/ct/komga.sh index f8e47c29b..b0bac4fd1 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/komodo.sh b/ct/komodo.sh index 03e6729bc..db6dfdaf9 100644 --- a/ct/komodo.sh +++ b/ct/komodo.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/kubo.sh b/ct/kubo.sh index 7a73b2682..3157f21bf 100644 --- a/ct/kubo.sh +++ b/ct/kubo.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/lazylibrarian.sh b/ct/lazylibrarian.sh index 37f7e71f8..56eb0c0b5 100644 --- a/ct/lazylibrarian.sh +++ b/ct/lazylibrarian.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/lidarr.sh b/ct/lidarr.sh index 809e5a191..d3ec14de9 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 311f28e44..0c2de1f6b 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -14,11 +14,7 @@ var_disk="12" var_os="ubuntu" var_version="22.04" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 55e5c4f5d..33cb3a19b 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/lldap.sh b/ct/lldap.sh index 60c97157d..31c6ad430 100644 --- a/ct/lldap.sh +++ b/ct/lldap.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 82bd7238e..c0d99a184 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mafl.sh b/ct/mafl.sh index a8e5777d5..59ce855c2 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index 7504eb207..0a7e25ed1 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 729d21365..3eeee19d6 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/matterbridge.sh b/ct/matterbridge.sh index 9647cb7cf..3ef3643f9 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mattermost.sh b/ct/mattermost.sh index 9b9a32c25..5b5b15766 100644 --- a/ct/mattermost.sh +++ b/ct/mattermost.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="24.04" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mediamtx.sh b/ct/mediamtx.sh index 67cb8f9ae..d115bece2 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -16,11 +16,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/medusa.sh b/ct/medusa.sh index 19aae9b55..a1f01d84b 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/memos.sh b/ct/memos.sh index ed1b30ed8..7dd0fbf5e 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 6ae005d41..66dfe07a4 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/metube.sh b/ct/metube.sh index 8aa488afc..b991493b1 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/minio.sh b/ct/minio.sh index e06492e13..6e1f47034 100644 --- a/ct/minio.sh +++ b/ct/minio.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mongodb.sh b/ct/mongodb.sh index 27e4bd0a1..848132100 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/monica.sh b/ct/monica.sh index cb9785875..03fa732ad 100644 --- a/ct/monica.sh +++ b/ct/monica.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/motioneye.sh b/ct/motioneye.sh index 9436f759d..e1fd0ae34 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mqtt.sh b/ct/mqtt.sh index a577519db..31af3eced 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mylar3.sh b/ct/mylar3.sh index 9c7636eb0..9e9808166 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/myspeed.sh b/ct/myspeed.sh index e52d123af..e82090d02 100644 --- a/ct/myspeed.sh +++ b/ct/myspeed.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/mysql.sh b/ct/mysql.sh index 9c5968f4c..6c911ee85 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/n8n.sh b/ct/n8n.sh index 27c15c605..0cfbe3892 100644 --- a/ct/n8n.sh +++ b/ct/n8n.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/navidrome.sh b/ct/navidrome.sh index be9e335b9..e4a60c06e 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/neo4j.sh b/ct/neo4j.sh index 0debb55d1..a938c8e10 100644 --- a/ct/neo4j.sh +++ b/ct/neo4j.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/netbox.sh b/ct/netbox.sh index 38f54a837..34fc374e4 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index d22fcaa30..e4f7c7463 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/nextpvr.sh b/ct/nextpvr.sh index 97938904a..37b9fcd30 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -16,11 +16,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index ed3dcdecb..db81a5a3b 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/nocodb.sh b/ct/nocodb.sh index a72c91a6a..392e4ac23 100644 --- a/ct/nocodb.sh +++ b/ct/nocodb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/node-red.sh b/ct/node-red.sh index c2bce1860..b4f5bec4f 100644 --- a/ct/node-red.sh +++ b/ct/node-red.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index 4bd8f9a0d..e224af688 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ntfy.sh b/ct/ntfy.sh index 4ac3bae0d..a8590162c 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/nzbget.sh b/ct/nzbget.sh index 509105132..e26df9971 100644 --- a/ct/nzbget.sh +++ b/ct/nzbget.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/octoprint.sh b/ct/octoprint.sh index be0b71a2a..c0ee95fdc 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ollama.sh b/ct/ollama.sh index 43cebc9c6..7b2646377 100644 --- a/ct/ollama.sh +++ b/ct/ollama.sh @@ -14,11 +14,7 @@ var_disk="24" var_os="ubuntu" var_version="22.04" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/omada.sh b/ct/omada.sh index b9b46f86a..0b8c2820e 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ombi.sh b/ct/ombi.sh index 610c7dfab..c3eed37b3 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/omv.sh b/ct/omv.sh index a05706fd2..692ad7f01 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/onedev.sh b/ct/onedev.sh index 16e1b1946..c9a8c4bf2 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/opengist.sh b/ct/opengist.sh index fca88afc2..70ae799c2 100644 --- a/ct/opengist.sh +++ b/ct/opengist.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/openhab.sh b/ct/openhab.sh index 35c407f8c..a33f56e59 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/openobserve.sh b/ct/openobserve.sh index 598182b67..b19c5650e 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/openwebui.sh b/ct/openwebui.sh index 47eab4abc..f8461b698 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/overseerr.sh b/ct/overseerr.sh index dff260466..b54bd18dc 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/owncast.sh b/ct/owncast.sh index 6442af66e..9cf4a7208 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pairdrop.sh b/ct/pairdrop.sh index 00548dd36..4b3c0cdbf 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh index 269b76f9f..351cfdcbe 100644 --- a/ct/paperless-ai.sh +++ b/ct/paperless-ai.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index 63aead01f..61e977e7d 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/part-db.sh b/ct/part-db.sh index dcb31c76f..85cbd53d2 100644 --- a/ct/part-db.sh +++ b/ct/part-db.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/paymenter.sh b/ct/paymenter.sh index 659b57b53..f8f7c4726 100644 --- a/ct/paymenter.sh +++ b/ct/paymenter.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/peanut.sh b/ct/peanut.sh index 40c21b300..e26c014a3 100644 --- a/ct/peanut.sh +++ b/ct/peanut.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/petio.sh b/ct/petio.sh index c9d9b2d92..ab2fe23a1 100644 --- a/ct/petio.sh +++ b/ct/petio.sh @@ -14,11 +14,7 @@ var_disk="4" var_os="ubuntu" var_version="20.04" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/photoprism.sh b/ct/photoprism.sh index f6f79c935..4088ef9d4 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/phpipam.sh b/ct/phpipam.sh index cf9905fde..18d7140df 100644 --- a/ct/phpipam.sh +++ b/ct/phpipam.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pialert.sh b/ct/pialert.sh index 9569f5643..ccd5768bc 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pihole.sh b/ct/pihole.sh index 4071efe7e..dcaa91e88 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pingvin.sh b/ct/pingvin.sh index 425240dc0..e143dafff 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/plex.sh b/ct/plex.sh index 004a93e39..f45c8a472 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 8aab765af..0765798d9 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/pocketid.sh b/ct/pocketid.sh index ce639a9f1..5d4424105 100755 --- a/ct/pocketid.sh +++ b/ct/pocketid.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/podman-homeassistant.sh b/ct/podman-homeassistant.sh index f0e43c2ae..3c76605a8 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -14,11 +14,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/podman.sh b/ct/podman.sh index ef36a6824..5284c9831 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/postgresql.sh b/ct/postgresql.sh index 287bfab13..93e8af61f 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/privatebin.sh b/ct/privatebin.sh index 8304e4189..c3fc3fe1e 100644 --- a/ct/privatebin.sh +++ b/ct/privatebin.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/projectsend.sh b/ct/projectsend.sh index f2e845662..ee558a764 100644 --- a/ct/projectsend.sh +++ b/ct/projectsend.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index adcd77a46..b57fe3ec4 100755 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/prometheus-paperless-ngx-exporter.sh b/ct/prometheus-paperless-ngx-exporter.sh index 22ffec882..38010d006 100755 --- a/ct/prometheus-paperless-ngx-exporter.sh +++ b/ct/prometheus-paperless-ngx-exporter.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/prometheus-pve-exporter.sh b/ct/prometheus-pve-exporter.sh index 008b5606f..8b4a1afc0 100644 --- a/ct/prometheus-pve-exporter.sh +++ b/ct/prometheus-pve-exporter.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/prometheus.sh b/ct/prometheus.sh index 7e1a78582..46ff096f7 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 04c8a4ec5..305d181a0 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh index 621a54067..c627f97bc 100644 --- a/ct/proxmox-datacenter-manager.sh +++ b/ct/proxmox-datacenter-manager.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ps5-mqtt.sh b/ct/ps5-mqtt.sh index 98e751e4f..678dd52fc 100644 --- a/ct/ps5-mqtt.sh +++ b/ct/ps5-mqtt.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index 790a57167..fde513331 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/rabbitmq.sh b/ct/rabbitmq.sh index c47d56da8..c9fb95a70 100644 --- a/ct/rabbitmq.sh +++ b/ct/rabbitmq.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/radarr.sh b/ct/radarr.sh index c6ee25078..30cb5f463 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/radicale.sh b/ct/radicale.sh index b6962a302..7334f85a4 100644 --- a/ct/radicale.sh +++ b/ct/radicale.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index 3b26ad7c0..42ca9d194 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/readarr.sh b/ct/readarr.sh index 2c0bf458d..cc78e5a8b 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/readeck.sh b/ct/readeck.sh index a34294edd..104880a2f 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index 388ab627e..71324aaa2 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/redis.sh b/ct/redis.sh index 13b29e590..a9d7d8f97 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/rtsptoweb.sh b/ct/rtsptoweb.sh index c09182a38..6f4f697e6 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/runtipi.sh b/ct/runtipi.sh index 3beb2ea2d..0160d1724 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 9c8489836..5becdb468 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/searxng.sh b/ct/searxng.sh index 72fd50724..4ce9f5571 100644 --- a/ct/searxng.sh +++ b/ct/searxng.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/semaphore.sh b/ct/semaphore.sh index 12d32a0a1..ac1b115ba 100644 --- a/ct/semaphore.sh +++ b/ct/semaphore.sh @@ -16,11 +16,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/sftpgo.sh b/ct/sftpgo.sh index 6a14392c1..665fa3c16 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/shinobi.sh b/ct/shinobi.sh index 4da07b586..969a600fb 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/smokeping.sh b/ct/smokeping.sh index 8bd4a2421..f829ce5d4 100644 --- a/ct/smokeping.sh +++ b/ct/smokeping.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 025088047..01fe1255b 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 606fdb30b..7758ca16c 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/spoolman.sh b/ct/spoolman.sh index f98dc1f24..733fc9648 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/sqlserver2022.sh b/ct/sqlserver2022.sh index a303e79de..955f730fe 100644 --- a/ct/sqlserver2022.sh +++ b/ct/sqlserver2022.sh @@ -15,11 +15,7 @@ var_os="ubuntu" var_version="22.04" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/stirling-pdf.sh b/ct/stirling-pdf.sh index c212c18c6..b1f95a903 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/syncthing.sh b/ct/syncthing.sh index 455e262f1..aab130d5b 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 9a3dfe896..78c074b93 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/tasmoadmin.sh b/ct/tasmoadmin.sh index 500d67d63..a195573b1 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/tautulli.sh b/ct/tautulli.sh index 0675f5bbb..e137772f2 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/tdarr.sh b/ct/tdarr.sh index 6360f0014..0b05b8d8a 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/technitiumdns.sh b/ct/technitiumdns.sh index 8f6877082..db4dba575 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/the-lounge.sh b/ct/the-lounge.sh index 28d426aed..958fbedbe 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/threadfin.sh b/ct/threadfin.sh index 83c5ed795..674eb5c0c 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/tianji.sh b/ct/tianji.sh index 903edf5d8..142ce815b 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/traccar.sh b/ct/traccar.sh index 5487784ae..c1cefcb5e 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/traefik.sh b/ct/traefik.sh index 39786b8e5..e074d94c2 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/transmission.sh b/ct/transmission.sh index 78d5b1b4a..5a37c31c7 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/trilium.sh b/ct/trilium.sh index 3add52192..a12ebe52c 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/typesense.sh b/ct/typesense.sh index f4e5aa9bb..ce5a103ba 100644 --- a/ct/typesense.sh +++ b/ct/typesense.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index d3aac33f5..14ef9a86c 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -15,11 +15,7 @@ var_disk="2" var_os="ubuntu" var_version="24.04" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/umami.sh b/ct/umami.sh index 6b898cae1..439159984 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/umbrel.sh b/ct/umbrel.sh index 5dc0a7918..af4fa16bf 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/unbound.sh b/ct/unbound.sh index b0a0d1ecc..b368c8267 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/unifi.sh b/ct/unifi.sh index 816377d13..4f472da42 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/unmanic.sh b/ct/unmanic.sh index bce7450a0..ea9a9067b 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/uptimekuma.sh b/ct/uptimekuma.sh index 0efe730fd..a979a62ef 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/urbackupserver.sh b/ct/urbackupserver.sh index 1e47d3f0b..61bd5c776 100644 --- a/ct/urbackupserver.sh +++ b/ct/urbackupserver.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index 4d12d0dac..d06a18599 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/vikunja.sh b/ct/vikunja.sh index e805f8b23..02288269e 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wallos.sh b/ct/wallos.sh index 9931f1f70..de8749792 100644 --- a/ct/wallos.sh +++ b/ct/wallos.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wastebin.sh b/ct/wastebin.sh index 88de3fb7b..6a03b160c 100644 --- a/ct/wastebin.sh +++ b/ct/wastebin.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/watchyourlan.sh b/ct/watchyourlan.sh index de29154eb..3372f307d 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wavelog.sh b/ct/wavelog.sh index 0dc24ae24..212726ffa 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/whisparr.sh b/ct/whisparr.sh index 53e2fff89..c4d2ebeca 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/whoogle.sh b/ct/whoogle.sh index 1010b6fc0..7ed8c6a08 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wikijs.sh b/ct/wikijs.sh index d387b2d95..cf5b0e60b 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wireguard.sh b/ct/wireguard.sh index 946a909ea..78e65e87f 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/wordpress.sh b/ct/wordpress.sh index 8ff69de17..e509027ec 100644 --- a/ct/wordpress.sh +++ b/ct/wordpress.sh @@ -14,11 +14,7 @@ var_ram="2048" var_os="debian" var_version="12" -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/yunohost.sh b/ct/yunohost.sh index 36319202a..f306d5a77 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 14cfc3579..1efca4c33 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zammad.sh b/ct/zammad.sh index cdb4ab8b1..8ac6ed446 100644 --- a/ct/zammad.sh +++ b/ct/zammad.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zerotier-one.sh b/ct/zerotier-one.sh index c5ac8e8fb..a67b9e07e 100644 --- a/ct/zerotier-one.sh +++ b/ct/zerotier-one.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 27abbfb00..118524948 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zipline.sh b/ct/zipline.sh index 7031bf8e9..eaf676cb1 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zitadel.sh b/ct/zitadel.sh index f4fc322fa..868f93b5b 100644 --- a/ct/zitadel.sh +++ b/ct/zitadel.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zoraxy.sh b/ct/zoraxy.sh index 2f30ebc23..61941dd14 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors diff --git a/ct/zwave-js-ui.sh b/ct/zwave-js-ui.sh index ffea06b2a..46db9a22c 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -15,11 +15,7 @@ var_os="debian" var_version="12" var_unprivileged="0" -# App Output & Base Settings header_info "$APP" -base_settings - -# Core variables color catch_errors From 1d42ce62823dfb00f9ec85b3c2ecbcd7c2c9c432 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 14:42:27 +0100 Subject: [PATCH 348/480] Update CHANGELOG.md (#2355) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 670ef9613..918ad9c12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- [core] cleanup (remove base_settings & unneeded comments) [@MickLesk](https://github.com/MickLesk) ([#2351](https://github.com/community-scripts/ProxmoxVE/pull/2351)) - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) - Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) From 879989b5b6a1142ed24815f12994cb630e7f6448 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:03:18 +0100 Subject: [PATCH 349/480] Update build.func (#2358) --- misc/build.func | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/build.func b/misc/build.func index 86f01b2f4..a8659dfd6 100644 --- a/misc/build.func +++ b/misc/build.func @@ -916,6 +916,7 @@ install_script() { header_info echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" METHOD="advanced" + base_settings advanced_settings break ;; From 221bbdeff33dbf5204eeead156fac49902d9c8c9 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:03:51 +0100 Subject: [PATCH 350/480] Update pr-build.func (#2354) * Update pr-build.func * Update pr-build.func --- .github/workflows/scripts/app-test/pr-build.func | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/app-test/pr-build.func b/.github/workflows/scripts/app-test/pr-build.func index 1a2dde75e..edc041ddd 100644 --- a/.github/workflows/scripts/app-test/pr-build.func +++ b/.github/workflows/scripts/app-test/pr-build.func @@ -131,6 +131,7 @@ msg_error() { echo -e "${msg}\n" } start(){ + base_settings return } @@ -232,7 +233,6 @@ EOF fi fi fi - # This starts the container and executes -install.sh msg_info "Starting LXC Container" pct start "$CTID" @@ -255,5 +255,6 @@ EOF' } description(){ + IP=$(pct exec "$CTID" ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1) return } From 928946cd4c8f470e7e236050bf33489aeda64a1b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:04:08 +0100 Subject: [PATCH 351/480] Update CHANGELOG.md (#2359) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 918ad9c12..427812585 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance +- Update build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2358](https://github.com/community-scripts/ProxmoxVE/pull/2358)) - [gh] Remove unwanted output from script test workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2337](https://github.com/community-scripts/ProxmoxVE/pull/2337)) - [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319)) From ca5e4559df76f4c99ce2d6e8c89df9af22d2b3b4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:05:32 +0100 Subject: [PATCH 352/480] Update CHANGELOG.md (#2360) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 427812585..918ad9c12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,6 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance -- Update build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2358](https://github.com/community-scripts/ProxmoxVE/pull/2358)) - [gh] Remove unwanted output from script test workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2337](https://github.com/community-scripts/ProxmoxVE/pull/2337)) - [gh] Workflow to change date on new json files [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2319](https://github.com/community-scripts/ProxmoxVE/pull/2319)) From 431fbd471f8072e90318d5a34f187c9299aa2a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:05:39 +0100 Subject: [PATCH 353/480] make script updateable (#2352) --- json/zoraxy.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/zoraxy.json b/json/zoraxy.json index 272526a56..ec1914eb3 100644 --- a/json/zoraxy.json +++ b/json/zoraxy.json @@ -6,7 +6,7 @@ ], "date_created": "2024-05-02", "type": "ct", - "updateable": false, + "updateable": true, "privileged": false, "interface_port": 8000, "documentation": null, From cfa6b2813143757bf6cdd0e58fd489fbb834ba93 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:07:25 +0100 Subject: [PATCH 354/480] Update CHANGELOG.md (#2361) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 918ad9c12..67203ef2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Fix: Zoraxy - now shows application as updateable on the website [@tremor021](https://github.com/tremor021) ([#2352](https://github.com/community-scripts/ProxmoxVE/pull/2352)) - Fix script category name text alignment in ScriptAccordion [@BramSuurdje](https://github.com/BramSuurdje) ([#2342](https://github.com/community-scripts/ProxmoxVE/pull/2342)) ### 🧰 Maintenance From 01d761ce71b17429432d720e985623a3b8cc30df Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:23:29 +0100 Subject: [PATCH 355/480] New Script: Nx Witness (#2350) * New Script: NX Witness * Update nxwitness.json --- ct/nxwitness.sh | 70 ++++++++++++++++++++++++++++++++++++ install/nxwitness-install.sh | 49 +++++++++++++++++++++++++ json/nxwitness.json | 34 ++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 ct/nxwitness.sh create mode 100644 install/nxwitness-install.sh create mode 100644 json/nxwitness.json diff --git a/ct/nxwitness.sh b/ct/nxwitness.sh new file mode 100644 index 000000000..35fb307a8 --- /dev/null +++ b/ct/nxwitness.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nxvms.com/download/releases/linux + +APP="NxWitness" +var_tags="nvr" +var_cpu="2" +var_ram="2048" +var_disk="8" +var_os="ubuntu" +var_version="24.04" +var_unprivileged="0" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/networkoptix-mediaserver.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + BASE_URL="https://updates.networkoptix.com/default/index.html" + RELEASE=$(curl -s "$BASE_URL" | grep -oP '(?<=)[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(?=)' | head -n 1) + DETAIL_PAGE=$(curl -s "$BASE_URL#note_$RELEASE") + DOWNLOAD_URL=$(echo "$DETAIL_PAGE" | grep -oP "https://updates.networkoptix.com/default/$RELEASE/linux/nxwitness-server-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-linux_x64\.deb" | head -n 1) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop networkoptix-root-tool networkoptix-mediaserver + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + cd /tmp + wget -q "$DOWNLOAD_URL" -O "nxwitness-server-$RELEASE-linux_x64.deb" + export DEBIAN_FRONTEND=noninteractive + export DEBCONF_NOWARNINGS=yes + dpkg -i nxwitness-server-$RELEASE-linux_x64.deb >/dev/null 2>&1 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start networkoptix-root-tool networkoptix-mediaserver + msg_ok "Started ${APP}" + + msg_info "Cleaning up" + rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb + msg_ok "Cleaned" + + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:7001/${CL}" diff --git a/install/nxwitness-install.sh b/install/nxwitness-install.sh new file mode 100644 index 000000000..625e81fb0 --- /dev/null +++ b/install/nxwitness-install.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nxvms.com/download/releases/linux + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + make \ + net-tools \ + ffmpeg \ + cifs-utils \ + libtalloc2 \ + libwbclient0 \ + keyutils +msg_ok "Installed Dependencies" + +msg_info "Setup Nx Witness" +cd /tmp +BASE_URL="https://updates.networkoptix.com/default/index.html" +RELEASE=$(curl -s "$BASE_URL" | grep -oP '(?<=)[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(?=)' | head -n 1) +DETAIL_PAGE=$(curl -s "$BASE_URL#note_$RELEASE") +DOWNLOAD_URL=$(echo "$DETAIL_PAGE" | grep -oP "https://updates.networkoptix.com/default/$RELEASE/linux/nxwitness-server-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-linux_x64\.deb" | head -n 1) +wget -q "$DOWNLOAD_URL" -O "nxwitness-server-$RELEASE-linux_x64.deb" +export DEBIAN_FRONTEND=noninteractive +$STD dpkg -i nxwitness-server-$RELEASE-linux_x64.deb +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup Nx Witness" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f /tmp/nxwitness-server-$RELEASE-linux_x64.deb +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/nxwitness.json b/json/nxwitness.json new file mode 100644 index 000000000..b9b587f29 --- /dev/null +++ b/json/nxwitness.json @@ -0,0 +1,34 @@ +{ + "name": "Nx Witness", + "slug": "nxwitness", + "categories": [ + 15 + ], + "date_created": "2025-02-13", + "type": "ct", + "updateable": true, + "privileged": true, + "interface_port": 7001, + "documentation": "https://support.networkoptix.com/hc/en-us/articles/360006863413-Access-the-Nx-Witness-User-Manual", + "website": "https://www.networkoptix.com/nx-witness", + "logo": "https://www.networkoptix.com/hs-fs/hubfs/raw_assets/public/NetworkOptix-NB/images/logo.png?width=300&height=75&name=logo.png", + "description": "Nx Witness is a professional video management system (VMS) designed for IP cameras and surveillance systems. It provides real-time video streaming, recording, and remote access with an intuitive user interface. The software supports AI-based video analytics, integrates with third-party security systems, and offers advanced search and event management features. It is used for security monitoring, business intelligence, and large-scale surveillance deployments.", + "install_methods": [ + { + "type": "default", + "script": "ct/nxwitness.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 8, + "os": "ubuntu", + "version": "24.04" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 2b61b184f2eb916b012c8b8f2b4fb05173bad436 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:26:23 +0100 Subject: [PATCH 356/480] Update .app files (#2364) Co-authored-by: GitHub Actions --- ct/headers/nxwitness | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/nxwitness diff --git a/ct/headers/nxwitness b/ct/headers/nxwitness new file mode 100644 index 000000000..4fb94f8f5 --- /dev/null +++ b/ct/headers/nxwitness @@ -0,0 +1,6 @@ + _ __ _ ___ __ + / | / / _| | / (_) /_____ ___ __________ + / |/ / |/_/ | /| / / / __/ __ \/ _ \/ ___/ ___/ + / /| /> < | |/ |/ / / /_/ / / / __(__ |__ ) +/_/ |_/_/|_| |__/|__/_/\__/_/ /_/\___/____/____/ + From ddccd1dd3f12b8a1c3ca01e011fb5b9a8e5ed73c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 15:27:03 +0100 Subject: [PATCH 357/480] Update CHANGELOG.md (#2365) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67203ef2b..7600b4585 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Nx Witness [@MickLesk](https://github.com/MickLesk) ([#2350](https://github.com/community-scripts/ProxmoxVE/pull/2350)) - New Script: RustDesk Server [@tremor021](https://github.com/tremor021) ([#2326](https://github.com/community-scripts/ProxmoxVE/pull/2326)) - New Script: MinIO [@MickLesk](https://github.com/MickLesk) ([#2333](https://github.com/community-scripts/ProxmoxVE/pull/2333)) From fe93224d7798cc819c2bb3f78f7f335260e82d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 13 Feb 2025 16:03:13 +0100 Subject: [PATCH 358/480] increase RAM and hdd resources (#2367) --- ct/kometa.sh | 6 +++--- json/kometa.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ct/kometa.sh b/ct/kometa.sh index 11650d7ef..8e2166a30 100644 --- a/ct/kometa.sh +++ b/ct/kometa.sh @@ -8,9 +8,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Kometa" TAGS="media;streaming" -var_cpu="1" -var_ram="1024" -var_disk="4" +var_cpu="2" +var_ram="4096" +var_disk="8" var_os="debian" var_version="12" var_unprivileged="1" diff --git a/json/kometa.json b/json/kometa.json index 3183a7ea7..804036fd9 100644 --- a/json/kometa.json +++ b/json/kometa.json @@ -18,9 +18,9 @@ "type": "default", "script": "ct/kometa.sh", "resources": { - "cpu": 1, - "ram": 1024, - "hdd": 4, + "cpu": 2, + "ram": 4096, + "hdd": 8, "os": "debian", "version": "12" } From a8a729fcda17f9a388f5ab26abfa1689f1dfbf6b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 16:04:18 +0100 Subject: [PATCH 359/480] Update CHANGELOG.md (#2368) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7600b4585..fee326aed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Kometa - Increase RAM and HDD resources [@tremor021](https://github.com/tremor021) ([#2367](https://github.com/community-scripts/ProxmoxVE/pull/2367)) - [core] cleanup (remove base_settings & unneeded comments) [@MickLesk](https://github.com/MickLesk) ([#2351](https://github.com/community-scripts/ProxmoxVE/pull/2351)) - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) - Fix HomeAsisstant LXC: Use the latest versions of runlike with --use-volume-id [@genehand](https://github.com/genehand) ([#2325](https://github.com/community-scripts/ProxmoxVE/pull/2325)) From 1cc2a90b08f648c7bd38d43c6f8009174e29f341 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:29:46 +0100 Subject: [PATCH 360/480] Re-Add: Pf2eTools (#2336) * Re-Add: Pf2eTools * Update pf2etools.sh * indention * Update pf2etools.sh --- ct/pf2etools.sh | 69 ++++++++++++++++++++++++++++++++++ install/pf2etools-install.sh | 72 ++++++++++++++++++++++++++++++++++++ json/pf2etools.json | 34 +++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 ct/pf2etools.sh create mode 100644 install/pf2etools-install.sh create mode 100644 json/pf2etools.json diff --git a/ct/pf2etools.sh b/ct/pf2etools.sh new file mode 100644 index 000000000..364561e0c --- /dev/null +++ b/ct/pf2etools.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pf2etools.com/ + +APP="Pf2eTools" +var_tags="wiki" +var_cpu="1" +var_ram="512" +var_disk="6" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d "/opt/${APP}" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then + msg_info "Updating System" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated System" + + msg_info "Updating ${APP}" + cd /opt + wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + rm -rf "/opt/${APP}" + mv ${APP}-${RELEASE:1} /opt/${APP} + cd /opt/Pf2eTools + npm install &>/dev/null + npm run build &>/dev/null + chown -R www-data: "/opt/${APP}" + chmod -R 755 "/opt/${APP}" + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP}" + + msg_info "Cleaning Up" + rm -rf /opt/${RELEASE}.zip + msg_ok "Cleanup Completed" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}${CL}" diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh new file mode 100644 index 000000000..3636d022e --- /dev/null +++ b/install/pf2etools-install.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pf2etools.com/ + +# Import Functions und Setup +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo \ + apache2 \ + gpg \ + ca-certificates \ + git +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Setup Pf2eTools" +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" +unzip -q "${RELEASE}.zip" +mv "Pf2eTools-${RELEASE:1}" /opt/Pf2eTools +cd /opt/Pf2eTools +$STD npm install +$STD npm run build +echo "${RELEASE}" >/opt/Pf2eTools_version.txt +msg_ok "Set up Pf2eTools" + +msg_info "Creating Service" +cat <> /etc/apache2/apache2.conf + + SetHandler server-status + Order deny,allow + Allow from all + +EOF +rm -rf /var/www/html +ln -s "/opt/Pf2eTools" /var/www/html +chown -R www-data: "/opt/Pf2eTools" +chmod -R 755 "/opt/Pf2eTools" +msg_ok "Created Service" + +msg_info "Cleaning up" +rm -rf /opt/${RELEASE}.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize \ No newline at end of file diff --git a/json/pf2etools.json b/json/pf2etools.json new file mode 100644 index 000000000..df9ddb09a --- /dev/null +++ b/json/pf2etools.json @@ -0,0 +1,34 @@ +{ + "name": "Pf2eTools", + "slug": "Pf2eTools", + "categories": [ + 24 + ], + "date_created": "2025-02-13", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://github.com/Pf2eToolsOrg/Pf2eTools/wiki", + "website": "https://pf2etools.com/", + "logo": "https://raw.githubusercontent.com/Pf2eToolsOrg/Pf2eTools/refs/heads/dev/android-chrome-192x192.png", + "description": "Pf2eTools is an open-source website aiming to provide tools and information for Pathfinder 2nd Edition players and gamemasters. It's built using basic web technologies to ensure wide compatibility, and utilises client-side caching for speed, efficiency, and offline access.", + "install_methods": [ + { + "type": "default", + "script": "ct/pf2etools.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 6, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 8373e26f1ece0d16d63f56b9626a68c15e4b5d95 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:39:14 +0100 Subject: [PATCH 361/480] Update .app files (#2372) Co-authored-by: GitHub Actions --- ct/headers/pf2etools | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/pf2etools diff --git a/ct/headers/pf2etools b/ct/headers/pf2etools new file mode 100644 index 000000000..b6f7cb106 --- /dev/null +++ b/ct/headers/pf2etools @@ -0,0 +1,6 @@ + ____ _______ ______ __ + / __ \/ __/__ \ ___/_ __/___ ____ / /____ + / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/ + / ____/ __// __// __/ / / /_/ / /_/ / (__ ) +/_/ /_/ /____/\___/_/ \____/\____/_/____/ + From af01193bc2faa85c90fcb9f98d3d9dc56251d1cd Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:59:47 +0100 Subject: [PATCH 362/480] [core] cleanup (remove # App Default Values) (#2356) --- ct/2fauth.sh | 1 - ct/actualbudget.sh | 1 - ct/adguard.sh | 1 - ct/adventurelog.sh | 1 - ct/agentdvr.sh | 1 - ct/alpine-docker.sh | 2 +- ct/alpine-grafana.sh | 2 +- ct/alpine-it-tools.sh | 3 +-- ct/alpine-nextcloud.sh | 2 +- ct/alpine-vaultwarden.sh | 2 +- ct/alpine-zigbee2mqtt.sh | 2 +- ct/alpine.sh | 2 +- ct/apache-cassandra.sh | 1 - ct/apache-couchdb.sh | 1 - ct/apache-guacamole.sh | 3 +-- ct/apache-tika.sh | 1 - ct/apt-cacher-ng.sh | 1 - ct/archivebox.sh | 1 - ct/aria2.sh | 1 - ct/audiobookshelf.sh | 1 - ct/authentik.sh | 5 ++--- ct/autobrr.sh | 1 - ct/baikal.sh | 1 - ct/barcode-buddy.sh | 1 - ct/bazarr.sh | 1 - ct/beszel.sh | 1 - ct/blocky.sh | 1 - ct/bookstack.sh | 1 - ct/bunkerweb.sh | 1 - ct/caddy.sh | 1 - ct/calibre-web.sh | 1 - ct/casaos.sh | 1 - ct/changedetection.sh | 1 - ct/channels.sh | 1 - ct/checkmk.sh | 2 -- ct/cloudflared.sh | 1 - ct/cockpit.sh | 1 - ct/commafeed.sh | 1 - ct/cosmos.sh | 1 - ct/crafty-controller.sh | 3 +-- ct/cronicle.sh | 1 - ct/cross-seed.sh | 2 -- ct/daemonsync.sh | 1 - ct/dashy.sh | 1 - ct/debian.sh | 1 - ct/deconz.sh | 1 - ct/deluge.sh | 1 - ct/docker.sh | 1 - ct/dockge.sh | 1 - ct/dotnetaspwebapi.sh | 1 - ct/duplicati.sh | 2 -- ct/elementsynapse.sh | 1 - ct/emby.sh | 1 - ct/emqx.sh | 1 - ct/ersatztv.sh | 1 - ct/esphome.sh | 1 - ct/evcc.sh | 1 - ct/excalidraw.sh | 2 -- ct/fenrus.sh | 1 - ct/fhem.sh | 1 - ct/firefly.sh | 4 +--- ct/flaresolverr.sh | 1 - ct/flowiseai.sh | 1 - ct/forgejo.sh | 1 - ct/freshrss.sh | 1 - ct/frigate.sh | 1 - ct/ghost.sh | 1 - ct/gitea.sh | 1 - ct/glance.sh | 1 - ct/glpi.sh | 3 +-- ct/go2rtc.sh | 1 - ct/gokapi.sh | 1 - ct/gotify.sh | 1 - ct/grafana.sh | 1 - ct/graylog.sh | 2 -- ct/grist.sh | 1 - ct/grocy.sh | 1 - ct/headscale.sh | 1 - ct/heimdall-dashboard.sh | 1 - ct/hivemq.sh | 1 - ct/hoarder.sh | 1 - ct/homarr.sh | 1 - ct/homeassistant-core.sh | 1 - ct/homeassistant.sh | 1 - ct/homebox.sh | 1 - ct/homebridge.sh | 1 - ct/homepage.sh | 1 - ct/homer.sh | 1 - ct/hyperhdr.sh | 1 - ct/hyperion.sh | 1 - ct/influxdb.sh | 1 - ct/inspircd.sh | 1 - ct/iobroker.sh | 1 - ct/iventoy.sh | 1 - ct/jackett.sh | 1 - ct/jellyfin.sh | 1 - ct/jellyseerr.sh | 1 - ct/jenkins.sh | 4 +--- ct/kavita.sh | 1 - ct/keycloak.sh | 1 - ct/kimai.sh | 1 - ct/koillection.sh | 1 - ct/kometa.sh | 3 --- ct/komga.sh | 1 - ct/komodo.sh | 1 - ct/kubo.sh | 1 - ct/lazylibrarian.sh | 1 - ct/lidarr.sh | 1 - ct/linkwarden.sh | 1 - ct/listmonk.sh | 1 - ct/lldap.sh | 1 - ct/lubelogger.sh | 1 - ct/mafl.sh | 1 - ct/magicmirror.sh | 1 - ct/mariadb.sh | 1 - ct/matterbridge.sh | 1 - ct/mattermost.sh | 1 - ct/mediamtx.sh | 2 -- ct/medusa.sh | 1 - ct/memos.sh | 1 - ct/meshcentral.sh | 1 - ct/metube.sh | 1 - ct/minio.sh | 1 - ct/mongodb.sh | 1 - ct/monica.sh | 1 - ct/motioneye.sh | 1 - ct/mqtt.sh | 1 - ct/mylar3.sh | 1 - ct/myspeed.sh | 1 - ct/mysql.sh | 1 - ct/n8n.sh | 1 - ct/navidrome.sh | 1 - ct/neo4j.sh | 1 - ct/netbox.sh | 1 - ct/nextcloudpi.sh | 1 - ct/nextpvr.sh | 1 - ct/nginxproxymanager.sh | 1 - ct/nocodb.sh | 1 - ct/node-red.sh | 1 - ct/nodebb.sh | 2 +- ct/notifiarr.sh | 1 - ct/ntfy.sh | 1 - ct/nzbget.sh | 1 - ct/octoprint.sh | 1 - ct/ollama.sh | 1 - ct/omada.sh | 1 - ct/ombi.sh | 1 - ct/omv.sh | 1 - ct/onedev.sh | 1 - ct/opengist.sh | 1 - ct/openhab.sh | 1 - ct/openobserve.sh | 1 - ct/openwebui.sh | 1 - ct/overseerr.sh | 1 - ct/owncast.sh | 1 - ct/pairdrop.sh | 1 - ct/paperless-ai.sh | 1 - ct/paperless-ngx.sh | 1 - ct/part-db.sh | 1 - ct/paymenter.sh | 3 +-- ct/peanut.sh | 1 - ct/petio.sh | 1 - ct/photoprism.sh | 1 - ct/phpipam.sh | 1 - ct/pialert.sh | 1 - ct/pihole.sh | 1 - ct/pingvin.sh | 1 - ct/plex.sh | 1 - ct/pocketbase.sh | 1 - ct/pocketid.sh | 1 - ct/podman-homeassistant.sh | 2 +- ct/podman.sh | 1 - ct/postgresql.sh | 1 - ct/privatebin.sh | 3 +-- ct/projectsend.sh | 1 - ct/prometheus-alertmanager.sh | 1 - ct/prometheus-paperless-ngx-exporter.sh | 1 - ct/prometheus-pve-exporter.sh | 1 - ct/prometheus.sh | 1 - ct/prowlarr.sh | 1 - ct/proxmox-backup-server.sh | 18 ++---------------- ct/proxmox-datacenter-manager.sh | 1 - ct/proxmox-mail-gateway.sh | 2 -- ct/ps5-mqtt.sh | 1 - ct/qbittorrent.sh | 1 - ct/rabbitmq.sh | 1 - ct/radarr.sh | 1 - ct/radicale.sh | 1 - ct/rdtclient.sh | 1 - ct/readarr.sh | 1 - ct/readeck.sh | 1 - ct/recyclarr.sh | 1 - ct/redis.sh | 1 - ct/rtsptoweb.sh | 1 - ct/runtipi.sh | 1 - ct/rustdeskserver.sh | 2 -- ct/sabnzbd.sh | 1 - ct/searxng.sh | 1 - ct/seelf.sh | 2 -- ct/semaphore.sh | 4 +--- ct/sftpgo.sh | 1 - ct/shinobi.sh | 1 - ct/silverbullet.sh | 5 ----- ct/smokeping.sh | 1 - ct/snipeit.sh | 1 - ct/sonarr.sh | 1 - ct/spoolman.sh | 1 - ct/sqlserver2022.sh | 1 - ct/stirling-pdf.sh | 1 - ct/suwayomiserver.sh | 2 -- ct/syncthing.sh | 1 - ct/tandoor.sh | 1 - ct/tasmoadmin.sh | 1 - ct/tasmocompiler.sh | 2 -- ct/tautulli.sh | 1 - ct/tdarr.sh | 1 - ct/technitiumdns.sh | 1 - ct/teddycloud.sh | 5 ----- ct/the-lounge.sh | 1 - ct/threadfin.sh | 1 - ct/tianji.sh | 1 - ct/traccar.sh | 1 - ct/traefik.sh | 1 - ct/transmission.sh | 1 - ct/trilium.sh | 1 - ct/typesense.sh | 1 - ct/ubuntu.sh | 1 - ct/umami.sh | 1 - ct/umbrel.sh | 1 - ct/unbound.sh | 1 - ct/unifi.sh | 1 - ct/unmanic.sh | 1 - ct/uptimekuma.sh | 1 - ct/urbackupserver.sh | 3 +-- ct/vaultwarden.sh | 1 - ct/vikunja.sh | 1 - ct/wallos.sh | 1 - ct/wastebin.sh | 1 - ct/watcharr.sh | 2 -- ct/watchyourlan.sh | 1 - ct/wavelog.sh | 1 - ct/whisparr.sh | 1 - ct/whoogle.sh | 1 - ct/wikijs.sh | 1 - ct/wireguard.sh | 1 - ct/yunohost.sh | 1 - ct/zabbix.sh | 1 - ct/zammad.sh | 1 - ct/zerotier-one.sh | 2 +- ct/zigbee2mqtt.sh | 1 - ct/zipline.sh | 1 - ct/zitadel.sh | 1 - ct/zoraxy.sh | 1 - ct/zwave-js-ui.sh | 1 - 254 files changed, 23 insertions(+), 306 deletions(-) diff --git a/ct/2fauth.sh b/ct/2fauth.sh index 5204ee236..61f94c496 100644 --- a/ct/2fauth.sh +++ b/ct/2fauth.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.2fauth.app/ -# App Default Values APP="2FAuth" var_tags="2fa;authenticator" var_cpu="1" diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 349eda5bb..cad8e92d4 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://actualbudget.org/ -# App Default Values APP="Actual Budget" var_tags="finance" var_cpu="2" diff --git a/ct/adguard.sh b/ct/adguard.sh index 9be9c8b1c..800e10566 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://adguard.com/ -# App Default Values APP="Adguard" var_tags="adblock" var_cpu="1" diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index 4a71e6c26..57ebda107 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://adventurelog.app/ -# App Default Values APP="AdventureLog" var_tags="traveling" var_disk="7" diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index 1054ba68b..2e7892af5 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.ispyconnect.com/ -# App Default Values APP="AgentDVR" var_tags="dvr" var_cpu="2" diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index 74b4dae84..079429fba 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.docker.com/ -# App Default Values APP="Alpine-Docker" var_tags="docker;alpine" var_cpu="1" diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index 97c906623..945970a5c 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://grafana.com/ -# App Default Values APP="Alpine-Grafana" var_tags="alpine;monitoring" var_cpu="1" diff --git a/ct/alpine-it-tools.sh b/ct/alpine-it-tools.sh index e91b9dfa8..d24f267f6 100644 --- a/ct/alpine-it-tools.sh +++ b/ct/alpine-it-tools.sh @@ -3,9 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts ORG # Author: nicedevil007 (NiceDevil) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://it-tools.tech/ - -# App Default Values APP="Alpine-IT-Tools" var_tags="alpine;development" var_cpu="1" diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index 6fc613e6c..6b80737a7 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nextcloud.com/ -# App Default Values APP="Alpine-Nextcloud" var_tags="alpine;cloud" var_cpu="2" diff --git a/ct/alpine-vaultwarden.sh b/ct/alpine-vaultwarden.sh index 6a2656c30..5b67c1d33 100644 --- a/ct/alpine-vaultwarden.sh +++ b/ct/alpine-vaultwarden.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/dani-garcia/vaultwarden -# App Default Values APP="Alpine-Vaultwarden" var_tags="alpine;vault" var_cpu="1" diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index 7d97ae642..87bea32bd 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.zigbee2mqtt.io/ -# App Default Values APP="Alpine-Zigbee2MQTT" var_tags="alpine;zigbee;mqtt;smarthome" var_disk="0.3" diff --git a/ct/alpine.sh b/ct/alpine.sh index 6bec650f1..d1bf9d9f2 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://alpinelinux.org/ -# App Default Values APP="Alpine" var_tags="os;alpine" var_cpu="1" diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh index 188686c03..ccc17165a 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cassandra.apache.org/_/index.html -# App Default Values APP="Apache-Cassandra" var_tags="database;NoSQL" var_cpu="1" diff --git a/ct/apache-couchdb.sh b/ct/apache-couchdb.sh index c922dc530..fdc6022d9 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://couchdb.apache.org/ -# App Default Values APP="Apache-CouchDB" var_tags="database" var_cpu="2" diff --git a/ct/apache-guacamole.sh b/ct/apache-guacamole.sh index dfa6b1704..8e5e2e796 100644 --- a/ct/apache-guacamole.sh +++ b/ct/apache-guacamole.sh @@ -1,11 +1,10 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: | MIT https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://guacamole.apache.org/ -#App Default Values APP="Apache-Guacamole" var_tags="webserver;remote" var_disk="4" diff --git a/ct/apache-tika.sh b/ct/apache-tika.sh index 56adfc168..98dbf266e 100755 --- a/ct/apache-tika.sh +++ b/ct/apache-tika.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/apache/tika/ -# App Default Values APP="Apache-Tika" var_tags="document" var_cpu="1" diff --git a/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index 95559b0dd..37ba6f51f 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wiki.debian.org/AptCacherNg -# App Default Values APP="Apt-Cacher-NG" var_tags="caching" var_cpu="1" diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 7b7638e73..9e2c0f95e 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://archivebox.io/ -# App Default Values APP="ArchiveBox" var_tags="archive;bookmark" var_cpu="2" diff --git a/ct/aria2.sh b/ct/aria2.sh index 897a7b92e..d899d6072 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://aria2.github.io/ -# App Default Values APP="Aria2" var_tags="download-utility" var_cpu="2" diff --git a/ct/audiobookshelf.sh b/ct/audiobookshelf.sh index 57c32cc33..1295e0b2c 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.audiobookshelf.org/ -# App Default Values APP="audiobookshelf" var_tags="podcast;audiobook" var_cpu="2" diff --git a/ct/authentik.sh b/ct/authentik.sh index 684cde65e..44beaf8e0 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -2,10 +2,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: remz1337 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://goauthentik.io/ -# App Default Values APP="Authentik" var_tags="identity-provider" var_disk="12" diff --git a/ct/autobrr.sh b/ct/autobrr.sh index 6d08279b6..f250a4c9e 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://autobrr.com/ -# App Default Values APP="Autobrr" var_tags="arr;" var_cpu="2" diff --git a/ct/baikal.sh b/ct/baikal.sh index c09750be8..c9bac41e0 100644 --- a/ct/baikal.sh +++ b/ct/baikal.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sabre.io/baikal/ -# App Default Values APP="Baikal" var_tags="Dav" var_cpu="1" diff --git a/ct/barcode-buddy.sh b/ct/barcode-buddy.sh index ed3ebf888..3b6d36e0a 100644 --- a/ct/barcode-buddy.sh +++ b/ct/barcode-buddy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Forceu/barcodebuddy -# App Default Values APP="Barcode-Buddy" var_tags="grocery;household" var_cpu="1" diff --git a/ct/bazarr.sh b/ct/bazarr.sh index b0ab7547c..aec94f837 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bazarr.media/ -# App Default Values APP="Bazarr" var_tags="arr" var_cpu="2" diff --git a/ct/beszel.sh b/ct/beszel.sh index 48dd371ab..c159800be 100644 --- a/ct/beszel.sh +++ b/ct/beszel.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://beszel.dev/ -# App Default Values APP="Beszel" var_tags="monitoring" var_cpu="1" diff --git a/ct/blocky.sh b/ct/blocky.sh index 338ceb7d0..70e9b4722 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://0xerr0r.github.io/blocky/latest/ -# App Default Values APP="Blocky" var_tags="adblock" var_cpu="1" diff --git a/ct/bookstack.sh b/ct/bookstack.sh index 9e9c04946..f61806b1a 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/BookStackApp/BookStack -# App Default Values APP="Bookstack" var_tags="organizer" var_cpu="1" diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index f1de768b2..9912aea2a 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bunkerweb.io/ -# App Default Values APP="BunkerWeb" var_tags="webserver" var_cpu="2" diff --git a/ct/caddy.sh b/ct/caddy.sh index cc261b415..ab6c664e1 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://caddyserver.com/ -# App Default Values APP="Caddy" var_tags="webserver" var_cpu="1" diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index b5bcf3626..a8e202d61 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/janeczku/calibre-web -# App Default Values APP="Calibre-Web" var_tags="eBook" var_cpu="2" diff --git a/ct/casaos.sh b/ct/casaos.sh index 467b25f49..68adb8520 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://casaos.io/ -# App Default Values APP="CasaOS" var_tags="cloud" var_cpu="2" diff --git a/ct/changedetection.sh b/ct/changedetection.sh index 21e4b2cb9..07fc43ead 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://changedetection.io/ -# App Default Values APP="Change Detection" var_tags="monitoring;crawler" var_cpu="2" diff --git a/ct/channels.sh b/ct/channels.sh index 0e34160a4..0c05ed7c5 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://getchannels.com/dvr-server/ -# App Default Values APP="Channels" var_tags="dvr" var_cpu="2" diff --git a/ct/checkmk.sh b/ct/checkmk.sh index 9088ee9b7..086216c34 100644 --- a/ct/checkmk.sh +++ b/ct/checkmk.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/cloudflared.sh b/ct/cloudflared.sh index 0648e23b7..aa88988a8 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.cloudflare.com/ -# App Default Values APP="Cloudflared" var_tags="network;cloudflare" var_cpu="1" diff --git a/ct/cockpit.sh b/ct/cockpit.sh index edeea83e7..6b54d8844 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cockpit-project.org/ -# App Default Values APP="Cockpit" var_tags="monitoring;network" var_cpu="2" diff --git a/ct/commafeed.sh b/ct/commafeed.sh index 4a6402d48..5fc47c8df 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.commafeed.com/#/welcome -# App Default Values APP="CommaFeed" var_tags="rss-reader" var_cpu="2" diff --git a/ct/cosmos.sh b/ct/cosmos.sh index 7d4fe151f..381a50b9d 100644 --- a/ct/cosmos.sh +++ b/ct/cosmos.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://https://cosmos-cloud.io/ -# App Default Values APP="cosmos" var_tags="os,docker" var_cpu="2" diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh index 58b32d24e..336a3d8f2 100644 --- a/ct/crafty-controller.sh +++ b/ct/crafty-controller.sh @@ -3,9 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts # Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gitlab.com/crafty-controller/crafty-4 - -# App Default Values APP="Crafty-Controller" var_tags="gaming" var_cpu="2" diff --git a/ct/cronicle.sh b/ct/cronicle.sh index ec68db946..dcbc3439b 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cronicle.net/ -# App Default Values APP="Cronicle" var_tags="task-scheduler" var_cpu="1" diff --git a/ct/cross-seed.sh b/ct/cross-seed.sh index fa704c025..1cb34a39a 100644 --- a/ct/cross-seed.sh +++ b/ct/cross-seed.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/daemonsync.sh b/ct/daemonsync.sh index 2b66df116..38f2502f7 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://daemonsync.me/ -# App Default Values APP="Daemon Sync" var_tags="sync" var_cpu="1" diff --git a/ct/dashy.sh b/ct/dashy.sh index 520d4b1bd..363bdede7 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://dashy.to/ -# App Default Values APP="Dashy" var_tags="dashboard" var_cpu="2" diff --git a/ct/debian.sh b/ct/debian.sh index e6273ab6f..125c9df12 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.debian.org/ -# App Default Values APP="Debian" var_tags="os" var_cpu="1" diff --git a/ct/deconz.sh b/ct/deconz.sh index 96206ca4f..70bbea020 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.phoscon.de/en/conbee2/software#deconz -# App Default Values APP="deCONZ" var_tags="zigbee" var_cpu="2" diff --git a/ct/deluge.sh b/ct/deluge.sh index cd4d0cd30..ba8177f32 100644 --- a/ct/deluge.sh +++ b/ct/deluge.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.deluge-torrent.org/ -# App Default Values APP="Deluge" var_tags="torrent" var_cpu="2" diff --git a/ct/docker.sh b/ct/docker.sh index 0f787723d..fa08d2b6c 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.docker.com/ -# App Default Values APP="Docker" var_tags="docker" var_cpu="2" diff --git a/ct/dockge.sh b/ct/dockge.sh index 65175facc..cded6c6c1 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://dockge.kuma.pet/ -# App Default Values APP="Dockge" var_tags="docker" var_cpu="2" diff --git a/ct/dotnetaspwebapi.sh b/ct/dotnetaspwebapi.sh index 1a9e3928d..6b0350058 100644 --- a/ct/dotnetaspwebapi.sh +++ b/ct/dotnetaspwebapi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu -# App Default Values APP="Dotnet ASP Web API" var_tags="web" var_cpu="1" diff --git a/ct/duplicati.sh b/ct/duplicati.sh index 628f624a3..845b012b1 100644 --- a/ct/duplicati.sh +++ b/ct/duplicati.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/elementsynapse.sh b/ct/elementsynapse.sh index 35745246a..d1b482be5 100644 --- a/ct/elementsynapse.sh +++ b/ct/elementsynapse.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/element-hq/synapse -# App Default Values APP="Element Synapse" var_tags="server" var_cpu="1" diff --git a/ct/emby.sh b/ct/emby.sh index cbc9148d6..d830c735e 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://emby.media/ -# App Default Values APP="Emby" var_tags="media" var_cpu="2" diff --git a/ct/emqx.sh b/ct/emqx.sh index b7496c774..6481b3a19 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.emqx.com/en -# App Default Values APP="EMQX" var_tags="mqtt" var_cpu="2" diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index f042cbca0..aa0b0ae58 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ersatztv.org/ -# App Default Values APP="ErsatzTV" var_tags="iptv" var_cpu="1" diff --git a/ct/esphome.sh b/ct/esphome.sh index 80b02db3d..85db1bb9d 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://esphome.io/ -# App Default Values APP="ESPHome" var_tags="automation" var_cpu="2" diff --git a/ct/evcc.sh b/ct/evcc.sh index 6badc3026..bef7c610f 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://evcc.io/en/ -# App Default Values APP="evcc" var_tags="solar;ev;automation" var_cpu="1" diff --git a/ct/excalidraw.sh b/ct/excalidraw.sh index 62c3782cc..d0ff3a27a 100644 --- a/ct/excalidraw.sh +++ b/ct/excalidraw.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/fenrus.sh b/ct/fenrus.sh index 6f8ff787f..6a357bf99 100644 --- a/ct/fenrus.sh +++ b/ct/fenrus.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/revenz/Fenrus -# App Default Values APP="Fenrus" var_tags="dashboard" var_cpu="1" diff --git a/ct/fhem.sh b/ct/fhem.sh index ccb79bb24..63156dfe5 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://fhem.de/ -# App Default Values APP="FHEM" var_tags="automation" var_cpu="2" diff --git a/ct/firefly.sh b/ct/firefly.sh index 4f1642491..526fdcd59 100644 --- a/ct/firefly.sh +++ b/ct/firefly.sh @@ -2,11 +2,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: quantumryuu -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://firefly-iii.org/ -# App Default Values APP="Firefly" var_tags="finance" var_cpu="1" diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index 85a5d2b7f..8d0535e21 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FlareSolverr/FlareSolverr -# App Default Values APP="FlareSolverr" var_tags="proxy" var_cpu="2" diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index 5240e7b0f..5123a095c 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://flowiseai.com/ -# App Default Values APP="FlowiseAI" var_tags="low-code" var_disk="10" diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 7503c28a7..40d22bf84 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://forgejo.org/ -# App Default Values APP="Forgejo" var_tags="git" var_cpu="2" diff --git a/ct/freshrss.sh b/ct/freshrss.sh index 6d2672f99..ef7d11d29 100644 --- a/ct/freshrss.sh +++ b/ct/freshrss.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FreshRSS/FreshRSS -# App Default Values APP="FreshRSS" var_tags="RSS" var_cpu="2" diff --git a/ct/frigate.sh b/ct/frigate.sh index d2168f068..72d28f574 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://frigate.video/ -# App Default Values APP="Frigate" var_tags="nvr" var_cpu="4" diff --git a/ct/ghost.sh b/ct/ghost.sh index 8187c15fe..379189fe0 100644 --- a/ct/ghost.sh +++ b/ct/ghost.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ghost.org/ -# App Default Values APP="Ghost" var_tags="cms;blog" var_cpu="2" diff --git a/ct/gitea.sh b/ct/gitea.sh index 6f3d0bc32..975855fb7 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://about.gitea.com/ -# App Default Values APP="Gitea" var_tags="git" var_cpu="1" diff --git a/ct/glance.sh b/ct/glance.sh index fb665ca0c..448193ed4 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/glanceapp/glance -# App Default Values APP="Glance" var_tags="dashboard" var_cpu="1" diff --git a/ct/glpi.sh b/ct/glpi.sh index 9680dc6a2..e16570d71 100644 --- a/ct/glpi.sh +++ b/ct/glpi.sh @@ -1,11 +1,10 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) - # Copyright (c) 2021-2025 community-scripts ORG # Author: Nícolas Pastorello (opastorello) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.glpi-project.org/ -# App Default Values APP="GLPI" var_tags="asset-management;foss" var_cpu="2" diff --git a/ct/go2rtc.sh b/ct/go2rtc.sh index 2f597004f..a123e7ea6 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/AlexxIT/go2rtc -# App Default Values APP="go2rtc" var_tags="recorder;video" var_cpu="2" diff --git a/ct/gokapi.sh b/ct/gokapi.sh index 3259a1738..2975c984b 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Forceu/Gokapi -# App Default Values APP="Gokapi" var_tags="file;sharing" var_cpu="1" diff --git a/ct/gotify.sh b/ct/gotify.sh index 747cd8ead..5bdff3bec 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gotify.net/ -# App Default Values APP="Gotify" var_tags="notification" var_cpu="1" diff --git a/ct/grafana.sh b/ct/grafana.sh index b1fe394e4..ebada4986 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grafana.com/ -# App Default Values APP="Grafana" var_tags="monitoring;visualization" var_cpu="1" diff --git a/ct/graylog.sh b/ct/graylog.sh index b4f855292..ffed4bf22 100644 --- a/ct/graylog.sh +++ b/ct/graylog.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/grist.sh b/ct/grist.sh index 35696f19b..1b5743e74 100644 --- a/ct/grist.sh +++ b/ct/grist.sh @@ -2,7 +2,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Source: https://github.com/gristlabs/grist-core -# App Default Values APP="Grist" var_tags="database;spreadsheet" var_cpu="2" diff --git a/ct/grocy.sh b/ct/grocy.sh index ad4fe7efa..6640e4140 100644 --- a/ct/grocy.sh +++ b/ct/grocy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grocy.info/ -# App Default Values APP="grocy" var_tags="grocery;household" var_cpu="1" diff --git a/ct/headscale.sh b/ct/headscale.sh index f10e71d19..cde2e0408 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/juanfont/headscale -# App Default Values APP="Headscale" var_tags="tailscale" var_cpu="1" diff --git a/ct/heimdall-dashboard.sh b/ct/heimdall-dashboard.sh index d4d16ac45..279513d25 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://heimdall.site/ -# App Default Values APP="Heimdall-Dashboard" var_tags="dashboard" var_cpu="1" diff --git a/ct/hivemq.sh b/ct/hivemq.sh index e396a3cab..28df685bb 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hivemq.com/ -# App Default Values APP="HiveMQ" var_tags="mqtt" var_cpu="1" diff --git a/ct/hoarder.sh b/ct/hoarder.sh index 91be4f32b..1302bb944 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hoarder.app/ -# App Default Values APP="Hoarder" var_tags="bookmark" var_cpu="2" diff --git a/ct/homarr.sh b/ct/homarr.sh index f51ea3bf7..0fc3ce9fe 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homarr.dev/ -# App Default Values APP="Homarr" var_tags="arr;dashboard" var_cpu="2" diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 5230b67b0..fd7ef36da 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.home-assistant.io/ -# App Default Values APP="Home Assistant-Core" var_tags="automation;smarthome" var_cpu="2" diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index 073c00a73..71aff0b16 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.home-assistant.io/ -# App Default Values APP="Home Assistant" var_tags="automation;smarthome" var_cpu="2" diff --git a/ct/homebox.sh b/ct/homebox.sh index c8260c648..b9f837925 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homebox.software/en/ -# App Default Values APP="HomeBox" var_tags="inventory;household" var_cpu="1" diff --git a/ct/homebridge.sh b/ct/homebridge.sh index 85e60fdc0..97dddac16 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homebridge.io/ -# App Default Values APP="Homebridge" var_tags="smarthome;homekit" var_cpu="1" diff --git a/ct/homepage.sh b/ct/homepage.sh index e4cc719aa..9e050c032 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gethomepage.dev/ -# App Default Values APP="Homepage" var_tags="dashboard" var_cpu="2" diff --git a/ct/homer.sh b/ct/homer.sh index 5aecfeccc..15488940d 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bastienwirtz/homer -# App Default Values APP="Homer" var_tags="dashboard" var_cpu="1" diff --git a/ct/hyperhdr.sh b/ct/hyperhdr.sh index ed558539b..720829e5b 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hyperhdr.eu/ -# App Default Values APP="HyperHDR" var_tags="ambient-lightning" var_cpu="2" diff --git a/ct/hyperion.sh b/ct/hyperion.sh index e41a59bc6..d04dced8c 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hyperion-project.org/forum/ -# App Default Values APP="Hyperion" var_tags="ambient-lightning" var_cpu="1" diff --git a/ct/influxdb.sh b/ct/influxdb.sh index a808c660e..e4a295209 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.influxdata.com/ -# App Default Values APP="InfluxDB" var_tags="database" var_cpu="2" diff --git a/ct/inspircd.sh b/ct/inspircd.sh index f0d8d47b4..bec679b03 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.inspircd.org/ -# App Default Values APP="InspIRCd" var_tags="IRC" var_cpu="1" diff --git a/ct/iobroker.sh b/ct/iobroker.sh index 432b2e2b4..570b64354 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iobroker.net/#en/intro -# App Default Values APP="ioBroker" var_tags="automtation" var_cpu="2" diff --git a/ct/iventoy.sh b/ct/iventoy.sh index e7bebe75e..53626b157 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iventoy.com/en/index.html -# App Default Values APP="iVentoy" var_tags="pxe-tool" var_disk="2" diff --git a/ct/jackett.sh b/ct/jackett.sh index 0d42fcba5..c3fe4672a 100644 --- a/ct/jackett.sh +++ b/ct/jackett.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Jackett/Jackett -# App Default Values APP="Jackett" var_tags="torrent" var_cpu="1" diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index 097a79370..ac67f717d 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://jellyfin.org/ -# App Default Values APP="Jellyfin" var_tags="media" var_cpu="2" diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index c3447dcb6..f68d0e31c 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.jellyseerr.dev/ -# App Default Values APP="Jellyseerr" var_tags="media" var_cpu="4" diff --git a/ct/jenkins.sh b/ct/jenkins.sh index 48a8b54f3..4d479a870 100644 --- a/ct/jenkins.sh +++ b/ct/jenkins.sh @@ -2,11 +2,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.jenkins.io/ -# App Default Values APP="Jenkins" var_tags="automation" var_cpu="2" diff --git a/ct/kavita.sh b/ct/kavita.sh index dfdf9a943..7a704f864 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kavitareader.com/ -# App Default Values APP="Kavita" var_tags="reader" var_cpu="2" diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 243b06307..96e14c1c3 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.keycloak.org/ -# App Default Values APP="Keycloak" var_tags="access-management" var_cpu="2" diff --git a/ct/kimai.sh b/ct/kimai.sh index 7f5f58ccc..3a00ca4bf 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kimai.org/ -# App Default Values APP="Kimai" var_tags="time-tracking" var_cpu="2" diff --git a/ct/koillection.sh b/ct/koillection.sh index b041d2cdb..64dfde90d 100644 --- a/ct/koillection.sh +++ b/ct/koillection.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://koillection.github.io/ -# App Default Values APP="Koillection" var_tags="network" var_cpu="2" diff --git a/ct/kometa.sh b/ct/kometa.sh index 8e2166a30..6279a46ea 100644 --- a/ct/kometa.sh +++ b/ct/kometa.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Kometa-Team/Kometa -# App Default Values APP="Kometa" TAGS="media;streaming" var_cpu="2" @@ -16,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/komga.sh b/ct/komga.sh index b0bac4fd1..4ebe5289e 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://komga.org/ -# App Default Values APP="Komga" var_tags="media;eBook;comic" var_cpu="1" diff --git a/ct/komodo.sh b/ct/komodo.sh index db6dfdaf9..e1a967057 100644 --- a/ct/komodo.sh +++ b/ct/komodo.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://komo.do -# App Default Values APP="Komodo" var_tags="docker" var_cpu="2" diff --git a/ct/kubo.sh b/ct/kubo.sh index 3157f21bf..90bffaa77 100644 --- a/ct/kubo.sh +++ b/ct/kubo.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/ipfs/kubo -# App Default Values APP="Kubo" var_tags="sharing" var_cpu="2" diff --git a/ct/lazylibrarian.sh b/ct/lazylibrarian.sh index 56eb0c0b5..5f020a486 100644 --- a/ct/lazylibrarian.sh +++ b/ct/lazylibrarian.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gitlab.com/LazyLibrarian/LazyLibrarian -# App Default Values APP="LazyLibrarian" var_tags="eBook" var_cpu="2" diff --git a/ct/lidarr.sh b/ct/lidarr.sh index d3ec14de9..a1c7592c5 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://lidarr.audio/ -# App Default Values APP="Lidarr" var_tags="arr;torrent;usenet" var_cpu="2" diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 0c2de1f6b..732033d15 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://linkwarden.app/ -# App Default Values APP="Linkwarden" var_tags="bookmark" var_cpu="2" diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 33cb3a19b..e7b5d26ca 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://listmonk.app/ -# App Default Values APP="listmonk" var_tags="newsletter" var_cpu="1" diff --git a/ct/lldap.sh b/ct/lldap.sh index 31c6ad430..6001d45cd 100644 --- a/ct/lldap.sh +++ b/ct/lldap.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/lldap/lldap -# App Default Values APP="lldap" var_tags="ldap" var_cpu="1" diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index c0d99a184..c356bf437 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://lubelogger.com/ -# App Default Values APP="LubeLogger" var_tags="vehicle;car" var_cpu="1" diff --git a/ct/mafl.sh b/ct/mafl.sh index 59ce855c2..52a51d017 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mafl.hywax.space/ -# App Default Values APP="Mafl" var_tags="dashboard" var_cpu="2" diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index 0a7e25ed1..bb5763557 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://magicmirror.builders/ -# App Default Values APP="MagicMirror" var_tags="smarthome" var_cpu="1" diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 3eeee19d6..fecac4716 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mariadb.org/ -# App Default Values APP="MariaDB" var_tags="database" var_cpu="1" diff --git a/ct/matterbridge.sh b/ct/matterbridge.sh index 3ef3643f9..c31c77c05 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Luligu/matterbridge -# App Default Values APP="Matterbridge" var_tags="matter;smarthome" var_cpu="1" diff --git a/ct/mattermost.sh b/ct/mattermost.sh index 5b5b15766..485962870 100644 --- a/ct/mattermost.sh +++ b/ct/mattermost.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mattermost.com/ -# App Default Values APP="Mattermost" var_tags="collaboration" var_cpu="1" diff --git a/ct/mediamtx.sh b/ct/mediamtx.sh index d115bece2..044c9f758 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -1,12 +1,10 @@ #!/usr/bin/env bash - source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bluenviron/mediamtx -# App Default Values APP="MediaMTX" var_tags="media" var_cpu="2" diff --git a/ct/medusa.sh b/ct/medusa.sh index a1f01d84b..a2421816d 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pymedusa/Medusa.git -# App Default Values APP="Medusa" var_tags="media" var_cpu="2" diff --git a/ct/memos.sh b/ct/memos.sh index 7dd0fbf5e..0f9b05664 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.usememos.com/ -# App Default Values APP="Memos" var_tags="notes" var_cpu="2" diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 66dfe07a4..6f8c2543d 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://meshcentral.com/ -# App Default Values APP="MeshCentral" var_tags="remote-management" var_cpu="1" diff --git a/ct/metube.sh b/ct/metube.sh index b991493b1..deaf65798 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/alexta69/metube -# App Default Values APP="MeTube" var_tags="media;youtube" var_cpu="1" diff --git a/ct/minio.sh b/ct/minio.sh index 6e1f47034..754fd9f20 100644 --- a/ct/minio.sh +++ b/ct/minio.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/minio/minio -# App Default Values APP="MinIO" var_tags="object-storage" var_cpu="1" diff --git a/ct/mongodb.sh b/ct/mongodb.sh index 848132100..392da311e 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mongodb.com/de-de -# App Default Values APP="MongoDB" var_tags="database" var_cpu="1" diff --git a/ct/monica.sh b/ct/monica.sh index 03fa732ad..3a43f7e1a 100644 --- a/ct/monica.sh +++ b/ct/monica.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.monicahq.com/ -# App Default Values APP="Monica" var_tags="network" var_cpu="2" diff --git a/ct/motioneye.sh b/ct/motioneye.sh index e1fd0ae34..89904cfcc 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/motioneye-project/motioneye -# App Default Values APP="Motioneye" var_tags="nvr" var_cpu="2" diff --git a/ct/mqtt.sh b/ct/mqtt.sh index 31af3eced..8de9cba56 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mosquitto.org/ -# App Default Values APP="MQTT" var_tags="mqtt" var_cpu="1" diff --git a/ct/mylar3.sh b/ct/mylar3.sh index 9e9808166..070ed9ae8 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/mylar3/mylar3 -# App Default Values APP="Mylar3" var_tags="torrent;downloader;comic" var_cpu="1" diff --git a/ct/myspeed.sh b/ct/myspeed.sh index e82090d02..794436921 100644 --- a/ct/myspeed.sh +++ b/ct/myspeed.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://myspeed.dev/ -# App Default Values APP="MySpeed" var_tags="tracking" var_cpu="1" diff --git a/ct/mysql.sh b/ct/mysql.sh index 6c911ee85..387c7db8f 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mysql.com/ -# App Default Values APP="MySQL" var_tags="database" var_cpu="1" diff --git a/ct/n8n.sh b/ct/n8n.sh index 0cfbe3892..38b804d25 100644 --- a/ct/n8n.sh +++ b/ct/n8n.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://n8n.io/ -# App Default Values APP="n8n" var_tags="automation" var_cpu="2" diff --git a/ct/navidrome.sh b/ct/navidrome.sh index e4a60c06e..32e280d0e 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.navidrome.org/ -# App Default Values APP="Navidrome" var_tags="music" var_cpu="2" diff --git a/ct/neo4j.sh b/ct/neo4j.sh index a938c8e10..ed981d2d4 100644 --- a/ct/neo4j.sh +++ b/ct/neo4j.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://neo4j.com/product/neo4j-graph-database/ -# App Default Values APP="Neo4j" var_tags="database" var_cpu="1" diff --git a/ct/netbox.sh b/ct/netbox.sh index 34fc374e4..219a0021a 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://netboxlabs.com/ -# App Default Values APP="NetBox" var_tags="network" var_cpu="2" diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index e4f7c7463..dae1463ee 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.turnkeylinux.org/nextcloud -# App Default Values APP="NextCloudPi" var_tags="cloud" var_cpu="2" diff --git a/ct/nextpvr.sh b/ct/nextpvr.sh index 37b9fcd30..c18cdb4ec 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -6,7 +6,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # https://github.com/tteck/Proxmox/raw/main/LICENSE # Source: https://nextpvr.com/ -# App Default Values APP="NextPVR" var_tags="pvr" var_cpu="1" diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index db81a5a3b..c44065b9d 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nginxproxymanager.com/ -# App Default Values APP="Nginx Proxy Manager" var_tags="proxy" var_cpu="2" diff --git a/ct/nocodb.sh b/ct/nocodb.sh index 392e4ac23..ff0f882e6 100644 --- a/ct/nocodb.sh +++ b/ct/nocodb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.nocodb.com/ -# App Default Values APP="NocoDB" var_tags="noCode" var_cpu="1" diff --git a/ct/node-red.sh b/ct/node-red.sh index b4f5bec4f..7b8713fb6 100644 --- a/ct/node-red.sh +++ b/ct/node-red.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nodered.org/ -# App Default Values APP="Node-Red" var_tags="automation" var_cpu="1" diff --git a/ct/nodebb.sh b/ct/nodebb.sh index a327a02b8..7317abe7f 100644 --- a/ct/nodebb.sh +++ b/ct/nodebb.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nodebb.org/ -# App Default Values APP="NodeBB" var_tags="forum" var_disk="10" diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index e224af688..e732b81cc 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://notifiarr.com/ -# App Default Values APP="Notifiarr" var_tags="arr" var_cpu="1" diff --git a/ct/ntfy.sh b/ct/ntfy.sh index a8590162c..78ef16ab4 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ntfy.sh/ -# App Default Values APP="ntfy" var_tags="notification" var_cpu="1" diff --git a/ct/nzbget.sh b/ct/nzbget.sh index e26df9971..a5f86aeec 100644 --- a/ct/nzbget.sh +++ b/ct/nzbget.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nzbget.com/ -# App Default Values APP="NZBGet" var_tags="usenet;downloader" var_cpu="2" diff --git a/ct/octoprint.sh b/ct/octoprint.sh index c0ee95fdc..25fd271f3 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://octoprint.org/ -# App Default Values APP="OctoPrint" var_tags="3d-printing" var_cpu="1" diff --git a/ct/ollama.sh b/ct/ollama.sh index 7b2646377..ecae89545 100644 --- a/ct/ollama.sh +++ b/ct/ollama.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ollama.com/ -# App Default Values APP="Ollama" var_tags="ai" var_cpu="4" diff --git a/ct/omada.sh b/ct/omada.sh index 0b8c2820e..e75a28b6b 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.tp-link.com/us/support/download/omada-software-controller/ -# App Default Values APP="Omada" var_tags="tp-link;controller" var_cpu="2" diff --git a/ct/ombi.sh b/ct/ombi.sh index c3eed37b3..40560871c 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ombi.io/ -# App Default Values APP="Ombi" var_tags="media" var_cpu="1" diff --git a/ct/omv.sh b/ct/omv.sh index 692ad7f01..9b2641445 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.openmediavault.org/ -# App Default Values APP="OMV" var_tags="media" var_cpu="2" diff --git a/ct/onedev.sh b/ct/onedev.sh index c9a8c4bf2..16db56480 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://onedev.io/ -# App Default Values APP="OneDev" var_tags="git" var_cpu="2" diff --git a/ct/opengist.sh b/ct/opengist.sh index 70ae799c2..81f15e5a0 100644 --- a/ct/opengist.sh +++ b/ct/opengist.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://opengist.io/ -# App Default Values APP="Opengist" var_tags="development" var_cpu="1" diff --git a/ct/openhab.sh b/ct/openhab.sh index a33f56e59..43aab08ac 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.openhab.org/ -# App Default Values APP="openHAB" var_tags="automation" var_cpu="2" diff --git a/ct/openobserve.sh b/ct/openobserve.sh index b19c5650e..67dc65917 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openobserve.ai/ -# App Default Values APP="OpenObserve" var_tags="monitoring" var_cpu="1" diff --git a/ct/openwebui.sh b/ct/openwebui.sh index f8461b698..d140710da 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openwebui.com/ -# App Default Values APP="Open WebUI" var_tags="ai;interface" var_cpu="4" diff --git a/ct/overseerr.sh b/ct/overseerr.sh index b54bd18dc..2e14369f4 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://overseerr.dev/ -# App Default Values APP="Overseerr" var_tags="media" var_cpu="2" diff --git a/ct/owncast.sh b/ct/owncast.sh index 9cf4a7208..a69accc03 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://owncast.online/ -# App Default Values APP="Owncast" var_tags="broadcasting" var_cpu="2" diff --git a/ct/pairdrop.sh b/ct/pairdrop.sh index 4b3c0cdbf..dc19c2337 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pairdrop.net/ -# App Default Values APP="PairDrop" var_tags="sharing" var_cpu="1" diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh index 351cfdcbe..c4e02d1d5 100644 --- a/ct/paperless-ai.sh +++ b/ct/paperless-ai.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/clusterzx/paperless-ai -# App Default Values APP="Paperless-AI" var_tags="ai;document" var_cpu="2" diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index 61e977e7d..2a62c7b59 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.paperless-ngx.com/ -# App Default Values APP="Paperless-ngx" var_tags="document;management" var_cpu="2" diff --git a/ct/part-db.sh b/ct/part-db.sh index 85cbd53d2..d7f114570 100644 --- a/ct/part-db.sh +++ b/ct/part-db.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.part-db.de/ -# App Default Values APP="Part-DB" var_tags="inventory;parts" var_cpu="2" diff --git a/ct/paymenter.sh b/ct/paymenter.sh index f8f7c4726..fbdf78466 100644 --- a/ct/paymenter.sh +++ b/ct/paymenter.sh @@ -1,11 +1,10 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) - # Copyright (c) 2021-2025 community-scripts ORG # Author: Nícolas Pastorello (opastorello) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.paymenter.org -# App Default Values APP="Paymenter" var_tags="hosting;ecommerce;marketplace;" var_cpu="2" diff --git a/ct/peanut.sh b/ct/peanut.sh index e26c014a3..fd59ce1e2 100644 --- a/ct/peanut.sh +++ b/ct/peanut.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Brandawg93/PeaNUT/ -# App Default Values APP="PeaNUT" var_tags="network;ups;" var_cpu="2" diff --git a/ct/petio.sh b/ct/petio.sh index ab2fe23a1..5d9c39d29 100644 --- a/ct/petio.sh +++ b/ct/petio.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://petio.tv/ -# App Default Values APP="Petio" var_tags="media" var_cpu="2" diff --git a/ct/photoprism.sh b/ct/photoprism.sh index 4088ef9d4..9e946fdc3 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.photoprism.app/ -# App Default Values APP="PhotoPrism" var_tags="media;photo" var_cpu="2" diff --git a/ct/phpipam.sh b/ct/phpipam.sh index 18d7140df..fa6b8f634 100644 --- a/ct/phpipam.sh +++ b/ct/phpipam.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://phpipam.net/ -# App Default Values APP="phpIPAM" var_tags="network" var_cpu="1" diff --git a/ct/pialert.sh b/ct/pialert.sh index ccd5768bc..12ea5ec77 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/leiweibau/Pi.Alert/ -# App Default Values APP="PiAlert" var_tags="network" var_cpu="1" diff --git a/ct/pihole.sh b/ct/pihole.sh index dcaa91e88..db33d814b 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pi-hole.net/ -# App Default Values APP="Pihole" var_tags="adblock" var_cpu="1" diff --git a/ct/pingvin.sh b/ct/pingvin.sh index e143dafff..2cdf693f4 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://stonith404.github.io/pingvin-share/introduction -# App Default Values APP="Pingvin" var_tags="sharing" var_cpu="2" diff --git a/ct/plex.sh b/ct/plex.sh index f45c8a472..e22660859 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.plex.tv/ -# App Default Values APP="Plex" var_tags="media" var_cpu="2" diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 0765798d9..c3ca11533 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pocketbase.io/ -# App Default Values APP="Pocketbase" var_tags="database" var_cpu="1" diff --git a/ct/pocketid.sh b/ct/pocketid.sh index 5d4424105..d4d20b6e5 100755 --- a/ct/pocketid.sh +++ b/ct/pocketid.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pocket-id/pocket-id -# App Default Values APP="PocketID" var_tags="identity-provider" var_cpu="2" diff --git a/ct/podman-homeassistant.sh b/ct/podman-homeassistant.sh index 3c76605a8..ceb3856c4 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -3,8 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.home-assistant.io/ -# App Default Values APP="Podman-Home Assistant" var_tags="podman;smarthome" var_cpu="2" diff --git a/ct/podman.sh b/ct/podman.sh index 5284c9831..284f0ed58 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://podman.io/ -# App Default Values APP="Podman" var_tags="container;kubernetes" var_cpu="2" diff --git a/ct/postgresql.sh b/ct/postgresql.sh index 93e8af61f..850a8120b 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.postgresql.org/ -# App Default Values APP="PostgreSQL" var_tags="database" var_cpu="1" diff --git a/ct/privatebin.sh b/ct/privatebin.sh index c3fc3fe1e..d44d99897 100644 --- a/ct/privatebin.sh +++ b/ct/privatebin.sh @@ -1,11 +1,10 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) - # Copyright (c) 2021-2025 community-scripts ORG # Author: Nícolas Pastorello (opastorello) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://privatebin.info/ -# App Default Values APP="PrivateBin" var_tags="paste;secure" var_cpu="1" diff --git a/ct/projectsend.sh b/ct/projectsend.sh index ee558a764..bf8e3d91b 100644 --- a/ct/projectsend.sh +++ b/ct/projectsend.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.projectsend.org/ -# App Default Values APP="ProjectSend" var_tags="media" var_cpu="1" diff --git a/ct/prometheus-alertmanager.sh b/ct/prometheus-alertmanager.sh index b57fe3ec4..47180a93e 100755 --- a/ct/prometheus-alertmanager.sh +++ b/ct/prometheus-alertmanager.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ -# App Default Values APP="Prometheus-Alertmanager" var_tags="monitoring;alerting" var_cpu="1" diff --git a/ct/prometheus-paperless-ngx-exporter.sh b/ct/prometheus-paperless-ngx-exporter.sh index 38010d006..e01a79e70 100755 --- a/ct/prometheus-paperless-ngx-exporter.sh +++ b/ct/prometheus-paperless-ngx-exporter.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/hansmi/prometheus-paperless-exporter -# App Default Values APP="Prometheus-Paperless-NGX-Exporter" var_tags="monitoring;alerting" var_cpu="1" diff --git a/ct/prometheus-pve-exporter.sh b/ct/prometheus-pve-exporter.sh index 8b4a1afc0..69b10a582 100644 --- a/ct/prometheus-pve-exporter.sh +++ b/ct/prometheus-pve-exporter.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/prometheus-pve/prometheus-pve-exporter -# App Default Values APP="Prometheus-PVE-Exporter" var_tags="monitoring" var_cpu="1" diff --git a/ct/prometheus.sh b/ct/prometheus.sh index 46ff096f7..d072f46ed 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ -# App Default Values APP="Prometheus" var_tags="monitoring" var_cpu="1" diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 305d181a0..bbec37a3a 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prowlarr.com/ -# App Default Values APP="Prowlarr" var_tags="arr" var_cpu="2" diff --git a/ct/proxmox-backup-server.sh b/ct/proxmox-backup-server.sh index c8ad135a5..671a45826 100644 --- a/ct/proxmox-backup-server.sh +++ b/ct/proxmox-backup-server.sh @@ -3,19 +3,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.proxmox.com/en/proxmox-backup-server -function header_info { -clear -cat <<"EOF" - ____ ____ __ _____ - / __ \_________ _ ______ ___ ____ _ __ / __ )____ ______/ /____ ______ / ___/___ ______ _____ _____ - / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/ / __ / __ `/ ___/ //_/ / / / __ \ \__ \/ _ \/ ___/ | / / _ \/ ___/ - / ____/ / / /_/ /> < / /_/ / /_/ / /__/ ,< / /_/ / /_/ / ___/ / __/ / | |/ / __/ / -/_/ /_/ \____/_/|_/_/ /_/ /_/\____/_/|_| /_____/\__,_/\___/_/|_|\__,_/ .___/ /____/\___/_/ |___/\___/_/ - /_/ -EOF -} -header_info APP="Proxmox-Backup-Server" var_tags="backup" var_cpu="2" @@ -25,10 +14,7 @@ var_os="debian" var_version="12" var_unprivileged="1" -# App Output & Base Settings -base_settings - -# Core +header_info "$APP" variables color catch_errors diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh index c627f97bc..afdbbdb6f 100644 --- a/ct/proxmox-datacenter-manager.sh +++ b/ct/proxmox-datacenter-manager.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: Proxmox Server Solution GmbH -# App Default Values APP="Proxmox-Datacenter-Manager" var_tags="datacenter" var_cpu="2" diff --git a/ct/proxmox-mail-gateway.sh b/ct/proxmox-mail-gateway.sh index 7aba78ed3..654bbc4b1 100644 --- a/ct/proxmox-mail-gateway.sh +++ b/ct/proxmox-mail-gateway.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/ps5-mqtt.sh b/ct/ps5-mqtt.sh index 678dd52fc..3afe55565 100644 --- a/ct/ps5-mqtt.sh +++ b/ct/ps5-mqtt.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FunkeyFlo/ps5-mqtt/ -# App Default Values APP="PS5-MQTT" var_tags="smarthome;automation" var_cpu="1" diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index fde513331..393847500 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.qbittorrent.org/ -# App Default Values APP="qBittorrent" var_tags="torrent" var_cpu="2" diff --git a/ct/rabbitmq.sh b/ct/rabbitmq.sh index c9fb95a70..a5a6b8967 100644 --- a/ct/rabbitmq.sh +++ b/ct/rabbitmq.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.rabbitmq.com/ -# App Default Values APP="RabbitMQ" var_tags="mqtt" var_cpu="1" diff --git a/ct/radarr.sh b/ct/radarr.sh index 30cb5f463..2dd684941 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://radarr.video/ -# App Default Values APP="Radarr" var_tags="arr" var_cpu="2" diff --git a/ct/radicale.sh b/ct/radicale.sh index 7334f85a4..5589abbf9 100644 --- a/ct/radicale.sh +++ b/ct/radicale.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://radicale.org/ -# App Default Values APP="Radicale" var_tags="calendar" var_cpu="1" diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index 42ca9d194..1d5ea16ae 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/rogerfar/rdt-client -# App Default Values APP="RDTClient" var_tags="torrent" var_cpu="1" diff --git a/ct/readarr.sh b/ct/readarr.sh index cc78e5a8b..357061eb6 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readarr.com/ -# App Default Values APP="Readarr" var_tags="media;comic;eBook" var_cpu="2" diff --git a/ct/readeck.sh b/ct/readeck.sh index 104880a2f..44c3023cd 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readeck.org/en/ -# App Default Values APP="Readeck" var_tags="bookmark" var_cpu="1" diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index 71324aaa2..b1f5eede4 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://recyclarr.dev/wiki/ -# App Default Values APP="Recyclarr" var_tags="arr" var_cpu="1" diff --git a/ct/redis.sh b/ct/redis.sh index a9d7d8f97..fe11ba83c 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://redis.io/ -# App Default Values APP="Redis" var_tags="database" var_cpu="1" diff --git a/ct/rtsptoweb.sh b/ct/rtsptoweb.sh index 6f4f697e6..0534068d8 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/deepch/RTSPtoWeb -# App Default Values APP="RTSPtoWeb" var_tags="media" var_cpu="2" diff --git a/ct/runtipi.sh b/ct/runtipi.sh index 0160d1724..3a7fff532 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://runtipi.io/ -# App Default Values APP="Runtipi" var_tags="os" var_cpu="2" diff --git a/ct/rustdeskserver.sh b/ct/rustdeskserver.sh index 38f2ee3d3..b98543283 100644 --- a/ct/rustdeskserver.sh +++ b/ct/rustdeskserver.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 5becdb468..27f9ccf5d 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sabnzbd.org/ -# App Default Values APP="SABnzbd" var_tags="downloader" var_cpu="2" diff --git a/ct/searxng.sh b/ct/searxng.sh index 4ce9f5571..769aa3497 100644 --- a/ct/searxng.sh +++ b/ct/searxng.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/searxng/searxng -# App Default Values APP="SearXNG" var_tags="search" var_cpu="2" diff --git a/ct/seelf.sh b/ct/seelf.sh index 33c3c4fd9..481d6287f 100644 --- a/ct/seelf.sh +++ b/ct/seelf.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/semaphore.sh b/ct/semaphore.sh index ac1b115ba..a4d969fe6 100644 --- a/ct/semaphore.sh +++ b/ct/semaphore.sh @@ -2,11 +2,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://semaphoreui.com/ -# App Default Values APP="Semaphore" var_tags="dev_ops" var_cpu="2" diff --git a/ct/sftpgo.sh b/ct/sftpgo.sh index 665fa3c16..171e8f46a 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sftpgo.com/ -# App Default Values APP="SFTPGo" var_tags="ftp;sftp" var_cpu="2" diff --git a/ct/shinobi.sh b/ct/shinobi.sh index 969a600fb..158f6fefa 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://shinobi.video/ -# App Default Values APP="Shinobi" var_tags="nvr" var_cpu="2" diff --git a/ct/silverbullet.sh b/ct/silverbullet.sh index 56bf1a4e6..cdfddbd99 100644 --- a/ct/silverbullet.sh +++ b/ct/silverbullet.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://silverbullet.md -# App default values APP="Silverbullet" var_tags="notes" var_cpu="1" @@ -14,11 +13,7 @@ var_ram="512" var_os="debian" var_version="12" -# App Output & Base Settings header_info "${APP}" -base_settings - -# Core variables color catch_errors diff --git a/ct/smokeping.sh b/ct/smokeping.sh index f829ce5d4..4f2b9f247 100644 --- a/ct/smokeping.sh +++ b/ct/smokeping.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://oss.oetiker.ch/smokeping/ -# App Default Values APP="SmokePing" var_tags="network" var_cpu="1" diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 01fe1255b..0d52cc6af 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://snipeitapp.com/ -# App Default Values APP="SnipeIT" var_tags="assat-management;foss" var_cpu="2" diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 7758ca16c..1b0fe4b2c 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sonarr.tv/ -# App Default Values APP="Sonarr" var_tags="arr" var_cpu="2" diff --git a/ct/spoolman.sh b/ct/spoolman.sh index 733fc9648..3bf555326 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Donkie/Spoolman -# App Default Values APP="Spoolman" var_tags="3d-printing" var_cpu="1" diff --git a/ct/sqlserver2022.sh b/ct/sqlserver2022.sh index 955f730fe..e5cd23c6f 100644 --- a/ct/sqlserver2022.sh +++ b/ct/sqlserver2022.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.microsoft.com/en-us/sql-server/sql-server-2022 -# App Default Values APP="SQL Server 2022" var_tags="sql" var_cpu="1" diff --git a/ct/stirling-pdf.sh b/ct/stirling-pdf.sh index b1f95a903..d15f5edcf 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.stirlingpdf.com/ -# App Default Values APP="Stirling-PDF" var_tags="pdf-editor" var_cpu="2" diff --git a/ct/suwayomiserver.sh b/ct/suwayomiserver.sh index af3251028..3d3c7b809 100644 --- a/ct/suwayomiserver.sh +++ b/ct/suwayomiserver.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/syncthing.sh b/ct/syncthing.sh index aab130d5b..5a41cc332 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://syncthing.net/ -# App Default Values APP="Syncthing" var_tags="sync" var_cpu="2" diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 78c074b93..edf1d00a7 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tandoor.dev/ -# App Default Values APP="Tandoor" var_tags="recipes" var_cpu="4" diff --git a/ct/tasmoadmin.sh b/ct/tasmoadmin.sh index a195573b1..402475ac1 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/TasmoAdmin/TasmoAdmin -# App Default Values APP="TasmoAdmin" var_tags="tasmota;smarthome" var_cpu="1" diff --git a/ct/tasmocompiler.sh b/ct/tasmocompiler.sh index f2205b1fd..275b31fa0 100644 --- a/ct/tasmocompiler.sh +++ b/ct/tasmocompiler.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/tautulli.sh b/ct/tautulli.sh index e137772f2..f5574d668 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tautulli.com/ -# App Default Values APP="Tautulli" var_tags="media" var_cpu="2" diff --git a/ct/tdarr.sh b/ct/tdarr.sh index 0b05b8d8a..b6b70c0f2 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://home.tdarr.io/ -# App Default Values APP="Tdarr" var_tags="arr" var_cpu="2" diff --git a/ct/technitiumdns.sh b/ct/technitiumdns.sh index db4dba575..cda740e2c 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://technitium.com/dns/ -# App Default Values APP="Technitium DNS" var_tags="dns" var_cpu="1" diff --git a/ct/teddycloud.sh b/ct/teddycloud.sh index ad71c6565..2d427e80e 100644 --- a/ct/teddycloud.sh +++ b/ct/teddycloud.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/toniebox-reverse-engineering/teddycloud -# App default values APP="TeddyCloud" var_tags="media" var_cpu="2" @@ -14,11 +13,7 @@ var_ram="1024" var_os="debian" var_version="12" -# App Output & Base Settings header_info "${APP}" -base_settings - -# Core variables color catch_errors diff --git a/ct/the-lounge.sh b/ct/the-lounge.sh index 958fbedbe..6a0497b59 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://thelounge.chat/ -# App Default Values APP="The-Lounge" var_tags="irc" var_cpu="2" diff --git a/ct/threadfin.sh b/ct/threadfin.sh index 674eb5c0c..dcff874fa 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Threadfin/Threadfin -# App Default Values APP="Threadfin" var_tags="media" var_cpu="1" diff --git a/ct/tianji.sh b/ct/tianji.sh index 142ce815b..b0551f09a 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tianji.msgbyte.com/ -# App Default Values APP="Tianji" var_tags="monitoring" var_cpu="4" diff --git a/ct/traccar.sh b/ct/traccar.sh index c1cefcb5e..fbf9e9b0d 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.traccar.org/ -# App Default Values APP="Traccar" var_tags="gps;tracker" var_cpu="1" diff --git a/ct/traefik.sh b/ct/traefik.sh index e074d94c2..c75d83dcc 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://traefik.io/ -# App Default Values APP="Traefik" var_tags="proxy" var_cpu="1" diff --git a/ct/transmission.sh b/ct/transmission.sh index 5a37c31c7..332a6042d 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://transmissionbt.com/ -# App Default Values APP="Transmission" var_tags="torrent" var_cpu="2" diff --git a/ct/trilium.sh b/ct/trilium.sh index a12ebe52c..b9a847da7 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://triliumnext.github.io/Docs/ -# App Default Values APP="Trilium" var_tags="notes" var_cpu="1" diff --git a/ct/typesense.sh b/ct/typesense.sh index ce5a103ba..c2772a9cb 100644 --- a/ct/typesense.sh +++ b/ct/typesense.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://typesense.org/ -# App Default Values APP="TypeSense" var_tags="database" var_cpu="1" diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index 14ef9a86c..6a170c3cb 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ubuntu.com/ -# App Default Values echo -e "Loading..." APP="Ubuntu" var_tags="os" diff --git a/ct/umami.sh b/ct/umami.sh index 439159984..8c9274144 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://umami.is/ -# App Default Values APP="Umami" var_tags="analytics" var_cpu="2" diff --git a/ct/umbrel.sh b/ct/umbrel.sh index af4fa16bf..eff5cccf9 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://umbrel.com/ -# App Default Values APP="Umbrel" var_tags="os" var_cpu="2" diff --git a/ct/unbound.sh b/ct/unbound.sh index b368c8267..0a0402b26 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/NLnetLabs/unbound -# App Default Values APP="Unbound" var_tags="dns" var_cpu="1" diff --git a/ct/unifi.sh b/ct/unifi.sh index 4f472da42..ad5707e20 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ui.com/download/unifi -# App Default Values APP="Unifi" var_tags="network;controller;unifi" var_cpu="2" diff --git a/ct/unmanic.sh b/ct/unmanic.sh index ea9a9067b..267811b68 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.unmanic.app/ -# App Default Values APP="Unmanic" var_tags="file;media" var_cpu="2" diff --git a/ct/uptimekuma.sh b/ct/uptimekuma.sh index a979a62ef..d2ce116f6 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://uptime.kuma.pet/ -# App Default Values APP="Uptime Kuma" var_tags="analytics;monitoring" var_cpu="1" diff --git a/ct/urbackupserver.sh b/ct/urbackupserver.sh index 61bd5c776..5383002b3 100644 --- a/ct/urbackupserver.sh +++ b/ct/urbackupserver.sh @@ -1,11 +1,10 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: Kristian Skov # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.urbackup.org/ -# App Default Values APP="UrBackup Server" var_tags="web" var_cpu="1" diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index d06a18599..519946776 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.vaultwarden.net/ -# App Default Values APP="Vaultwarden" var_tags="password-manager" var_cpu="4" diff --git a/ct/vikunja.sh b/ct/vikunja.sh index 02288269e..bea6381d7 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://vikunja.io/ -# App Default Values APP="Vikunja" var_tags="todo-app" var_cpu="1" diff --git a/ct/wallos.sh b/ct/wallos.sh index de8749792..4f193e283 100644 --- a/ct/wallos.sh +++ b/ct/wallos.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wallosapp.com/ -# App Default Values APP="Wallos" var_tags="finance" var_cpu="1" diff --git a/ct/wastebin.sh b/ct/wastebin.sh index 6a03b160c..7f9b31c35 100644 --- a/ct/wastebin.sh +++ b/ct/wastebin.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/matze/wastebin -# App Default Values APP="Wastebin" var_tags="file;code" var_cpu="1" diff --git a/ct/watcharr.sh b/ct/watcharr.sh index eeb7ee3b9..b154335bb 100644 --- a/ct/watcharr.sh +++ b/ct/watcharr.sh @@ -15,8 +15,6 @@ var_version="12" var_unprivileged="1" header_info "$APP" -base_settings - variables color catch_errors diff --git a/ct/watchyourlan.sh b/ct/watchyourlan.sh index 3372f307d..e6df3ee76 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/aceberg/WatchYourLAN -# App Default Values APP="WatchYourLAN" var_tags="network" var_cpu="1" diff --git a/ct/wavelog.sh b/ct/wavelog.sh index 212726ffa..862d5b944 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.wavelog.org/ -# App Default Values APP="Wavelog" var_tags="radio-logging" var_cpu="1" diff --git a/ct/whisparr.sh b/ct/whisparr.sh index c4d2ebeca..f9561d9b2 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Whisparr/Whisparr -# App Default Values APP="Whisparr" var_tags="arr" var_cpu="2" diff --git a/ct/whoogle.sh b/ct/whoogle.sh index 7ed8c6a08..8e8237b89 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/benbusby/whoogle-search -# App Default Values APP="Whoogle" var_tags="network;seaching" var_cpu="1" diff --git a/ct/wikijs.sh b/ct/wikijs.sh index cf5b0e60b..aed789ceb 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://js.wiki/ -# App Default Values APP="Wikijs" var_tags="wiki" var_cpu="1" diff --git a/ct/wireguard.sh b/ct/wireguard.sh index 78e65e87f..0d39e6811 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.wireguard.com/ -# App Default Values APP="Wireguard" var_tags="network;vpn" var_cpu="1" diff --git a/ct/yunohost.sh b/ct/yunohost.sh index f306d5a77..7bd72f112 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://yunohost.org/ -# App Default Values APP="YunoHost" var_tags="os" var_cpu="2" diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 1efca4c33..49bedcea6 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zabbix.com/ -# App Default Values APP="Zabbix" var_tags="monitoring" var_cpu="2" diff --git a/ct/zammad.sh b/ct/zammad.sh index 8ac6ed446..5dfb4b3d0 100644 --- a/ct/zammad.sh +++ b/ct/zammad.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zammad.com -#App Default Values APP="Zammad" var_tags="webserver;ticket-system" var_disk="8" diff --git a/ct/zerotier-one.sh b/ct/zerotier-one.sh index a67b9e07e..f8a94787d 100644 --- a/ct/zerotier-one.sh +++ b/ct/zerotier-one.sh @@ -3,9 +3,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # Copyright (c) 2021-2025 community-scripts ORG # Author: tremor021 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.zerotier.com/ -# App Default Values APP="Zerotier-One" var_tags="networking" var_cpu="1" diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 118524948..1eaca00c8 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zigbee2mqtt.io/ -# App Default Values APP="Zigbee2MQTT" var_tags="smarthome;zigbee;mqtt" var_cpu="2" diff --git a/ct/zipline.sh b/ct/zipline.sh index eaf676cb1..63c1c8479 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zipline.diced.sh/ -# App Default Values APP="Zipline" var_tags="file;sharing" var_cpu="2" diff --git a/ct/zitadel.sh b/ct/zitadel.sh index 868f93b5b..ce97e205a 100644 --- a/ct/zitadel.sh +++ b/ct/zitadel.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zitadel.com/ -# App Default Values APP="Zitadel" var_tags="identity-provider" var_cpu="1" diff --git a/ct/zoraxy.sh b/ct/zoraxy.sh index 61941dd14..2eb43a1c4 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zoraxy.aroz.org/ -# App Default Values APP="Zoraxy" var_tags="network" var_cpu="2" diff --git a/ct/zwave-js-ui.sh b/ct/zwave-js-ui.sh index 46db9a22c..86500e5ba 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -5,7 +5,6 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zwave-js.github.io/zwave-js-ui/#/ -# App Default Values APP="Zwave-JS-UI" var_tags="smarthome;zwave" var_cpu="2" From 47fd890bcd1160a5f8e582d27b154a1bafe3d512 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 18:00:58 +0100 Subject: [PATCH 363/480] Update CHANGELOG.md (#2371) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fee326aed..1050001cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,12 +23,14 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- Re-Add: Pf2eTools [@MickLesk](https://github.com/MickLesk) ([#2336](https://github.com/community-scripts/ProxmoxVE/pull/2336)) - New Script: Nx Witness [@MickLesk](https://github.com/MickLesk) ([#2350](https://github.com/community-scripts/ProxmoxVE/pull/2350)) - New Script: RustDesk Server [@tremor021](https://github.com/tremor021) ([#2326](https://github.com/community-scripts/ProxmoxVE/pull/2326)) - New Script: MinIO [@MickLesk](https://github.com/MickLesk) ([#2333](https://github.com/community-scripts/ProxmoxVE/pull/2333)) ### 🚀 Updated Scripts +- [core] cleanup (remove # App Default Values) [@MickLesk](https://github.com/MickLesk) ([#2356](https://github.com/community-scripts/ProxmoxVE/pull/2356)) - Fix: Kometa - Increase RAM and HDD resources [@tremor021](https://github.com/tremor021) ([#2367](https://github.com/community-scripts/ProxmoxVE/pull/2367)) - [core] cleanup (remove base_settings & unneeded comments) [@MickLesk](https://github.com/MickLesk) ([#2351](https://github.com/community-scripts/ProxmoxVE/pull/2351)) - Fix: Authentik Embedded Outpost Upgrade [@vidonnus](https://github.com/vidonnus) ([#2327](https://github.com/community-scripts/ProxmoxVE/pull/2327)) From d159e47a62a07c875ef21c1e02ee9ea587171164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 13 Feb 2025 20:40:31 +0100 Subject: [PATCH 364/480] Fix: Element Synapse - Fixed server listening on both localhost and 0.0.0.0 (#2376) * fixed server listening on both localhost and 0.0.0.0 * fix typo --- install/elementsynapse-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh index b1fd51591..0e751d259 100644 --- a/install/elementsynapse-install.sh +++ b/install/elementsynapse-install.sh @@ -26,12 +26,13 @@ msg_ok "Installed Dependencies" read -p "Please enter the name for your server: " servername msg_info "Installing Element Synapse" -wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg -echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list +wget -q -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg +echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" >/etc/apt/sources.list.d/matrix-org.list $STD apt-get update echo "matrix-synapse-py3 matrix-synapse/server-name string $servername" | debconf-set-selections echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections $STD apt-get install matrix-synapse-py3 -y +systemctl stop matrix-synapse sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml systemctl enable -q --now matrix-synapse From 80cfc3b8a558d30acf4f0391a24f0fec035e02a3 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 13 Feb 2025 20:50:01 +0100 Subject: [PATCH 365/480] Update trilium.sh --- ct/trilium.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ct/trilium.sh b/ct/trilium.sh index b9a847da7..83f93a2c3 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -27,10 +27,9 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt - fi - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt fi RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Stopping ${APP}" systemctl stop trilium sleep 1 From d27f7f13e5ebe601af8cab44fd2e7a3eabe46b88 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 20:51:46 +0100 Subject: [PATCH 366/480] Update CHANGELOG.md (#2379) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1050001cc..37f1984ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Element Synapse - Fixed server listening on both localhost and 0.0.0.0 [@tremor021](https://github.com/tremor021) ([#2376](https://github.com/community-scripts/ProxmoxVE/pull/2376)) - [core] cleanup (remove # App Default Values) [@MickLesk](https://github.com/MickLesk) ([#2356](https://github.com/community-scripts/ProxmoxVE/pull/2356)) - Fix: Kometa - Increase RAM and HDD resources [@tremor021](https://github.com/tremor021) ([#2367](https://github.com/community-scripts/ProxmoxVE/pull/2367)) - [core] cleanup (remove base_settings & unneeded comments) [@MickLesk](https://github.com/MickLesk) ([#2351](https://github.com/community-scripts/ProxmoxVE/pull/2351)) From f679a4a1dce99476633fa0bf7438b89aafb35b0b Mon Sep 17 00:00:00 2001 From: Scorpoon <22363852+Scorpoon@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:04:57 +0100 Subject: [PATCH 367/480] Missing ";" (#2380) --- ct/trilium.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/trilium.sh b/ct/trilium.sh index 83f93a2c3..f9a541ddd 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -27,7 +27,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt fi + if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Stopping ${APP}" From 21a29d72121dfd93cd0bf9b1e394281043cb94fa Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:10:09 +0100 Subject: [PATCH 368/480] Update CHANGELOG.md (#2381) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37f1984ed..b83696fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Missing ";" in ct/trilium.sh [@Scorpoon](https://github.com/Scorpoon) ([#2380](https://github.com/community-scripts/ProxmoxVE/pull/2380)) - Fix: Element Synapse - Fixed server listening on both localhost and 0.0.0.0 [@tremor021](https://github.com/tremor021) ([#2376](https://github.com/community-scripts/ProxmoxVE/pull/2376)) - [core] cleanup (remove # App Default Values) [@MickLesk](https://github.com/MickLesk) ([#2356](https://github.com/community-scripts/ProxmoxVE/pull/2356)) - Fix: Kometa - Increase RAM and HDD resources [@tremor021](https://github.com/tremor021) ([#2367](https://github.com/community-scripts/ProxmoxVE/pull/2367)) From 99813136fe9aa67d12862bd3ccb3f73fc4e58ee7 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:43:17 +0100 Subject: [PATCH 369/480] Rework error handeling (#2377) --- .../workflows/scripts/app-test/pr-build.func | 2 +- .../scripts/app-test/pr-install.func | 41 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.github/workflows/scripts/app-test/pr-build.func b/.github/workflows/scripts/app-test/pr-build.func index edc041ddd..360c15ede 100644 --- a/.github/workflows/scripts/app-test/pr-build.func +++ b/.github/workflows/scripts/app-test/pr-build.func @@ -250,7 +250,7 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community EOF' pct exec "$CTID" -- ash -c "apk add bash >/dev/null" fi - lxc-attach -n "$CTID" -- bash -c "$(< /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)" + lxc-attach -n "$CTID" -- bash -c "$(cat /root/actions-runner/_work/ProxmoxVE/ProxmoxVE/install/$var_install.sh)" $var_install.sh } diff --git a/.github/workflows/scripts/app-test/pr-install.func b/.github/workflows/scripts/app-test/pr-install.func index 03e82335e..49195f365 100644 --- a/.github/workflows/scripts/app-test/pr-install.func +++ b/.github/workflows/scripts/app-test/pr-install.func @@ -1,28 +1,31 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 community-scripts ORG -# Author: Michel Roegl-Brunner (michelroegl-brunner) +# Author: michelroegl-brunner # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE color() { return } + +SCRIPT_NAME="${BASH_SOURCE[0]:-unknown_script}" catch_errors() { - set -Eeuo pipefail + set -Euoe pipefail trap 'error_handler $LINENO "$BASH_COMMAND"' ERR } - error_handler() { local line_number="$1" local command="$2" - SCRIPT_NAME=$(basename "$0") - local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command $command" + local error_message="$SCRIPT_NAME: Failure in line $line_number while executing command '$command'" echo -e "\n$error_message" - exit 200 + exit 300 } + verb_ip6() { - STD="" - return + STD="silent" + silent() { + "$@" >/dev/null 2>&1 || error_handler "${BASH_LINENO[0]}" "$*" + } } msg_info() { @@ -40,11 +43,9 @@ msg_error() { local msg="$1" echo -e "${msg}\n" } - -RETRY_NUM=10 -RETRY_EVERY=3 + RETRY_NUM=10 + RETRY_EVERY=3 setting_up_container() { - sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen locale_line=$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print $1}' | head -n 1) echo "LANG=${locale_line}" >/etc/default/locale @@ -57,6 +58,7 @@ setting_up_container() { if [ "$(hostname -I)" != "" ]; then break fi + echo 1>&2 -en "No Network! " sleep $RETRY_EVERY done if [ "$(hostname -I)" = "" ]; then @@ -66,6 +68,8 @@ setting_up_container() { fi rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED systemctl disable -q --now systemd-networkd-wait-online.service + msg_ok "Set up Container OS" + msg_ok "Network Connected: $(hostname -I)" } network_check() { @@ -75,10 +79,11 @@ network_check() { } update_os() { - export DEBIAN_FRONTEND=noninteractive - apt-get update >/dev/null 2>&1 - apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade >/dev/null 2>&1 - rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED + msg_info "Updating Container OS" + apt-get update + apt-get -o Dpkg::Options::="--force-confold" -y dist-upgrade + rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED + msg_ok "Updated Container OS" } motd_ssh() { @@ -87,6 +92,4 @@ motd_ssh() { customize() { return -} - - +} \ No newline at end of file From f3c9e8f0130900021f1978600c293e739cce6a00 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 14 Feb 2025 08:06:03 +0100 Subject: [PATCH 370/480] Update api.func (#2378) --- misc/api.func | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/misc/api.func b/misc/api.func index 6c6301b86..00748d58b 100644 --- a/misc/api.func +++ b/misc/api.func @@ -39,7 +39,7 @@ post_to_api() { EOF ) - RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ + RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD") || true } @@ -87,7 +87,7 @@ post_to_api_vm() { EOF ) - RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ + RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD") || true } @@ -115,7 +115,7 @@ post_update_to_api() { EOF ) - RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ + RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD") || true From 1d928f7ea83b6805b8d2e74c397e09db9d6d8e91 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 09:01:58 +0100 Subject: [PATCH 371/480] Update CHANGELOG.md (#2386) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b83696fc8..3f291ca64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-14 + +### Changes + +### 📡 API + +- [API] Update api.func: Remove unwanted file creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2378](https://github.com/community-scripts/ProxmoxVE/pull/2378)) + ## 2025-02-13 ### Changes From fd9d64b34232f7a93be1737daa771d12976ada03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:29:25 +0100 Subject: [PATCH 372/480] Added configuration guide to json (#2389) --- json/rustdeskserver.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/rustdeskserver.json b/json/rustdeskserver.json index 583d5ba73..4ed6c3fab 100644 --- a/json/rustdeskserver.json +++ b/json/rustdeskserver.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "Check documentation on how to configure RustDesk Server. `https://rustdesk.com/docs/en/`", + "text": "Check our configuration guide for help: `https://github.com/community-scripts/ProxmoxVE/discussions/2388`", "type": "info" } ] From ec8c564e25ea720466e4984333aaffff4a3283d1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:33:42 +0100 Subject: [PATCH 373/480] Update CHANGELOG.md (#2391) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f291ca64..cc52b90a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### 🌐 Website + +- Fix: RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389)) + ### 📡 API - [API] Update api.func: Remove unwanted file creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2378](https://github.com/community-scripts/ProxmoxVE/pull/2378)) From afe4af2ff68889a370f346b70f2603d1fcc0584a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 10:34:55 +0100 Subject: [PATCH 374/480] Update CHANGELOG.md (#2392) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc52b90a6..e82fced28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website -- Fix: RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389)) +- RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389)) ### 📡 API From 1711e44a4d812b2ab67869d586e85a4119254f7b Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:32:26 +0100 Subject: [PATCH 375/480] [API]Add more enpoints to API (#2390) * Add pagination to API * Add pagination to API --- api/main.go | 283 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+) diff --git a/api/main.go b/api/main.go index 4b9442bc6..0227bf11e 100644 --- a/api/main.go +++ b/api/main.go @@ -11,6 +11,7 @@ import ( "log" "net/http" "os" + "strconv" "time" "github.com/gorilla/mux" @@ -31,6 +32,7 @@ func loadEnv() { } } +// DataModel represents a single document in MongoDB type DataModel struct { ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` CT_TYPE uint `json:"ct_type" bson:"ct_type"` @@ -56,6 +58,13 @@ type StatusModel struct { STATUS string `json:"status" bson:"status"` } +type CountResponse struct { + TotalEntries int64 `json:"total_entries"` + StatusCount map[string]int64 `json:"status_count"` + NSAPPCount map[string]int64 `json:"nsapp_count"` +} + +// ConnectDatabase initializes the MongoDB connection func ConnectDatabase() { loadEnv() @@ -78,6 +87,7 @@ func ConnectDatabase() { fmt.Println("Connected to MongoDB on 10.10.10.18") } +// UploadJSON handles API requests and stores data as a document in MongoDB func UploadJSON(w http.ResponseWriter, r *http.Request) { var input DataModel @@ -98,6 +108,7 @@ func UploadJSON(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(map[string]string{"message": "Data saved successfully"}) } +// UpdateStatus updates the status of a record based on RANDOM_ID func UpdateStatus(w http.ResponseWriter, r *http.Request) { var input StatusModel @@ -120,6 +131,7 @@ func UpdateStatus(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(map[string]string{"message": "Record updated successfully"}) } +// GetDataJSON fetches all data from MongoDB func GetDataJSON(w http.ResponseWriter, r *http.Request) { var records []DataModel ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) @@ -144,6 +156,270 @@ func GetDataJSON(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(records) } +func GetPaginatedData(w http.ResponseWriter, r *http.Request) { + page, _ := strconv.Atoi(r.URL.Query().Get("page")) + limit, _ := strconv.Atoi(r.URL.Query().Get("limit")) + if page < 1 { + page = 1 + } + if limit < 1 { + limit = 10 + } + skip := (page - 1) * limit + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + options := options.Find().SetSkip(int64(skip)).SetLimit(int64(limit)) + cursor, err := collection.Find(ctx, bson.M{}, options) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} + +func GetSummary(w http.ResponseWriter, r *http.Request) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + totalCount, err := collection.CountDocuments(ctx, bson.M{}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + statusCount := make(map[string]int64) + nsappCount := make(map[string]int64) + + pipeline := []bson.M{ + {"$group": bson.M{"_id": "$status", "count": bson.M{"$sum": 1}}}, + } + cursor, err := collection.Aggregate(ctx, pipeline) + if err == nil { + for cursor.Next(ctx) { + var result struct { + ID string `bson:"_id"` + Count int64 `bson:"count"` + } + if err := cursor.Decode(&result); err == nil { + statusCount[result.ID] = result.Count + } + } + } + + pipeline = []bson.M{ + {"$group": bson.M{"_id": "$nsapp", "count": bson.M{"$sum": 1}}}, + } + cursor, err = collection.Aggregate(ctx, pipeline) + if err == nil { + for cursor.Next(ctx) { + var result struct { + ID string `bson:"_id"` + Count int64 `bson:"count"` + } + if err := cursor.Decode(&result); err == nil { + nsappCount[result.ID] = result.Count + } + } + } + + response := CountResponse{ + TotalEntries: totalCount, + StatusCount: statusCount, + NSAPPCount: nsappCount, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) +} + +func GetByNsapp(w http.ResponseWriter, r *http.Request) { + nsapp := r.URL.Query().Get("nsapp") + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{"nsapp": nsapp}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} + +func GetByDateRange(w http.ResponseWriter, r *http.Request) { + + startDate := r.URL.Query().Get("start_date") + endDate := r.URL.Query().Get("end_date") + + if startDate == "" || endDate == "" { + http.Error(w, "Both start_date and end_date are required", http.StatusBadRequest) + return + } + + start, err := time.Parse("2006-01-02T15:04:05.999999+00:00", startDate+"T00:00:00+00:00") + if err != nil { + http.Error(w, "Invalid start_date format", http.StatusBadRequest) + return + } + + end, err := time.Parse("2006-01-02T15:04:05.999999+00:00", endDate+"T23:59:59+00:00") + if err != nil { + http.Error(w, "Invalid end_date format", http.StatusBadRequest) + return + } + + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{ + "created_at": bson.M{ + "$gte": start, + "$lte": end, + }, + }) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} +func GetByStatus(w http.ResponseWriter, r *http.Request) { + status := r.URL.Query().Get("status") + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{"status": status}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} + +func GetByOS(w http.ResponseWriter, r *http.Request) { + osType := r.URL.Query().Get("os_type") + osVersion := r.URL.Query().Get("os_version") + var records []DataModel + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{"os_type": osType, "os_version": osVersion}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + records = append(records, record) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(records) +} + +func GetErrors(w http.ResponseWriter, r *http.Request) { + errorCount := make(map[string]int) + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + cursor, err := collection.Find(ctx, bson.M{"error": bson.M{"$ne": ""}}) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer cursor.Close(ctx) + + for cursor.Next(ctx) { + var record DataModel + if err := cursor.Decode(&record); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if record.ERROR != "" { + errorCount[record.ERROR]++ + } + } + + type ErrorCountResponse struct { + Error string `json:"error"` + Count int `json:"count"` + } + + var errorCounts []ErrorCountResponse + for err, count := range errorCount { + errorCounts = append(errorCounts, ErrorCountResponse{ + Error: err, + Count: count, + }) + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(struct { + ErrorCounts []ErrorCountResponse `json:"error_counts"` + }{ + ErrorCounts: errorCounts, + }) +} func main() { ConnectDatabase() @@ -152,6 +428,13 @@ func main() { router.HandleFunc("/upload", UploadJSON).Methods("POST") router.HandleFunc("/upload/updatestatus", UpdateStatus).Methods("POST") router.HandleFunc("/data/json", GetDataJSON).Methods("GET") + router.HandleFunc("/data/paginated", GetPaginatedData).Methods("GET") + router.HandleFunc("/data/summary", GetSummary).Methods("GET") + router.HandleFunc("/data/nsapp", GetByNsapp).Methods("GET") + router.HandleFunc("/data/date", GetByDateRange).Methods("GET") + router.HandleFunc("/data/status", GetByStatus).Methods("GET") + router.HandleFunc("/data/os", GetByOS).Methods("GET") + router.HandleFunc("/data/errors", GetErrors).Methods("GET") c := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, From f0ca0c3379059ec2ceb308445acb7d35d678eb1e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 11:53:42 +0100 Subject: [PATCH 376/480] Update CHANGELOG.md (#2395) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e82fced28..d17da160d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 📡 API +- [API]Add more enpoints to API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2390](https://github.com/community-scripts/ProxmoxVE/pull/2390)) - [API] Update api.func: Remove unwanted file creation [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2378](https://github.com/community-scripts/ProxmoxVE/pull/2378)) ## 2025-02-13 From 1789d181aa7c04463633b503fec1c75470c30ae0 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:09:35 +0100 Subject: [PATCH 377/480] Fix homarr (#2369) * fix homarr script * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * fix nginx hostname * Update homarr-install.sh * Update homarr-install.sh * Update homarr.sh * Update homarr-install.sh * Update homarr.sh * Update install.func * Update homarr.sh * Update homarr.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update build.func * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr-install.sh * Update homarr.json * Update homarr-install.sh * Update homarr-install.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update homarr.sh * Update install.func * Update build.func * Update homarr-install.sh * fix comments --- ct/homarr.sh | 25 ++++++++++++---- install/homarr-install.sh | 60 ++++++++++++++++++++++++++++++--------- json/homarr.json | 2 +- 3 files changed, 67 insertions(+), 20 deletions(-) diff --git a/ct/homarr.sh b/ct/homarr.sh index 0fc3ce9fe..ced4e467a 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) +# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) | Co-Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homarr.dev/ @@ -15,6 +15,7 @@ var_version="12" var_unprivileged="1" header_info "$APP" + variables color catch_errors @@ -37,7 +38,7 @@ fi RELEASE=$(curl -s https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Services" + msg_info "Stopping Services (Patience)" systemctl stop homarr msg_ok "Services Stopped" @@ -55,9 +56,23 @@ fi mv /opt/homarr-data-backup/.env /opt/homarr/.env cd /opt/homarr pnpm install &>/dev/null - pnpm run db:migration:sqlite:run &>/dev/null pnpm build &>/dev/null - mkdir build + cp /opt/homarr/apps/nextjs/next.config.ts . + cp /opt/homarr/apps/nextjs/package.json . + cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations + cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr + mkdir -p /appdata/redis + cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf + rm /etc/nginx/nginx.conf + mkdir -p /etc/nginx/templates + cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf + + mkdir -p /opt/homarr/apps/cli + cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs + echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr + chmod +x /usr/bin/homarr + + mkdir /opt/homarr/build cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP}" @@ -79,4 +94,4 @@ 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}:3000${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7575${CL}" diff --git a/install/homarr-install.sh b/install/homarr-install.sh index 6a0ba36b6..bb2aaae73 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -3,7 +3,7 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/ajnart/homarr +# Source: https://github.com/homarr-labs/homarr source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color @@ -20,10 +20,13 @@ $STD apt-get install -y \ curl \ redis-server \ ca-certificates \ - gnupg \ + gpg \ make \ g++ \ - build-essential + build-essential \ + nginx \ + gettext \ + openssl msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -46,27 +49,56 @@ unzip -q v${RELEASE}.zip mv homarr-${RELEASE} /opt/homarr mkdir -p /opt/homarr_db touch /opt/homarr_db/db.sqlite -AUTH_SECRET="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)" - +cd /opt/homarr cat </opt/homarr/.env -AUTH_SECRET='${AUTH_SECRET}' DB_DRIVER='better-sqlite3' +DB_DIALECT='sqlite' SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}' DB_URL='/opt/homarr_db/db.sqlite' TURBO_TELEMETRY_DISABLED=1 +AUTH_PROVIDERS='credentials' +NODE_ENV='production' EOF - -cd /opt/homarr $STD pnpm install -$STD pnpm run db:migration:sqlite:run $STD pnpm build -mkdir build -cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node -echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Homarr" -msg_info "Creating Service" +msg_info "Copying build and config files" +cp /opt/homarr/apps/nextjs/next.config.ts . +cp /opt/homarr/apps/nextjs/package.json . +cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations +cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr +mkdir -p /appdata/redis +cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf +mkdir -p /etc/nginx/templates +rm /etc/nginx/nginx.conf +cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf +mkdir -p /opt/homarr/apps/cli +cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs +echo $'#!/bin/bash\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr +chmod +x /usr/bin/homarr +mkdir /opt/homarr/build +cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Finished copying" + +msg_info "Creating Services" +cat <<'EOF' >/opt/run_homarr.sh +#!/bin/bash +export DB_DIALECT='sqlite' +export AUTH_SECRET=$(openssl rand -base64 32) +node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT +export HOSTNAME=$(ip route get 1.1.1.1 | grep -oP 'src \K[^ ]+') +envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf +nginx -g 'daemon off;' & +redis-server /opt/homarr/packages/redis/redis.conf & +node apps/tasks/tasks.cjs & +node apps/websocket/wssServer.cjs & +node apps/nextjs/server.js & PID=$! +wait $PID +EOF +chmod +x /opt/run_homarr.sh cat </etc/systemd/system/homarr.service [Unit] Description=Homarr Service @@ -76,7 +108,7 @@ After=network.target Type=exec WorkingDirectory=/opt/homarr EnvironmentFile=-/opt/homarr/.env -ExecStart=/usr/bin/pnpm start +ExecStart=/opt/run_homarr.sh [Install] WantedBy=multi-user.target diff --git a/json/homarr.json b/json/homarr.json index ad0b72498..abbfda375 100644 --- a/json/homarr.json +++ b/json/homarr.json @@ -8,7 +8,7 @@ "type": "ct", "updateable": true, "privileged": false, - "interface_port": 3000, + "interface_port": 7575, "documentation": null, "website": "https://homarr.dev/", "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/homarr.svg", From 80e7e2f5b600b05440e1b8549acae7e331b9d308 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:10:16 +0100 Subject: [PATCH 378/480] [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) (#2394) * Update bug_report.yml * Create feature_request.yml * Create task.yml * Update config.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yml | 33 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/task.yml | 25 ++++++++++++++++ 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/task.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 12bd44f84..c3dae1a96 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: "🐞 Script Issue Report" description: Report a specific issue with a script. For other inquiries, please use the Discussions section. - +labels: ["bug"] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index e9a13bc4d..c38d4d6e9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,7 +3,7 @@ contact_links: - name: 🤔 Questions and Help url: https://github.com/community-scripts/ProxmoxVE/discussions about: For suggestions or questions, please use the Discussions section. - - name: 🌟 Feature request + - name: 🌟 new Script request url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script about: For feature/script requests, please use the Discussions section. - name: 💻 Discord diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..7f065275f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,33 @@ +name: "✨ Feature Request" +description: "Suggest a new feature or enhancement." +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + # ✨ **Feature Request** + Have an idea for a new feature? Share your thoughts below! + + - type: input + id: feature_summary + attributes: + label: "🌟 Briefly describe the feature" + placeholder: "e.g., Add support for XYZ" + validations: + required: true + + - type: textarea + id: feature_description + attributes: + label: "📝 Detailed description" + placeholder: "Explain the feature in detail" + validations: + required: true + + - type: textarea + id: use_case + attributes: + label: "💡 Why is this useful?" + placeholder: "Describe the benefit of this feature" + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml new file mode 100644 index 000000000..bf5569298 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/task.yml @@ -0,0 +1,25 @@ +name: "🛠️ Task / General Request" +description: "Request a general task, improvement, or refactor." +labels: ["task"] +body: + - type: markdown + attributes: + value: | + # 🛠️ **Task / General Request** + Request a task that isn't a bug or feature request. + + - type: input + id: task_summary + attributes: + label: "📌 Task summary" + placeholder: "e.g., Refactor XYZ" + validations: + required: true + + - type: textarea + id: task_details + attributes: + label: "📋 Task details" + placeholder: "Explain what needs to be done" + validations: + required: true From a045dc80126a8166dfa7a1215b4cab736880e187 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 12:29:26 +0100 Subject: [PATCH 379/480] Update CHANGELOG.md (#2396) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d17da160d..ceaa0664a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,10 +21,18 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### 🚀 Updated Scripts + +- Fix homarr [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2369](https://github.com/community-scripts/ProxmoxVE/pull/2369)) + ### 🌐 Website - RustDesk Server - Added configuration guide to json [@tremor021](https://github.com/tremor021) ([#2389](https://github.com/community-scripts/ProxmoxVE/pull/2389)) +### 🧰 Maintenance + +- [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) [@MickLesk](https://github.com/MickLesk) ([#2394](https://github.com/community-scripts/ProxmoxVE/pull/2394)) + ### 📡 API - [API]Add more enpoints to API [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2390](https://github.com/community-scripts/ProxmoxVE/pull/2390)) From 29806c452573db3175c6fddb6c2c4a8a87ca32a0 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 14 Feb 2025 15:31:34 +0100 Subject: [PATCH 380/480] Update script-test.yml (#2399) --- .github/workflows/script-test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml index 3428cfce7..21d8d917a 100644 --- a/.github/workflows/script-test.yml +++ b/.github/workflows/script-test.yml @@ -89,10 +89,12 @@ jobs: chmod +x "$INSTALL_SCRIPT" RUNNING_FILE=$FILE fi - git checkout origin/main .github/workflows/scripts/app-test/pr-build.func - git checkout origin/main .github/workflows/scripts/app-test/pr-install.func - git checkout origin/main .github/workflows/scripts/app-test/pr-alpine-install.func - git checkout origin/main .github/workflows/scripts/app-test/pr-create-lxc.sh + git remote add community-scripts https://github.com/community-scripts/ProxmoxVE.git + git fetch community-scripts + git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-build.func + git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-install.func + git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-alpine-install.func + git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-create-lxc.sh chmod +x $RUNNING_FILE chmod +x .github/workflows/scripts/app-test/pr-create-lxc.sh chmod +x .github/workflows/scripts/app-test/pr-install.func From 347a23ad6002202b2a9365141c4d0a2bfda50e6c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 16:04:03 +0100 Subject: [PATCH 381/480] Update CHANGELOG.md (#2402) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ceaa0664a..21dc72572 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance +- [gh] Update script-test.yml [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2399](https://github.com/community-scripts/ProxmoxVE/pull/2399)) - [gh] Introducing new Issue Github Template Feature (Bug, Feature, Task) [@MickLesk](https://github.com/MickLesk) ([#2394](https://github.com/community-scripts/ProxmoxVE/pull/2394)) ### 📡 API From 7c5b072303cf92cb53eda461439586aa4ab41455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:22:29 +0100 Subject: [PATCH 382/480] Fix RustDesk slug in json (#2411) --- json/rustdeskserver.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/rustdeskserver.json b/json/rustdeskserver.json index 4ed6c3fab..7536a6a31 100644 --- a/json/rustdeskserver.json +++ b/json/rustdeskserver.json @@ -1,6 +1,6 @@ { "name": "RustDesk Server", - "slug": "rustdesk-server", + "slug": "rustdeskserver", "categories": [ 21 ], @@ -36,4 +36,4 @@ "type": "info" } ] -} \ No newline at end of file +} From 88b20e55455f054521450a0694b49d1f2e17ca84 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 11:21:30 +0100 Subject: [PATCH 383/480] Update CHANGELOG.md (#2414) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21dc72572..0cb94a01d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-15 + +### Changes + +### ❔ Unlabelled + +- Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411)) + ## 2025-02-14 ### Changes From c4ed0738cfdd64b49be9770b2e103e88cde23f0b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 12:21:59 +0100 Subject: [PATCH 384/480] Update CHANGELOG.md (#2417) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cb94a01d..692002e65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes -### ❔ Unlabelled +### 🌐 Website - Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411)) From 4cf24c54d740ed4ef4b356dd767186ecca12f2f1 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:13:48 +0100 Subject: [PATCH 385/480] add: section to update old service files (#2416) --- ct/homarr.sh | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/ct/homarr.sh b/ct/homarr.sh index ced4e467a..4dbb9654e 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -34,6 +34,43 @@ if [[ -f /opt/homarr/database/db.sqlite ]]; then msg_error " - https://github.com/community-scripts/ProxmoxVE/discussions/1551" msg_error " - https://homarr.dev/docs/getting-started/after-the-installation/#importing-a-zip-from-version-before-100" exit 1 +fi +if [[ ! -f /opt/run_homarr.sh ]]; then + msg_info "Detected outdated and missing service files" + msg_error "Warning - The port of homarr changed from 3000 to 7575" + apt-get install -y nginx gettext openssl gpg &>/dev/null + sed -i '/^NODE_ENV=/d' /opt/homarr/.env && echo "NODE_ENV='production'" >> /opt/homarr/.env + sed -i '/^DB_DIALECT=/d' /opt/homarr/.env && echo "DB_DIALECT='sqlite'" >> /opt/homarr/.env + cat <<'EOF' >/opt/run_homarr.sh +#!/bin/bash +export DB_DIALECT='sqlite' +export AUTH_SECRET=$(openssl rand -base64 32) +node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT +export HOSTNAME=$(ip route get 1.1.1.1 | grep -oP 'src \K[^ ]+') +envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf +nginx -g 'daemon off;' & +redis-server /opt/homarr/packages/redis/redis.conf & +node apps/tasks/tasks.cjs & +node apps/websocket/wssServer.cjs & +node apps/nextjs/server.js & PID=$! +wait $PID +EOF + chmod +x /opt/run_homarr.sh + rm /etc/systemd/system/homarr.service + cat </etc/systemd/system/homarr.service +[Unit] +Description=Homarr Service +After=network.target +[Service] +Type=exec +WorkingDirectory=/opt/homarr +EnvironmentFile=-/opt/homarr/.env +ExecStart=/opt/run_homarr.sh +[Install] +WantedBy=multi-user.target +EOF + msg_ok "Updated Services" + systemctl daemon-reload fi RELEASE=$(curl -s https://api.github.com/repos/homarr-labs/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then @@ -47,7 +84,7 @@ fi cp /opt/homarr/.env /opt/homarr-data-backup/.env msg_ok "Backup Data" - msg_info "Updating ${APP} to v${RELEASE}" + msg_info "Updating and rebuilding ${APP} to v${RELEASE} (Patience)" wget -q "https://github.com/homarr-labs/homarr/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip rm -rf v${RELEASE}.zip From b7df0ee936e524db2c3e3e019e6bdf46067f0632 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:15:37 +0100 Subject: [PATCH 386/480] Update CHANGELOG.md (#2420) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 692002e65..c5b483dde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### 🚀 Updated Scripts + +- Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416)) + ### 🌐 Website - Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411)) From 60e32a05cd60c7f9bf587dde4cefe4ec61040988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:46:37 +0100 Subject: [PATCH 387/480] Update MagicMirror install and update scripts (#2409) --- ct/magicmirror.sh | 51 ++++++++++++++++++++++++++-------- install/magicmirror-install.sh | 43 +++++++++++++++------------- 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index bb5763557..1d245c8a6 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://magicmirror.builders/ @@ -27,18 +27,45 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - echo "Installed NPM..." + RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]]; then touch /opt/${APP}_version.txt; fi + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop magicmirror + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + 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 + temp_file=$(mktemp) + wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" + tar -xzf "$temp_file" + rm -rf /opt/magicmirror + mv MagicMirror-${RELEASE} /opt/magicmirror + cd /opt/magicmirror + npm run install-mm &> /dev/null + 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 + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting Service" + systemctl start magicmirror + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -f $temp_file + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." fi - msg_info "Updating ${APP} LXC" - cd /opt/magicmirror - git pull &>/dev/null - npm install --only=prod --omit=dev &>/dev/null - msg_ok "Updated Successfully" exit } @@ -49,4 +76,4 @@ 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}:8080${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/install/magicmirror-install.sh b/install/magicmirror-install.sh index 3a593e427..defa2387d 100644 --- a/install/magicmirror-install.sh +++ b/install/magicmirror-install.sh @@ -1,9 +1,10 @@ #!/usr/bin/env bash # Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) +# Author: tteck (tteckster) | Co-Author Slaviša Arežina (tremor021) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://magicmirror.builders/ source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color @@ -14,12 +15,11 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y git -$STD apt-get install -y ca-certificates -$STD apt-get install -y gnupg +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -33,14 +33,14 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Setting up MagicMirror Repository" -$STD git clone https://github.com/MichMich/MagicMirror /opt/magicmirror -msg_ok "Set up MagicMirror Repository" - -msg_info "Installing MagicMirror" +msg_info "Setup MagicMirror" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/MagicMirrorOrg/MagicMirror/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/MagicMirrorOrg/MagicMirror/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv MagicMirror-${RELEASE} /opt/magicmirror cd /opt/magicmirror -$STD npm install --only=prod --omit=dev - +$STD npm run install-mm cat </opt/magicmirror/config/config.js let config = { address: "0.0.0.0", @@ -130,11 +130,12 @@ let config = { /*************** DO NOT EDIT THE LINE BELOW ***************/ if (typeof module !== "undefined") {module.exports = config;} EOF -msg_ok "Installed MagicMirror" +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup MagicMirror" msg_info "Creating Service" -service_path="/etc/systemd/system/magicmirror.service" -echo "[Unit] +cat </etc/systemd/system/magicmirror.service +[Unit] Description=Magic Mirror After=network.target StartLimitIntervalSec=0 @@ -145,17 +146,19 @@ Restart=always RestartSec=1 User=root WorkingDirectory=/opt/magicmirror/ -ExecStart=/usr/bin/node serveronly +ExecStart=/usr/bin/npm run server [Install] -WantedBy=multi-user.target" >$service_path -$STD systemctl enable --now magicmirror +WantedBy=multi-user.target +EOF +systemctl enable --now magicmirror msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -rf $temp_file $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" From 3ef1ac434a849000d5a8eef2516774233822a5f3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 17:23:27 +0100 Subject: [PATCH 388/480] Update CHANGELOG.md (#2422) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5b483dde..6accb67cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409)) - Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416)) ### 🌐 Website From ecd13dd5a493e0a934c37b31c4a732edfec7fc42 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Sat, 15 Feb 2025 17:51:51 +0100 Subject: [PATCH 389/480] [GH] Update script-test Workflow (#2415) * Update script-test.yml * Update script-test.yml --- .github/workflows/script-test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/script-test.yml b/.github/workflows/script-test.yml index 21d8d917a..6b9e100eb 100644 --- a/.github/workflows/script-test.yml +++ b/.github/workflows/script-test.yml @@ -91,6 +91,10 @@ jobs: fi git remote add community-scripts https://github.com/community-scripts/ProxmoxVE.git git fetch community-scripts + rm -f .github/workflows/scripts/app-test/pr-build.func || true + rm -f .github/workflows/scripts/app-test/pr-install.func || true + rm -f .github/workflows/scripts/app-test/pr-alpine-install.func || true + rm -f .github/workflows/scripts/app-test/pr-create-lxc.sh || true git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-build.func git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-install.func git checkout community-scripts/main -- .github/workflows/scripts/app-test/pr-alpine-install.func From 18bd71da894295a883c79f9fd3ae1863334e9ff0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 17:52:17 +0100 Subject: [PATCH 390/480] Update CHANGELOG.md (#2423) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6accb67cf..26c2d1bb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,13 +23,17 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409)) - Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416)) +- Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409)) ### 🌐 Website - Fix RustDesk slug in json [@tremor021](https://github.com/tremor021) ([#2411](https://github.com/community-scripts/ProxmoxVE/pull/2411)) +### 🧰 Maintenance + +- [GH] Update script-test Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2415](https://github.com/community-scripts/ProxmoxVE/pull/2415)) + ## 2025-02-14 ### Changes From 0777ddfbfc74bf4ab68a085d78f92f48ed988b73 Mon Sep 17 00:00:00 2001 From: zimmra <28514085+zimmra@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:03:05 -0800 Subject: [PATCH 391/480] Setup cron in install/freshrss-install.sh (#2412) --- install/freshrss-install.sh | 7 +++++++ json/freshrss.json | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/install/freshrss-install.sh b/install/freshrss-install.sh index 8a6a1135c..c6c5c493f 100644 --- a/install/freshrss-install.sh +++ b/install/freshrss-install.sh @@ -50,6 +50,13 @@ chmod -R g+rX /opt/freshrss chmod -R g+w /opt/freshrss/data/ msg_ok "Installed FreshRSS" +msg_info "Setting up cron job for feed refresh" +cat </etc/cron.d/freshrss-actualize +*/15 * * * * www-data /bin/php -f /opt/freshrss/app/actualize_script.php > /tmp/FreshRSS.log 2>&1 +EOF +chmod 644 /etc/cron.d/freshrss-actualize +msg_ok "Set up Cron - if you need to modify the timing edit file /etc/cron.d/freshrss-actualize" + msg_info "Creating Service" cat </etc/apache2/sites-available/freshrss.conf diff --git a/json/freshrss.json b/json/freshrss.json index de1aa28a4..382f5c5cc 100644 --- a/json/freshrss.json +++ b/json/freshrss.json @@ -34,6 +34,10 @@ { "text": "Database credentials: `cat ~/freshrss.creds`", "type": "info" + }, + { + "text": "Per FreshRSS documentation, a cron job to actualize FreshRSS will be setup at `/etc/cron.d/freshrss-actualize`. This can be adjusted as needed", + "type": "info" } ] } From 53196c7603666fcf6f9ef983bbe99d9e202589b5 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:04:59 +0100 Subject: [PATCH 392/480] Update CHANGELOG.md (#2425) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c2d1bb0..d26c03ca5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Setup cron in install/freshrss-install.sh [@zimmra](https://github.com/zimmra) ([#2412](https://github.com/community-scripts/ProxmoxVE/pull/2412)) - Fix: Homarr update service files [@CrazyWolf13](https://github.com/CrazyWolf13) ([#2416](https://github.com/community-scripts/ProxmoxVE/pull/2416)) - Update MagicMirror install and update scripts [@tremor021](https://github.com/tremor021) ([#2409](https://github.com/community-scripts/ProxmoxVE/pull/2409)) From be27905776f6f99dc4cca1db4db0ac6330d79e38 Mon Sep 17 00:00:00 2001 From: Carl Furrow Date: Sun, 16 Feb 2025 02:47:59 -0500 Subject: [PATCH 393/480] Fix: Grist update no longer removes previous user data (#2428) * fix: copy previous user files from /opt/grist_bak related to issue #2421 * chore: add more logging when running update scripts they can take a long time, and a user may think its stuck --- ct/grist.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ct/grist.sh b/ct/grist.sh index 1b5743e74..83035b0ff 100644 --- a/ct/grist.sh +++ b/ct/grist.sh @@ -34,18 +34,36 @@ function update_script() { msg_ok "Stopped ${APP} Service" msg_info "Updating ${APP} to v${RELEASE}" + cd /opt rm -rf grist_bak mv grist grist_bak wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip unzip -q v$RELEASE.zip mv grist-core-${RELEASE} grist - cp -n /opt/grist_bak/.env /opt/grist/.env + + mkdir -p grist/docs + + cp -n grist_bak/.env grist/.env || true + cp -r grist_bak/docs/* grist/docs/ || true + cp grist_bak/grist-sessions.db grist/grist-sessions.db || true + cp grist_bak/landing.db grist/landing.db || true + cd grist + msg_info "Installing Dependencies" yarn install >/dev/null 2>&1 + msg_ok "Installed Dependencies" + + msg_info "Building" yarn run build:prod >/dev/null 2>&1 + msg_ok "Done building" + + msg_info "Installing Python" yarn run install:python >/dev/null 2>&1 + msg_ok "Installed Python" + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to v${RELEASE}" msg_info "Starting ${APP} Service" From bca944034ade669ba62fe4d5d36e02a1a75c33ab Mon Sep 17 00:00:00 2001 From: Emik Date: Sun, 16 Feb 2025 17:16:32 +0800 Subject: [PATCH 394/480] fix version typo (#2430) --- vm/ubuntu2410-vm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/ubuntu2410-vm.sh b/vm/ubuntu2410-vm.sh index 4f78d256c..69e2f5359 100644 --- a/vm/ubuntu2410-vm.sh +++ b/vm/ubuntu2410-vm.sh @@ -419,7 +419,7 @@ else fi msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." -msg_info "Retrieving the URL for the Ubuntu 24.0 Disk Image" +msg_info "Retrieving the URL for the Ubuntu 24.10 Disk Image" URL=https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img sleep 2 msg_ok "${CL}${BL}${URL}${CL}" From 345e109d9f518c83e4f8ec20277e7351439fc683 Mon Sep 17 00:00:00 2001 From: bannert <58707896+bannert1337@users.noreply.github.com> Date: Sun, 16 Feb 2025 11:33:52 +0100 Subject: [PATCH 395/480] Update Graylog icon (#2434) Change Graylog icon to SVG from selfhst icons --- json/graylog.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/graylog.json b/json/graylog.json index 66226f3d0..66cb9c13d 100644 --- a/json/graylog.json +++ b/json/graylog.json @@ -11,7 +11,7 @@ "interface_port": 9000, "documentation": "https://go2docs.graylog.org/current/home.htm", "website": "https://graylog.org/", - "logo": "https://graylog.org/wp-content/uploads/2023/11/gl-logo-horiz-all-white-1200w-300x96.png.webp", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/graylog.svg", "description": "Graylog is a free and open log management platform.", "install_methods": [ { @@ -40,4 +40,4 @@ "type": "info" } ] -} \ No newline at end of file +} From 505cb234671f6112929a786cfc79da31dec4e98e Mon Sep 17 00:00:00 2001 From: bannert <58707896+bannert1337@users.noreply.github.com> Date: Sun, 16 Feb 2025 11:34:02 +0100 Subject: [PATCH 396/480] Debian icon update (#2433) * Update Debian LXC icon Change Debian LXC icon to SVG from selfhst icons * Update Debian VM icon Change Debian VM icon to SVG from selfhst icons --- json/debian-vm.json | 2 +- json/debian.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/json/debian-vm.json b/json/debian-vm.json index 7727315ea..96909d727 100644 --- a/json/debian-vm.json +++ b/json/debian-vm.json @@ -11,7 +11,7 @@ "interface_port": null, "documentation": null, "website": "https://www.debian.org/", - "logo": "https://seeklogo.com/images/D/debian-logo-C136FDAF9E-seeklogo.com.png", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/debian.svg", "description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms", "install_methods": [ { diff --git a/json/debian.json b/json/debian.json index 2d6af1492..81cfae07a 100644 --- a/json/debian.json +++ b/json/debian.json @@ -11,7 +11,7 @@ "interface_port": null, "documentation": null, "website": "https://www.debian.org/", - "logo": "https://seeklogo.com/images/D/debian-logo-C136FDAF9E-seeklogo.com.png", + "logo": "https://raw.githubusercontent.com/selfhst/icons/refs/heads/main/svg/debian.svg", "description": "Debian Linux is a distribution that emphasizes free software. It supports many hardware platforms.", "install_methods": [ { @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From a646a035d88709770d817fca2bed6c29ff82d878 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 16 Feb 2025 12:00:33 +0100 Subject: [PATCH 397/480] Update CHANGELOG.md (#2435) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d26c03ca5..e34fd05bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,20 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-16 + +### Changes + +### 🚀 Updated Scripts + +- Fix: Typo in Ubuntu 24.10 VM Script [@PhoenixEmik](https://github.com/PhoenixEmik) ([#2430](https://github.com/community-scripts/ProxmoxVE/pull/2430)) +- Fix: Grist update no longer removes previous user data [@cfurrow](https://github.com/cfurrow) ([#2428](https://github.com/community-scripts/ProxmoxVE/pull/2428)) + +### 🌐 Website + +- Debian icon update [@bannert1337](https://github.com/bannert1337) ([#2433](https://github.com/community-scripts/ProxmoxVE/pull/2433)) +- Update Graylog icon [@bannert1337](https://github.com/bannert1337) ([#2434](https://github.com/community-scripts/ProxmoxVE/pull/2434)) + ## 2025-02-15 ### Changes From 746f19b0b8969d40294db0d2279f1b47963b6738 Mon Sep 17 00:00:00 2001 From: V1d1o7 <56764154+V1d1o7@users.noreply.github.com> Date: Mon, 17 Feb 2025 02:30:34 -0500 Subject: [PATCH 398/480] Update zipline-install.sh (#2444) Updated secret generation inline with official docs --- install/zipline-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/zipline-install.sh b/install/zipline-install.sh index 0ff850a90..3584aea7b 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -40,7 +40,7 @@ msg_info "Setting up PostgreSQL" DB_NAME=ziplinedb DB_USER=zipline DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" -SECRET_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +SECRET_KEY="$(openssl rand -base64 42 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" @@ -93,4 +93,4 @@ customize msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" From ee8446849864ce6e626e45f335935bd11dbb6308 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 09:44:45 +0100 Subject: [PATCH 399/480] Update CHANGELOG.md (#2445) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e34fd05bb..73893c164 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-17 + +### Changes + +### 🚀 Updated Scripts + +- Fix: Zipline increase SECRET to 42 chars [@V1d1o7](https://github.com/V1d1o7) ([#2444](https://github.com/community-scripts/ProxmoxVE/pull/2444)) + ## 2025-02-16 ### Changes From e22a6dad6f10a992a9497ea6759e371dec004b2e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:22:34 +0100 Subject: [PATCH 400/480] Zipline: Prepare for Version 4.0.0 (#2455) * Fix: Zipline Installation for V4 * Fix Zipline --- ct/zipline.sh | 12 +++++++++--- install/zipline-install.sh | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/ct/zipline.sh b/ct/zipline.sh index 63c1c8479..4f5905847 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -26,6 +26,12 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi + if ! command -v pnpm &>/dev/null; then + msg_info "Installing pnpm" + #export NODE_OPTIONS=--openssl-legacy-provider + npm install -g pnpm@latest &>/dev/null + msg_ok "Installed pnpm" + fi RELEASE=$(curl -s https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then msg_info "Stopping ${APP}" @@ -40,8 +46,8 @@ function update_script() { mv zipline-${RELEASE} /opt/zipline cd /opt/zipline mv /opt/.env /opt/zipline/.env - yarn install &>/dev/null - yarn build &>/dev/null + pnpm install &>/dev/null + pnpm build &>/dev/null echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP}" @@ -66,4 +72,4 @@ 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}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/install/zipline-install.sh b/install/zipline-install.sh index 3584aea7b..1380da9c7 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -33,7 +33,7 @@ msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs -$STD npm install -g yarn +$STD npm install -g pnpm msg_ok "Installed Node.js" msg_info "Setting up PostgreSQL" @@ -60,13 +60,15 @@ wget -q "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip mv zipline-${RELEASE} /opt/zipline cd /opt/zipline -mv .env.local.example .env -sudo sed -i "s|CORE_SECRET=.*|CORE_SECRET=\"$SECRET_KEY\"|" /opt/zipline/.env -sudo sed -i "s|CORE_RETURN_HTTPS=.*|CORE_RETURN_HTTPS=false|" /opt/zipline/.env -sudo sed -i "s|CORE_DATABASE_URL=.*|CORE_DATABASE_URL=\"postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME\"|" /opt/zipline/.env +cat </opt/zipline/.env +DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME +CORE_SECRET=$SECRET_KEY +CORE_HOSTNAME=0.0.0.0 +CORE_PORT=3000 CORE_RETURN_HTTPS=false -$STD yarn install -$STD yarn build +EOF +$STD pnpm install +$STD pnpm build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Zipline" @@ -78,18 +80,17 @@ After=network.target [Service] WorkingDirectory=/opt/zipline -ExecStart=/usr/bin/yarn start +ExecStart=/usr/bin/pnpm start Restart=on-failure [Install] WantedBy=multi-user.target EOF -systemctl enable -q --now zipline.service +systemctl enable -q --now zipline msg_ok "Created Service" motd_ssh customize - msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean From ca20d52ac1ada8605f06110c5bd37059d65e7530 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:28:19 +0100 Subject: [PATCH 401/480] Update CHANGELOG.md (#2456) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73893c164..25beda213 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### 💥 Breaking Changes + +- Zipline: Prepare for Version 4.0.0 [@MickLesk](https://github.com/MickLesk) ([#2455](https://github.com/community-scripts/ProxmoxVE/pull/2455)) + ### 🚀 Updated Scripts - Fix: Zipline increase SECRET to 42 chars [@V1d1o7](https://github.com/V1d1o7) ([#2444](https://github.com/community-scripts/ProxmoxVE/pull/2444)) From 54929e4b0df948e4aa745ddec2d10bc71762a646 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:08:30 +0100 Subject: [PATCH 402/480] Update zipline-install.sh --- install/zipline-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/zipline-install.sh b/install/zipline-install.sh index 1380da9c7..8a705eaec 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -40,7 +40,7 @@ msg_info "Setting up PostgreSQL" DB_NAME=ziplinedb DB_USER=zipline DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" -SECRET_KEY="$(openssl rand -base64 42 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +SECRET_KEY="$(openssl rand -base64 42 | tr -dc 'a-zA-Z0-9')" $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" From 3957b46d984f7a2bf52bf72d516a08372d4a09e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Diot?= <57175294+TheophileDiot@users.noreply.github.com> Date: Tue, 18 Feb 2025 08:59:55 +0100 Subject: [PATCH 403/480] Update BunkerWeb installation scripts and configuration to follow the official documentation for the latest version (#2466) --- ct/bunkerweb.sh | 4 ++-- install/bunkerweb-install.sh | 3 +-- json/bunkerweb.json | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index 9912aea2a..1cbc68d25 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="BunkerWeb" var_tags="webserver" var_cpu="2" -var_ram="1024" +var_ram="4096" var_disk="4" var_os="debian" var_version="12" @@ -34,7 +34,7 @@ Pin: version ${RELEASE} Pin-Priority: 1001 EOF apt-get update - apt-get install -y nginx=1.26.2* + apt-get install -y nginx=1.26.3* apt-get install -y bunkerweb=${RELEASE} echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP} to ${RELEASE}" diff --git a/install/bunkerweb-install.sh b/install/bunkerweb-install.sh index 3ed4797fd..f041f44b4 100644 --- a/install/bunkerweb-install.sh +++ b/install/bunkerweb-install.sh @@ -26,7 +26,7 @@ msg_info "Installing Nginx" wget -qO- https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $(lsb_release -cs) nginx" >/etc/apt/sources.list.d/nginx.list $STD apt-get update -$STD apt-get install -y nginx=1.26.2* +$STD apt-get install -y nginx=1.26.3* msg_ok "Installed Nginx" RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') @@ -34,7 +34,6 @@ msg_info "Installing BunkerWeb v${RELEASE} (Patience)" curl -fsSL "https://repo.bunkerweb.io/bunkerity/bunkerweb/gpgkey" | gpg --dearmor >/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/bunkerity_bunkerweb-archive-keyring.gpg] https://repo.bunkerweb.io/bunkerity/bunkerweb/debian/ bookworm main" >/etc/apt/sources.list.d/bunkerity_bunkerweb.list $STD apt-get update -export UI_WIZARD=1 $STD apt-get install -y bunkerweb=${RELEASE} cat </etc/apt/preferences.d/bunkerweb Package: bunkerweb diff --git a/json/bunkerweb.json b/json/bunkerweb.json index d1b3075a6..8af3ed6a7 100644 --- a/json/bunkerweb.json +++ b/json/bunkerweb.json @@ -11,7 +11,7 @@ "interface_port": null, "documentation": null, "website": "https://www.bunkerweb.io/", - "logo": "https://raw.githubusercontent.com/bunkerity/bunkerweb/v1.5.7/misc/logo.png", + "logo": "https://raw.githubusercontent.com/bunkerity/bunkerweb/master/misc/logo.png", "description": "BunkerWeb is a security-focused web server that enhances web application protection. It guards against common web vulnerabilities like SQL injection, XSS, and CSRF. It features simple setup and configuration using a YAML file, customizable security rules, and provides detailed logs for traffic monitoring and threat detection.", "install_methods": [ { @@ -19,7 +19,7 @@ "script": "ct/bunkerweb.sh", "resources": { "cpu": 2, - "ram": 1024, + "ram": 4096, "hdd": 4, "os": "debian", "version": "12" From b694c339cb784169a3ed514d045c661cb4e63d99 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:04:51 +0100 Subject: [PATCH 404/480] Update CHANGELOG.md (#2467) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25beda213..2e01228ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-18 + +### Changes + +### 🚀 Updated Scripts + +- Update BunkerWeb scripts to latest NGINX and specs [@TheophileDiot](https://github.com/TheophileDiot) ([#2466](https://github.com/community-scripts/ProxmoxVE/pull/2466)) + ## 2025-02-17 ### Changes From ce16be6393798ca8162f314744a38ec0afc00187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Tue, 18 Feb 2025 12:00:24 +0100 Subject: [PATCH 405/480] Ensure Node version at least v18.20.3 and make fresh backup folder each time (#2468) --- ct/magicmirror.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index 1d245c8a6..02eca74e2 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -35,6 +35,9 @@ function update_script() { msg_ok "Stopped Service" msg_info "Updating ${APP} to v${RELEASE}" + $STD apt-get update + $STD apt-get upgrade -y + 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 From 2693fabac2af2e95f8ae406263daa657773995cf Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:04:08 +0100 Subject: [PATCH 406/480] Update CHANGELOG.md (#2470) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e01228ea..668327523 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: MagicMirror force Node version and fix backups [@tremor021](https://github.com/tremor021) ([#2468](https://github.com/community-scripts/ProxmoxVE/pull/2468)) - Update BunkerWeb scripts to latest NGINX and specs [@TheophileDiot](https://github.com/TheophileDiot) ([#2466](https://github.com/community-scripts/ProxmoxVE/pull/2466)) ## 2025-02-17 From 5a72b1e523aa7a95fb45bab48179b914c9bf1c61 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:51:44 +0100 Subject: [PATCH 407/480] New Script: Docmost (#2472) * New Script: Docmost LXC * fix path * add redis --- ct/docmost.sh | 70 +++++++++++++++++++++++++++ install/docmost-install.sh | 97 ++++++++++++++++++++++++++++++++++++++ json/docmost.json | 34 +++++++++++++ 3 files changed, 201 insertions(+) create mode 100644 ct/docmost.sh create mode 100644 install/docmost-install.sh create mode 100644 json/docmost.json diff --git a/ct/docmost.sh b/ct/docmost.sh new file mode 100644 index 000000000..75e1f9363 --- /dev/null +++ b/ct/docmost.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docmost.com/ + +APP="Docmost" +var_tags="documents" +var_cpu="3" +var_ram="3072" +var_disk="7" +var_os="debian" +var_version="12" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/docmost ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop docmost + msg_ok "${APP} Stopped" + + msg_info "Updating ${APP} to v${RELEASE}" + cp /opt/docmost/.env /opt/ + rm -rf /opt/docmost + temp_file=$(mktemp) + wget -q "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" + tar -xzf "$temp_file" + mv docmost-${RELEASE} /opt/docmost + cd /opt/docmost + mv /opt/.env /opt/docmost/.env + pnpm install --force &>/dev/null + pnpm build &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start docmost + msg_ok "Started ${APP}" + + msg_info "Cleaning Up" + rm -f ${temp_file} + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}:3000${CL}" diff --git a/install/docmost-install.sh b/install/docmost-install.sh new file mode 100644 index 000000000..85e3a01c7 --- /dev/null +++ b/install/docmost-install.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/documenso/documenso + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + gpg \ + curl \ + sudo \ + redis \ + make \ + mc \ + postgresql +msg_ok "Installed Dependencies" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g pnpm +msg_ok "Installed Node.js" + +msg_info "Setting up PostgreSQL" +DB_NAME="docmost_db" +DB_USER="docmost_user" +DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'" +{ + echo "Docmost-Credentials" + echo "Database Name: $DB_NAME" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" +} >> ~/docmost.creds +msg_ok "Set up PostgreSQL" + +msg_info "Installing Docmost (Patience)" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/docmost/docmost/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv docmost-${RELEASE} /opt/docmost +cd /opt/docmost +mv .env.example .env +sed -i "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" /opt/docmost/.env +sed -i "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" /opt/docmost/.env +export NODE_OPTIONS="--max-old-space-size=2048" +$STD pnpm install --force +$STD pnpm build +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Installed Docmost" + +msg_info "Creating Service" +cat </etc/systemd/system/docmost.service +[Unit] +Description=Docmost Service +After=network.target postgresql.service + +[Service] +WorkingDirectory=/opt/docmost +ExecStart=/usr/bin/pnpm start +Restart=always +EnvironmentFile=/opt/docmost/.env + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now docmost +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f "$temp_file" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/docmost.json b/json/docmost.json new file mode 100644 index 000000000..92a4c907a --- /dev/null +++ b/json/docmost.json @@ -0,0 +1,34 @@ +{ + "name": "Docmost", + "slug": "docmost", + "categories": [ + 12 + ], + "date_created": "2025-02-18", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docmost.com/docs/installation", + "website": "https://docmost.com/", + "logo": "https://raw.githubusercontent.com/docmost/docmost/refs/heads/main/apps/client/public/favicon-32x32.png", + "description": "Open-source collaborative wiki and documentation software Create, collaborate, and share knowledge seamlessly with Docmost. Ideal for managing your wiki, knowledge-base, documentation and a lot more.", + "install_methods": [ + { + "type": "default", + "script": "ct/docmost.sh", + "resources": { + "cpu": 3, + "ram": 3072, + "hdd": 7, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 7e9eb2f98a078315ca3702f72ca3c1555b56c942 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:10:06 +0100 Subject: [PATCH 408/480] Update .app files (#2474) Co-authored-by: GitHub Actions --- ct/headers/docmost | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/docmost diff --git a/ct/headers/docmost b/ct/headers/docmost new file mode 100644 index 000000000..91633908e --- /dev/null +++ b/ct/headers/docmost @@ -0,0 +1,6 @@ + ____ __ + / __ \____ _________ ___ ____ _____/ /_ + / / / / __ \/ ___/ __ `__ \/ __ \/ ___/ __/ + / /_/ / /_/ / /__/ / / / / / /_/ (__ ) /_ +/_____/\____/\___/_/ /_/ /_/\____/____/\__/ + From 331bc0f5a6f32779698ba2298af4c2b91ca730b8 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:10:30 +0100 Subject: [PATCH 409/480] Update CHANGELOG.md (#2473) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 668327523..c3fb4379f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### ✨ New Scripts + +- New Script: Docmost [@MickLesk](https://github.com/MickLesk) ([#2472](https://github.com/community-scripts/ProxmoxVE/pull/2472)) + ### 🚀 Updated Scripts - Fix: MagicMirror force Node version and fix backups [@tremor021](https://github.com/tremor021) ([#2468](https://github.com/community-scripts/ProxmoxVE/pull/2468)) From fa01cfd84080de6c5bba794d29cfd5bf067fa154 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:29:48 +0100 Subject: [PATCH 410/480] Feature: PBS Bare Metal Installation - Allow Microcode (#2477) --- misc/pbs_microcode.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/pbs_microcode.sh b/misc/pbs_microcode.sh index 5e94a223c..f3b88fde8 100644 --- a/misc/pbs_microcode.sh +++ b/misc/pbs_microcode.sh @@ -150,7 +150,7 @@ amd() { } # Check if this is a Proxmox Backup Server by verifying the presence of the datastore config. -if [ ! -f /etc/proxmox-backup/datastore.cfg ]; then +if [ ! -f /etc/proxmox-backup/user.cfg ]; then header_info msg_error "Proxmox Backup Server not detected!" exit From 031aefe05a6f4ca72dedb1fa4ee77e240890df14 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:31:28 +0100 Subject: [PATCH 411/480] Fix: SQL Server 2022 | GPG & Install (#2476) --- install/sqlserver2022-install.sh | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index cc8b92d3e..7b30cd821 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -2,10 +2,9 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: Kristian Skov -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -15,33 +14,30 @@ update_os msg_info "Installing Dependencies" $STD apt install -y \ - curl \ + curl \ mc \ sudo \ - gpg \ - coreutils + gpg \ + coreutils msg_ok "Installed Dependencies" msg_info "Setup SQL Server 2022" -curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg -curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list -#$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc -#$STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list -$STD apt-get clean * +curl -s https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc > /dev/null +curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list > /dev/null $STD apt-get update -y -apt-get install -y mssql-server +$STD apt-get install -y mssql-server msg_ok "Setup Server 2022" msg_info "Installing SQL Server Tools" export DEBIAN_FRONTEND=noninteractive export ACCEPT_EULA=Y -curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc -curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list +curl -s https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc > /dev/null +curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list > /dev/null $STD apt-get update $STD apt-get install -y -qq \ mssql-tools18 \ unixodbc-dev -echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile +echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >>~/.bash_profile source ~/.bash_profile msg_ok "Installed SQL Server Tools" @@ -53,7 +49,7 @@ else fi msg_info "Start Service" -systemctl enable -q --now mssql-server +systemctl enable -q --now mssql-server msg_ok "Service started" motd_ssh From 6982d024896924012e7e5566e966f225e50a201f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:35:55 +0100 Subject: [PATCH 412/480] Update CHANGELOG.md (#2480) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3fb4379f..26c9607c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: SQL Server 2022 | GPG & Install [@MickLesk](https://github.com/MickLesk) ([#2476](https://github.com/community-scripts/ProxmoxVE/pull/2476)) +- Feature: PBS Bare Metal Installation - Allow Microcode [@MickLesk](https://github.com/MickLesk) ([#2477](https://github.com/community-scripts/ProxmoxVE/pull/2477)) - Fix: MagicMirror force Node version and fix backups [@tremor021](https://github.com/tremor021) ([#2468](https://github.com/community-scripts/ProxmoxVE/pull/2468)) - Update BunkerWeb scripts to latest NGINX and specs [@TheophileDiot](https://github.com/TheophileDiot) ([#2466](https://github.com/community-scripts/ProxmoxVE/pull/2466)) From 0afe60e11ab5d8cca38f7c28cca5e7958684ea85 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:30:22 +0100 Subject: [PATCH 413/480] Fix: Actual Budget, add missing .env when updating --- ct/actualbudget.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index cad8e92d4..225502117 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -42,6 +42,14 @@ function update_script() { tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1 mv *ctual-server-* /opt/actualbudget rm -rf /opt/actualbudget/.env + if [ ! -f /opt/actualbudget_bak/.env ]; then + cat < /opt/actualbudget/.env + ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files + ACTUAL_DATA_DIR=/opt/actualbudget-data + ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files + PORT=5006 + EOF + fi mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/.migrate /opt/actualbudget mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files From 4cbe90597e64f65f4e93a27e3c00f5fa78017da4 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:32:52 +0100 Subject: [PATCH 414/480] Fix: Actual Budget, add missing .env when updating (#2494) --- ct/actualbudget.sh | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 225502117..5cc927349 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) + # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -26,51 +27,58 @@ function update_script() { if [[ ! -d /opt/actualbudget ]]; then msg_error "No ${APP} Installation Found!" - exit + exit 1 fi - - RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + + RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/latest | \ + grep "tag_name" | awk -F '"' '{print substr($4, 2)}') + if [[ ! -f /opt/actualbudget_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/actualbudget_version.txt)" ]]; then msg_info "Stopping ${APP}" systemctl stop actualbudget msg_ok "${APP} Stopped" - + msg_info "Updating ${APP} to ${RELEASE}" cd /tmp - wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz + wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz" + mv /opt/actualbudget /opt/actualbudget_bak - tar -xzf v${RELEASE}.tar.gz >/dev/null 2>&1 + tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1 mv *ctual-server-* /opt/actualbudget + + # Sicherstellen, dass .env existiert rm -rf /opt/actualbudget/.env - if [ ! -f /opt/actualbudget_bak/.env ]; then - cat < /opt/actualbudget/.env - ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files - ACTUAL_DATA_DIR=/opt/actualbudget-data - ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files - PORT=5006 - EOF + if [[ ! -f /opt/actualbudget_bak/.env ]]; then + cat < /opt/actualbudget/.env +ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files +ACTUAL_DATA_DIR=/opt/actualbudget-data +ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files +PORT=5006 +EOF fi + mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/.migrate /opt/actualbudget mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files + cd /opt/actualbudget yarn install &>/dev/null - echo "${RELEASE}" >/opt/actualbudget_version.txt + echo "${RELEASE}" > /opt/actualbudget_version.txt msg_ok "Updated ${APP}" - + msg_info "Starting ${APP}" systemctl start actualbudget msg_ok "Started ${APP}" - + msg_info "Cleaning Up" rm -rf /opt/actualbudget_bak - rm -rf /tmp/v${RELEASE}.tar.gz + rm -rf "/tmp/v${RELEASE}.tar.gz" msg_ok "Cleaned" msg_ok "Updated Successfully" else msg_ok "No update required. ${APP} is already at ${RELEASE}" fi - exit + exit 0 } start From 70f5280fcc031752aa198218fe2561e4d5baecbe Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:35:56 +0100 Subject: [PATCH 415/480] quickfix, spelling error --- ct/actualbudget.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 5cc927349..03f18c011 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -49,7 +49,7 @@ function update_script() { # Sicherstellen, dass .env existiert rm -rf /opt/actualbudget/.env if [[ ! -f /opt/actualbudget_bak/.env ]]; then - cat < /opt/actualbudget/.env + cat < /opt/actualbudget_bak/.env ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files ACTUAL_DATA_DIR=/opt/actualbudget-data ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files From a76733df606cc08f9e4b3470a077acce032d8d95 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:43:29 +0100 Subject: [PATCH 416/480] Update actualbudget.sh --- ct/actualbudget.sh | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 03f18c011..0364c5019 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -46,7 +46,6 @@ function update_script() { tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1 mv *ctual-server-* /opt/actualbudget - # Sicherstellen, dass .env existiert rm -rf /opt/actualbudget/.env if [[ ! -f /opt/actualbudget_bak/.env ]]; then cat < /opt/actualbudget_bak/.env @@ -56,10 +55,8 @@ ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files PORT=5006 EOF fi - mv /opt/actualbudget_bak/.env /opt/actualbudget - mv /opt/actualbudget_bak/.migrate /opt/actualbudget - mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files + #mv /opt/actualbudget_bak/.migrate /opt/actualbudget cd /opt/actualbudget yarn install &>/dev/null @@ -67,6 +64,24 @@ EOF msg_ok "Updated ${APP}" msg_info "Starting ${APP}" + cat </etc/systemd/system/actualbudget.service +[Unit] +Description=Actual Budget Service +After=network.target + +[Service] +Type=simple +User=root +Group=root +WorkingDirectory=/opt/actualbudget +EnvironmentFile=/opt/actualbudget/.env +ExecStart=/usr/bin/yarn start +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF systemctl start actualbudget msg_ok "Started ${APP}" From 1ffe6b1c3cddc3b98d9d76bfc0eba42ce63a4b4d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 13:52:03 +0100 Subject: [PATCH 417/480] Update actualbudget.sh --- ct/actualbudget.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 0364c5019..fcb2024ec 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -45,6 +45,9 @@ function update_script() { mv /opt/actualbudget /opt/actualbudget_bak tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1 mv *ctual-server-* /opt/actualbudget + if [[ ! -d /opt/actualbudget-data ]]; then + mkdir -p /opt/actualbudget-data/server-files + fi rm -rf /opt/actualbudget/.env if [[ ! -f /opt/actualbudget_bak/.env ]]; then @@ -55,8 +58,11 @@ ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files PORT=5006 EOF fi - mv /opt/actualbudget_bak/.env /opt/actualbudget - #mv /opt/actualbudget_bak/.migrate /opt/actualbudget + mv /opt/actualbudget_bak/.env /opt/actualbudget/ + mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/ + if [[ -d /opt/actualbudget_bak/.migrate ]]; then + mv /opt/actualbudget_bak/.migrate /opt/actualbudget/ + fi cd /opt/actualbudget yarn install &>/dev/null From 7e6a7468df6cc841b3e6eadc1f4bd89cf198a989 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 19 Feb 2025 14:34:57 +0100 Subject: [PATCH 418/480] Update actualbudget.sh --- ct/actualbudget.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index fcb2024ec..71095e00e 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -59,7 +59,9 @@ PORT=5006 EOF fi mv /opt/actualbudget_bak/.env /opt/actualbudget/ - mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/ + if [[ -d /opt/actualbudget_bak/server-files ]] && [[ -n $(ls -A /opt/actualbudget_bak/server-files 2>/dev/null) ]]; then + mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/ + fi if [[ -d /opt/actualbudget_bak/.migrate ]]; then mv /opt/actualbudget_bak/.migrate /opt/actualbudget/ fi From d1e0c2d1643da5a2791d47471ea80af633dedc8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:26:20 +0100 Subject: [PATCH 419/480] Fix: Kometa - fixed successful setup message and added info to json (#2495) * Fix the installation complete message * Added info in json --- ct/kometa.sh | 4 ++-- json/kometa.json | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ct/kometa.sh b/ct/kometa.sh index 6279a46ea..76d4adba3 100644 --- a/ct/kometa.sh +++ b/ct/kometa.sh @@ -73,5 +73,5 @@ 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}${CL}" \ No newline at end of file +echo -e "${INFO}${YW} Access the LXC at following IP address:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}" \ No newline at end of file diff --git a/json/kometa.json b/json/kometa.json index 804036fd9..0a36b2b0b 100644 --- a/json/kometa.json +++ b/json/kometa.json @@ -34,6 +34,10 @@ { "text": "During installation you will be prompted to input your TMDb key, Plex URL and Plex token. Make sure you have them ready.", "type": "info" + }, + { + "text": "Configuration file is at `/opt/kometa/config/config.yml`", + "type": "info" } ] } From b293638c40b2cd1a6c2213109f8b64cf56a70c68 Mon Sep 17 00:00:00 2001 From: Andreas Date: Wed, 19 Feb 2025 19:25:57 +0000 Subject: [PATCH 420/480] Fix: file replacement in Watcharr Update Script (#2498) --- ct/watcharr.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ct/watcharr.sh b/ct/watcharr.sh index b154335bb..dd0f7835a 100644 --- a/ct/watcharr.sh +++ b/ct/watcharr.sh @@ -37,11 +37,12 @@ function update_script() { msg_info "Updating $APP to v${RELEASE}" temp_file=$(mktemp) + temp_folder=$(mktemp -d) wget -q "https://github.com/sbondCo/Watcharr/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" - tar -xzf "$temp_file" + tar -xzf "$temp_file" -C "$temp_folder" rm -f /opt/watcharr/server/watcharr rm -rf /opt/watcharr/server/ui - mv Watcharr-${RELEASE}/ /opt/watcharr + cp -rf ${temp_folder}/Watcharr-${RELEASE}/* /opt/watcharr cd /opt/watcharr export GOOS=linux npm i &> /dev/null @@ -58,6 +59,7 @@ function update_script() { msg_info "Cleaning Up" rm -f ${temp_file} + rm -rf ${temp_folder} msg_ok "Cleanup Completed" echo "${RELEASE}" >/opt/${APP}_version.txt From 87c61de11e25daa5d23346366c35cded0b42238f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 20:46:01 +0100 Subject: [PATCH 421/480] Update CHANGELOG.md (#2493) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26c9607c4..6dc176377 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,16 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-19 + +### Changes + +### 🚀 Updated Scripts + +- Fix: file replacement in Watcharr Update Script [@Clusters](https://github.com/Clusters) ([#2498](https://github.com/community-scripts/ProxmoxVE/pull/2498)) +- Fix: Kometa - fixed successful setup message and added info to json [@tremor021](https://github.com/tremor021) ([#2495](https://github.com/community-scripts/ProxmoxVE/pull/2495)) +- Fix: Actual Budget, add missing .env when updating [@MickLesk](https://github.com/MickLesk) ([#2494](https://github.com/community-scripts/ProxmoxVE/pull/2494)) + ## 2025-02-18 ### Changes From b749119a1c3b7a8b5997ab9f41cff4bebe88166e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 20 Feb 2025 09:51:32 +0100 Subject: [PATCH 422/480] New Script: Dolibarr (#2502) * Add Dolibarr script * Moved mariadb into dependencies * Fixed updatable to true --- ct/dolibarr.sh | 41 ++++++++++++++++++++++++++++ install/dolibarr-install.sh | 53 +++++++++++++++++++++++++++++++++++++ json/dolibarr.json | 39 +++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 ct/dolibarr.sh create mode 100644 install/dolibarr-install.sh create mode 100644 json/dolibarr.json diff --git a/ct/dolibarr.sh b/ct/dolibarr.sh new file mode 100644 index 000000000..ab8ef73ea --- /dev/null +++ b/ct/dolibarr.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Dolibarr/dolibarr/ + +APP="Dolibarr" +var_tags="erp;accounting" +var_cpu="1" +var_ram="2048" +var_disk="6" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /usr/share/dolibarr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "To update ${APP}, use the applications web interface." + 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}/dolibarr/install${CL}" diff --git a/install/dolibarr-install.sh b/install/dolibarr-install.sh new file mode 100644 index 000000000..cc09e54aa --- /dev/null +++ b/install/dolibarr-install.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Dolibarr/dolibarr/ + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + php-imap \ + debconf-utils \ + mariadb-server +msg_ok "Installed Dependencies" + +msg_info "Setting up Database" +ROOT_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +$STD sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$ROOT_PASS'); flush privileges;" +{ + echo "Dolibarr DB Credentials" + echo "MariaDB Root Password: $ROOT_PASS" +} >> ~/dolibarr.creds +msg_ok "Set up database" + +msg_info "Setup Dolibarr" +BASE="https://sourceforge.net/projects/dolibarr/files/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/" +RELEASE=$(curl -s "$BASE" | grep -oP '(?<=/Dolibarr%20installer%20for%20Debian-Ubuntu%20%28DoliDeb%29/)[^/"]+' | head -n1) +FILE=$(curl -s "${BASE}${RELEASE}/" | grep -oP 'dolibarr_[^"]+_all.deb' | head -n1) +wget -q "https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20installer%20for%20Debian-Ubuntu%20(DoliDeb)/${RELEASE}/${FILE}?viasf=1" -O "$FILE" +echo "dolibarr dolibarr/reconfigure-webserver multiselect apache2" | debconf-set-selections +$STD apt-get install ./$FILE -y +$STD apt install -f +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup Dolibarr" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf ~/$FILE +$STD apt-get autoremove +$STD apt-get autoclean +msg_ok "Cleaned" diff --git a/json/dolibarr.json b/json/dolibarr.json new file mode 100644 index 000000000..5396d95f8 --- /dev/null +++ b/json/dolibarr.json @@ -0,0 +1,39 @@ +{ + "name": "Dolibarr", + "slug": "dolibarr", + "categories": [ + 25 + ], + "date_created": "2025-02-20", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://wiki.dolibarr.org/index.php?title=Home", + "website": "https://www.dolibarr.org/", + "logo": "https://wiki.dolibarr.org/images/5/51/Dolibarr_124x124_white.svg", + "description": "Dolibarr ERP CRM is a modern software package to manage your company or foundation's activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). it's an open source Web application (written in PHP) designed for businesses of any sizes, foundations and freelancers.", + "install_methods": [ + { + "type": "default", + "script": "ct/dolibarr.sh", + "resources": { + "cpu": 1, + "ram": 2048, + "hdd": 6, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Database credentials: `cat ~/dolibarr.creds`", + "type": "info" + } + ] + } From 436945b71184f1e4123150d3e57aded1cb4952c6 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 09:52:38 +0100 Subject: [PATCH 423/480] Update .app files (#2507) Co-authored-by: GitHub Actions --- ct/headers/dolibarr | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/dolibarr diff --git a/ct/headers/dolibarr b/ct/headers/dolibarr new file mode 100644 index 000000000..f3055a354 --- /dev/null +++ b/ct/headers/dolibarr @@ -0,0 +1,6 @@ + ____ ___ __ + / __ \____ / (_) /_ ____ ___________ + / / / / __ \/ / / __ \/ __ `/ ___/ ___/ + / /_/ / /_/ / / / /_/ / /_/ / / / / +/_____/\____/_/_/_.___/\__,_/_/ /_/ + From 4aa84c265de3fe86f5dcb3441a254577cbf68acb Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 10:46:23 +0100 Subject: [PATCH 424/480] Update CHANGELOG.md (#2506) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dc176377..f82080ef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-20 + +### Changes + +### ✨ New Scripts + +- New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502)) + ## 2025-02-19 ### Changes From ba41bcd5614961b6e699b40ff67bd895121f713d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:18:00 +0100 Subject: [PATCH 425/480] Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description (#2496) --- ct/actualbudget.sh | 49 +++++++++++++++++++-------------- install/actualbudget-install.sh | 38 +++++++++++++++++-------- 2 files changed, 55 insertions(+), 32 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 71095e00e..34a405a86 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) - # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -43,36 +42,44 @@ function update_script() { wget -q "https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz" mv /opt/actualbudget /opt/actualbudget_bak - tar -xzf "v${RELEASE}.tar.gz" >/dev/null 2>&1 + tar -xzf "v${RELEASE}.tar.gz" &>/dev/null mv *ctual-server-* /opt/actualbudget - if [[ ! -d /opt/actualbudget-data ]]; then - mkdir -p /opt/actualbudget-data/server-files + + mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config} + for dir in server-files .migrate user-files migrations; do + if [[ -d /opt/actualbudget_bak/$dir ]]; then + mv /opt/actualbudget_bak/$dir/* /opt/actualbudget-data/$dir/ 2>/dev/null || true + fi + done + if [[ -f /opt/actualbudget-data/migrate/.migrations ]]; then + sed -i 's/null/1732656575219/g' /opt/actualbudget-data/migrate/.migrations + sed -i 's/null/1732656575220/g' /opt/actualbudget-data/migrate/.migrations + fi + if [[ -f /opt/actualbudget/server-files/account.sqlite ]] && [[ ! -f /opt/actualbudget-data/server-files/account.sqlite ]]; then + mv /opt/actualbudget/server-files/account.sqlite /opt/actualbudget-data/server-files/account.sqlite fi - rm -rf /opt/actualbudget/.env - if [[ ! -f /opt/actualbudget_bak/.env ]]; then - cat < /opt/actualbudget_bak/.env -ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files + if [[ -f /opt/actualbudget_bak/.env ]]; then + mv /opt/actualbudget_bak/.env /opt/actualbudget-data/.env + else + cat < /opt/actualbudget-data/.env +ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload ACTUAL_DATA_DIR=/opt/actualbudget-data -ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files +ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files +ACTUAL_USER_FILES=/opt/actualbudget-data/user-files PORT=5006 +ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7" +ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key +ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt EOF fi - mv /opt/actualbudget_bak/.env /opt/actualbudget/ - if [[ -d /opt/actualbudget_bak/server-files ]] && [[ -n $(ls -A /opt/actualbudget_bak/server-files 2>/dev/null) ]]; then - mv /opt/actualbudget_bak/server-files/* /opt/actualbudget/server-files/ - fi - if [[ -d /opt/actualbudget_bak/.migrate ]]; then - mv /opt/actualbudget_bak/.migrate /opt/actualbudget/ - fi - cd /opt/actualbudget yarn install &>/dev/null echo "${RELEASE}" > /opt/actualbudget_version.txt msg_ok "Updated ${APP}" msg_info "Starting ${APP}" - cat </etc/systemd/system/actualbudget.service + cat < /etc/systemd/system/actualbudget.service [Unit] Description=Actual Budget Service After=network.target @@ -82,7 +89,7 @@ Type=simple User=root Group=root WorkingDirectory=/opt/actualbudget -EnvironmentFile=/opt/actualbudget/.env +EnvironmentFile=/opt/actualbudget-data/.env ExecStart=/usr/bin/yarn start Restart=always RestartSec=10 @@ -90,6 +97,8 @@ RestartSec=10 [Install] WantedBy=multi-user.target EOF + + systemctl daemon-reload systemctl start actualbudget msg_ok "Started ${APP}" @@ -111,4 +120,4 @@ 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}:5006${CL}" +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:5006${CL}" diff --git a/install/actualbudget-install.sh b/install/actualbudget-install.sh index b6068c2cd..732b00db0 100644 --- a/install/actualbudget-install.sh +++ b/install/actualbudget-install.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2025 tteck -# Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://actualbudget.org/ source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" color @@ -41,18 +41,32 @@ RELEASE=$(curl -s https://api.github.com/repos/actualbudget/actual/releases/late wget -q https://github.com/actualbudget/actual-server/archive/refs/tags/v${RELEASE}.tar.gz tar -xzf v${RELEASE}.tar.gz mv *ctual-server-* /opt/actualbudget -mkdir -p /opt/actualbudget/server-files -mkdir -p /opt/actualbudget-data -chown -R root:root /opt/actualbudget/server-files -chmod 755 /opt/actualbudget/server-files -cat < /opt/actualbudget/.env -ACTUAL_UPLOAD_DIR=/opt/actualbudget/server-files + +mkdir -p /opt/actualbudget-data/{server-files,upload,migrate,user-files,migrations,config} +chown -R root:root /opt/actualbudget-data +chmod -R 755 /opt/actualbudget-data + +cat < /opt/actualbudget-data/.env +ACTUAL_UPLOAD_DIR=/opt/actualbudget-data/upload ACTUAL_DATA_DIR=/opt/actualbudget-data -ACTUAL_SERVER_FILES_DIR=/opt/actualbudget/server-files +ACTUAL_SERVER_FILES_DIR=/opt/actualbudget-data/server-files +ACTUAL_USER_FILES=/opt/actualbudget-data/user-files PORT=5006 +ACTUAL_TRUSTED_PROXIES="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1/32,::1/128,fc00::/7" +ACTUAL_HTTPS_KEY=/opt/actualbudget/selfhost.key +ACTUAL_HTTPS_CERT=/opt/actualbudget/selfhost.crt EOF cd /opt/actualbudget $STD yarn install +$STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout selfhost.key -out selfhost.crt <"/opt/actualbudget_version.txt" msg_ok "Installed Actual Budget" @@ -67,7 +81,7 @@ Type=simple User=root Group=root WorkingDirectory=/opt/actualbudget -EnvironmentFile=/opt/actualbudget/.env +EnvironmentFile=/opt/actualbudget-data/.env ExecStart=/usr/bin/yarn start Restart=always RestartSec=10 From 049afa994b2f588984f5d74071e183c17536082d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:18:35 +0100 Subject: [PATCH 426/480] Pihole & Unbound: Installation for Pihole V6 (#2505) --- install/pihole-install.sh | 68 +++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/install/pihole-install.sh b/install/pihole-install.sh index e5a6f5819..3a8804752 100644 --- a/install/pihole-install.sh +++ b/install/pihole-install.sh @@ -14,32 +14,48 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y ufw -$STD apt-get install -y ntp +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + ufw msg_ok "Installed Dependencies" msg_info "Installing Pi-hole" -mkdir -p /etc/pihole/ -cat </etc/pihole/setupVars.conf -PIHOLE_INTERFACE=eth0 -PIHOLE_DNS_1=8.8.8.8 -PIHOLE_DNS_2=8.8.4.4 -QUERY_LOGGING=true -INSTALL_WEB_SERVER=true -INSTALL_WEB_INTERFACE=true -LIGHTTPD_ENABLED=true -CACHE_SIZE=10000 -DNS_FQDN_REQUIRED=true -DNS_BOGUS_PRIV=true -DNSMASQ_LISTENING=local -WEBPASSWORD=$(openssl rand -base64 48) -BLOCKING_ENABLED=true -EOF -# View script https://install.pi-hole.net +mkdir -p /etc/pihole +touch /etc/pihole/pihole.toml $STD bash <(curl -fsSL https://install.pi-hole.net) --unattended +sed -i -E ' +/^\s*upstreams =/ s|=.*|= ["8.8.8.8", "8.8.4.4"]| +/^\s*interface =/ s|=.*|= "eth0"| +/^\s*queryLogging =/ s|=.*|= true| +/^\s*size =/ s|=.*|= 10000| +/^\s*active =/ s|=.*|= true| +/^\s*listeningMode =/ s|=.*|= "LOCAL"| +/^\s*port =/ s|=.*|= "80o,443os,[::]:80o,[::]:443os"| +/^\s*pwhash =/ s|=.*|= ""| + +# DHCP Disable +/^\s*\[dhcp\]/,/^\s*\[/{s/^\s*active = true/ active = false/} + +# NTP Disable +/^\s*\[ntp.ipv4\]/,/^\s*\[/{s/^\s*active = true/ active = false/} +/^\s*\[ntp.ipv6\]/,/^\s*\[/{s/^\s*active = true/ active = false/} +/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*active = true/ active = false/} +/^\s*\[ntp.sync\]/,/^\s*\[/{s/^\s*interval = [0-9]+/ interval = 0/} +/^\s*\[ntp.sync.rtc\]/,/^\s*\[/{s/^\s*set = true/ set = false/} + +# set domainNeeded und expandHosts +/^\s*domainNeeded =/ s|=.*|= true| +/^\s*expandHosts =/ s|=.*|= true| +' /etc/pihole/pihole.toml + +cat < /etc/dnsmasq.d/01-pihole.conf +server=8.8.8.8 +server=8.8.4.4 +EOF +$STD pihole-FTL --config ntp.sync.interval 0 +systemctl restart pihole-FTL.service msg_ok "Installed Pi-hole" read -r -p "Would you like to add Unbound? " prompt @@ -119,9 +135,13 @@ forward-zone: #forward-addr: 2620:fe::9@853#dns.quad9.net EOF fi +cat < /etc/dnsmasq.d/01-pihole.conf +server=127.0.0.1#5335 +server=8.8.8.8 +server=8.8.4.4 +EOF - sed -i -e 's/PIHOLE_DNS_1=8.8.8.8/PIHOLE_DNS_1=127.0.0.1#5335/' -e '/PIHOLE_DNS_2=8.8.4.4/d' /etc/pihole/setupVars.conf - sed -i -e 's/server=8.8.8.8/server=127.0.0.1#5335/' -e '/server=8.8.4.4/d' /etc/dnsmasq.d/01-pihole.conf + sed -i -E "s|^(upstreams =).*|\1 [\"127.0.0.1#5335\", \"8.8.4.4\"]|" /etc/pihole/pihole.toml systemctl enable -q --now unbound systemctl restart pihole-FTL.service msg_ok "Installed Unbound" From 1fe8bc05b34c12e926ae5c6238dd50da0b287f4a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:19:54 +0100 Subject: [PATCH 427/480] Update CHANGELOG.md (#2513) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f82080ef7..a854e1a96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,11 @@ Do not break established syntax in this file, as it is automatically updated by ### Changes +### 💥 Breaking Changes + +- Pihole & Unbound: Installation for Pihole V6 (read description) [@MickLesk](https://github.com/MickLesk) ([#2505](https://github.com/community-scripts/ProxmoxVE/pull/2505)) +- Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description [@MickLesk](https://github.com/MickLesk) ([#2496](https://github.com/community-scripts/ProxmoxVE/pull/2496)) + ### ✨ New Scripts - New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502)) From 20414d96593293dd800b054a364cf3f92f662445 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:01:33 +0100 Subject: [PATCH 428/480] [gh] better handling of labels (#2517) * Update autolabeler.yml * Update changelog-pr-config.json --- .github/changelog-pr-config.json | 36 ++++++++++++--------- .github/workflows/autolabeler.yml | 54 ++++++++++++++++++++++++++----- 2 files changed, 66 insertions(+), 24 deletions(-) diff --git a/.github/changelog-pr-config.json b/.github/changelog-pr-config.json index 911098d9d..c552c6a32 100644 --- a/.github/changelog-pr-config.json +++ b/.github/changelog-pr-config.json @@ -1,34 +1,38 @@ [ { - "title": "💥 Breaking Changes", - "labels": ["breaking change"] + "title": "💥 Breaking Changes", + "labels": ["breaking change"] }, { - "title": "✨ New Scripts", - "labels": ["new script"] + "title": "✨ New Scripts", + "labels": ["new script"] }, { - "title": "🚀 Updated Scripts", - "labels": ["update script"] + "title": "🚀 Updated Scripts", + "labels": ["update script"] }, { - "title": "🌐 Website", - "labels": ["website"] + "title": "🆕 Features", + "labels": ["new feature"] }, { - "title": "🐞 Bug Fixes", - "labels": ["bug fix"] + "title": "🌐 Website", + "labels": ["website"] }, { - "title": "🧰 Maintenance", - "labels": ["maintenance"] + "title": "🐞 Bug Fixes", + "labels": ["bug fix"] }, { - "title": "📡 API", - "labels": ["api"] + "title": "🧰 Maintenance", + "labels": ["maintenance"] }, { - "title": "❔ Unlabelled", - "labels": [] + "title": "📡 API", + "labels": ["api"] + }, + { + "title": "❔ Unlabelled", + "labels": [] } ] diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml index 660135f5c..4ef4f162c 100644 --- a/.github/workflows/autolabeler.yml +++ b/.github/workflows/autolabeler.yml @@ -19,7 +19,7 @@ jobs: - name: Install minimatch run: npm install minimatch - - name: Label PR based on config rules + - name: Label PR based on file changes uses: actions/github-script@v7 with: script: | @@ -39,6 +39,8 @@ jobs: }); const prFiles = prListFilesResponse.data; + let labelsToAdd = new Set(); + for (const [label, rules] of Object.entries(autolabelerConfig)) { const shouldAddLabel = prFiles.some((prFile) => { return rules.some((rule) => { @@ -51,12 +53,48 @@ jobs: }); if (shouldAddLabel) { - console.log(`Adding label ${label} to PR ${prNumber}`); - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - labels: [label], - }); + labelsToAdd.add(label); } } + + if (labelsToAdd.size > 0) { + console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`); + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + labels: Array.from(labelsToAdd), + }); + } + + - name: Label PR based on PR template selections + uses: actions/github-script@v7 + with: + script: | + const prBody = context.payload.pull_request.body.toLowerCase(); + const prNumber = context.payload.pull_request.number; + const labelMappings = { + "🐞 bug fix": "bug fix", + "✨ new feature": "new feature", + "💥 breaking change": "breaking change", + "🆕 new script": "new script" + }; + + let labelsToAdd = new Set(); + + for (const [checkbox, label] of Object.entries(labelMappings)) { + const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i"); + if (regex.test(prBody)) { + labelsToAdd.add(label); + } + } + + if (labelsToAdd.size > 0) { + console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`); + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + labels: Array.from(labelsToAdd), + }); + } From 1a8f5a400748938090f9828d04d4950382d2237e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:02:16 +0100 Subject: [PATCH 429/480] Update CHANGELOG.md (#2518) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a854e1a96..59597c5a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502)) +### 🧰 Maintenance + +- [gh] better handling of labels [@MickLesk](https://github.com/MickLesk) ([#2517](https://github.com/community-scripts/ProxmoxVE/pull/2517)) + ## 2025-02-19 ### Changes From 6d3c442464ea524593694f7abb04f78649c3388b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:03:43 +0100 Subject: [PATCH 430/480] WikiJS: Prepare for Using PostgreSQL (#2516) --- install/wikijs-install.sh | 76 +++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 46ced0a36..b3af4c048 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -5,7 +5,7 @@ # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -14,12 +14,13 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y git -$STD apt-get install -y ca-certificates -$STD apt-get install -y gnupg +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + git \ + ca-certificates \ + gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -28,36 +29,49 @@ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dea echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" +msg_info "Setting up PostgreSQL Repository" +curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg +echo "deb https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >/etc/apt/sources.list.d/pgdg.list +msg_ok "Set up PostgreSQL Repository" + msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Installing Wiki.js" -mkdir -p /opt/wikijs -cd /opt/wikijs -$STD wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz -tar xzf wiki-js.tar.gz -rm wiki-js.tar.gz +msg_info "Set up PostgreSQL" +$STD apt-get install -y postgresql-17 +DB_NAME="wikijs_db" +DB_USER="wikijs_user" +DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" +$STD sudo -u postgres psql -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;" $DB_NAME +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';" +{ + echo "WikiJS-Credentials" + echo "WikiJS Database User: $DB_USER" + echo "WikiJS Database Password: $DB_PASS" + echo "WikiJS Database Name: $DB_NAME" +} >> ~/wikijs.creds +msg_ok "Set up PostgreSQL" -cat </opt/wikijs/config.yml -bindIP: 0.0.0.0 -port: 3000 -db: - type: sqlite - storage: /opt/wikijs/db.sqlite -logLevel: info -logFormat: default -dataPath: /opt/wikijs/data -bodyParserLimit: 5mb -EOF -$STD npm rebuild sqlite3 +msg_info "Setup Wiki.js" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" -O "$temp_file" +tar -xzf "$temp_file" +mv wiki-${RELEASE} /opt/wikijs +mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml +sed -i -E "s|(host: ).*|\1localhost|; s|(port: ).*|\15432|; s|(user: ).*|\1$DB_USER|; s|(pass: ).*|\1$DB_PASS|; s|(db: ).*|\1$DB_NAME|; s|(ssl: ).*|\1false|" /opt/wikijs/config.yml +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Wiki.js" msg_info "Creating Service" -service_path="/etc/systemd/system/wikijs.service" - -echo "[Unit] +cat </etc/systemd/system/wikijs.service +[Unit] Description=Wiki.js After=network.target @@ -70,14 +84,16 @@ Environment=NODE_ENV=production WorkingDirectory=/opt/wikijs [Install] -WantedBy=multi-user.target" >$service_path -$STD systemctl enable --now wikijs +WantedBy=multi-user.target +EOF +systemctl enable --now wikijs msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -f "$temp_file" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" From e9d9da335599791c1cda1fa7ba7c45adc807a675 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:04:35 +0100 Subject: [PATCH 431/480] Update CHANGELOG.md (#2519) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59597c5a8..748c184d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Dolibarr [@tremor021](https://github.com/tremor021) ([#2502](https://github.com/community-scripts/ProxmoxVE/pull/2502)) +### 🚀 Updated Scripts + +- WikiJS: Prepare for Using PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#2516](https://github.com/community-scripts/ProxmoxVE/pull/2516)) + ### 🧰 Maintenance - [gh] better handling of labels [@MickLesk](https://github.com/MickLesk) ([#2517](https://github.com/community-scripts/ProxmoxVE/pull/2517)) From e1ecc8d6cf3a44056a2a02dd69f9d3c9ce9d8d3d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:15:06 +0100 Subject: [PATCH 432/480] Update CHANGELOG.md (#2520) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 748c184d4..1d2baa6da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,8 +23,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 💥 Breaking Changes -- Pihole & Unbound: Installation for Pihole V6 (read description) [@MickLesk](https://github.com/MickLesk) ([#2505](https://github.com/community-scripts/ProxmoxVE/pull/2505)) - Breaking: Actual Budget Script (HTTPS / DB Migration / New Structure) - Read Description [@MickLesk](https://github.com/MickLesk) ([#2496](https://github.com/community-scripts/ProxmoxVE/pull/2496)) +- Pihole & Unbound: Installation for Pihole V6 (read description) [@MickLesk](https://github.com/MickLesk) ([#2505](https://github.com/community-scripts/ProxmoxVE/pull/2505)) ### ✨ New Scripts From 450d2410d9920ee3d089585e9a4095dee6872528 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:54:38 +0100 Subject: [PATCH 433/480] Update wikijs.sh --- ct/wikijs.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/wikijs.sh b/ct/wikijs.sh index aed789ceb..b05bb28ef 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -8,8 +8,8 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="Wikijs" var_tags="wiki" var_cpu="1" -var_ram="512" -var_disk="3" +var_ram="1024" +var_disk="5" var_os="debian" var_version="12" var_unprivileged="1" @@ -63,4 +63,4 @@ 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}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" From 3c289e7235fd43ecaee21b02adb759594e923101 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:54:55 +0100 Subject: [PATCH 434/480] Update wikijs.json --- json/wikijs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/json/wikijs.json b/json/wikijs.json index dc719cdeb..092b133eb 100644 --- a/json/wikijs.json +++ b/json/wikijs.json @@ -19,8 +19,8 @@ "script": "ct/wikijs.sh", "resources": { "cpu": 1, - "ram": 512, - "hdd": 3, + "ram": 1024, + "hdd": 5, "os": "debian", "version": "12" } @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From bedfbd232d9c02ab6660977003c5e90455d08e23 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:06:04 +0100 Subject: [PATCH 435/480] Update wikijs-install.sh --- install/wikijs-install.sh | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index b3af4c048..3ca3ca341 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -37,6 +37,7 @@ msg_ok "Set up PostgreSQL Repository" msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs +$STD npm install --global yarn msg_ok "Installed Node.js" msg_info "Set up PostgreSQL" @@ -65,7 +66,21 @@ wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" tar -xzf "$temp_file" mv wiki-${RELEASE} /opt/wikijs mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml -sed -i -E "s|(host: ).*|\1localhost|; s|(port: ).*|\15432|; s|(user: ).*|\1$DB_USER|; s|(pass: ).*|\1$DB_PASS|; s|(db: ).*|\1$DB_NAME|; s|(ssl: ).*|\1false|" /opt/wikijs/config.yml +sed -i -E ' +/db:/,/^$/ { + s|(host: ).*|\1localhost|; + s|(port: ).*|\15432|; + s|(user: ).*|\1'"$DB_USER"'|; + s|(pass: ).*|\1'"$DB_PASS"'|; + s|(db: ).*|\1'"$DB_NAME"'|; +} +/^ssl:/,/^$/ { + s|(enabled: ).*|\1false|; +} +' /opt/wikijs/config.yml +cd /opt/wikijs +$STD yarn build +$STD yarn install echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Wiki.js" @@ -77,7 +92,7 @@ After=network.target [Service] Type=simple -ExecStart=/usr/bin/node server +ExecStart=/usr/bin/yarn start Restart=always User=root Environment=NODE_ENV=production From 15d20a54b3c4bae15d3ddf8e462b37b28a475225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:14:46 +0100 Subject: [PATCH 436/480] Fix files not copying to correct directory (#2521) --- ct/pingvin.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ct/pingvin.sh b/ct/pingvin.sh index 2cdf693f4..2f34972cb 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -39,7 +39,7 @@ function update_script() { cd /opt wget -q "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip - mv pingvin-share-${RELEASE} /opt/pingvin-share + cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share cd /opt/pingvin-share cd backend npm install &>/dev/null @@ -49,6 +49,7 @@ function update_script() { npm run build &>/dev/null echo "${RELEASE}" >"/opt/pingvin_version.txt" rm -rf /opt/v${RELEASE}.zip + rm -rf /opt/pingvin-share-${RELEASE} msg_ok "Updated Pingvin Share to v${RELEASE}" msg_info "Starting Pingvin Share" From 12a1f46703abc95bf035374a4212153dc749199a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:15:45 +0100 Subject: [PATCH 437/480] Update wikijs-install.sh --- install/wikijs-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 3ca3ca341..872834e50 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -79,8 +79,8 @@ sed -i -E ' } ' /opt/wikijs/config.yml cd /opt/wikijs -$STD yarn build $STD yarn install +$STD yarn build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Wiki.js" @@ -101,7 +101,7 @@ WorkingDirectory=/opt/wikijs [Install] WantedBy=multi-user.target EOF -systemctl enable --now wikijs +systemctl enable -q --now wikijs msg_ok "Created Service" motd_ssh From d4d8943c9ffc9d45cf8c9e8ee6a37e3d3f93f773 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:16:21 +0100 Subject: [PATCH 438/480] Update CHANGELOG.md (#2524) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d2baa6da..272ca0d35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Pingvin Share - Update not copying to correct directory [@tremor021](https://github.com/tremor021) ([#2521](https://github.com/community-scripts/ProxmoxVE/pull/2521)) - WikiJS: Prepare for Using PostgreSQL [@MickLesk](https://github.com/MickLesk) ([#2516](https://github.com/community-scripts/ProxmoxVE/pull/2516)) ### 🧰 Maintenance From 978dc549f4271e20c0be33238d51a23f70fc0a63 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:24:00 +0100 Subject: [PATCH 439/480] Update wikijs.json --- json/wikijs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/json/wikijs.json b/json/wikijs.json index 092b133eb..444549d6c 100644 --- a/json/wikijs.json +++ b/json/wikijs.json @@ -18,9 +18,9 @@ "type": "default", "script": "ct/wikijs.sh", "resources": { - "cpu": 1, - "ram": 1024, - "hdd": 5, + "cpu": 2, + "ram": 2048, + "hdd": 7, "os": "debian", "version": "12" } From 2efdea9a29abd1e52b6cd1f2a1a52721ca8fdf04 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:24:19 +0100 Subject: [PATCH 440/480] Update wikijs.sh --- ct/wikijs.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/wikijs.sh b/ct/wikijs.sh index b05bb28ef..2c57301b4 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -7,9 +7,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="Wikijs" var_tags="wiki" -var_cpu="1" -var_ram="1024" -var_disk="5" +var_cpu="2" +var_ram="2048" +var_disk="7" var_os="debian" var_version="12" var_unprivileged="1" From d0c8b1c15b6f586010e280babedce61bd755d70d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:32:21 +0100 Subject: [PATCH 441/480] Update docmost-install.sh --- install/docmost-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/docmost-install.sh b/install/docmost-install.sh index 85e3a01c7..8b29983ee 100644 --- a/install/docmost-install.sh +++ b/install/docmost-install.sh @@ -64,7 +64,7 @@ mv .env.example .env sed -i "s|APP_SECRET=.*|APP_SECRET=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)|" /opt/docmost/.env sed -i "s|DATABASE_URL=.*|DATABASE_URL=postgres://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME|" /opt/docmost/.env export NODE_OPTIONS="--max-old-space-size=2048" -$STD pnpm install --force +$STD pnpm install $STD pnpm build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Docmost" From 9cbe196913c6fd55e1de6e0fd09d51e58f0249ac Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:36:34 +0100 Subject: [PATCH 442/480] Update wikijs-install.sh --- install/wikijs-install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 872834e50..1ecc9bfff 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -20,7 +20,11 @@ $STD apt-get install -y \ mc \ git \ ca-certificates \ - gnupg + gnupg \ + build-essential \ + python3 \ + g++ \ + make msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" @@ -38,6 +42,7 @@ msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs $STD npm install --global yarn +$STD npm install -g node-gyp msg_ok "Installed Node.js" msg_info "Set up PostgreSQL" From 3a1ae8f7c006f24727c4d1ee1048d17a1dfff606 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:38:12 +0100 Subject: [PATCH 443/480] Update wikijs-install.sh --- install/wikijs-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 1ecc9bfff..d9226aeba 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -84,6 +84,7 @@ sed -i -E ' } ' /opt/wikijs/config.yml cd /opt/wikijs +export NODE_OPTIONS="--max-old-space-size=2048" $STD yarn install $STD yarn build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" From 9bcd1cd2372905d5749ff074867b541b8072be60 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:39:27 +0100 Subject: [PATCH 444/480] Update docmost-install.sh --- install/docmost-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/docmost-install.sh b/install/docmost-install.sh index 8b29983ee..896fdfdeb 100644 --- a/install/docmost-install.sh +++ b/install/docmost-install.sh @@ -33,7 +33,7 @@ msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs -$STD npm install -g pnpm +$STD npm install -g pnpm@latest msg_ok "Installed Node.js" msg_info "Setting up PostgreSQL" From dc259847af7e75373a015ed733dd7a1960725b71 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:44:12 +0100 Subject: [PATCH 445/480] Update docmost-install.sh --- install/docmost-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/docmost-install.sh b/install/docmost-install.sh index 896fdfdeb..3007b0140 100644 --- a/install/docmost-install.sh +++ b/install/docmost-install.sh @@ -27,13 +27,13 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" $STD apt-get update $STD apt-get install -y nodejs -$STD npm install -g pnpm@latest +$STD npm install -g pnpm msg_ok "Installed Node.js" msg_info "Setting up PostgreSQL" From d7a2614819503223fd9e0348e926ac69a08d87db Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:47:36 +0100 Subject: [PATCH 446/480] Update wikijs-install.sh --- install/wikijs-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index d9226aeba..22bdc8ffd 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -85,7 +85,7 @@ sed -i -E ' ' /opt/wikijs/config.yml cd /opt/wikijs export NODE_OPTIONS="--max-old-space-size=2048" -$STD yarn install +$STD yarn install --ignore-engines $STD yarn build echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Installed Wiki.js" From 33f812179f227cc79949ec9d447e071d5b5f0dc1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:48:36 +0100 Subject: [PATCH 447/480] Update wikijs.sh --- ct/wikijs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/wikijs.sh b/ct/wikijs.sh index 2c57301b4..73b5e97d3 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -9,7 +9,7 @@ APP="Wikijs" var_tags="wiki" var_cpu="2" var_ram="2048" -var_disk="7" +var_disk="10" var_os="debian" var_version="12" var_unprivileged="1" From fe5711d9c487ebe0b38610662957e1e3a1d9d0f7 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:49:51 +0100 Subject: [PATCH 448/480] Update wikijs-install.sh --- install/wikijs-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 22bdc8ffd..4397a29e5 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -30,7 +30,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Setting up PostgreSQL Repository" From 1e2954a993843ff2e4d6ade782d0782c0719c661 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:14:25 +0100 Subject: [PATCH 449/480] Update wikijs-install.sh --- install/wikijs-install.sh | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 4397a29e5..0ea0c4bb7 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -47,7 +47,7 @@ msg_ok "Installed Node.js" msg_info "Set up PostgreSQL" $STD apt-get install -y postgresql-17 -DB_NAME="wikijs_db" +DB_NAME="wiki" DB_USER="wikijs_user" DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" @@ -71,18 +71,8 @@ wget -q "https://github.com/Requarks/wiki/archive/refs/tags/v${RELEASE}.tar.gz" tar -xzf "$temp_file" mv wiki-${RELEASE} /opt/wikijs mv /opt/wikijs/config.sample.yml /opt/wikijs/config.yml -sed -i -E ' -/db:/,/^$/ { - s|(host: ).*|\1localhost|; - s|(port: ).*|\15432|; - s|(user: ).*|\1'"$DB_USER"'|; - s|(pass: ).*|\1'"$DB_PASS"'|; - s|(db: ).*|\1'"$DB_NAME"'|; -} -/^ssl:/,/^$/ { - s|(enabled: ).*|\1false|; -} -' /opt/wikijs/config.yml +sed -i -E 's|^( *user: ).*|\1'"$DB_USER"'|' /opt/wikijs/config.yml +sed -i -E 's|^( *pass: ).*|\1'"$DB_PASS"'|' /opt/wikijs/config.yml cd /opt/wikijs export NODE_OPTIONS="--max-old-space-size=2048" $STD yarn install --ignore-engines From 49bcd30e77c19395e34d7f84c57604286535abae Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:09:50 +0100 Subject: [PATCH 450/480] Fix: Tianji - Downgrade Node (#2530) --- install/tianji-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tianji-install.sh b/install/tianji-install.sh index e28f2262e..dd28ff4f0 100644 --- a/install/tianji-install.sh +++ b/install/tianji-install.sh @@ -34,7 +34,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g pnpm@9.7.1 From 8cb3007d663c607c597c2a87e86f035b48603edf Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:13:54 +0100 Subject: [PATCH 451/480] Update autolabeler.yml --- .github/workflows/autolabeler.yml | 35 +++++++++---------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml index 4ef4f162c..ee715d838 100644 --- a/.github/workflows/autolabeler.yml +++ b/.github/workflows/autolabeler.yml @@ -19,7 +19,7 @@ jobs: - name: Install minimatch run: npm install minimatch - - name: Label PR based on file changes + - name: Label PR based on file changes and PR template uses: actions/github-script@v7 with: script: | @@ -30,8 +30,12 @@ jobs: const configPath = path.resolve(process.env.CONFIG_PATH); const fileContent = await fs.readFile(configPath, 'utf-8'); const autolabelerConfig = JSON.parse(fileContent); - + const prNumber = context.payload.pull_request.number; + const prBody = context.payload.pull_request.body.toLowerCase(); + + let labelsToAdd = new Set(); + const prListFilesResponse = await github.rest.pulls.listFiles({ owner: context.repo.owner, repo: context.repo.repo, @@ -39,8 +43,6 @@ jobs: }); const prFiles = prListFilesResponse.data; - let labelsToAdd = new Set(); - for (const [label, rules] of Object.entries(autolabelerConfig)) { const shouldAddLabel = prFiles.some((prFile) => { return rules.some((rule) => { @@ -57,34 +59,17 @@ jobs: } } - if (labelsToAdd.size > 0) { - console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`); - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - labels: Array.from(labelsToAdd), - }); - } - - - name: Label PR based on PR template selections - uses: actions/github-script@v7 - with: - script: | - const prBody = context.payload.pull_request.body.toLowerCase(); - const prNumber = context.payload.pull_request.number; - const labelMappings = { + const templateLabelMappings = { "🐞 bug fix": "bug fix", "✨ new feature": "new feature", "💥 breaking change": "breaking change", "🆕 new script": "new script" }; - let labelsToAdd = new Set(); - - for (const [checkbox, label] of Object.entries(labelMappings)) { + for (const [checkbox, label] of Object.entries(templateLabelMappings)) { const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i"); - if (regex.test(prBody)) { + const match = prBody.match(regex); + if (match && match[1].trim() !== "") { // Checkbox ist gesetzt labelsToAdd.add(label); } } From 167deb5d7fb7b6f13e53fbcd8bc903f23e523a69 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:15:38 +0100 Subject: [PATCH 452/480] Update autolabeler.yml --- .github/workflows/autolabeler.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml index ee715d838..edabe9678 100644 --- a/.github/workflows/autolabeler.yml +++ b/.github/workflows/autolabeler.yml @@ -60,8 +60,8 @@ jobs: } const templateLabelMappings = { - "🐞 bug fix": "bug fix", - "✨ new feature": "new feature", + "🐞 bug fix": "bugfix", + "✨ new feature": "feature", "💥 breaking change": "breaking change", "🆕 new script": "new script" }; From 4dfcd32d92f0c47d8d546185ef0a004807eb6ff8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:16:25 +0100 Subject: [PATCH 453/480] Update changelog-pr-config.json --- .github/changelog-pr-config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/changelog-pr-config.json b/.github/changelog-pr-config.json index c552c6a32..b59e97e51 100644 --- a/.github/changelog-pr-config.json +++ b/.github/changelog-pr-config.json @@ -13,7 +13,7 @@ }, { "title": "🆕 Features", - "labels": ["new feature"] + "labels": ["feature"] }, { "title": "🌐 Website", @@ -21,7 +21,7 @@ }, { "title": "🐞 Bug Fixes", - "labels": ["bug fix"] + "labels": ["bugfix"] }, { "title": "🧰 Maintenance", From e5bfb8f8a310523e38f65b0b98646e3b55f480ee Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:21:27 +0100 Subject: [PATCH 454/480] Update changelog-pr-config.json --- .github/changelog-pr-config.json | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/changelog-pr-config.json b/.github/changelog-pr-config.json index b59e97e51..8168251b6 100644 --- a/.github/changelog-pr-config.json +++ b/.github/changelog-pr-config.json @@ -4,7 +4,7 @@ "labels": ["breaking change"] }, { - "title": "✨ New Scripts", + "title": "🆕 New Scripts", "labels": ["new script"] }, { @@ -12,7 +12,15 @@ "labels": ["update script"] }, { - "title": "🆕 Features", + "title": "🐞 Bug Fixes (Updated Scripts)", + "labels": ["update script", "bugfix"] + }, + { + "title": "✨ Feature Updates (Updated Scripts)", + "labels": ["update script", "feature"] + }, + { + "title": "✨ New Features", "labels": ["feature"] }, { @@ -20,17 +28,13 @@ "labels": ["website"] }, { - "title": "🐞 Bug Fixes", - "labels": ["bugfix"] + "title": "📡 API", + "labels": ["api"] }, { "title": "🧰 Maintenance", "labels": ["maintenance"] }, - { - "title": "📡 API", - "labels": ["api"] - }, { "title": "❔ Unlabelled", "labels": [] From e1c25a3c8e29f8ab8144f858a5b1952cfa8f8312 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:23:24 +0100 Subject: [PATCH 455/480] Update CHANGELOG.md (#2531) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 272ca0d35..6230a9057 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-21 + +### Changes + +### 🚀 Updated Scripts + +- Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530)) + ## 2025-02-20 ### Changes From 0c13b714661c89f51c7289e68c0143e98b3761dc Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:24:37 +0100 Subject: [PATCH 456/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 66 +++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index 19e9a70ed..f11ea1c39 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -44,7 +44,7 @@ jobs: echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV fi - - name: Get categorized pull requests + - name: Get categorized pull requests (including PR template selections) id: get-categorized-prs uses: actions/github-script@v7 with: @@ -54,7 +54,23 @@ jobs: const configPath = path.resolve(process.env.CONFIG_PATH); const fileContent = await fs.readFile(configPath, 'utf-8'); - const changelogConfig = JSON.parse(fileContent); + let changelogConfig = JSON.parse(fileContent); + + // Reihenfolge der Kategorien beibehalten + const order = [ + "💥 Breaking Changes", + "🆕 New Scripts", + "🚀 Updated Scripts", + "🐞 Bug Fixes (Updated Scripts)", + "✨ Feature Updates (Updated Scripts)", + "✨ New Features", + "🌐 Website", + "📡 API", + "🧰 Maintenance", + "❔ Unlabelled" + ]; + changelogConfig = changelogConfig.sort((a, b) => order.indexOf(a.title) - order.indexOf(b.title)); + const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [] })); const latestDateInChangelog = new Date(process.env.LATEST_DATE); @@ -76,17 +92,55 @@ jobs: !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase())) ).forEach(pr => { const prLabels = pr.labels.map(label => label.name.toLowerCase()); + const prBody = pr.body.toLowerCase(); const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`; - for (const { labels, notes } of categorizedPRs) { - if (labels.length === 0 || labels.some(label => prLabels.includes(label))) { + // Mapping für PR-Checkboxen → Labels + const templateLabelMappings = { + "🐞 bug fix": "bugfix", + "✨ new feature": "feature", + "💥 breaking change": "breaking change", + "🆕 new script": "new script" + }; + + let addedByTemplate = false; + for (const [checkbox, label] of Object.entries(templateLabelMappings)) { + const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i"); + const match = prBody.match(regex); + if (match && match[1].trim() !== "") { // Checkbox ist gesetzt + prLabels.push(label); + addedByTemplate = true; + } + } + + // Unterteilung von "Updated Scripts" + let categorized = false; + for (const { labels, notes, title } of categorizedPRs) { + if (labels.includes("update script") && labels.includes("bugfix")) { + if (title === "🐞 Bug Fixes (Updated Scripts)") { + notes.push(prNote); + categorized = true; + break; + } + } else if (labels.includes("update script") && labels.includes("feature")) { + if (title === "✨ Feature Updates (Updated Scripts)") { + notes.push(prNote); + categorized = true; + break; + } + } else if (labels.length === 0 || labels.some(label => prLabels.includes(label))) { notes.push(prNote); + categorized = true; break; } } + + if (addedByTemplate) { + console.log(`PR #${pr.number} wurde durch PR-Template-Kategorie hinzugefügt`); + } }); - return categorizedPRs; + core.setOutput("result", JSON.stringify(categorizedPRs)); - name: Update CHANGELOG.md uses: actions/github-script@v7 @@ -98,7 +152,7 @@ jobs: const today = process.env.TODAY; const latestDateInChangelog = process.env.LATEST_DATE; const changelogPath = path.resolve('CHANGELOG.md'); - const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }}; + const categorizedPRs = JSON.parse(process.env.RESULT); let newReleaseNotes = `## ${today}\n\n### Changes\n\n`; for (const { title, notes } of categorizedPRs) { From ef6eeea6088470d2d6f748f432eb5875c0cbc3ed Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 08:29:30 +0100 Subject: [PATCH 457/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index f11ea1c39..ef9ed9746 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -86,13 +86,19 @@ jobs: per_page: 100, }); + if (!pulls || pulls.length === 0) { + console.log("⚠️ No merged PRs found. create empty Changelog."); + core.setOutput("result", JSON.stringify([])); + return; + } + pulls.filter(pr => pr.merged_at && new Date(pr.merged_at) > latestDateInChangelog && !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase())) ).forEach(pr => { const prLabels = pr.labels.map(label => label.name.toLowerCase()); - const prBody = pr.body.toLowerCase(); + const prBody = pr.body ? pr.body.toLowerCase() : ""; const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`; // Mapping für PR-Checkboxen → Labels @@ -113,7 +119,6 @@ jobs: } } - // Unterteilung von "Updated Scripts" let categorized = false; for (const { labels, notes, title } of categorizedPRs) { if (labels.includes("update script") && labels.includes("bugfix")) { @@ -136,7 +141,7 @@ jobs: } if (addedByTemplate) { - console.log(`PR #${pr.number} wurde durch PR-Template-Kategorie hinzugefügt`); + console.log(`PR #${pr.number} added by PR-Template category`); } }); From 7d40e148e9620a1ddffa6f5f81bf2940a4a3e097 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:04:16 +0100 Subject: [PATCH 458/480] Update autolabeler.yml --- .github/workflows/autolabeler.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/autolabeler.yml b/.github/workflows/autolabeler.yml index edabe9678..d0ebbcc25 100644 --- a/.github/workflows/autolabeler.yml +++ b/.github/workflows/autolabeler.yml @@ -34,8 +34,10 @@ jobs: const prNumber = context.payload.pull_request.number; const prBody = context.payload.pull_request.body.toLowerCase(); + // Label-Sammlung (um doppelte API-Calls zu vermeiden) let labelsToAdd = new Set(); + // Prüfe Datei-Änderungen const prListFilesResponse = await github.rest.pulls.listFiles({ owner: context.repo.owner, repo: context.repo.repo, @@ -59,6 +61,7 @@ jobs: } } + // Prüfe PR-Template Checkboxen mit den korrekten Labels const templateLabelMappings = { "🐞 bug fix": "bugfix", "✨ new feature": "feature", @@ -74,6 +77,10 @@ jobs: } } + // Debugging: Anzeigen, welche Labels tatsächlich erkannt wurden + console.log(`Labels to add: ${Array.from(labelsToAdd).join(", ")}`); + + // Labels setzen, falls neue erkannt wurden if (labelsToAdd.size > 0) { console.log(`Adding labels ${Array.from(labelsToAdd).join(", ")} to PR ${prNumber}`); await github.rest.issues.addLabels({ From dd8db43dea9a06d92e2f6fdebf41740b4333649d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:31:17 +0100 Subject: [PATCH 459/480] General Cleanup & Moving Files / Folders (#2532) --- CODE-AUDIT.md => .github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md | 0 .github/{ => CONTRIBUTOR_AND_GUIDES}/CODE_OF_CONDUCT.md | 0 .github/{ => CONTRIBUTOR_AND_GUIDES}/CONTRIBUTING.md | 0 .../CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md | 0 .../ct/AppName.md | 0 .../ct/AppName.sh | 0 .../install/AppName-install.md | 0 .../install/AppName-install.sh | 0 .../json/AppName.json | 0 .../json/AppName.md | 0 .github/workflows/{ => backup}/update_json_date.yml.bak | 0 .editorconfig => .vscode/.editorconfig | 0 README.md | 4 ++-- 13 files changed, 2 insertions(+), 2 deletions(-) rename CODE-AUDIT.md => .github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md (100%) rename .github/{ => CONTRIBUTOR_AND_GUIDES}/CODE_OF_CONDUCT.md (100%) rename .github/{ => CONTRIBUTOR_AND_GUIDES}/CONTRIBUTING.md (100%) rename USER_SUBMITTED_GUIDES.md => .github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/ct/AppName.md (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/ct/AppName.sh (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/install/AppName-install.md (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/install/AppName-install.sh (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/json/AppName.json (100%) rename .github/{CONTRIBUTOR_GUIDE => CONTRIBUTOR_AND_GUIDES}/json/AppName.md (100%) rename .github/workflows/{ => backup}/update_json_date.yml.bak (100%) rename .editorconfig => .vscode/.editorconfig (100%) diff --git a/CODE-AUDIT.md b/.github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md similarity index 100% rename from CODE-AUDIT.md rename to .github/CONTRIBUTOR_AND_GUIDES/CODE-AUDIT.md diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CONTRIBUTOR_AND_GUIDES/CODE_OF_CONDUCT.md similarity index 100% rename from .github/CODE_OF_CONDUCT.md rename to .github/CONTRIBUTOR_AND_GUIDES/CODE_OF_CONDUCT.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md similarity index 100% rename from .github/CONTRIBUTING.md rename to .github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md diff --git a/USER_SUBMITTED_GUIDES.md b/.github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md similarity index 100% rename from USER_SUBMITTED_GUIDES.md rename to .github/CONTRIBUTOR_AND_GUIDES/USER_SUBMITTED_GUIDES.md diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.md b/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/ct/AppName.md rename to .github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md diff --git a/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh b/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/ct/AppName.sh rename to .github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh diff --git a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.md b/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/install/AppName-install.md rename to .github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md diff --git a/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh b/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/install/AppName-install.sh rename to .github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh diff --git a/.github/CONTRIBUTOR_GUIDE/json/AppName.json b/.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/json/AppName.json rename to .github/CONTRIBUTOR_AND_GUIDES/json/AppName.json diff --git a/.github/CONTRIBUTOR_GUIDE/json/AppName.md b/.github/CONTRIBUTOR_AND_GUIDES/json/AppName.md similarity index 100% rename from .github/CONTRIBUTOR_GUIDE/json/AppName.md rename to .github/CONTRIBUTOR_AND_GUIDES/json/AppName.md diff --git a/.github/workflows/update_json_date.yml.bak b/.github/workflows/backup/update_json_date.yml.bak similarity index 100% rename from .github/workflows/update_json_date.yml.bak rename to .github/workflows/backup/update_json_date.yml.bak diff --git a/.editorconfig b/.vscode/.editorconfig similarity index 100% rename from .editorconfig rename to .vscode/.editorconfig diff --git a/README.md b/README.md index c8efa2274..b0b3a7cb0 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,10 @@
Donate - + Contribute - + Guides From 209aa220b0a6fc565974e2a5ede218ac64f52ead Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:40:28 +0100 Subject: [PATCH 460/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index ef9ed9746..2489645dc 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -56,7 +56,6 @@ jobs: const fileContent = await fs.readFile(configPath, 'utf-8'); let changelogConfig = JSON.parse(fileContent); - // Reihenfolge der Kategorien beibehalten const order = [ "💥 Breaking Changes", "🆕 New Scripts", @@ -87,7 +86,7 @@ jobs: }); if (!pulls || pulls.length === 0) { - console.log("⚠️ No merged PRs found. create empty Changelog."); + console.log("⚠️ No merged PRs found. Generating empty changelog."); core.setOutput("result", JSON.stringify([])); return; } @@ -101,7 +100,6 @@ jobs: const prBody = pr.body ? pr.body.toLowerCase() : ""; const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`; - // Mapping für PR-Checkboxen → Labels const templateLabelMappings = { "🐞 bug fix": "bugfix", "✨ new feature": "feature", @@ -113,7 +111,7 @@ jobs: for (const [checkbox, label] of Object.entries(templateLabelMappings)) { const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i"); const match = prBody.match(regex); - if (match && match[1].trim() !== "") { // Checkbox ist gesetzt + if (match && match[1].trim() !== "") { prLabels.push(label); addedByTemplate = true; } @@ -141,11 +139,12 @@ jobs: } if (addedByTemplate) { - console.log(`PR #${pr.number} added by PR-Template category`); + console.log(`PR #${pr.number} categorized via PR template selection.`); } }); - core.setOutput("result", JSON.stringify(categorizedPRs)); + core.setOutput("result", JSON.stringify(categorizedPRs.length ? categorizedPRs : [])); + - name: Update CHANGELOG.md uses: actions/github-script@v7 From 16b8bbfca635656a16371c008d68b77f3c1e6773 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:42:01 +0100 Subject: [PATCH 461/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index 2489645dc..8c2f46b4b 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -86,8 +86,8 @@ jobs: }); if (!pulls || pulls.length === 0) { - console.log("⚠️ No merged PRs found. Generating empty changelog."); - core.setOutput("result", JSON.stringify([])); + console.log("⚠️ Keine gemergten PRs gefunden. Erzeuge leeres Changelog."); + core.setOutput("result", "[]"); return; } @@ -139,13 +139,12 @@ jobs: } if (addedByTemplate) { - console.log(`PR #${pr.number} categorized via PR template selection.`); + console.log(`PR #${pr.number} wurde durch PR-Template-Kategorie hinzugefügt.`); } }); core.setOutput("result", JSON.stringify(categorizedPRs.length ? categorizedPRs : [])); - - + - name: Update CHANGELOG.md uses: actions/github-script@v7 with: From d0cd58e923301e3fe606957bcc3295a01453a81f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:44:54 +0100 Subject: [PATCH 462/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index 8c2f46b4b..5d49254d7 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -30,9 +30,7 @@ jobs: - name: Get latest dates in changelog run: | - # Extrahiere die neuesten zwei Daten aus dem Changelog DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}') - LATEST_DATE=$(echo "$DATES" | sed -n '1p') SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p') TODAY=$(date -u +%Y-%m-%d) @@ -86,7 +84,7 @@ jobs: }); if (!pulls || pulls.length === 0) { - console.log("⚠️ Keine gemergten PRs gefunden. Erzeuge leeres Changelog."); + console.log("⚠️ Keine gemergten PRs gefunden. Setze leeres Changelog."); core.setOutput("result", "[]"); return; } @@ -144,7 +142,7 @@ jobs: }); core.setOutput("result", JSON.stringify(categorizedPRs.length ? categorizedPRs : [])); - + - name: Update CHANGELOG.md uses: actions/github-script@v7 with: @@ -155,7 +153,11 @@ jobs: const today = process.env.TODAY; const latestDateInChangelog = process.env.LATEST_DATE; const changelogPath = path.resolve('CHANGELOG.md'); - const categorizedPRs = JSON.parse(process.env.RESULT); + const result = `${{ steps.get-categorized-prs.outputs.result }}`.trim(); + + console.log("🔹 Ergebnis aus get-categorized-prs:", result); + + const categorizedPRs = result && result !== "undefined" ? JSON.parse(result) : []; let newReleaseNotes = `## ${today}\n\n### Changes\n\n`; for (const { title, notes } of categorizedPRs) { @@ -167,7 +169,6 @@ jobs: const changelogContent = await fs.readFile(changelogPath, 'utf-8'); const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`); - // Ersetze oder füge Release Notes ein const regex = changelogIncludesTodaysReleaseNotes ? new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs") : new RegExp(`(?=## ${latestDateInChangelog})`, "gs"); From 109c48694eb8f73622d077d7ed693c07da5b70d6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:45:58 +0100 Subject: [PATCH 463/480] Update changelog-pr.yml --- .github/workflows/changelog-pr.yml | 76 ++++-------------------------- 1 file changed, 9 insertions(+), 67 deletions(-) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index 5d49254d7..19e9a70ed 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -30,7 +30,9 @@ jobs: - name: Get latest dates in changelog run: | + # Extrahiere die neuesten zwei Daten aus dem Changelog DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}') + LATEST_DATE=$(echo "$DATES" | sed -n '1p') SECOND_LATEST_DATE=$(echo "$DATES" | sed -n '2p') TODAY=$(date -u +%Y-%m-%d) @@ -42,7 +44,7 @@ jobs: echo "LATEST_DATE=$LATEST_DATE" >> $GITHUB_ENV fi - - name: Get categorized pull requests (including PR template selections) + - name: Get categorized pull requests id: get-categorized-prs uses: actions/github-script@v7 with: @@ -52,22 +54,7 @@ jobs: const configPath = path.resolve(process.env.CONFIG_PATH); const fileContent = await fs.readFile(configPath, 'utf-8'); - let changelogConfig = JSON.parse(fileContent); - - const order = [ - "💥 Breaking Changes", - "🆕 New Scripts", - "🚀 Updated Scripts", - "🐞 Bug Fixes (Updated Scripts)", - "✨ Feature Updates (Updated Scripts)", - "✨ New Features", - "🌐 Website", - "📡 API", - "🧰 Maintenance", - "❔ Unlabelled" - ]; - changelogConfig = changelogConfig.sort((a, b) => order.indexOf(a.title) - order.indexOf(b.title)); - + const changelogConfig = JSON.parse(fileContent); const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [] })); const latestDateInChangelog = new Date(process.env.LATEST_DATE); @@ -83,65 +70,23 @@ jobs: per_page: 100, }); - if (!pulls || pulls.length === 0) { - console.log("⚠️ Keine gemergten PRs gefunden. Setze leeres Changelog."); - core.setOutput("result", "[]"); - return; - } - pulls.filter(pr => pr.merged_at && new Date(pr.merged_at) > latestDateInChangelog && !pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase())) ).forEach(pr => { const prLabels = pr.labels.map(label => label.name.toLowerCase()); - const prBody = pr.body ? pr.body.toLowerCase() : ""; const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`; - const templateLabelMappings = { - "🐞 bug fix": "bugfix", - "✨ new feature": "feature", - "💥 breaking change": "breaking change", - "🆕 new script": "new script" - }; - - let addedByTemplate = false; - for (const [checkbox, label] of Object.entries(templateLabelMappings)) { - const regex = new RegExp(`- \\[(.*?)\\] ${checkbox}`, "i"); - const match = prBody.match(regex); - if (match && match[1].trim() !== "") { - prLabels.push(label); - addedByTemplate = true; - } - } - - let categorized = false; - for (const { labels, notes, title } of categorizedPRs) { - if (labels.includes("update script") && labels.includes("bugfix")) { - if (title === "🐞 Bug Fixes (Updated Scripts)") { - notes.push(prNote); - categorized = true; - break; - } - } else if (labels.includes("update script") && labels.includes("feature")) { - if (title === "✨ Feature Updates (Updated Scripts)") { - notes.push(prNote); - categorized = true; - break; - } - } else if (labels.length === 0 || labels.some(label => prLabels.includes(label))) { + for (const { labels, notes } of categorizedPRs) { + if (labels.length === 0 || labels.some(label => prLabels.includes(label))) { notes.push(prNote); - categorized = true; break; } } - - if (addedByTemplate) { - console.log(`PR #${pr.number} wurde durch PR-Template-Kategorie hinzugefügt.`); - } }); - core.setOutput("result", JSON.stringify(categorizedPRs.length ? categorizedPRs : [])); + return categorizedPRs; - name: Update CHANGELOG.md uses: actions/github-script@v7 @@ -153,11 +98,7 @@ jobs: const today = process.env.TODAY; const latestDateInChangelog = process.env.LATEST_DATE; const changelogPath = path.resolve('CHANGELOG.md'); - const result = `${{ steps.get-categorized-prs.outputs.result }}`.trim(); - - console.log("🔹 Ergebnis aus get-categorized-prs:", result); - - const categorizedPRs = result && result !== "undefined" ? JSON.parse(result) : []; + const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }}; let newReleaseNotes = `## ${today}\n\n### Changes\n\n`; for (const { title, notes } of categorizedPRs) { @@ -169,6 +110,7 @@ jobs: const changelogContent = await fs.readFile(changelogPath, 'utf-8'); const changelogIncludesTodaysReleaseNotes = changelogContent.includes(`\n## ${today}`); + // Ersetze oder füge Release Notes ein const regex = changelogIncludesTodaysReleaseNotes ? new RegExp(`## ${today}.*(?=## ${latestDateInChangelog})`, "gs") : new RegExp(`(?=## ${latestDateInChangelog})`, "gs"); From 666e170f7d28888d67f467396e7a1cfff8011031 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 10:46:48 +0100 Subject: [PATCH 464/480] Update CHANGELOG.md (#2536) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6230a9057..f889b0b27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530)) +### 🧰 Maintenance + +- [gh] General Cleanup & Moving Files / Folders [@MickLesk](https://github.com/MickLesk) ([#2532](https://github.com/community-scripts/ProxmoxVE/pull/2532)) + ## 2025-02-20 ### Changes From 10c46723fe7d536d7660244951a0fa4587c885fc Mon Sep 17 00:00:00 2001 From: jaminmc <1310376+jaminmc@users.noreply.github.com> Date: Fri, 21 Feb 2025 09:45:30 -0500 Subject: [PATCH 465/480] Add ZFS to Podman. Now it works on ZFS! (#2526) * Allow Podman to work on ZFS containers * Fix ZFS for Podman-Create missing folder. * Added option to install Portainer or Portainer agent in Podman * Fix source for Podman Homeassistant so Portainer and other containers can be installed. * fix Podman not creating storage/volumes, until one exists. --- install/podman-homeassistant-install.sh | 61 +++++++++++++++++++++++++ install/podman-install.sh | 61 +++++++++++++++++++++++++ json/podman-homeassistant.json | 8 ++-- json/podman.json | 2 +- 4 files changed, 127 insertions(+), 5 deletions(-) diff --git a/install/podman-homeassistant-install.sh b/install/podman-homeassistant-install.sh index cff4b32b3..b4a2b167b 100644 --- a/install/podman-homeassistant-install.sh +++ b/install/podman-homeassistant-install.sh @@ -19,11 +19,72 @@ $STD apt-get install -y sudo $STD apt-get install -y mc msg_ok "Installed Dependencies" +get_latest_release() { + curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 +} + +PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer") +PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent") + +if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then + msg_info "Enabling ZFS support." + mkdir -p /etc/containers + cat <<'EOF' >/usr/local/bin/overlayzfsmount +#!/bin/sh +exec /bin/mount -t overlay overlay "$@" +EOF + chmod +x /usr/local/bin/overlayzfsmount + cat <<'EOF' >/etc/containers/storage.conf +[storage] +driver = "overlay" +runroot = "/run/containers/storage" +graphroot = "/var/lib/containers/storage" + +[storage.options] +pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""} +mount_program = "/usr/local/bin/overlayzfsmount" + +[storage.options.overlay] +mountopt = "nodev" +EOF +fi + msg_info "Installing Podman" $STD apt-get -y install podman $STD systemctl enable --now podman.socket +echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf msg_ok "Installed Podman" +read -r -p "Would you like to add Portainer? " prompt +if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" + podman volume create portainer_data >/dev/null + $STD podman run -d \ + -p 8000:8000 \ + -p 9443:9443 \ + --name=portainer \ + --restart=always \ + -v /run/podman/podman.sock:/var/run/docker.sock \ + -v portainer_data:/data \ + portainer/portainer-ce:latest + msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION" +else + read -r -p "Would you like to add the Portainer Agent? " prompt + if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION" + podman volume create temp >/dev/null + podman volume remove temp >/dev/null + $STD podman run -d \ + -p 9001:9001 \ + --name portainer_agent \ + --restart=always \ + -v /run/podman/podman.sock:/var/run/docker.sock \ + -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \ + portainer/agent + msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION" + fi +fi + msg_info "Pulling Home Assistant Image" $STD podman pull docker.io/homeassistant/home-assistant:stable msg_ok "Pulled Home Assistant Image" diff --git a/install/podman-install.sh b/install/podman-install.sh index 2b496ba75..a584a96aa 100644 --- a/install/podman-install.sh +++ b/install/podman-install.sh @@ -19,12 +19,73 @@ $STD apt-get install -y sudo $STD apt-get install -y mc msg_ok "Installed Dependencies" +get_latest_release() { + curl -sL https://api.github.com/repos/$1/releases/latest | grep '"tag_name":' | cut -d'"' -f4 +} + +PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer") +PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent") + +if $STD mount | grep 'on / type zfs' > null && echo "ZFS"; then + msg_info "Enabling ZFS support." + mkdir -p /etc/containers + cat <<'EOF' >/usr/local/bin/overlayzfsmount +#!/bin/sh +exec /bin/mount -t overlay overlay "$@" +EOF + chmod +x /usr/local/bin/overlayzfsmount + cat <<'EOF' >/etc/containers/storage.conf +[storage] +driver = "overlay" +runroot = "/run/containers/storage" +graphroot = "/var/lib/containers/storage" + +[storage.options] +pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""} +mount_program = "/usr/local/bin/overlayzfsmount" + +[storage.options.overlay] +mountopt = "nodev" +EOF +fi + msg_info "Installing Podman" $STD apt-get -y install podman $STD systemctl enable --now podman.socket echo -e 'unqualified-search-registries=["docker.io"]' >> /etc/containers/registries.conf msg_ok "Installed Podman" +read -r -p "Would you like to add Portainer? " prompt +if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Portainer $PORTAINER_LATEST_VERSION" + podman volume create portainer_data >/dev/null + $STD podman run -d \ + -p 8000:8000 \ + -p 9443:9443 \ + --name=portainer \ + --restart=always \ + -v /run/podman/podman.sock:/var/run/docker.sock \ + -v portainer_data:/data \ + portainer/portainer-ce:latest + msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION" +else + read -r -p "Would you like to add the Portainer Agent? " prompt + if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then + msg_info "Installing Portainer agent $PORTAINER_AGENT_LATEST_VERSION" + podman volume create temp >/dev/null + podman volume remove temp >/dev/null + $STD podman run -d \ + -p 9001:9001 \ + --name portainer_agent \ + --restart=always \ + -v /run/podman/podman.sock:/var/run/docker.sock \ + -v /var/lib/containers/storage/volumes:/var/lib/docker/volumes \ + portainer/agent + msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION" + fi +fi + + motd_ssh customize diff --git a/json/podman-homeassistant.json b/json/podman-homeassistant.json index 1e38b8b0c..a60757dd6 100644 --- a/json/podman-homeassistant.json +++ b/json/podman-homeassistant.json @@ -31,10 +31,6 @@ "password": null }, "notes": [ - { - "text": "Doesn't work with ZFS", - "type": "warning" - }, { "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", "type": "warning" @@ -42,6 +38,10 @@ { "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`", "type": "info" + }, + { + "text": "Options to Install Portainer or Portainer Agent", + "type": "warning" } ] } \ No newline at end of file diff --git a/json/podman.json b/json/podman.json index d995ffdcc..eb2871f11 100644 --- a/json/podman.json +++ b/json/podman.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "Doesn't work with ZFS", + "text": "Options to Install Portainer or Portainer Agent", "type": "warning" } ] From a9362e0b4a0c60d1227e42e501cc7345740dacf8 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 16:32:17 +0100 Subject: [PATCH 466/480] Update CHANGELOG.md (#2545) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f889b0b27..cde6adfbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Add ZFS to Podman. Now it works on ZFS! [@jaminmc](https://github.com/jaminmc) ([#2526](https://github.com/community-scripts/ProxmoxVE/pull/2526)) - Fix: Tianji - Downgrade Node [@MickLesk](https://github.com/MickLesk) ([#2530](https://github.com/community-scripts/ProxmoxVE/pull/2530)) ### 🧰 Maintenance From dccc45d49242a76b22ecd39e27a234390855031f Mon Sep 17 00:00:00 2001 From: Michael Casey Date: Sat, 22 Feb 2025 19:52:45 +1000 Subject: [PATCH 467/480] Fix a few broken icon links (#2548) --- json/glance.json | 2 +- json/pocketid.json | 2 +- json/stirling-pdf.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/json/glance.json b/json/glance.json index 94a8b0730..7b37f5bd2 100644 --- a/json/glance.json +++ b/json/glance.json @@ -11,7 +11,7 @@ "interface_port": 8080, "documentation": "https://github.com/glanceapp/glance/blob/main/docs/configuration.md", "website": "https://github.com/glanceapp/glance", - "logo": "https://github.com/glanceapp/glance/blob/main/internal/assets/static/app-icon.png?raw=true", + "logo": "https://raw.githubusercontent.com/glanceapp/glance/refs/heads/main/internal/glance/static/app-icon.png", "description": "A self-hosted dashboard that puts all your feeds in one place", "install_methods": [ { diff --git a/json/pocketid.json b/json/pocketid.json index 2e9880aa9..65f000408 100644 --- a/json/pocketid.json +++ b/json/pocketid.json @@ -11,7 +11,7 @@ "interface_port": 80, "documentation": "https://stonith404.github.io/pocket-id/introduction", "website": "https://github.com/stonith404/pocket-id", - "logo": "https://raw.githubusercontent.com/stonith404/pocket-id/refs/heads/main/docs/static/img/pocket-id.png", + "logo": "https://raw.githubusercontent.com/pocket-id/pocket-id/refs/heads/main/backend/resources/images/logoDark.svg", "description": "Pocket ID is a simple OIDC provider that allows users to authenticate with their passkeys to your services.", "install_methods": [ { diff --git a/json/stirling-pdf.json b/json/stirling-pdf.json index 83219e292..f8a1c6be4 100644 --- a/json/stirling-pdf.json +++ b/json/stirling-pdf.json @@ -11,7 +11,7 @@ "interface_port": 8080, "documentation": null, "website": "https://github.com/Stirling-Tools/Stirling-PDF", - "logo": "https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling-pdf.png", + "logo": "https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/refs/heads/main/docs/stirling.svg", "description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.", "install_methods": [ { From 13c2f50f19e2f4a777649d8dc090baa73451ea4d Mon Sep 17 00:00:00 2001 From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Date: Sat, 22 Feb 2025 12:26:17 +0100 Subject: [PATCH 468/480] Fix: URL's in CONTRIBUTING.md (#2552) --- .github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md b/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md index b0ced0474..f5a46fcd1 100644 --- a/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md +++ b/.github/CONTRIBUTOR_AND_GUIDES/CONTRIBUTING.md @@ -40,27 +40,27 @@ Before contributing, please ensure that you have the following setup: - [Shell Format](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format) ### Important Notes -- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh) as templates when creating new scripts. +- Use [AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh) and [AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) as templates when creating new scripts. --- # 🚀 The Application Script (ct/AppName.sh) -- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.md). +- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.md). - These scripts are responsible for container creation, setting the necessary variables and handling the update of the application once installed. --- # 🛠 The Installation Script (install/AppName-install.sh) -- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.md). +- You can find all coding standards, as well as the structure for this file [here](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.md). - These scripts are responsible for the installation of the application. --- ## 🚀 Building Your Own Scripts -Start with the [template script](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh) +Start with the [template script](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) --- @@ -99,8 +99,8 @@ Open a Pull Request from your feature branch to the main repository branch. You ## 📚 Pages -- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/ct/AppName.sh) -- [Install Template: AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/install/AppName-install.sh) -- [JSON Template: AppName.json](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_GUIDE/json/AppName.json) +- [CT Template: AppName.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/ct/AppName.sh) +- [Install Template: AppName-install.sh](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/install/AppName-install.sh) +- [JSON Template: AppName.json](https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTOR_AND_GUIDES/json/AppName.json) From 92d2065f1da46aa0970acbeefc08b19f36bd4bba Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:06:29 +0100 Subject: [PATCH 469/480] Update CHANGELOG.md (#2550) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cde6adfbf..b8dad70d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,18 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-22 + +### Changes + +### 🌐 Website + +- Fix a few broken icon links [@Snarkenfaugister](https://github.com/Snarkenfaugister) ([#2548](https://github.com/community-scripts/ProxmoxVE/pull/2548)) + +### 🧰 Maintenance + +- Fix: URL's in CONTRIBUTING.md [@bvdberg01](https://github.com/bvdberg01) ([#2552](https://github.com/community-scripts/ProxmoxVE/pull/2552)) + ## 2025-02-21 ### Changes From 2937516869508f9032747e71e31f6350a059fda6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:35:44 +0100 Subject: [PATCH 470/480] New Script: bolt.diy (#2528) * Add bolt.diy script * fixes --- ct/boltdiy.sh | 71 ++++++++++++++++++++++++++++++++++++ install/boltdiy-install.sh | 74 ++++++++++++++++++++++++++++++++++++++ json/boltdiy.json | 34 ++++++++++++++++++ 3 files changed, 179 insertions(+) create mode 100644 ct/boltdiy.sh create mode 100644 install/boltdiy-install.sh create mode 100644 json/boltdiy.json diff --git a/ct/boltdiy.sh b/ct/boltdiy.sh new file mode 100644 index 000000000..931eed883 --- /dev/null +++ b/ct/boltdiy.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/stackblitz-labs/bolt.diy/ + +APP="boltdiy" +TAGS="code;ai" +var_cpu="2" +var_ram="3072" +var_disk="6" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/bolt.diy ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/boltdiy_version.txt)" ]] || [[ ! -f /opt/boltdiy_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop boltdiy + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + temp_dir=$(mktemp -d) + temp_file=$(mktemp) + cd $temp_dir + wget -q "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file + tar xzf $temp_file + cp -rf bolt.diy-${RELEASE}/* /opt/bolt.diy + cd /opt/bolt.diy + $STD pnpm install + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start boltdiy + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -rf $temp_file + rm -rf $temp_dir + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/boltdiy_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}:5173${CL}" diff --git a/install/boltdiy-install.sh b/install/boltdiy-install.sh new file mode 100644 index 000000000..17b4b2fec --- /dev/null +++ b/install/boltdiy-install.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Slaviša Arežina (tremor021) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/stackblitz-labs/bolt.diy/ + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg \ + git +msg_ok "Installed Dependencies" + +msg_info "Setup Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Setup Node.js Repository" + +msg_info "Setup Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g pnpm +msg_ok "Setup Node.js" + +msg_info "Setup bolt.diy" +temp_file=$(mktemp) +RELEASE=$(curl -s https://api.github.com/repos/stackblitz-labs/bolt.diy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/stackblitz-labs/bolt.diy/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file +tar xzf $temp_file +mv bolt.diy-${RELEASE} /opt/bolt.diy +cd /opt/bolt.diy +$STD pnpm install +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Setup bolt.diy" + +msg_info "Creating Service" +cat </etc/systemd/system/boltdiy.service +[Unit] +Description=bolt.diy Service +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/bolt.diy +ExecStart=/usr/bin/pnpm run dev --host +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now boltdiy +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -f $temp_file +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/boltdiy.json b/json/boltdiy.json new file mode 100644 index 000000000..402f8caa3 --- /dev/null +++ b/json/boltdiy.json @@ -0,0 +1,34 @@ +{ + "name": "bolt.diy", + "slug": "boltdiy", + "categories": [ + 20 + ], + "date_created": "2025-02-21", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 5173, + "documentation": "https://stackblitz-labs.github.io/bolt.diy/", + "website": "https://github.com/stackblitz-labs/bolt.diy", + "logo": "https://github.com/stackblitz-labs/bolt.diy/raw/refs/heads/main/icons/logo-text.svg", + "description": "The official open source version of Bolt.new (previously known as oTToDev and bolt.new ANY LLM), which allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK!", + "install_methods": [ + { + "type": "default", + "script": "ct/boltdiy.sh", + "resources": { + "cpu": 2, + "ram": 3072, + "hdd": 6, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] + } From 1e2f953a8f0acd77ca78fe5fee927c9ad8ff22ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:36:26 +0100 Subject: [PATCH 471/480] Remove setting NAT as its already in PostUp/Down (#2510) --- install/wireguard-install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install/wireguard-install.sh b/install/wireguard-install.sh index 545c9de83..afe1b48e2 100644 --- a/install/wireguard-install.sh +++ b/install/wireguard-install.sh @@ -22,7 +22,6 @@ msg_ok "Installed Dependencies" msg_info "Installing WireGuard" $STD apt-get install -y wireguard wireguard-tools net-tools iptables -iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install -y iptables-persistent &>/dev/null $STD netfilter-persistent reload msg_ok "Installed WireGuard" From d35a01f5c4549c08b0ed7a3678cfd17b1a3e15dc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:37:33 +0100 Subject: [PATCH 472/480] Update .app files (#2569) Co-authored-by: GitHub Actions --- ct/headers/boltdiy | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/boltdiy diff --git a/ct/headers/boltdiy b/ct/headers/boltdiy new file mode 100644 index 000000000..be687dd08 --- /dev/null +++ b/ct/headers/boltdiy @@ -0,0 +1,6 @@ + __ ____ ___ + / /_ ____ / / /_____/ (_)_ __ + / __ \/ __ \/ / __/ __ / / / / / + / /_/ / /_/ / / /_/ /_/ / / /_/ / +/_.___/\____/_/\__/\__,_/_/\__, / + /____/ From 9c867b467aa463b0f73a66b8d04822356a125724 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:38:01 +0100 Subject: [PATCH 473/480] Update date in json (#2568) Co-authored-by: GitHub Actions --- json/boltdiy.json | 64 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/json/boltdiy.json b/json/boltdiy.json index 402f8caa3..6705cd9b4 100644 --- a/json/boltdiy.json +++ b/json/boltdiy.json @@ -1,34 +1,34 @@ { - "name": "bolt.diy", - "slug": "boltdiy", - "categories": [ - 20 - ], - "date_created": "2025-02-21", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 5173, - "documentation": "https://stackblitz-labs.github.io/bolt.diy/", - "website": "https://github.com/stackblitz-labs/bolt.diy", - "logo": "https://github.com/stackblitz-labs/bolt.diy/raw/refs/heads/main/icons/logo-text.svg", - "description": "The official open source version of Bolt.new (previously known as oTToDev and bolt.new ANY LLM), which allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK!", - "install_methods": [ - { - "type": "default", - "script": "ct/boltdiy.sh", - "resources": { - "cpu": 2, - "ram": 3072, - "hdd": 6, - "os": "debian", - "version": "12" - } + "name": "bolt.diy", + "slug": "boltdiy", + "categories": [ + 20 + ], + "date_created": "2025-02-23", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 5173, + "documentation": "https://stackblitz-labs.github.io/bolt.diy/", + "website": "https://github.com/stackblitz-labs/bolt.diy", + "logo": "https://github.com/stackblitz-labs/bolt.diy/raw/refs/heads/main/icons/logo-text.svg", + "description": "The official open source version of Bolt.new (previously known as oTToDev and bolt.new ANY LLM), which allows you to choose the LLM that you use for each prompt! Currently, you can use OpenAI, Anthropic, Ollama, OpenRouter, Gemini, LMStudio, Mistral, xAI, HuggingFace, DeepSeek, or Groq models - and it is easily extended to use any other model supported by the Vercel AI SDK!", + "install_methods": [ + { + "type": "default", + "script": "ct/boltdiy.sh", + "resources": { + "cpu": 2, + "ram": 3072, + "hdd": 6, + "os": "debian", + "version": "12" } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] - } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From d7dceede4b044804419859a1b1374e9bc7325d02 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:38:45 +0100 Subject: [PATCH 474/480] Update CHANGELOG.md (#2567) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8dad70d1..d59578aa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,18 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-23 + +### Changes + +### 🆕 New Scripts + +- New Script: bolt.diy [@tremor021](https://github.com/tremor021) ([#2528](https://github.com/community-scripts/ProxmoxVE/pull/2528)) + +### 🚀 Updated Scripts + +- Fix: Wireguard - Remove setting NAT as its already in PostUp/Down [@tremor021](https://github.com/tremor021) ([#2510](https://github.com/community-scripts/ProxmoxVE/pull/2510)) + ## 2025-02-22 ### Changes From eaceba3ed3e09a2cb218744ffbab68cf114a077b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Vila=20Rodr=C3=ADguez?= <31632297+miviro@users.noreply.github.com> Date: Sun, 23 Feb 2025 18:44:04 +0100 Subject: [PATCH 475/480] New Script: Hev socks5 server (#2454) * initial test * fix port message and replace back github urls * best practices * final fixes * add username ct * last test, uyndo this commit * final * remove editor formatting chagnes from build.func * trailing line * remove comments * get tarball, generate credentials * test1 * arreglito * arreglo clean up * final * reduce sys reqs * typo * url change * remove backup and clean up --- ct/hev-socks5-server.sh | 64 ++++++++++++++++++++++++++++ install/hev-socks5-server-install.sh | 61 ++++++++++++++++++++++++++ json/hev-socks5-server.json | 43 +++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 ct/hev-socks5-server.sh create mode 100644 install/hev-socks5-server-install.sh create mode 100644 json/hev-socks5-server.json diff --git a/ct/hev-socks5-server.sh b/ct/hev-socks5-server.sh new file mode 100644 index 000000000..f439d4284 --- /dev/null +++ b/ct/hev-socks5-server.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: miviro +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/heiher/hev-socks5-server + +APP="hev-socks5-server" +TAGS="proxy,socks5" +var_cpu="1" +var_ram="512" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/${APP} ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/heiher/${APP}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping $APP" + systemctl stop $APP + msg_ok "Stopped $APP" + + msg_info "Updating $APP to v${RELEASE}" + curl -L -o "${APP}" "https://github.com/heiher/${APP}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64" + mv ${APP} /opt/${APP} + chmod +x /opt/${APP} + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting $APP" + systemctl start $APP + msg_ok "Started $APP" + + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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 with a SOCKS5 client using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:1080${CL}" +echo -e "${INFO}${YW} and the credentials stored at /root/hev.creds${CL}" \ No newline at end of file diff --git a/install/hev-socks5-server-install.sh b/install/hev-socks5-server-install.sh new file mode 100644 index 000000000..d5b6310bc --- /dev/null +++ b/install/hev-socks5-server-install.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: miviro +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/heiher/hev-socks5-server + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Setup ${APPLICATION}" +RELEASE=$(curl -s https://api.github.com/repos/heiher/${APPLICATION}/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +curl -L -o "${APPLICATION}" "https://github.com/heiher/${APPLICATION}/releases/download/${RELEASE}/hev-socks5-server-linux-x86_64" +mv ${APPLICATION} /opt/${APPLICATION} +chmod +x /opt/${APPLICATION} +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +curl -L -o "main.yml" "https://raw.githubusercontent.com/heiher/${APPLICATION}/refs/heads/master/conf/main.yml" +sed -i 's/^#auth:/auth:/; s/^# file: conf\/auth.txt/ file: \/root\/hev.creds/' main.yml +mkdir -p /etc/${APPLICATION} +USERNAME="admin" +PASSWORD=$(openssl rand -base64 16) +MARK="0" +echo "$USERNAME $PASSWORD $MARK" > /root/hev.creds +mv main.yml /etc/${APPLICATION}/main.yml +msg_ok "Setup ${APPLICATION}" + +msg_info "Creating Service" +cat </etc/systemd/system/${APPLICATION}.service +[Unit] +Description=${APPLICATION} Service +After=network.target + +[Service] +ExecStart=/opt/${APPLICATION} /etc/${APPLICATION}/main.yml +Restart=always + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ${APPLICATION}.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/hev-socks5-server.json b/json/hev-socks5-server.json new file mode 100644 index 000000000..e5e5fde84 --- /dev/null +++ b/json/hev-socks5-server.json @@ -0,0 +1,43 @@ +{ + "name": "hev-socks5-server", + "slug": "hev-socks5-server", + "categories": [ + 4 + ], + "date_created": "2024-02-17", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 1080, + "documentation": null, + "website": "https://github.com/heiher/hev-socks5-server", + "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/405px-Tux.svg.png", + "description": "HevSocks5Server is a simple, lightweight socks5 server.", + "install_methods": [ + { + "type": "default", + "script": "ct/hev-socks5-server.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Default credentials: `cat /root/hev.creds`", + "type": "info" + }, + { + "text": "Config stored at `/etc/hev-socks5-server/main.yml`", + "type": "info" + } + ] +} \ No newline at end of file From 67b90f5582fe8e87fffc0c194fb38d20b282057d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:02:56 +0100 Subject: [PATCH 476/480] Update .app files (#2572) Co-authored-by: GitHub Actions --- ct/headers/hev-socks5-server | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/hev-socks5-server diff --git a/ct/headers/hev-socks5-server b/ct/headers/hev-socks5-server new file mode 100644 index 000000000..f04fb5f4b --- /dev/null +++ b/ct/headers/hev-socks5-server @@ -0,0 +1,6 @@ + __ __ ______ + / /_ ___ _ __ _________ _____/ /_______/ ____/ ________ ______ _____ _____ + / __ \/ _ \ | / /_____/ ___/ __ \/ ___/ //_/ ___/___ \______/ ___/ _ \/ ___/ | / / _ \/ ___/ + / / / / __/ |/ /_____(__ ) /_/ / /__/ ,< (__ )___/ /_____(__ ) __/ / | |/ / __/ / +/_/ /_/\___/|___/ /____/\____/\___/_/|_/____/_____/ /____/\___/_/ |___/\___/_/ + From 0a9dffb7a1b442f0367dd9f07b182d8b219c4d5c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:03:42 +0100 Subject: [PATCH 477/480] Update date in json (#2570) Co-authored-by: GitHub Actions --- json/hev-socks5-server.json | 82 ++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/json/hev-socks5-server.json b/json/hev-socks5-server.json index e5e5fde84..0be495b08 100644 --- a/json/hev-socks5-server.json +++ b/json/hev-socks5-server.json @@ -1,43 +1,43 @@ { - "name": "hev-socks5-server", - "slug": "hev-socks5-server", - "categories": [ - 4 - ], - "date_created": "2024-02-17", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 1080, - "documentation": null, - "website": "https://github.com/heiher/hev-socks5-server", - "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/405px-Tux.svg.png", - "description": "HevSocks5Server is a simple, lightweight socks5 server.", - "install_methods": [ - { - "type": "default", - "script": "ct/hev-socks5-server.sh", - "resources": { - "cpu": 1, - "ram": 512, - "hdd": 2, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null + "name": "hev-socks5-server", + "slug": "hev-socks5-server", + "categories": [ + 4 + ], + "date_created": "2025-02-23", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 1080, + "documentation": null, + "website": "https://github.com/heiher/hev-socks5-server", + "logo": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/405px-Tux.svg.png", + "description": "HevSocks5Server is a simple, lightweight socks5 server.", + "install_methods": [ + { + "type": "default", + "script": "ct/hev-socks5-server.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Default credentials: `cat /root/hev.creds`", + "type": "info" }, - "notes": [ - { - "text": "Default credentials: `cat /root/hev.creds`", - "type": "info" - }, - { - "text": "Config stored at `/etc/hev-socks5-server/main.yml`", - "type": "info" - } - ] -} \ No newline at end of file + { + "text": "Config stored at `/etc/hev-socks5-server/main.yml`", + "type": "info" + } + ] +} From 0f410e11ebce01d4e26ec9d6951ab9f172434af2 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:04:19 +0100 Subject: [PATCH 478/480] Update CHANGELOG.md (#2571) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d59578aa3..492e553ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🆕 New Scripts +- New Script: Hev socks5 server [@miviro](https://github.com/miviro) ([#2454](https://github.com/community-scripts/ProxmoxVE/pull/2454)) - New Script: bolt.diy [@tremor021](https://github.com/tremor021) ([#2528](https://github.com/community-scripts/ProxmoxVE/pull/2528)) ### 🚀 Updated Scripts From 81b367df070d5770f0ad6e937079fbda6bf36802 Mon Sep 17 00:00:00 2001 From: Miguel Torres <7513794+TMigue@users.noreply.github.com> Date: Sun, 23 Feb 2025 23:41:52 +0100 Subject: [PATCH 479/480] Fix: wrong text in description (#2576) --- json/homeassistant-core.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/homeassistant-core.json b/json/homeassistant-core.json index d71e5d266..4ceaa1bd9 100644 --- a/json/homeassistant-core.json +++ b/json/homeassistant-core.json @@ -12,7 +12,7 @@ "documentation": "https://www.home-assistant.io/docs/", "website": "https://www.home-assistant.io/", "logo": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4", - "description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.", + "description": "A standalone installation of Home Assistant Core refers to a setup where the Home Assistant Core software is installed directly on a device or operating system, without the use of Docker containers. This provides a simpler, but less flexible and scalable solution, as the software is tightly coupled with the underlying system.", "install_methods": [ { "type": "default", From 6daeb7e2883247bab6f6f63cf3c5a8330072a155 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 23:47:19 +0100 Subject: [PATCH 480/480] Update CHANGELOG.md (#2577) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 492e553ec..2c8de4823 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: Wireguard - Remove setting NAT as its already in PostUp/Down [@tremor021](https://github.com/tremor021) ([#2510](https://github.com/community-scripts/ProxmoxVE/pull/2510)) +### 🌐 Website + +- Fix: Home Assistant Core - fixed wrong text in application description on website [@TMigue](https://github.com/TMigue) ([#2576](https://github.com/community-scripts/ProxmoxVE/pull/2576)) + ## 2025-02-22 ### Changes
[role=checkbox]]:translate-y-[2px]", + className + )} + {...props} + /> +)) +TableHead.displayName = "TableHead" + +const TableCell = React.forwardRef< + HTMLTableCellElement, + React.TdHTMLAttributes +>(({ className, ...props }, ref) => ( + [role=checkbox]]:translate-y-[2px]", + className + )} + {...props} + /> +)) +TableCell.displayName = "TableCell" + +const TableCaption = React.forwardRef< + HTMLTableCaptionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +TableCaption.displayName = "TableCaption" + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +} From aa16f936c841c3ad35927687d0a2405527b3f145 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:35:40 +0100 Subject: [PATCH 037/480] Update CHANGELOG.md (#1903) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe9b41eb..75a87a9b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- feat: enhance DataFetcher with better UI components and add reactive data fetching intervals [@BramSuurdje](https://github.com/BramSuurdje) ([#1902](https://github.com/community-scripts/ProxmoxVE/pull/1902)) - [Website] Update /data/page.tsx [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1900](https://github.com/community-scripts/ProxmoxVE/pull/1900)) ## 2025-01-30 From 58a2ece7b7922988d563ddab7fee83f72b01e4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcolas=20Pastorello?= Date: Fri, 31 Jan 2025 16:21:24 -0300 Subject: [PATCH 038/480] New Script: Paymenter (#1827) --- ct/paymenter.sh | 56 ++++++++++++++ install/paymenter-install.sh | 140 +++++++++++++++++++++++++++++++++++ json/paymenter.json | 34 +++++++++ 3 files changed, 230 insertions(+) create mode 100644 ct/paymenter.sh create mode 100644 install/paymenter-install.sh create mode 100644 json/paymenter.json diff --git a/ct/paymenter.sh b/ct/paymenter.sh new file mode 100644 index 000000000..e5210c98b --- /dev/null +++ b/ct/paymenter.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Nícolas Pastorello (opastorello) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +# App Default Values +APP="Paymenter" +var_tags="hosting;ecommerce;marketplace;" +var_cpu="2" +var_ram="1024" +var_disk="5" +var_os="Debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/paymenter ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/paymenter/paymenter/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to ${RELEASE}" + echo "${RELEASE}" >/opt/${APP}_version.txt + cd /opt/paymenter + php artisan p:upgrade --no-interaction &>/dev/null + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + 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}:80${CL}" diff --git a/install/paymenter-install.sh b/install/paymenter-install.sh new file mode 100644 index 000000000..a7c5936e6 --- /dev/null +++ b/install/paymenter-install.sh @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Nícolas Pastorello (opastorello) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + git \ + software-properties-common \ + apt-transport-https \ + ca-certificates \ + gnupg \ + php8.2 \ + php8.2-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} \ + mariadb-server \ + nginx \ + redis-server +$STD curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +msg_ok "Installed Dependencies" + +msg_info "Installing Paymenter" +RELEASE=$(curl -s https://api.github.com/repos/paymenter/paymenter/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/') +echo "${RELEASE}" >/opt/${APP}_version.txt +mkdir -p /opt/paymenter +cd /opt/paymenter +wget -q "https://github.com/paymenter/paymenter/releases/download/${RELEASE}/paymenter.tar.gz" +$STD tar -xzvf paymenter.tar.gz +chmod -R 755 storage/* bootstrap/cache/ +msg_ok "Installed Paymenter" + +msg_info "Setting up database" +DB_NAME=paymenter +DB_USER=paymenter +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql +mysql -u root -e "CREATE DATABASE $DB_NAME;" +mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';" +mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;" +{ + echo "Paymenter Database Credentials" + echo "Database: $DB_NAME" + echo "Username: $DB_USER" + echo "Password: $DB_PASS" +} >> ~/paymenter_db.creds +cp .env.example .env +$STD composer install --no-dev --optimize-autoloader --no-interaction +$STD php artisan key:generate --force +$STD php artisan storage:link +sed -i "s/^DB_DATABASE=.*/DB_DATABASE=${DB_NAME}/" .env +sed -i "s/^DB_USERNAME=.*/DB_USERNAME=${DB_USER}/" .env +sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=${DB_PASS}/" .env +$STD php artisan migrate --force --seed +msg_ok "Set up database" + +msg_info "Creating Admin User" +$STD php artisan p:user:create </etc/nginx/sites-available/paymenter.conf +server { + listen 80; + listen [::]:80; + server_name localhost; + root /opt/paymenter/public; + + index index.php; + + location / { + try_files \$uri \$uri/ /index.php?\$query_string; + } + + location ~ \.php\$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; + fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} +EOF +ln -s /etc/nginx/sites-available/paymenter.conf /etc/nginx/sites-enabled/ +rm -f /etc/nginx/sites-enabled/default +$STD systemctl reload nginx +chown -R www-data:www-data /opt/paymenter/* +msg_ok "Configured Nginx" + +msg_info "Setting up Cronjob" +echo "* * * * * php /opt/paymenter/artisan schedule:run >> /dev/null 2>&1" | crontab - +msg_ok "Setup Cronjob" + +msg_info "Setting up Service" +cat </etc/systemd/system/paymenter.service +[Unit] +Description=Paymenter Queue Worker + +[Service] +User=www-data +Group=www-data +Restart=always +ExecStart=/usr/bin/php /opt/paymenter/artisan queue:work +StartLimitInterval=180 +StartLimitBurst=30 +RestartSec=5s + +[Install] +WantedBy=multi-user.target +EOF +$STD systemctl enable --now paymenter.service +msg_ok "Setup Service" + +msg_info "Cleaning up" +rm -rf /opt/paymenter/paymenter.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize diff --git a/json/paymenter.json b/json/paymenter.json new file mode 100644 index 000000000..fc23da1a5 --- /dev/null +++ b/json/paymenter.json @@ -0,0 +1,34 @@ +{ + "name": "Paymenter", + "slug": "paymenter", + "categories": [ + 21 + ], + "date_created": "2025-01-28", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://paymenter.org/docs", + "website": "https://paymenter.org/", + "logo": "https://avatars.githubusercontent.com/u/115177786?s=200&v=4", + "description": "Paymenter is an open source webshop solution for hosting companies. It's developed to provide an more easy way to manage your hosting company.", + "install_methods": [ + { + "type": "default", + "script": "ct/paymenter.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 5, + "os":"Debian", + "version":"12" + } + } + ], + "default_credentials": { + "username": "admin@paymenter.org", + "password": "paymenter" + }, + "notes": [] +} From ccab9d1be59e445d3b052b119ccb934e8dd23e7c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 20:23:19 +0100 Subject: [PATCH 039/480] Update .app files (#1911) --- ct/headers/paymenter | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/paymenter diff --git a/ct/headers/paymenter b/ct/headers/paymenter new file mode 100644 index 000000000..50749ac1a --- /dev/null +++ b/ct/headers/paymenter @@ -0,0 +1,6 @@ + ____ __ + / __ \____ ___ ______ ___ ___ ____ / /____ _____ + / /_/ / __ `/ / / / __ `__ \/ _ \/ __ \/ __/ _ \/ ___/ + / ____/ /_/ / /_/ / / / / / / __/ / / / /_/ __/ / +/_/ \__,_/\__, /_/ /_/ /_/\___/_/ /_/\__/\___/_/ + /____/ From f9b84bf5ee5a63fa58dc3614d5aa74d4174acbfb Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 20:23:58 +0100 Subject: [PATCH 040/480] Update CHANGELOG.md (#1910) --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75a87a9b5..036d9ec3f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New Script: Paymenter [@opastorello](https://github.com/opastorello) ([#1827](https://github.com/community-scripts/ProxmoxVE/pull/1827)) + ### 🚀 Updated Scripts - [Fix] Alpine-IT-Tools, add missing ssh package for root ssh access [@CrazyWolf13](https://github.com/CrazyWolf13) ([#1891](https://github.com/community-scripts/ProxmoxVE/pull/1891)) @@ -28,7 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website -- feat: enhance DataFetcher with better UI components and add reactive data fetching intervals [@BramSuurdje](https://github.com/BramSuurdje) ([#1902](https://github.com/community-scripts/ProxmoxVE/pull/1902)) +- [Website] Enhance DataFetcher with better UI components and add reactive data fetching intervals [@BramSuurdje](https://github.com/BramSuurdje) ([#1902](https://github.com/community-scripts/ProxmoxVE/pull/1902)) - [Website] Update /data/page.tsx [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1900](https://github.com/community-scripts/ProxmoxVE/pull/1900)) ## 2025-01-30 From baef2a0cb94a85d2751a5b573aef0e6d3d25286b Mon Sep 17 00:00:00 2001 From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Date: Sat, 1 Feb 2025 07:28:16 +0100 Subject: [PATCH 041/480] New script: Baikal (#1913) --- ct/baikal.sh | 75 ++++++++++++++++++++++++++++++ install/baikal-install.sh | 97 +++++++++++++++++++++++++++++++++++++++ json/baikal.json | 34 ++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 ct/baikal.sh create mode 100644 install/baikal-install.sh create mode 100644 json/baikal.json diff --git a/ct/baikal.sh b/ct/baikal.sh new file mode 100644 index 000000000..531577fa9 --- /dev/null +++ b/ct/baikal.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://sabre.io/baikal/ + +# App Default Values +APP="Baikal" +var_tags="Dav" +var_cpu="1" +var_ram="512" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/baikal ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop apache2 + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + wget -q "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" + mv /opt/baikal /opt/baikal-backup + unzip -o -q "baikal-${RELEASE}.zip" + cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/ + cp -r /opt/baikal-backup/Specific/ /opt/baikal/ + chown -R www-data:www-data /opt/baikal/ + chmod -R 755 /opt/baikal/ + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start apache2 + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -rf "/opt/baikal-${RELEASE}.zip" + rm -rf /opt/baikal-backup + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}${CL}" diff --git a/install/baikal-install.sh b/install/baikal-install.sh new file mode 100644 index 000000000..f1f7216b6 --- /dev/null +++ b/install/baikal-install.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + postgresql \ + apache2 \ + libapache2-mod-php \ + php-{pgsql,dom} +msg_ok "Installed Dependencies" + +msg_info "Setting up PostgreSQL" +DB_NAME=baikal +DB_USER=baikal +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" +{ +echo "Baikal Credentials" +echo "Baikal Database User: $DB_USER" +echo "Baikal Database Password: $DB_PASS" +echo "Baikal Database Name: $DB_NAME" +} >> ~/baikal.creds +msg_ok "Set up PostgreSQL" + +msg_info "Installing Baikal" +RELEASE=$(curl -s https://api.github.com/repos/sabre-io/Baikal/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +cd /opt +wget -q "https://github.com/sabre-io/baikal/releases/download/${RELEASE}/baikal-${RELEASE}.zip" +unzip -q "baikal-${RELEASE}.zip" +cat </opt/baikal/config/baikal.yaml +database: + backend: pgsql + pgsql_host: localhost + pgsql_dbname: $DB_NAME + pgsql_username: $DB_USER + pgsql_password: $DB_PASS +EOF +chown -R www-data:www-data /opt/baikal/ +chmod -R 755 /opt/baikal/ +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Baikal" + +msg_info "Creating Service" +cat < /etc/apache2/sites-available/baikal.conf + + ServerName baikal + DocumentRoot /opt/baikal/html + + RewriteEngine on + RewriteRule /.well-known/carddav /dav.php [R=308,L] + RewriteRule /.well-known/caldav /dav.php [R=308,L] + RewriteCond %{REQUEST_URI} ^/dav.php$ [NC] + RewriteRule ^(.*)$ /dav.php/ [R=301,L] + + + Options FollowSymLinks + AllowOverride All + Require all granted + + + + ExpiresActive Off + + + ErrorLog /var/log/apache2/baikal_error.log + CustomLog /var/log/apache2/baikal_access.log combined + +EOF +$STD a2ensite baikal +$STD a2enmod rewrite +$STD a2dissite 000-default.conf +$STD systemctl reload apache2 +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf "/opt/baikal-${RELEASE}.zip" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/baikal.json b/json/baikal.json new file mode 100644 index 000000000..affafc669 --- /dev/null +++ b/json/baikal.json @@ -0,0 +1,34 @@ +{ + "name": "Baïkal", + "slug": "baikal", + "categories": [ + 0 + ], + "date_created": "2025-01-31", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": null, + "website": "https://sabre.io/baikal/", + "logo": "https://sabre.io/img/logo.png", + "description": "Baïkal is a lightweight CalDAV+CardDAV server. It offers an extensive web interface with easy management of users, address books and calendars.", + "install_methods": [ + { + "type": "default", + "script": "ct/baikal.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "Admin", + "password": null + }, + "notes": [] +} \ No newline at end of file From a0d7c5db0ebc26178222709bbede7c24467e2150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcolas=20Pastorello?= Date: Sat, 1 Feb 2025 03:29:25 -0300 Subject: [PATCH 042/480] Bug fix: Paymenter (#1917) --- ct/paymenter.sh | 2 +- install/paymenter-install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/paymenter.sh b/ct/paymenter.sh index e5210c98b..659b57b53 100644 --- a/ct/paymenter.sh +++ b/ct/paymenter.sh @@ -11,7 +11,7 @@ var_tags="hosting;ecommerce;marketplace;" var_cpu="2" var_ram="1024" var_disk="5" -var_os="Debian" +var_os="debian" var_version="12" var_unprivileged="1" diff --git a/install/paymenter-install.sh b/install/paymenter-install.sh index a7c5936e6..6eb516c5a 100644 --- a/install/paymenter-install.sh +++ b/install/paymenter-install.sh @@ -32,7 +32,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Paymenter" RELEASE=$(curl -s https://api.github.com/repos/paymenter/paymenter/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/') -echo "${RELEASE}" >/opt/${APP}_version.txt +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt mkdir -p /opt/paymenter cd /opt/paymenter wget -q "https://github.com/paymenter/paymenter/releases/download/${RELEASE}/paymenter.tar.gz" From a33108cd4f1ada6ad5b66e49b435d38fd58c22be Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 07:29:45 +0100 Subject: [PATCH 043/480] Update .app files (#1919) --- ct/headers/baikal | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/baikal diff --git a/ct/headers/baikal b/ct/headers/baikal new file mode 100644 index 000000000..247d3876b --- /dev/null +++ b/ct/headers/baikal @@ -0,0 +1,6 @@ + ____ _ __ __ + / __ )____ _(_) /______ _/ / + / __ / __ `/ / //_/ __ `/ / + / /_/ / /_/ / / ,< / /_/ / / +/_____/\__,_/_/_/|_|\__,_/_/ + From 3cb4196feeee881c1c5b62744fba71e0e1a67721 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 07:30:08 +0100 Subject: [PATCH 044/480] Update CHANGELOG.md (#1918) --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 036d9ec3f..f2bd9e0df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,18 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-01 + +### Changed + +### ✨ New Scripts + +- New script: Baïkal [@bvdberg01](https://github.com/bvdberg01) ([#1913](https://github.com/community-scripts/ProxmoxVE/pull/1913)) + +### 🚀 Updated Scripts + +- Bug fix: Paymenter [@opastorello](https://github.com/opastorello) ([#1917](https://github.com/community-scripts/ProxmoxVE/pull/1917)) + ## 2025-01-31 ### Changed From 41c32af0d613768131243090d66f9c907a79998b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 07:30:29 +0100 Subject: [PATCH 045/480] Update .app files (#1920) From 8a0712445776b94b58e59416f8647cec77573ec6 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:55:08 +0100 Subject: [PATCH 046/480] [DCMA] Delete scripts 5etools and pf2etools - Copyright abuse (#1922) * Delete json/5etools.json * Delete ct/5etools.sh * Delete install/5etools-install.sh * Delete ct/headers/5etools * Delete ct/pf2etools.sh * Delete json/pf2etools.json * Delete ct/headers/pf2etools * Delete install/pf2etools-install.sh --- ct/5etools.sh | 113 ----------------------------------- ct/headers/5etools | 6 -- ct/headers/pf2etools | 6 -- ct/pf2etools.sh | 81 ------------------------- install/5etools-install.sh | 83 ------------------------- install/pf2etools-install.sh | 75 ----------------------- json/5etools.json | 34 ----------- json/pf2etools.json | 34 ----------- 8 files changed, 432 deletions(-) delete mode 100644 ct/5etools.sh delete mode 100644 ct/headers/5etools delete mode 100644 ct/headers/pf2etools delete mode 100644 ct/pf2etools.sh delete mode 100644 install/5etools-install.sh delete mode 100644 install/pf2etools-install.sh delete mode 100644 json/5etools.json delete mode 100644 json/pf2etools.json diff --git a/ct/5etools.sh b/ct/5etools.sh deleted file mode 100644 index 177cdfa49..000000000 --- a/ct/5etools.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 community-scripts ORG -# Author: TheRealVira -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://5e.tools/ - -# App Default Values -APP="5etools" -var_tags="wiki" -var_cpu="1" -var_ram="512" -var_disk="13" -var_os="debian" -var_version="12" -var_unprivileged="1" - -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - - # Check if installation is present | -f for file, -d for folder - if [[ ! -d "/opt/${APP}" ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then - # Crawling the new version and checking whether an update is required - msg_info "Updating System" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - msg_ok "Updated System" - - # Execute Update - msg_info "Updating base 5etools" - cd /opt - wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" - unzip -q "${RELEASE}.zip" - mv "/opt/${APP}/img" "/opt/img-backup" - rm -rf "/opt/${APP}" - mv "${APP}-src-${RELEASE:1}" "/opt/${APP}" - mv "/opt/img-backup" "/opt/${APP}/img" - cd /opt/5etools - $STD npm install - $STD npm run build - cd ~ - echo "${RELEASE}" >"/opt/${APP}_version.txt" - chown -R www-data: "/opt/${APP}" - chmod -R 755 "/opt/${APP}" - msg_ok "Updated base 5etools" - # Cleaning up - msg_info "Cleaning Up" - rm -rf /opt/${RELEASE}.zip - $STD apt-get -y autoremove - $STD apt-get -y autoclean - msg_ok "Cleanup Completed" - else - msg_ok "No update required. Base ${APP} is already at ${RELEASE}" - fi - - IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${IMG_RELEASE}" != "$(cat /opt/${APP}_IMG_version.txt)" ]] || [[ ! -f "/opt/${APP}_IMG_version.txt" ]]; then - # Crawling the new version and checking whether an update is required - msg_info "Updating System" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - msg_ok "Updated System" - - # Execute Update - msg_info "Updating 5etools images" - curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip" - unzip -q "${IMG_RELEASE}.zip" - rm -rf "/opt/${APP}/img" - mv "${APP}-img-${IMG_RELEASE:1}" "/opt/${APP}/img" - echo "${IMG_RELEASE}" >"/opt/${APP}_IMG_version.txt" - chown -R www-data: "/opt/${APP}" - chmod -R 755 "/opt/${APP}" - - msg_ok "Updating 5etools images" - - # Cleaning up - msg_info "Cleaning Up" - rm -rf /opt/${RELEASE}.zip - rm -rf ${IMG_RELEASE}.zip - $STD apt-get -y autoremove - $STD apt-get -y autoclean - msg_ok "Cleanup Completed" - else - msg_ok "No update required. ${APP} images are already at ${IMG_RELEASE}" - fi - -} - -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}${CL}" diff --git a/ct/headers/5etools b/ct/headers/5etools deleted file mode 100644 index 1556067f1..000000000 --- a/ct/headers/5etools +++ /dev/null @@ -1,6 +0,0 @@ - ______ __ __ - / ____/__ / /_____ ____ / /____ - /___ \/ _ \/ __/ __ \/ __ \/ / ___/ - ____/ / __/ /_/ /_/ / /_/ / (__ ) -/_____/\___/\__/\____/\____/_/____/ - diff --git a/ct/headers/pf2etools b/ct/headers/pf2etools deleted file mode 100644 index b6f7cb106..000000000 --- a/ct/headers/pf2etools +++ /dev/null @@ -1,6 +0,0 @@ - ____ _______ ______ __ - / __ \/ __/__ \ ___/_ __/___ ____ / /____ - / /_/ / /_ __/ // _ \/ / / __ \/ __ \/ / ___/ - / ____/ __// __// __/ / / /_/ / /_/ / (__ ) -/_/ /_/ /____/\___/_/ \____/\____/_/____/ - diff --git a/ct/pf2etools.sh b/ct/pf2etools.sh deleted file mode 100644 index 967c407d9..000000000 --- a/ct/pf2etools.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2025 community-scripts ORG -# Author: TheRealVira -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://pf2etools.com/ - -# App Default Values -APP="Pf2eTools" -var_tags="wiki" -var_cpu="1" -var_ram="512" -var_disk="6" -var_os="debian" -var_version="12" -var_unprivileged="1" - -# App Output & Base Settings -header_info "$APP" -base_settings - -# Core -variables -color -catch_errors - -function update_script() { - header_info - check_container_storage - check_container_resources - - # Check if installation is present | -f for file, -d for folder - if [[ ! -d "/opt/${APP}" ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then - # Crawling the new version and checking whether an update is required - msg_info "Updating System" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - msg_ok "Updated System" - - # Execute Update - msg_info "Updating ${APP}" - cd /opt - wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" - unzip -q ${RELEASE}.zip - rm -rf "/opt/${APP}" - mv ${APP}-${RELEASE:1} /opt/${APP} - cd /opt/Pf2eTools - $STD npm install - $STD npm run build - echo "${RELEASE}" >"/opt/${APP}_version.txt" - msg_ok "Updated ${APP}" - - chown -R www-data: "/opt/${APP}" - chmod -R 755 "/opt/${APP}" - - # Cleaning up - msg_info "Cleaning Up" - rm -rf /opt/${RELEASE}.zip - $STD apt-get -y autoremove - $STD apt-get -y autoclean - msg_ok "Cleanup Completed" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - 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}${CL}" diff --git a/install/5etools-install.sh b/install/5etools-install.sh deleted file mode 100644 index 1e2da9c79..000000000 --- a/install/5etools-install.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: TheRealVira -# License: MIT -# Source: https://5e.tools/ - -# Import Functions und Setup -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - mc \ - sudo \ - git \ - gpg \ - ca-certificates \ - apache2 -msg_ok "Installed Dependencies" - -msg_info "Setting up Node.js Repository" -mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list -msg_ok "Set up Node.js Repository" - -msg_info "Installing Node.js" -$STD apt-get update -$STD apt-get install -y nodejs -msg_ok "Installed Node.js" - -# Setup App -msg_info "Set up 5etools Base" -cd /opt -RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" -unzip -q "${RELEASE}.zip" -mv "5etools-src-${RELEASE:1}" /opt/5etools -cd /opt/5etools -$STD npm install -$STD npm run build -echo "${RELEASE}" >"/opt/5etools_version.txt" -msg_ok "Set up 5etools Base" - -msg_info "Set up 5etools Image" -cd /opt -IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip" -unzip -q "${IMG_RELEASE}.zip" -mv "5etools-img-${IMG_RELEASE:1}" /opt/5etools/img -echo "${IMG_RELEASE}" >"/opt/5etools_IMG_version.txt" -msg_ok "Set up 5etools Image" - -msg_info "Creating Service" -cat <> /etc/apache2/apache2.conf - - SetHandler server-status - Order deny,allow - Allow from all - -EOF -rm -rf /var/www/html -ln -s "/opt/5etools" /var/www/html -chown -R www-data: "/opt/5etools" -chmod -R 755 "/opt/5etools" -msg_ok "Created Service" - -msg_info "Cleaning up" -rm -rf /opt/${IMG_RELEASE}.zip -rm -rf /opt/${RELEASE}.zip -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" - -motd_ssh -customize diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh deleted file mode 100644 index d7e7c3125..000000000 --- a/install/pf2etools-install.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2025 community-scripts ORG -# Author: TheRealVira -# License: MIT -# Source: https://pf2etools.com/ - -# Import Functions und Setup -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -msg_info "Installing Dependencies" -$STD apt-get install -y \ - curl \ - mc \ - sudo \ - apache2 \ - gpg \ - ca-certificates \ - git -msg_ok "Installed Dependencies" - -msg_info "Setting up Node.js Repository" -mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list -msg_ok "Set up Node.js Repository" - -msg_info "Installing Node.js" -$STD apt-get update -$STD apt-get install -y nodejs -msg_ok "Installed Node.js" - -# Setup App -msg_info "Setup Pf2eTools" -cd /opt -RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" -unzip -q "${RELEASE}.zip" -mv "Pf2eTools-${RELEASE:1}" /opt/Pf2eTools -cd /opt/Pf2eTools -$STD npm install -$STD npm run build -cd ~ -echo "${RELEASE}" >/opt/Pf2eTools_version.txt -msg_ok "Set up Pf2eTools" - -msg_info "Creating Service" -cat <> /etc/apache2/apache2.conf - - SetHandler server-status - Order deny,allow - Allow from all - -EOF -rm -rf /var/www/html -ln -s "/opt/Pf2eTools" /var/www/html -chown -R www-data: "/opt/Pf2eTools" -chmod -R 755 "/opt/Pf2eTools" -msg_ok "Created Service" - -# Cleanup -msg_info "Cleaning up" -rm -rf /opt/${RELEASE}.zip -$STD apt-get -y autoremove -$STD apt-get -y autoclean -msg_ok "Cleaned" - -motd_ssh -customize diff --git a/json/5etools.json b/json/5etools.json deleted file mode 100644 index 8c808d989..000000000 --- a/json/5etools.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "5etools", - "slug": "5etools", - "categories": [ - 24 - ], - "date_created": "2025-01-02", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 80, - "documentation": "https://wiki.tercept.net/en/5eTools", - "website": "https://5e.tools/", - "logo": "https://wiki.tercept.net/core-wiki-assets/5etoolslogocircle.png", - "description": "5eTools is a website providing a suite of tools for 5th Edition Dungeons & Dragons players and Dungeon Masters.", - "install_methods": [ - { - "type": "default", - "script": "ct/5etools.sh", - "resources": { - "cpu": 1, - "ram": 512, - "hdd": 13, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} diff --git a/json/pf2etools.json b/json/pf2etools.json deleted file mode 100644 index f4e0856f9..000000000 --- a/json/pf2etools.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "Pf2eTools", - "slug": "Pf2eTools", - "categories": [ - 24 - ], - "date_created": "2025-01-02", - "type": "ct", - "updateable": true, - "privileged": false, - "interface_port": 80, - "documentation": "https://github.com/Pf2eToolsOrg/Pf2eTools/wiki", - "website": "https://pf2etools.com/", - "logo": "https://raw.githubusercontent.com/Pf2eToolsOrg/Pf2eTools/refs/heads/dev/android-chrome-192x192.png", - "description": "Pf2eTools is an open-source website aiming to provide tools and information for Pathfinder 2nd Edition players and gamemasters. It's built using basic web technologies to ensure wide compatibility, and utilises client-side caching for speed, efficiency, and offline access.", - "install_methods": [ - { - "type": "default", - "script": "ct/pf2etools.sh", - "resources": { - "cpu": 1, - "ram": 512, - "hdd": 6, - "os": "debian", - "version": "12" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [] -} From f40e6e545317efcb6032590c6d6224e5f7e888d0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 16:55:54 +0100 Subject: [PATCH 047/480] Update CHANGELOG.md (#1923) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2bd9e0df..984b44362 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- [DCMA] Delete scripts 5etools and pf2etools - Copyright abuse [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1922](https://github.com/community-scripts/ProxmoxVE/pull/1922)) + ### ✨ New Scripts - New script: Baïkal [@bvdberg01](https://github.com/bvdberg01) ([#1913](https://github.com/community-scripts/ProxmoxVE/pull/1913)) From 6f0ebac20961aa313269d2d0a6271e3b655f0fb1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:47:34 +0100 Subject: [PATCH 048/480] fix z2m update function to 2.1.0 (#1938) --- ct/zigbee2mqtt.sh | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 591e19bb7..27abbfb00 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -39,24 +39,33 @@ function update_script() { msg_ok "Stopped Service" msg_info "Creating Backup" - mkdir -p /opt/z2m_backup - tar -czf /opt/z2m_backup/${APP}_backup_$(date +%Y%m%d%H%M%S).tar.gz -C /opt zigbee2mqtt &>/dev/null - mv /opt/zigbee2mqtt/data /opt/z2m_backup + rm -rf /opt/${APP}_backup*.tar.gz + mkdir -p /opt/z2m_backup + tar -czf /opt/z2m_backup/${APP}_backup_$(date +%Y%m%d%H%M%S).tar.gz -C /opt zigbee2mqtt &>/dev/null + mv /opt/zigbee2mqtt/data /opt/z2m_backup msg_ok "Backup Created" msg_info "Updating ${APP} to v${RELEASE}" - cd /opt - wget -q "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" - unzip -q ${RELEASE}.zip - mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt - rm -rf /opt/zigbee2mqtt/data - mv /opt/z2m_backup/data /opt/zigbee2mqtt - cd /opt/zigbee2mqtt - pnpm install --frozen-lockfile &>/dev/null - pnpm build &>/dev/null + cd /opt + wget -q "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + rm -rf /opt/zigbee2mqtt + mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt + rm -rf /opt/zigbee2mqtt/data + mv /opt/z2m_backup/data /opt/zigbee2mqtt + cd /opt/zigbee2mqtt + pnpm install --frozen-lockfile &>/dev/null + pnpm build &>/dev/null + msg_ok "Updated Zigbee2MQTT" + msg_info "Starting Service" - systemctl start zigbee2mqtt + systemctl start zigbee2mqtt msg_ok "Started Service" + + msg_info "Cleaning up" + rm -rf /opt/z2m_backup + rm -rf /opt/${RELEASE}.zip + msg_ok "Cleaned up" echo "${RELEASE}" >/opt/${APP}_version.txt else msg_ok "No update required. ${APP} is already at v${RELEASE}." From 91a3fd10e0d2c5d8a98f2402c6fb1210982cc575 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:57:10 +0100 Subject: [PATCH 049/480] Update CHANGELOG.md (#1939) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 984b44362..65d3ad4be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-02 + +### Changed + +### 🚀 Updated Scripts + +- fix z2m update function to 2.1.0 [@MickLesk](https://github.com/MickLesk) ([#1938](https://github.com/community-scripts/ProxmoxVE/pull/1938)) + ## 2025-02-01 ### Changed From 57b37b1e1678467791b222cb35596d55b2d4ff3d Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Sun, 2 Feb 2025 20:05:36 +0100 Subject: [PATCH 050/480] VSCode: Add Shellscript Syntax highlighting for *.func files (#1948) --- .vscode/settings.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..be834d99a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "*.func": "shellscript" + } +} \ No newline at end of file From 19911f5b81a7cc5f7affee187f4d26dd565807cb Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Sun, 2 Feb 2025 20:18:52 +0100 Subject: [PATCH 051/480] Prometheus PVE Exporter: Add `--default-timeout=300` to pip install commands (#1950) --- ct/prometheus-pve-exporter.sh | 2 +- install/prometheus-pve-exporter-install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/prometheus-pve-exporter.sh b/ct/prometheus-pve-exporter.sh index 198e42806..008b5606f 100644 --- a/ct/prometheus-pve-exporter.sh +++ b/ct/prometheus-pve-exporter.sh @@ -37,7 +37,7 @@ function update_script() { msg_ok "Stopped ${APP}" msg_info "Updating ${APP}" - pip install prometheus-pve-exporter --upgrade --root-user-action=ignore &>/dev/null + pip install prometheus-pve-exporter --default-timeout=300 --upgrade --root-user-action=ignore &>/dev/null msg_ok "Updated ${APP}" msg_info "Starting ${APP}" diff --git a/install/prometheus-pve-exporter-install.sh b/install/prometheus-pve-exporter-install.sh index a1e3c8918..ecbeb000a 100644 --- a/install/prometheus-pve-exporter-install.sh +++ b/install/prometheus-pve-exporter-install.sh @@ -28,7 +28,7 @@ rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED msg_ok "Setup Python3" msg_info "Installing Prometheus Proxmox VE Exporter" -python3 -m pip install --quiet --root-user-action=ignore prometheus-pve-exporter +python3 -m pip install --default-timeout=300 --quiet --root-user-action=ignore prometheus-pve-exporter mkdir -p /opt/prometheus-pve-exporter cat < /opt/prometheus-pve-exporter/pve.yml default: From 05ec444e2d5c5c618be264716748bfaa26aebb02 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 2 Feb 2025 20:23:51 +0100 Subject: [PATCH 052/480] Update CHANGELOG.md (#1951) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65d3ad4be..ab96ede80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,8 +23,13 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Prometheus PVE Exporter: Add `--default-timeout=300` to pip install commands [@andygrunwald](https://github.com/andygrunwald) ([#1950](https://github.com/community-scripts/ProxmoxVE/pull/1950)) - fix z2m update function to 2.1.0 [@MickLesk](https://github.com/MickLesk) ([#1938](https://github.com/community-scripts/ProxmoxVE/pull/1938)) +### 🧰 Maintenance + +- VSCode: Add Shellscript Syntax highlighting for *.func files [@andygrunwald](https://github.com/andygrunwald) ([#1948](https://github.com/community-scripts/ProxmoxVE/pull/1948)) + ## 2025-02-01 ### Changed From 995906f299695f6c5fc5e4be615909515a1a9f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 3 Feb 2025 07:26:34 +0100 Subject: [PATCH 053/480] Fix typo in CONTRIBUTING.md (#1956) --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b820af768..b0ced0474 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -80,7 +80,7 @@ git switch -c your-feature-branch ``` ### 4. Change paths in build.func install.func and AppName.sh -To be able to develop from your own branch you need to change `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main` to `https://raw.githubusercontent.com/[USER]/[REPOSITORY]/refs/head/[BRANCH]`. You need to make this change atleast in misc/build.func misc/install.func and in your ct/AppName.sh. This change is only for testing. Before opening a Pull Request you should change this line change all this back to point to `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main`. +To be able to develop from your own branch you need to change `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main` to `https://raw.githubusercontent.com/[USER]/[REPOSITORY]/refs/heads/[BRANCH]`. You need to make this change atleast in misc/build.func misc/install.func and in your ct/AppName.sh. This change is only for testing. Before opening a Pull Request you should change this line change all this back to point to `https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main`. ### 4. Commit changes (without build.func and install.func!) ```bash From 76f12fc596cfe9f30e36cee1bf94385e8ebca027 Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Mon, 3 Feb 2025 07:57:09 +0100 Subject: [PATCH 054/480] Prometheus Proxmox VE Exporter: Set correct website slug (#1961) --- json/prometheus-pve-exporter.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/prometheus-pve-exporter.json b/json/prometheus-pve-exporter.json index cc028b4b3..6d1d7a22b 100644 --- a/json/prometheus-pve-exporter.json +++ b/json/prometheus-pve-exporter.json @@ -1,6 +1,6 @@ { "name": "Prometheus Proxmox VE Exporter", - "slug": "prometheus-proxmox-ve-exporter", + "slug": "prometheus-pve-exporter", "categories": [ 1, 9 From 745d1f9444cd2383ddc234f6565f35d3b730ae80 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 08:31:19 +0100 Subject: [PATCH 055/480] SQL-Server: Better gpg handling (#1962) --- install/sqlserver2022-install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install/sqlserver2022-install.sh b/install/sqlserver2022-install.sh index 7e06fe03d..a79c8a1cc 100644 --- a/install/sqlserver2022-install.sh +++ b/install/sqlserver2022-install.sh @@ -23,8 +23,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" msg_info "Setup SQL Server 2022" -$STD curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg -$STD curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc +$STD curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc $STD curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | tee /etc/apt/sources.list.d/mssql-server-2022.list $STD apt-get clean * $STD apt-get update -y From 91ba5cd412129db2767b4ba1aa2ec3dea9af3521 Mon Sep 17 00:00:00 2001 From: Chris <67816022+vhsdream@users.noreply.github.com> Date: Mon, 3 Feb 2025 03:06:40 -0500 Subject: [PATCH 056/480] Fix Hoarder corepack install/update error (#1957) Installs Corepack v0.31.0 during Hoarder installation; checks if Corepack needs updating during Hoarder update. --- ct/hoarder.sh | 3 +++ install/hoarder-install.sh | 1 + 2 files changed, 4 insertions(+) diff --git a/ct/hoarder.sh b/ct/hoarder.sh index 5a905ad2b..0b6cd1a65 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -39,6 +39,9 @@ function update_script() { systemctl stop hoarder-web hoarder-workers hoarder-browser msg_ok "Stopped Services" msg_info "Updating ${APP} to v${RELEASE}" + if [[ $(corepack -v) < "0.31.0" ]]; then + npm install -g corepack@0.31.0 &>/dev/null + fi cd /opt if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then mkdir -p /etc/hoarder diff --git a/install/hoarder-install.sh b/install/hoarder-install.sh index a513460cf..afa0a9a63 100644 --- a/install/hoarder-install.sh +++ b/install/hoarder-install.sh @@ -56,6 +56,7 @@ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dea echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs +$STD npm install -g corepack@0.31.0 msg_ok "Installed Node.js" msg_info "Installing Hoarder" From e379db8bafa4837bee460a14ebfb052be3152f78 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 09:25:50 +0100 Subject: [PATCH 057/480] Fix: FS-Trim Cancel / Error-Button (#1965) --- misc/fstrim.sh | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/misc/fstrim.sh b/misc/fstrim.sh index 27a9b9ed2..b155ef4ae 100644 --- a/misc/fstrim.sh +++ b/misc/fstrim.sh @@ -2,8 +2,9 @@ # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +set -o pipefail function header_info() { clear @@ -16,11 +17,13 @@ function header_info() { /____/ EOF } + BL=$(echo "\033[36m") RD=$(echo "\033[01;31m") CM='\xE2\x9C\x94\033' GN=$(echo "\033[1;92m") CL=$(echo "\033[m") + header_info echo "Loading..." @@ -29,50 +32,66 @@ if [ "$ROOT_FS" != "ext4" ]; then echo "Root filesystem is not ext4. Exiting script." exit 1 fi +whiptail --backtitle "Proxmox VE Helper Scripts" \ + --title "Proxmox VE LXC Filesystem Trim" \ + --yesno "The LXC containers will undergo the fstrim command. Proceed?" 10 58 || exit -whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE LXC Filesystem Trim" --yesno "The LXC containers will undergo the fstrim command. Proceed?" 10 58 || exit NODE=$(hostname) EXCLUDE_MENU=() MSG_MAX_LENGTH=0 + while read -r TAG ITEM; do OFFSET=2 ((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=${#ITEM}+OFFSET EXCLUDE_MENU+=("$TAG" "$ITEM " "OFF") done < <(pct list | awk 'NR>1') -excluded_containers=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Containers on $NODE" --checklist "\nSelect containers to skip from trimming:\n" \ - 16 $((MSG_MAX_LENGTH + 23)) 6 "${EXCLUDE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit + +excluded_containers_raw=$(whiptail --backtitle "Proxmox VE Helper Scripts" \ + --title "Containers on $NODE" \ + --checklist "\nSelect containers to skip from trimming:\n" \ + 16 $((MSG_MAX_LENGTH + 23)) 6 "${EXCLUDE_MENU[@]}" 3>&1 1>&2 2>&3) + +if [ $? -ne 0 ]; then + exit +fi + +excluded_containers=$(echo "$excluded_containers_raw" | tr -d '"') function trim_container() { local container=$1 header_info echo -e "${BL}[Info]${GN} Trimming ${BL}$container${CL} \n" - local before_trim=$(lvs | awk -F '[[:space:]]+' 'NR>1 && (/Data%|'"vm-$container"'/) {gsub(/%/, "", $7); print $7}') + + local before_trim + before_trim=$(lvs | awk -F '[[:space:]]+' 'NR>1 && (/Data%|'"vm-$container"'/) {gsub(/%/, "", $7); print $7}') echo -e "${RD}Data before trim $before_trim%${CL}" - pct fstrim $container - local after_trim=$(lvs | awk -F '[[:space:]]+' 'NR>1 && (/Data%|'"vm-$container"'/) {gsub(/%/, "", $7); print $7}') + + pct fstrim "$container" + + local after_trim + after_trim=$(lvs | awk -F '[[:space:]]+' 'NR>1 && (/Data%|'"vm-$container"'/) {gsub(/%/, "", $7); print $7}') echo -e "${GN}Data after trim $after_trim%${CL}" + sleep 1.5 } - - for container in $(pct list | awk '{if(NR>1) print $1}'); do - if [[ " ${excluded_containers[@]} " =~ " $container " ]]; then + if [[ " ${excluded_containers} " =~ " $container " ]]; then header_info echo -e "${BL}[Info]${GN} Skipping ${BL}$container${CL}" sleep 1 else - template=$(pct config $container | grep -q "template:" && echo "true" || echo "false") + template=$(pct config "$container" | grep -q "template:" && echo "true" || echo "false") if [ "$template" == "true" ]; then header_info echo -e "${BL}[Info]${GN} Skipping ${container} ${RD}$container is a template ${CL} \n" sleep 1 continue fi - trim_container $container + trim_container "$container" fi done wait header_info -echo -e "${GN} Finished, LXC Containers Trimmed. ${CL} \n" +echo -e "${GN}Finished, LXC Containers Trimmed.${CL} \n" From 36f2fb3e52c28eec3ab237b1c4b9a4a1851855c6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 09:26:08 +0100 Subject: [PATCH 058/480] Fix: Grist ran into a heap space during the update (#1964) --- ct/grist.sh | 6 +++--- json/grist.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ct/grist.sh b/ct/grist.sh index 154e3ff5e..ad1c53a94 100644 --- a/ct/grist.sh +++ b/ct/grist.sh @@ -5,9 +5,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Grist" var_tags="database;spreadsheet" -var_cpu="1" -var_ram="2048" -var_disk="4" +var_cpu="2" +var_ram="3072" +var_disk="6" var_os="debian" var_version="12" var_unprivileged="1" diff --git a/json/grist.json b/json/grist.json index 0c82240a5..0e4161a6b 100644 --- a/json/grist.json +++ b/json/grist.json @@ -18,9 +18,9 @@ "type": "default", "script": "ct/grist.sh", "resources": { - "cpu": 1, - "ram": 1024, - "hdd": 4, + "cpu": 2, + "ram": 3072, + "hdd": 6, "os": "debian", "version": "12" } From c5b9e4db64c542212cce122958aec3041d6a5cae Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 09:52:27 +0100 Subject: [PATCH 059/480] Update CHANGELOG.md (#1960) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab96ede80..d00e05bab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,21 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-03 + +### Changed + +### 🚀 Updated Scripts + +- Fix: Grist ran into a heap space during the update [@MickLesk](https://github.com/MickLesk) ([#1964](https://github.com/community-scripts/ProxmoxVE/pull/1964)) +- Fix: FS-Trim Cancel / Error-Button [@MickLesk](https://github.com/MickLesk) ([#1965](https://github.com/community-scripts/ProxmoxVE/pull/1965)) +- Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) +- Fix: MSSQL-Server: Better gpg handling [@MickLesk](https://github.com/MickLesk) ([#1962](https://github.com/community-scripts/ProxmoxVE/pull/1962)) + +### 🌐 Website + +- Prometheus Proxmox VE Exporter: Set correct website slug [@andygrunwald](https://github.com/andygrunwald) ([#1961](https://github.com/community-scripts/ProxmoxVE/pull/1961)) + ## 2025-02-02 ### Changed From 1528c46f0b230d1bf612f8cb62037651f054ad6e Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:05:41 +0100 Subject: [PATCH 060/480] [API] Update build.func (#1967) --- misc/build.func | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/misc/build.func b/misc/build.func index c6c6bb255..89f7e01b9 100644 --- a/misc/build.func +++ b/misc/build.func @@ -805,13 +805,9 @@ post_to_api() { "disk_size": $DISK_SIZE, "core_count": $CORE_COUNT, "ram_size": $RAM_SIZE, - "verbose": "$VERBOSE", "os_type": "$var_os", "os_version": "$var_version", - "hn": "$HN", "disableip6": "$DISABLEIP6", - "ssh": "$SSH", - "tags": "$TAGS", "nsapp": "$NSAPP", "method": "$METHOD", "pve_version": "$pve_version", @@ -886,16 +882,13 @@ DIAGNOSTICS=yes #"disk_size" #"core_count" #"ram_size" -#"verbose" #"os_type" #"os_version" -#"hn" #"disableip6" -#"ssh" -#"tags" #"nsapp" #"method" #"pve_version" +#"status" #If you have any concerns, please review the source code at /misc/build.func EOF DIAGNOSTICS="yes" @@ -916,16 +909,13 @@ DIAGNOSTICS=no #"disk_size" #"core_count" #"ram_size" -#"verbose" #"os_type" #"os_version" -#"hn" #"disableip6" -#"ssh" -#"tags" #"nsapp" #"method" #"pve_version" +#"status" #If you have any concerns, please review the source code at /misc/build.func EOF DIAGNOSTICS="no" From fa4ab5c8a3df5b243fbd45666268753f9c9447c7 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:35:58 +0100 Subject: [PATCH 061/480] Fix: Increase HDD Space for Hoarder (#1970) * Fix: Increase HDD Space for Hoarder * increase hdd --- ct/hoarder.sh | 2 +- json/hoarder.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/hoarder.sh b/ct/hoarder.sh index 0b6cd1a65..d5cf4f086 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -10,7 +10,7 @@ APP="Hoarder" var_tags="bookmark" var_cpu="2" var_ram="4096" -var_disk="8" +var_disk="10" var_os="debian" var_version="12" var_unprivileged="1" diff --git a/json/hoarder.json b/json/hoarder.json index 3f15aaa7a..a545cb4e5 100644 --- a/json/hoarder.json +++ b/json/hoarder.json @@ -20,7 +20,7 @@ "resources": { "cpu": 2, "ram": 4096, - "hdd": 8, + "hdd": 10, "os": "debian", "version": "12" } From 00f58d71d619780ab179d45e94ca3b78458c65aa Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:38:45 +0100 Subject: [PATCH 062/480] [Website] update data/page.tsx (#1969) --- frontend/src/app/data/page.tsx | 422 +++++++++++++++------------------ 1 file changed, 192 insertions(+), 230 deletions(-) diff --git a/frontend/src/app/data/page.tsx b/frontend/src/app/data/page.tsx index 3f1d7ace7..462158f65 100644 --- a/frontend/src/app/data/page.tsx +++ b/frontend/src/app/data/page.tsx @@ -1,33 +1,9 @@ "use client"; -import ApplicationChart from "@/components/ApplicationChart"; -import { Button } from "@/components/ui/button"; -import { Calendar } from "@/components/ui/calendar"; -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { Input } from "@/components/ui/input"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui/popover"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { - Table, - TableBody, - TableCell, - TableHead, - TableHeader, - TableRow, -} from "@/components/ui/table"; -import { format } from "date-fns"; -import { Calendar as CalendarIcon } from "lucide-react"; -import React, { useCallback, useEffect, useState } from "react"; +import React, { useEffect, useState } from "react"; +import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; +import ApplicationChart from "../../components/ApplicationChart"; interface DataModel { id: number; @@ -64,41 +40,23 @@ const DataFetcher: React.FC = () => { const [reloadInterval, setReloadInterval] = useState(null); - const fetchData = useCallback(async () => { - try { - const response = await fetch("https://api.htl-braunau.at/data/json"); - if (!response.ok) throw new Error(`Failed to fetch data: ${response.statusText}`); - const result: DataModel[] = await response.json(); - setData(result); - setLoading(false); - } catch (err) { - setError((err as Error).message); - setLoading(false); - } + useEffect(() => { + const fetchData = async () => { + try { + const response = await fetch("https://api.htl-braunau.at/data/json"); + if (!response.ok) throw new Error("Failed to fetch data: ${response.statusText}"); + const result: DataModel[] = await response.json(); + setData(result); + } catch (err) { + setError((err as Error).message); + } finally { + setLoading(false); + } + }; + + fetchData(); }, []); - useEffect(() => { - fetchData(); - const storedInterval = localStorage.getItem('reloadInterval'); - if (storedInterval) { - setIntervalTime(Number(storedInterval)); - } - }, [fetchData]); - - useEffect(() => { - let intervalId: NodeJS.Timeout | null = null; - - if (interval > 0) { - intervalId = setInterval(fetchData, Math.max(interval, 10) * 1000); - localStorage.setItem('reloadInterval', interval.toString()); - } else { - localStorage.removeItem('reloadInterval'); - } - - return () => { - if (intervalId) clearInterval(intervalId); - }; - }, [interval, fetchData]); const filteredData = data.filter(item => { const matchesSearchQuery = Object.values(item).some(value => @@ -153,194 +111,198 @@ const DataFetcher: React.FC = () => { return `${day}.${month}.${year} ${hours}:${minutes} ${timezoneOffset} GMT`; }; + const handleItemsPerPageChange = (event: React.ChangeEvent) => { + setItemsPerPage(Number(event.target.value)); + setCurrentPage(1); + }; + const paginatedData = sortedData.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage); - const statusCounts = data.reduce((acc, item) => { - const status = item.status; - acc[status] = (acc[status] || 0) + 1; - return acc; - }, {} as Record); + useEffect(() => { + const storedInterval = localStorage.getItem('reloadInterval'); + if (storedInterval) { + setIntervalTime(Number(storedInterval)); + } + }, []); - if (loading) return
Loading...
; - if (error) return
Error: {error}
; + + useEffect(() => { + if (interval <= 10) { + const newInterval = setInterval(() => { + window.location.reload(); + }, 10000); + + + return () => clearInterval(newInterval); + } else { + const newInterval = setInterval(() => { + window.location.reload(); + }, interval * 1000); + } + + }, [interval]); + + + useEffect(() => { + if (interval > 0) { + localStorage.setItem('reloadInterval', interval.toString()); + } else { + localStorage.removeItem('reloadInterval'); + } + }, [interval]); + + if (loading) return

Loading...

; + if (error) return

Error: {error}

; + + var installingCounts: number = 0; + var failedCounts: number = 0; + var doneCounts: number = 0 + var unknownCounts: number = 0; + data.forEach((item) => { + if (item.status === "installing") { + installingCounts += 1; + } else if (item.status === "failed") { + failedCounts += 1; + } + else if (item.status === "done") { + doneCounts += 1; + } + else { + unknownCounts += 1; + } + }); return ( -
-

Created LXCs

- -
- - - Search - - - setSearchQuery(e.target.value)} - /> - - - - - - Start Date - - - - - - - - setStartDate(date || null)} - initialFocus - /> - - - - - - - - End Date - - - - - - - - setEndDate(date || null)} - initialFocus - /> - - - - - - - - Reload Interval - - - setIntervalTime(Number(e.target.value))} - placeholder="Interval (seconds)" - /> - - -
- - - -
-

{filteredData.length} results found

-
- 🔄 Installing: {statusCounts.installing || 0} - ✔️ Completed: {statusCounts.done || 0} - ❌ Failed: {statusCounts.failed || 0} - ❓ Unknown: {statusCounts.unknown || 0} +
+

Created LXCs

+
+
+ setSearchQuery(e.target.value)} + className="p-2 border" + /> + +
+
+ setStartDate(date)} + selectsStart + startDate={startDate} + endDate={endDate} + placeholderText="Start date" + className="p-2 border" + /> +
- -
-
- - - - requestSort('status')}>Status - requestSort('nsapp')}>Application - requestSort('os_type')}>OS - requestSort('os_version')}>OS Version - requestSort('disk_size')}>Disk Size - requestSort('core_count')}>Core Count - requestSort('ram_size')}>RAM Size - requestSort('hn')}>Hostname - requestSort('ssh')}>SSH - requestSort('verbose')}>Verb - requestSort('tags')}>Tags - requestSort('method')}>Method - requestSort('pve_version')}>PVE Version - requestSort('created_at')}>Created At - - - - {paginatedData.map((item, index) => ( - - {item.status === "done" ? ( - "✔️" - ) : item.status === "failed" ? ( - "❌" - ) : item.status === "installing" ? ( - "🔄" - ) : ( - item.status - )} - {item.nsapp} - {item.os_type} - {item.os_version} - {item.disk_size} - {item.core_count} - {item.ram_size} - {item.hn} - {item.ssh} - {item.verbose} - {item.tags.replace(/;/g, ' ')} - {item.method} - {item.pve_version} - {formatDate(item.created_at)} - - ))} - -
+
+ setEndDate(date)} + selectsEnd + startDate={startDate} + endDate={endDate} + placeholderText="End date" + className="p-2 border" + /> + +
+ +
+
+ setIntervalTime(Number(e.target.value))} + className="p-2 border" + placeholder="Interval (seconds)" + /> + +
+
- -
- - - Page {currentPage} of {Math.ceil(sortedData.length / itemsPerPage)} - - +
); }; + + export default DataFetcher; From 884428e1132462b61455fe88ff216ded03297f71 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:39:25 +0100 Subject: [PATCH 063/480] Update urbackupserver.sh (#1968) --- ct/urbackupserver.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ct/urbackupserver.sh b/ct/urbackupserver.sh index 7ebcffb87..1e47d3f0b 100644 --- a/ct/urbackupserver.sh +++ b/ct/urbackupserver.sh @@ -43,6 +43,9 @@ start build_container description +pct set $CTID -features fuse=1,nesting=1 +pct reboot $CTID + 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 IP:${CL}" From 99e04e1dedfabe2a56621269a4a0b646b016d799 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 11:32:54 +0100 Subject: [PATCH 064/480] Update CHANGELOG.md (#1971) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d00e05bab..a974bb3ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update Script: urbackupserver.sh Include features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) +- Fix: Increase HDD Space for Hoarder [@MickLesk](https://github.com/MickLesk) ([#1970](https://github.com/community-scripts/ProxmoxVE/pull/1970)) - Fix: Grist ran into a heap space during the update [@MickLesk](https://github.com/MickLesk) ([#1964](https://github.com/community-scripts/ProxmoxVE/pull/1964)) - Fix: FS-Trim Cancel / Error-Button [@MickLesk](https://github.com/MickLesk) ([#1965](https://github.com/community-scripts/ProxmoxVE/pull/1965)) - Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) @@ -30,6 +32,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- [Website] update data/page.tsx [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1969](https://github.com/community-scripts/ProxmoxVE/pull/1969)) - Prometheus Proxmox VE Exporter: Set correct website slug [@andygrunwald](https://github.com/andygrunwald) ([#1961](https://github.com/community-scripts/ProxmoxVE/pull/1961)) ## 2025-02-02 From 55c1f2f3dc8e362d072f97018d481e1d4059c63f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 11:57:17 +0100 Subject: [PATCH 065/480] [Standardization] Fix Spelling for "Setup Python3" (#1975) * Harmonize Naming Python3 (fix missing) * Harmonize Naming Python3 (fix missing) --- install/lazylibrarian-install.sh | 4 ++-- install/metube-install.sh | 4 ++-- install/openwebui-install.sh | 4 ++-- install/paperless-ngx-install.sh | 4 ++-- install/spoolman-install.sh | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/install/lazylibrarian-install.sh b/install/lazylibrarian-install.sh index 014a0400c..2121948ad 100644 --- a/install/lazylibrarian-install.sh +++ b/install/lazylibrarian-install.sh @@ -26,7 +26,7 @@ $STD apt-get install -y \ imagemagick msg_ok "Installed Dependencies" -msg_info "Installing Python3 Dependencies" +msg_info "Setup Python3" $STD apt-get install -y \ pip \ python3-irc @@ -34,7 +34,7 @@ $STD pip install jaraco.stream $STD pip install python-Levenshtein $STD pip install soupsieve $STD pip install pypdf -msg_ok "Installed Python3 Dependencies" +msg_ok "Setup Python3" msg_info "Installing LazyLibrarian" $STD git clone https://gitlab.com/LazyLibrarian/LazyLibrarian /opt/LazyLibrarian diff --git a/install/metube-install.sh b/install/metube-install.sh index 735c890df..670df5670 100644 --- a/install/metube-install.sh +++ b/install/metube-install.sh @@ -33,13 +33,13 @@ $STD apt-get install -y --no-install-recommends \ mc msg_ok "Installed Dependencies" -msg_info "Installing Python3" +msg_info "Setup Python3" $STD apt-get install -y \ python3 \ python3-dev \ python3-pip \ python3-venv -msg_ok "Installed Python3" +msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings diff --git a/install/openwebui-install.sh b/install/openwebui-install.sh index 454902568..c513dd840 100644 --- a/install/openwebui-install.sh +++ b/install/openwebui-install.sh @@ -24,11 +24,11 @@ $STD apt-get install -y \ ffmpeg msg_ok "Installed Dependencies" -msg_info "Installing Python3 Dependencies" +msg_info "Setup Python3" $STD apt-get install -y --no-install-recommends \ python3 \ python3-pip -msg_ok "Installed Python3 Dependencies" +msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings diff --git a/install/paperless-ngx-install.sh b/install/paperless-ngx-install.sh index 16c56ead0..7adb8c629 100644 --- a/install/paperless-ngx-install.sh +++ b/install/paperless-ngx-install.sh @@ -40,14 +40,14 @@ $STD apt-get install -y \ mc msg_ok "Installed Dependencies" -msg_info "Installing Python3 Dependencies (Patience)" +msg_info "Setup Python3" $STD apt-get install -y \ python3 \ python3-pip \ python3-dev \ python3-setuptools \ python3-wheel -msg_ok "Installed Python3 Dependencies" +msg_ok "Setup Python3" msg_info "Installing OCR Dependencies (Patience)" $STD apt-get install -y \ diff --git a/install/spoolman-install.sh b/install/spoolman-install.sh index 38a53c16d..80a269494 100644 --- a/install/spoolman-install.sh +++ b/install/spoolman-install.sh @@ -27,13 +27,13 @@ $STD apt-get install -y \ mc msg_ok "Installed Dependencies" -msg_info "Installing Python3" +msg_info "Setup Python3" $STD apt-get install -y \ python3-dev \ python3-setuptools \ python3-wheel \ python3-pip -msg_ok "Installed Python3" +msg_ok "Setup Python3" msg_info "Installing Spoolman" RELEASE=$(wget -q https://github.com/Donkie/Spoolman/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) From 50ffcd4734d5adbdf8a72b14fec9c3769c2bde6b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 11:57:39 +0100 Subject: [PATCH 066/480] Feature: Clean Orphan LVM without CEPH (#1974) --- misc/clean-orphaned-lvm.sh | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/misc/clean-orphaned-lvm.sh b/misc/clean-orphaned-lvm.sh index d8ad78207..533ef50ec 100644 --- a/misc/clean-orphaned-lvm.sh +++ b/misc/clean-orphaned-lvm.sh @@ -22,26 +22,18 @@ function find_orphaned_lvm { orphaned_volumes=() while read -r lv vg size; do - container_id=$(echo "$lv" | grep -oE "[0-9]+" | head -1) - - # Exclude system-critical LVs - if [[ "$lv" == "data" || "$lv" == "root" || "$lv" == "swap" ]]; then + # Exclude system-critical LVs and Ceph OSDs + if [[ "$lv" == "data" || "$lv" == "root" || "$lv" == "swap" || "$lv" =~ ^osd-block- ]]; then continue fi - + container_id=$(echo "$lv" | grep -oE "[0-9]+" | head -1) # Check if the ID exists as a VM or LXC container if [ -f "/etc/pve/lxc/${container_id}.conf" ] || [ -f "/etc/pve/qemu-server/${container_id}.conf" ]; then continue fi - orphaned_volumes+=("$lv" "$vg" "$size") done < <(lvs --noheadings -o lv_name,vg_name,lv_size --separator ' ' | awk '{print $1, $2, $3}') - if [ ${#orphaned_volumes[@]} -eq 0 ]; then - echo -e "✅ No orphaned LVM volumes found.\n" - exit 0 - fi - # Display orphaned volumes echo -e "❗ The following orphaned LVM volumes were found:\n" printf "%-25s %-10s %-10s\n" "LV Name" "VG" "Size" From ec3b70e8fd8c057f5b73c22bf7158bf31dc2e371 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 11:59:30 +0100 Subject: [PATCH 067/480] Update CHANGELOG.md (#1976) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a974bb3ad..89f6301a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Feature: Clean Orphan LVM without CEPH [@MickLesk](https://github.com/MickLesk) ([#1974](https://github.com/community-scripts/ProxmoxVE/pull/1974)) +- [Standardization] Fix Spelling for "Setup Python3" [@MickLesk](https://github.com/MickLesk) ([#1975](https://github.com/community-scripts/ProxmoxVE/pull/1975)) - Update Script: urbackupserver.sh Include features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) - Fix: Increase HDD Space for Hoarder [@MickLesk](https://github.com/MickLesk) ([#1970](https://github.com/community-scripts/ProxmoxVE/pull/1970)) - Fix: Grist ran into a heap space during the update [@MickLesk](https://github.com/MickLesk) ([#1964](https://github.com/community-scripts/ProxmoxVE/pull/1964)) From 99556bdbd253f56ceb56401aa31465e243ec96d3 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:24:46 +0100 Subject: [PATCH 068/480] [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball (#1977) --- install/authentik-install.sh | 11 ++++++----- install/caddy-install.sh | 16 ++++++++-------- install/memos-install.sh | 10 ++++++---- install/ollama-install.sh | 12 ++++++++---- install/pocketid-install.sh | 11 ++++++----- install/rtsptoweb-install.sh | 12 ++++++++---- install/sftpgo-install.sh | 10 ++++++---- 7 files changed, 48 insertions(+), 34 deletions(-) diff --git a/install/authentik-install.sh b/install/authentik-install.sh index fc36f2e57..350130922 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -81,12 +81,13 @@ $STD apt-get install -y nodejs msg_ok "Installed Node.js" msg_info "Installing Golang" -cd /tmp set +o pipefail -GO_RELEASE=$(curl -s https://go.dev/dl/ | grep -o -m 1 "go.*\linux-amd64.tar.gz") -wget -q https://golang.org/dl/${GO_RELEASE} -tar -xzf ${GO_RELEASE} -C /usr/local -ln -s /usr/local/go/bin/go /usr/bin/go +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" set -o pipefail msg_ok "Installed Golang" diff --git a/install/caddy-install.sh b/install/caddy-install.sh index 8490b970c..e314df0b0 100644 --- a/install/caddy-install.sh +++ b/install/caddy-install.sh @@ -4,7 +4,7 @@ # Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" color verb_ip6 catch_errors @@ -33,16 +33,16 @@ msg_ok "Installed Caddy" read -r -p "Would you like to install xCaddy Addon? " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then msg_info "Installing Golang" - cd /opt set +o pipefail - GOLANG=$(curl -s https://go.dev/dl/ | grep -o "go.*\linux-amd64.tar.gz" | head -n 1) - wget -q https://golang.org/dl/$GOLANG - tar -xzf $GOLANG -C /usr/local - ln -s /usr/local/go/bin/go /usr/local/bin/go + temp_file=$(mktemp) + golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) + wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" + tar -C /usr/local -xzf "$temp_file" + ln -sf /usr/local/go/bin/go /usr/local/bin/go + rm -f "$temp_file" set -o pipefail - rm -rf /opt/go* msg_ok "Installed Golang" - + msg_info "Setup xCaddy" cd /opt RELEASE=$(curl -s https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') diff --git a/install/memos-install.sh b/install/memos-install.sh index 05e95f404..3e2449c69 100644 --- a/install/memos-install.sh +++ b/install/memos-install.sh @@ -42,10 +42,12 @@ msg_ok "Installed pnpm" msg_info "Installing Golang" set +o pipefail -GOLANG=$(curl -s https://go.dev/dl/ | grep -o "go.*\linux-amd64.tar.gz" | head -n 1) -wget -q https://golang.org/dl/$GOLANG -tar -xzf $GOLANG -C /usr/local -ln -s /usr/local/go/bin/go /usr/local/bin/go +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" set -o pipefail msg_ok "Installed Golang" diff --git a/install/ollama-install.sh b/install/ollama-install.sh index a43d124dd..6c18d71be 100644 --- a/install/ollama-install.sh +++ b/install/ollama-install.sh @@ -26,10 +26,14 @@ $STD apt-get install -y cmake msg_ok "Installed Dependencies" msg_info "Installing Golang" -$STD wget https://golang.org/dl/go1.23.2.linux-amd64.tar.gz -$STD tar -xzf go1.23.2.linux-amd64.tar.gz -C /usr/local -$STD ln -s /usr/local/go/bin/go /usr/local/bin/go -rm -rf go1.23.2.linux-amd64.tar.gz +set +o pipefail +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" +set -o pipefail msg_ok "Installed Golang" msg_info "Setting up Intel® Repositories" diff --git a/install/pocketid-install.sh b/install/pocketid-install.sh index c330ad365..6ce62a195 100644 --- a/install/pocketid-install.sh +++ b/install/pocketid-install.sh @@ -35,12 +35,13 @@ $STD apt-get install -y nodejs msg_ok "Installed Node.js" msg_info "Installing Golang" -cd /tmp set +o pipefail -GO_RELEASE=$(curl -s https://go.dev/dl/ | grep -o -m 1 "go.*\linux-amd64.tar.gz") -wget -q https://golang.org/dl/${GO_RELEASE} -tar -xzf ${GO_RELEASE} -C /usr/local -ln -s /usr/local/go/bin/go /usr/bin/go +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" set -o pipefail msg_ok "Installed Golang" diff --git a/install/rtsptoweb-install.sh b/install/rtsptoweb-install.sh index 5928cdec9..b43018dd4 100644 --- a/install/rtsptoweb-install.sh +++ b/install/rtsptoweb-install.sh @@ -21,10 +21,14 @@ $STD apt-get install -y mc msg_ok "Installed Dependencies" msg_info "Installing Golang" -$STD wget https://golang.org/dl/go1.20.1.linux-amd64.tar.gz -$STD tar -xzf go1.20.1.linux-amd64.tar.gz -C /usr/local -$STD ln -s /usr/local/go/bin/go /usr/local/bin/go -rm -rf go1.20.1.linux-amd64.tar.gz +set +o pipefail +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" +set -o pipefail msg_ok "Installed Golang" msg_info "Installing RTSPtoWeb" diff --git a/install/sftpgo-install.sh b/install/sftpgo-install.sh index bffec81cc..1322b42cf 100644 --- a/install/sftpgo-install.sh +++ b/install/sftpgo-install.sh @@ -23,10 +23,12 @@ msg_ok "Installed Dependencies" msg_info "Installing Golang" set +o pipefail -RELEASE=$(curl -s https://go.dev/dl/ | grep -o "go.*\linux-amd64.tar.gz" | head -n 1) -wget -q https://golang.org/dl/$RELEASE -tar -xzf $RELEASE -C /usr/local -$STD ln -s /usr/local/go/bin/go /usr/local/bin/go +temp_file=$(mktemp) +golang_tarball=$(curl -s https://go.dev/dl/ | grep -oP 'go[\d\.]+\.linux-amd64\.tar\.gz' | head -n 1) +wget -q https://golang.org/dl/"$golang_tarball" -O "$temp_file" +tar -C /usr/local -xzf "$temp_file" +ln -sf /usr/local/go/bin/go /usr/local/bin/go +rm -f "$temp_file" set -o pipefail msg_ok "Installed Golang" From b4a0b74bfdf6712fb5c905c0dad146d47d517b0f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:27:36 +0100 Subject: [PATCH 069/480] Update CHANGELOG.md (#1978) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89f6301a5..054966ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,20 +23,25 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Feature: Clean Orphan LVM without CEPH [@MickLesk](https://github.com/MickLesk) ([#1974](https://github.com/community-scripts/ProxmoxVE/pull/1974)) -- [Standardization] Fix Spelling for "Setup Python3" [@MickLesk](https://github.com/MickLesk) ([#1975](https://github.com/community-scripts/ProxmoxVE/pull/1975)) -- Update Script: urbackupserver.sh Include features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) -- Fix: Increase HDD Space for Hoarder [@MickLesk](https://github.com/MickLesk) ([#1970](https://github.com/community-scripts/ProxmoxVE/pull/1970)) +- [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball [@MickLesk](https://github.com/MickLesk) ([#1977](https://github.com/community-scripts/ProxmoxVE/pull/1977)) +- Feature: urbackupserver Include fuse&nesting features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) +- Fix: MSSQL-Server: Better gpg handling [@MickLesk](https://github.com/MickLesk) ([#1962](https://github.com/community-scripts/ProxmoxVE/pull/1962)) - Fix: Grist ran into a heap space during the update [@MickLesk](https://github.com/MickLesk) ([#1964](https://github.com/community-scripts/ProxmoxVE/pull/1964)) - Fix: FS-Trim Cancel / Error-Button [@MickLesk](https://github.com/MickLesk) ([#1965](https://github.com/community-scripts/ProxmoxVE/pull/1965)) +- Fix: Increase HDD Space for Hoarder [@MickLesk](https://github.com/MickLesk) ([#1970](https://github.com/community-scripts/ProxmoxVE/pull/1970)) +- Feature: Clean Orphan LVM without CEPH [@MickLesk](https://github.com/MickLesk) ([#1974](https://github.com/community-scripts/ProxmoxVE/pull/1974)) +- [Standardization] Fix Spelling for "Setup Python3" [@MickLesk](https://github.com/MickLesk) ([#1975](https://github.com/community-scripts/ProxmoxVE/pull/1975)) - Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) -- Fix: MSSQL-Server: Better gpg handling [@MickLesk](https://github.com/MickLesk) ([#1962](https://github.com/community-scripts/ProxmoxVE/pull/1962)) ### 🌐 Website - [Website] update data/page.tsx [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1969](https://github.com/community-scripts/ProxmoxVE/pull/1969)) - Prometheus Proxmox VE Exporter: Set correct website slug [@andygrunwald](https://github.com/andygrunwald) ([#1961](https://github.com/community-scripts/ProxmoxVE/pull/1961)) +### 🧰 Maintenance + +- [API] Update build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1967](https://github.com/community-scripts/ProxmoxVE/pull/1967)) + ## 2025-02-02 ### Changed From fb8f911c494fea18db6f6a026d6e41e2068709f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:09:49 +0100 Subject: [PATCH 070/480] New Script: Element Synapse (#1955) * add element synapse script * Update install/elementsynapse-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/elementsynapse-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * fixes * fixes v2 --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/elementsynapse.sh | 49 +++++++++++++++++++++++++++++++ install/elementsynapse-install.sh | 43 +++++++++++++++++++++++++++ json/elementsynapse.json | 34 +++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 ct/elementsynapse.sh create mode 100644 install/elementsynapse-install.sh create mode 100644 json/elementsynapse.json diff --git a/ct/elementsynapse.sh b/ct/elementsynapse.sh new file mode 100644 index 000000000..376cac8fe --- /dev/null +++ b/ct/elementsynapse.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/element-hq/synapse + +# App Default Values +APP="Element Synapse" +var_tags="server" +var_cpu="1" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/matrix-synapse ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + 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}:8008${CL}" \ No newline at end of file diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh new file mode 100644 index 000000000..120e56fda --- /dev/null +++ b/install/elementsynapse-install.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: tremor021 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y + sudo \ + curl \ + mc \ + lsb-release \ + wget \ + apt-transport-https \ + debconf-utils +msg_ok "Installed Dependencies" + +msg_info "Installing Element Synapse" +wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg +echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list +$STD apt-get update +echo "matrix-synapse-py3 matrix-synapse/server-name string matrix" | debconf-set-selections +echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections +$STD apt-get install matrix-synapse-py3 -y +sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml +systemctl enable -q --now matrix-synapse +msg_ok "Installed Element Synapse" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/elementsynapse.json b/json/elementsynapse.json new file mode 100644 index 000000000..1de1c0834 --- /dev/null +++ b/json/elementsynapse.json @@ -0,0 +1,34 @@ +{ + "name": "Element Synapse", + "slug": "elementsynapse", + "categories": [ + 4 + ], + "date_created": "2025-02-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8008, + "documentation": "https://element-hq.github.io/synapse/latest/welcome_and_overview.html", + "website": "https://element.io/", + "logo": "https://element.io/images/logo-mark-primary.svg", + "description": "Synapse is an open source Matrix homeserver implementation, written and maintained by Element. Matrix is the open standard for secure and interoperable real time communications. You can directly run and manage the source code in this repository, available under an AGPL license. There is no support provided from Element unless you have a subscription.", + "install_methods": [ + { + "type": "default", + "script": "ct/elementsynapse.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] + } \ No newline at end of file From 7ca1ed019cfb7ecc158fab8ed5046dcfe3c41f6e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:12:13 +0100 Subject: [PATCH 071/480] Update .app files (#1980) Co-authored-by: GitHub Actions --- ct/headers/elementsynapse | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 ct/headers/elementsynapse diff --git a/ct/headers/elementsynapse b/ct/headers/elementsynapse new file mode 100644 index 000000000..be1c20a08 --- /dev/null +++ b/ct/headers/elementsynapse @@ -0,0 +1,12 @@ + ________ __ + / ____/ /__ ____ ___ ___ ____ / /_ + / __/ / / _ \/ __ `__ \/ _ \/ __ \/ __/ + / /___/ / __/ / / / / / __/ / / / /_ +/_____/_/\___/_/ /_/ /_/\___/_/ /_/\__/ + + _____ + / ___/__ ______ ____ _____ ________ + \__ \/ / / / __ \/ __ `/ __ \/ ___/ _ \ + ___/ / /_/ / / / / /_/ / /_/ (__ ) __/ +/____/\__, /_/ /_/\__,_/ .___/____/\___/ + /____/ /_/ From 83015c8cffb28132e45aa7a44104238b40fdcabc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:25:55 +0100 Subject: [PATCH 072/480] Update CHANGELOG.md (#1979) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 054966ae7..117b5f5c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New Script: Element Synapse [@tremor021](https://github.com/tremor021) ([#1955](https://github.com/community-scripts/ProxmoxVE/pull/1955)) + ### 🚀 Updated Scripts - [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball [@MickLesk](https://github.com/MickLesk) ([#1977](https://github.com/community-scripts/ProxmoxVE/pull/1977)) @@ -40,7 +44,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🧰 Maintenance -- [API] Update build.func [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1967](https://github.com/community-scripts/ProxmoxVE/pull/1967)) +- [API] Remove Hostname, Verbose, SSH and TAGS [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1967](https://github.com/community-scripts/ProxmoxVE/pull/1967)) ## 2025-02-02 From 21e0e0df984fe666ecea470e6bf2cba628e54e18 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 13:48:15 +0100 Subject: [PATCH 073/480] [Security] Update NodeJS to 22 (#1984) --- ct/cronicle.sh | 2 +- install/adventurelog-install.sh | 2 +- install/archivebox-install.sh | 2 +- install/changedetection-install.sh | 2 +- install/dashy-install.sh | 2 +- install/flowiseai-install.sh | 2 +- install/frigate-install.sh | 2 +- install/ghost-install.sh | 2 +- install/grist-install.sh | 2 +- install/homepage-install.sh | 2 +- install/iobroker-install.sh | 2 +- install/linkwarden-install.sh | 2 +- install/mafl-install.sh | 2 +- install/magicmirror-install.sh | 2 +- install/matterbridge-install.sh | 2 +- install/memos-install.sh | 2 +- install/meshcentral-install.sh | 2 +- install/metube-install.sh | 2 +- install/monica-install.sh | 2 +- install/myspeed-install.sh | 2 +- install/n8n-install.sh | 2 +- install/node-red-install.sh | 2 +- install/openwebui-install.sh | 2 +- install/overseerr-install.sh | 2 +- install/pairdrop-install.sh | 2 +- install/part-db-install.sh | 2 +- install/peanut-install.sh | 2 +- install/pingvin-install.sh | 2 +- install/shinobi-install.sh | 2 +- install/tandoor-install.sh | 2 +- install/the-lounge-install.sh | 2 +- install/tianji-install.sh | 2 +- install/umami-install.sh | 2 +- install/uptimekuma-install.sh | 2 +- install/wikijs-install.sh | 2 +- install/zipline-install.sh | 2 +- 36 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ct/cronicle.sh b/ct/cronicle.sh index 19f3454e2..7d2768314 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -73,7 +73,7 @@ function update_script() { msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list + echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/adventurelog-install.sh b/install/adventurelog-install.sh index 250a4d8f2..abf342a78 100644 --- a/install/adventurelog-install.sh +++ b/install/adventurelog-install.sh @@ -31,7 +31,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Setting up PostgreSQL Repository" diff --git a/install/archivebox-install.sh b/install/archivebox-install.sh index 59c29c81c..3f9a38a18 100644 --- a/install/archivebox-install.sh +++ b/install/archivebox-install.sh @@ -39,7 +39,7 @@ msg_ok "Installed Python Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/changedetection-install.sh b/install/changedetection-install.sh index 001c94040..660da465c 100644 --- a/install/changedetection-install.sh +++ b/install/changedetection-install.sh @@ -58,7 +58,7 @@ msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/dashy-install.sh b/install/dashy-install.sh index fb41a6758..b2d3f2cf3 100644 --- a/install/dashy-install.sh +++ b/install/dashy-install.sh @@ -23,7 +23,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/flowiseai-install.sh b/install/flowiseai-install.sh index a2932e949..3e166b413 100644 --- a/install/flowiseai-install.sh +++ b/install/flowiseai-install.sh @@ -23,7 +23,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 5023324f2..81f78f36f 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -26,7 +26,7 @@ msg_ok "Setup Python3" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" diff --git a/install/ghost-install.sh b/install/ghost-install.sh index 9bc6829af..b17ba3059 100644 --- a/install/ghost-install.sh +++ b/install/ghost-install.sh @@ -46,7 +46,7 @@ msg_ok "Configured MySQL" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Setup Node.js" diff --git a/install/grist-install.sh b/install/grist-install.sh index 30786777d..1386e572d 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -29,7 +29,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g yarn diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 21064860d..e65901a12 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -23,7 +23,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/iobroker-install.sh b/install/iobroker-install.sh index 057471185..0b5b1a0df 100644 --- a/install/iobroker-install.sh +++ b/install/iobroker-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh index 534a69caf..10438de67 100644 --- a/install/linkwarden-install.sh +++ b/install/linkwarden-install.sh @@ -28,7 +28,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js/Yarn" diff --git a/install/mafl-install.sh b/install/mafl-install.sh index a8a63cf33..491db3378 100644 --- a/install/mafl-install.sh +++ b/install/mafl-install.sh @@ -27,7 +27,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/magicmirror-install.sh b/install/magicmirror-install.sh index 999ab8488..3a593e427 100644 --- a/install/magicmirror-install.sh +++ b/install/magicmirror-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/matterbridge-install.sh b/install/matterbridge-install.sh index 8a81cc7c8..3f926b1a2 100644 --- a/install/matterbridge-install.sh +++ b/install/matterbridge-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/memos-install.sh b/install/memos-install.sh index 3e2449c69..5af7723c1 100644 --- a/install/memos-install.sh +++ b/install/memos-install.sh @@ -28,7 +28,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/meshcentral-install.sh b/install/meshcentral-install.sh index 0735f1a0e..bcf789a57 100644 --- a/install/meshcentral-install.sh +++ b/install/meshcentral-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/metube-install.sh b/install/metube-install.sh index 670df5670..bed909a83 100644 --- a/install/metube-install.sh +++ b/install/metube-install.sh @@ -44,7 +44,7 @@ msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/monica-install.sh b/install/monica-install.sh index 586bb7c53..85c416d62 100644 --- a/install/monica-install.sh +++ b/install/monica-install.sh @@ -43,7 +43,7 @@ msg_ok "Set up MariaDB" msg_info "Setting up Node.js/Yarn" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g npm@latest diff --git a/install/myspeed-install.sh b/install/myspeed-install.sh index 443f8aa83..3af647492 100644 --- a/install/myspeed-install.sh +++ b/install/myspeed-install.sh @@ -28,7 +28,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/n8n-install.sh b/install/n8n-install.sh index ef04b5383..860bcc361 100644 --- a/install/n8n-install.sh +++ b/install/n8n-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/node-red-install.sh b/install/node-red-install.sh index 06a706e8f..53f9471a3 100644 --- a/install/node-red-install.sh +++ b/install/node-red-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/openwebui-install.sh b/install/openwebui-install.sh index c513dd840..87131122c 100644 --- a/install/openwebui-install.sh +++ b/install/openwebui-install.sh @@ -33,7 +33,7 @@ msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/overseerr-install.sh b/install/overseerr-install.sh index 1bc15a83c..05bcabc89 100644 --- a/install/overseerr-install.sh +++ b/install/overseerr-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/pairdrop-install.sh b/install/pairdrop-install.sh index 46b799be0..0afff20f3 100644 --- a/install/pairdrop-install.sh +++ b/install/pairdrop-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/part-db-install.sh b/install/part-db-install.sh index 1429649fd..2a05df8b9 100644 --- a/install/part-db-install.sh +++ b/install/part-db-install.sh @@ -46,7 +46,7 @@ msg_ok "Set up PostgreSQL" msg_info "Setting up Node.js/Yarn" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g npm@latest diff --git a/install/peanut-install.sh b/install/peanut-install.sh index 745278e78..40ff5557a 100644 --- a/install/peanut-install.sh +++ b/install/peanut-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" diff --git a/install/pingvin-install.sh b/install/pingvin-install.sh index 253e107a9..bcf86158f 100644 --- a/install/pingvin-install.sh +++ b/install/pingvin-install.sh @@ -26,7 +26,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/shinobi-install.sh b/install/shinobi-install.sh index 9d4c64fe4..01336ceec 100644 --- a/install/shinobi-install.sh +++ b/install/shinobi-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/tandoor-install.sh b/install/tandoor-install.sh index 581f8c38b..89873b897 100644 --- a/install/tandoor-install.sh +++ b/install/tandoor-install.sh @@ -44,7 +44,7 @@ msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/the-lounge-install.sh b/install/the-lounge-install.sh index 81a656ec6..68cf506aa 100644 --- a/install/the-lounge-install.sh +++ b/install/the-lounge-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/tianji-install.sh b/install/tianji-install.sh index dd28ff4f0..e28f2262e 100644 --- a/install/tianji-install.sh +++ b/install/tianji-install.sh @@ -34,7 +34,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g pnpm@9.7.1 diff --git a/install/umami-install.sh b/install/umami-install.sh index 07b019984..22eb262cc 100644 --- a/install/umami-install.sh +++ b/install/umami-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/uptimekuma-install.sh b/install/uptimekuma-install.sh index f6e79a68d..1377d80db 100644 --- a/install/uptimekuma-install.sh +++ b/install/uptimekuma-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index 1a41e4245..46ced0a36 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -25,7 +25,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" diff --git a/install/zipline-install.sh b/install/zipline-install.sh index 4ac4c6fca..0ff850a90 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -27,7 +27,7 @@ msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" From db24bf4d02888c8de1a8ac9ff25c0046b9582e2e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 14:21:51 +0100 Subject: [PATCH 074/480] Update CHANGELOG.md (#1985) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 117b5f5c9..ac6a20677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- [Security & Maintenance] Update NodeJS Repo to 22 for new Installs [@MickLesk](https://github.com/MickLesk) ([#1984](https://github.com/community-scripts/ProxmoxVE/pull/1984)) - [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball [@MickLesk](https://github.com/MickLesk) ([#1977](https://github.com/community-scripts/ProxmoxVE/pull/1977)) - Feature: urbackupserver Include fuse&nesting features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) - Fix: MSSQL-Server: Better gpg handling [@MickLesk](https://github.com/MickLesk) ([#1962](https://github.com/community-scripts/ProxmoxVE/pull/1962)) From 577a415f103496e32d3801d6f901b38c50ee61e6 Mon Sep 17 00:00:00 2001 From: Vakrehus <60559245+Vakrehus@users.noreply.github.com> Date: Mon, 3 Feb 2025 14:29:55 +0100 Subject: [PATCH 075/480] Update elementsynapse-install.sh (#1987) missing backslash --- install/elementsynapse-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh index 120e56fda..e8fb42839 100644 --- a/install/elementsynapse-install.sh +++ b/install/elementsynapse-install.sh @@ -13,7 +13,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y +$STD apt-get install -y \ sudo \ curl \ mc \ From 85333212b040202f256b77f3b183bc507148ff5c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 14:33:42 +0100 Subject: [PATCH 076/480] Update CHANGELOG.md (#1986) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac6a20677..3b3b8b203 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) - [Security & Maintenance] Update NodeJS Repo to 22 for new Installs [@MickLesk](https://github.com/MickLesk) ([#1984](https://github.com/community-scripts/ProxmoxVE/pull/1984)) - [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball [@MickLesk](https://github.com/MickLesk) ([#1977](https://github.com/community-scripts/ProxmoxVE/pull/1977)) - Feature: urbackupserver Include fuse&nesting features during install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1968](https://github.com/community-scripts/ProxmoxVE/pull/1968)) @@ -36,7 +37,6 @@ Do not break established syntax in this file, as it is automatically updated by - Fix: Increase HDD Space for Hoarder [@MickLesk](https://github.com/MickLesk) ([#1970](https://github.com/community-scripts/ProxmoxVE/pull/1970)) - Feature: Clean Orphan LVM without CEPH [@MickLesk](https://github.com/MickLesk) ([#1974](https://github.com/community-scripts/ProxmoxVE/pull/1974)) - [Standardization] Fix Spelling for "Setup Python3" [@MickLesk](https://github.com/MickLesk) ([#1975](https://github.com/community-scripts/ProxmoxVE/pull/1975)) -- Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) ### 🌐 Website From 7f5ee39b255b71b06511eff9aaffe2a5f94766be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcolas=20Pastorello?= Date: Mon, 3 Feb 2025 11:50:47 -0300 Subject: [PATCH 077/480] New Script: Privatebin (#1925) * Create privatebin-install.sh * Create privatebin.sh * Create privatebin.json * Update ct/privatebin.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/privatebin-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/privatebin-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/privatebin-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update ct/privatebin.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> --- ct/privatebin.sh | 64 ++++++++++++++++++++ install/privatebin-install.sh | 110 ++++++++++++++++++++++++++++++++++ json/privatebin.json | 34 +++++++++++ 3 files changed, 208 insertions(+) create mode 100644 ct/privatebin.sh create mode 100644 install/privatebin-install.sh create mode 100644 json/privatebin.json diff --git a/ct/privatebin.sh b/ct/privatebin.sh new file mode 100644 index 000000000..8304e4189 --- /dev/null +++ b/ct/privatebin.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Nícolas Pastorello (opastorello) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +# App Default Values +APP="PrivateBin" +var_tags="paste;secure" +var_cpu="1" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/privatebin ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to v${RELEASE}" + echo "${RELEASE}" >/opt/${APP}_version.txt + cp -f /opt/privatebin/cfg/conf.php /tmp/privatebin_conf.bak + wget -q "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + rm -rf /opt/privatebin/* + mv PrivateBin-${RELEASE}/* /opt/privatebin/ + mv /tmp/privatebin_conf.bak /opt/privatebin/cfg/conf.php + chown -R www-data:www-data /opt/privatebin + chmod -R 0755 /opt/privatebin/data + echo "${RELEASE}" >/opt/${APP}_version.txt + rm -rf ${RELEASE}.zip PrivateBin-${RELEASE} + systemctl reload nginx php8.2-fpm + msg_ok "Updated ${APP} to v${RELEASE}" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + 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}https://${IP}${CL}" diff --git a/install/privatebin-install.sh b/install/privatebin-install.sh new file mode 100644 index 000000000..e91e64bb0 --- /dev/null +++ b/install/privatebin-install.sh @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: Nícolas Pastorello (opastorello) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + nginx \ + php8.2-fpm \ + php8.2-{common,cli,gd,mbstring,xml,fpm,curl,zip} \ + unzip \ + openssl +msg_ok "Installed Dependencies" + +msg_info "Installing PrivateBin" +RELEASE=$(curl -s https://api.github.com/repos/PrivateBin/PrivateBin/releases/latest | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +mkdir -p /opt/privatebin +cd /opt/privatebin +wget -q "https://github.com/PrivateBin/PrivateBin/archive/refs/tags/${RELEASE}.zip" +$STD unzip -q ${RELEASE}.zip +mv PrivateBin-${RELEASE}/* . +msg_ok "Installed PrivateBin" + +msg_info "Generating Universal SSL Certificate" +mkdir -p /etc/ssl/privatebin +$STD openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ + -keyout /etc/ssl/privatebin/key.pem \ + -out /etc/ssl/privatebin/cert.pem \ + -subj "/CN=PrivateBin" +msg_ok "Certificate Generated" + +msg_info "Configuring Environment" +mkdir -p /opt/privatebin/data +cp cfg/conf.sample.php /opt/privatebin/cfg/conf.php +sed -i "s|// 'traffic'|'traffic'|g" /opt/privatebin/cfg/conf.php +chown -R www-data:www-data /opt/privatebin +chmod -R 0755 /opt/privatebin/data +msg_ok "Configured Environment" + +msg_info "Configuring PHP" +sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini +systemctl restart php8.2-fpm +msg_ok "Configured PHP" + +msg_info "Configuring Universal Nginx" +cat </etc/nginx/sites-available/privatebin.conf +server { + listen 80 default_server; + listen [::]:80 default_server; + return 301 https://\$host\$request_uri; +} + +server { + listen 443 ssl default_server; + listen [::]:443 ssl default_server; + + ssl_certificate /etc/ssl/privatebin/cert.pem; + ssl_certificate_key /etc/ssl/privatebin/key.pem; + + root /opt/privatebin; + index index.php; + + location / { + try_files \$uri \$uri/ /index.php\$is_args\$args; + } + + location ~ \.php\$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; + fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + + add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; +} +EOF +ln -s /etc/nginx/sites-available/privatebin.conf /etc/nginx/sites-enabled/ +rm -f /etc/nginx/sites-enabled/default +systemctl reload nginx +msg_ok "Nginx Configured" + +msg_info "Cleaning up" +rm -rf /opt/privatebin/${RELEASE}.zip +rm -rf /opt/privatebin/PrivateBin-${RELEASE} +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize diff --git a/json/privatebin.json b/json/privatebin.json new file mode 100644 index 000000000..922891199 --- /dev/null +++ b/json/privatebin.json @@ -0,0 +1,34 @@ +{ + "name": "PrivateBin", + "slug": "privatebin", + "categories": [ + 12 + ], + "date_created": "2025-01-29", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://github.com/PrivateBin/PrivateBin/wiki", + "website": "https://github.com/PrivateBin/PrivateBin", + "logo": "https://raw.githubusercontent.com/PrivateBin/PrivateBin/refs/heads/master/img/icon.svg", + "description": "PrivateBin is a minimalist, open-source pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256-bit AES.", + "install_methods": [ + { + "type": "default", + "script": "ct/privatebin.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 8d46f7266e3f7e71d47a84577bedf408ca85d51a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:04:21 +0100 Subject: [PATCH 078/480] Update .app files (#1989) Co-authored-by: GitHub Actions --- ct/headers/privatebin | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ct/headers/privatebin diff --git a/ct/headers/privatebin b/ct/headers/privatebin new file mode 100644 index 000000000..3aa5b5e07 --- /dev/null +++ b/ct/headers/privatebin @@ -0,0 +1,6 @@ + ____ _ __ ____ _ + / __ \_____(_) ______ _/ /____ / __ )(_)___ + / /_/ / ___/ / | / / __ `/ __/ _ \/ __ / / __ \ + / ____/ / / /| |/ / /_/ / /_/ __/ /_/ / / / / / +/_/ /_/ /_/ |___/\__,_/\__/\___/_____/_/_/ /_/ + From 0e0539af3feda4a13b81de470c613ac23424259e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:06:54 +0100 Subject: [PATCH 079/480] Update CHANGELOG.md (#1988) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b3b8b203..fbe8454c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Privatebin [@opastorello](https://github.com/opastorello) ([#1925](https://github.com/community-scripts/ProxmoxVE/pull/1925)) - New Script: Element Synapse [@tremor021](https://github.com/tremor021) ([#1955](https://github.com/community-scripts/ProxmoxVE/pull/1955)) ### 🚀 Updated Scripts From a97d76f428bc866859a9988d0ef3a7f61ce7faf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:33:30 +0100 Subject: [PATCH 080/480] Element Synapse sed fix (#1994) --- install/elementsynapse-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/elementsynapse-install.sh b/install/elementsynapse-install.sh index e8fb42839..7b5d69dc9 100644 --- a/install/elementsynapse-install.sh +++ b/install/elementsynapse-install.sh @@ -31,6 +31,7 @@ echo "matrix-synapse-py3 matrix-synapse/server-name string matrix" | debconf-set echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections $STD apt-get install matrix-synapse-py3 -y sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml +sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml systemctl enable -q --now matrix-synapse msg_ok "Installed Element Synapse" From a75c0e1562874b5dd4f1e209e640cd023d944b79 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:34:06 +0100 Subject: [PATCH 081/480] Fix Monica LXC (#1996) --- install/monica-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/monica-install.sh b/install/monica-install.sh index 85c416d62..586bb7c53 100644 --- a/install/monica-install.sh +++ b/install/monica-install.sh @@ -43,7 +43,7 @@ msg_ok "Set up MariaDB" msg_info "Setting up Node.js/Yarn" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list $STD apt-get update $STD apt-get install -y nodejs $STD npm install -g npm@latest From c5a69d6e8b10f2208e5b1355952f6b9435eef067 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:34:44 +0100 Subject: [PATCH 082/480] Update CHANGELOG.md (#1997) --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbe8454c2..fc75c5932 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,11 +23,13 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts -- New Script: Privatebin [@opastorello](https://github.com/opastorello) ([#1925](https://github.com/community-scripts/ProxmoxVE/pull/1925)) - New Script: Element Synapse [@tremor021](https://github.com/tremor021) ([#1955](https://github.com/community-scripts/ProxmoxVE/pull/1955)) +- New Script: Privatebin [@opastorello](https://github.com/opastorello) ([#1925](https://github.com/community-scripts/ProxmoxVE/pull/1925)) ### 🚀 Updated Scripts +- Fix: Monica Install with nodejs [@MickLesk](https://github.com/MickLesk) ([#1996](https://github.com/community-scripts/ProxmoxVE/pull/1996)) +- Element Synapse sed fix [@tremor021](https://github.com/tremor021) ([#1994](https://github.com/community-scripts/ProxmoxVE/pull/1994)) - Fix Hoarder corepack install/update error [@vhsdream](https://github.com/vhsdream) ([#1957](https://github.com/community-scripts/ProxmoxVE/pull/1957)) - [Security & Maintenance] Update NodeJS Repo to 22 for new Installs [@MickLesk](https://github.com/MickLesk) ([#1984](https://github.com/community-scripts/ProxmoxVE/pull/1984)) - [Standardization]: Same Setup for GoLang on all LXC's & Clear Tarball [@MickLesk](https://github.com/MickLesk) ([#1977](https://github.com/community-scripts/ProxmoxVE/pull/1977)) From bd5db081c14d05c9130d2a7b34b523859d58b735 Mon Sep 17 00:00:00 2001 From: Lele1409 <96698930+Lele1409@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:40:22 +0100 Subject: [PATCH 083/480] Fix Typo (#1999) --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 89f7e01b9..02659de9b 100644 --- a/misc/build.func +++ b/misc/build.func @@ -11,7 +11,7 @@ variables() { PVEHOST_NAME=$(hostname) # gets the Proxmox Hostname and sets it to Uppercase DIAGNOSTICS="yes" # sets the DIAGNOSTICS variable to "yes", used for the API call. METHOD="default" # sets the METHOD variable to "default", used for the API call. - RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)" # generates a random UUID and sets it to the RANDOM_UUDI variable. + RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)" # generates a random UUID and sets it to the RANDOM_UUID variable. } # This function sets various color variables using ANSI escape codes for formatting text in the terminal. From 6f29ab8942c723271f81dbe564f05cbea801fe70 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Tue, 4 Feb 2025 10:37:15 +0100 Subject: [PATCH 084/480] Fix wrong HDD Size (#2001) --- ct/authentik.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/authentik.sh b/ct/authentik.sh index 3f1a39ab3..fbe6739a2 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Authentik" var_tags="identity-provider" -var_disk="15" +var_disk="12" var_cpu="6" var_ram="8192" var_os="debian" From c3cd5314fe354d66c5af6400c6da22e7f1318a95 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:14:32 +0100 Subject: [PATCH 085/480] Update CHANGELOG.md (#2003) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc75c5932..669cf23f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,14 @@ All LXC instances created using this repository come pre-installed with Midnight Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-02-04 + +### Changed + +### 🚀 Updated Scripts + +- Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) + ## 2025-02-03 ### Changed From 41744c0ab6c5e9da23b9331fe1ffe66156d78ff6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:57:51 +0100 Subject: [PATCH 086/480] Fix: Ghost LXC - Use Node20 (#2006) --- install/ghost-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/ghost-install.sh b/install/ghost-install.sh index b17ba3059..9bc6829af 100644 --- a/install/ghost-install.sh +++ b/install/ghost-install.sh @@ -46,7 +46,7 @@ msg_ok "Configured MySQL" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Setup Node.js" From 88daaed11381e530346c70f4a5e2301d42a92457 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:11:42 +0100 Subject: [PATCH 087/480] Update tandoor-install.sh (#2010) --- install/tandoor-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tandoor-install.sh b/install/tandoor-install.sh index 89873b897..581f8c38b 100644 --- a/install/tandoor-install.sh +++ b/install/tandoor-install.sh @@ -44,7 +44,7 @@ msg_ok "Setup Python3" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" From d7b3f330306e3805ff42baa9e481654f5ecdf4a4 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 4 Feb 2025 12:26:59 +0100 Subject: [PATCH 088/480] Fix Tianji: Add heap-space value for nodejs (#2011) --- ct/tianji.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ct/tianji.sh b/ct/tianji.sh index 96b2d5675..903edf5d8 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -45,6 +45,7 @@ function update_script() { unzip -q v${RELEASE}.zip mv tianji-${RELEASE} /opt/tianji cd tianji + export NODE_OPTIONS="--max_old_space_size=4096" pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile >/dev/null 2>&1 pnpm build:static >/dev/null 2>&1 pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false >/dev/null 2>&1 From de45527d45faf8c4573227681bfa73bf32fb09d7 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:12:59 +0100 Subject: [PATCH 089/480] Update CHANGELOG.md (#2008) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 669cf23f5..c3084ec39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,9 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Tianji: Add heap-space value for nodejs [@MickLesk](https://github.com/MickLesk) ([#2011](https://github.com/community-scripts/ProxmoxVE/pull/2011)) +- Update tandoor-install.sh, Fix node Version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#2010](https://github.com/community-scripts/ProxmoxVE/pull/2010)) +- Fix: Ghost LXC - Use Node20 [@MickLesk](https://github.com/MickLesk) ([#2006](https://github.com/community-scripts/ProxmoxVE/pull/2006)) - Update Script: Authentik Fix wrong HDD Size [@thost96](https://github.com/thost96) ([#2001](https://github.com/community-scripts/ProxmoxVE/pull/2001)) ## 2025-02-03 From 0e5f663df518e1dadee5132b308024400efbe830 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Tue, 4 Feb 2025 13:22:57 +0100 Subject: [PATCH 090/480] Proxmox Backup Server Renaming and Update fix (#2012) * Remaned PBS to long name Proxmox Backup Server and fixed install check * Fix Name --- ct/{pbs.sh => proxmox-backup-server.sh} | 4 ++-- ...pbs-install.sh => proxmox-backup-server-install.sh} | 8 +++++--- json/{pbs.json => proxmox-backup-server.json} | 10 +++++----- 3 files changed, 12 insertions(+), 10 deletions(-) rename ct/{pbs.sh => proxmox-backup-server.sh} (92%) rename install/{pbs-install.sh => proxmox-backup-server-install.sh} (90%) rename json/{pbs.json => proxmox-backup-server.json} (86%) diff --git a/ct/pbs.sh b/ct/proxmox-backup-server.sh similarity index 92% rename from ct/pbs.sh rename to ct/proxmox-backup-server.sh index 4c9305055..c8ad135a5 100644 --- a/ct/pbs.sh +++ b/ct/proxmox-backup-server.sh @@ -16,7 +16,7 @@ cat <<"EOF" EOF } header_info -APP="PBS" +APP="Proxmox-Backup-Server" var_tags="backup" var_cpu="2" var_ram="2048" @@ -37,7 +37,7 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -e /usr/sbin/proxmox-backup-manager ]]; then msg_error "No ${APP} Installation Found!"; exit; fi msg_info "Updating $APP LXC" apt-get update &>/dev/null apt-get -y upgrade &>/dev/null diff --git a/install/pbs-install.sh b/install/proxmox-backup-server-install.sh similarity index 90% rename from install/pbs-install.sh rename to install/proxmox-backup-server-install.sh index c14a2c123..2545c899f 100644 --- a/install/pbs-install.sh +++ b/install/proxmox-backup-server-install.sh @@ -14,9 +14,11 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc +$STD apt-get install -y \ + curl \ + sudo \ + gpg \ + mc msg_ok "Installed Dependencies" msg_info "Installing Proxmox Backup Server" diff --git a/json/pbs.json b/json/proxmox-backup-server.json similarity index 86% rename from json/pbs.json rename to json/proxmox-backup-server.json index 360a038a6..497c2f929 100644 --- a/json/pbs.json +++ b/json/proxmox-backup-server.json @@ -1,12 +1,12 @@ { "name": "Proxmox Backup Server", - "slug": "pbs", + "slug": "proxmox-backup-server", "categories": [ 1 ], "date_created": "2024-05-02", "type": "ct", - "updateable": false, + "updateable": true, "privileged": false, "interface_port": 8007, "documentation": "https://pbs.proxmox.com/docs/", @@ -16,7 +16,7 @@ "install_methods": [ { "type": "default", - "script": "ct/pbs.sh", + "script": "ct/proxmox-backup-server.sh", "resources": { "cpu": 2, "ram": 2048, @@ -27,12 +27,12 @@ } ], "default_credentials": { - "username": null, + "username": "root", "password": null }, "notes": [ { - "text": "Set a root password if using autologin. This will be the PBS password. `sudo passwd root`", + "text": "Set a root password if using autologin. This will be the PBS password. `passwd root`", "type": "warning" } ] From 8129e3cf394b864016977d44b4f40254ff757314 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:23:20 +0100 Subject: [PATCH 091/480] [API] Masiv update to api (#1990) * Masiv refactor of the api * Masiv refactor of the api * Format page.tsx * Format page.tsx * testing * update build.func * Change urls to Repo * Change urls to Repo * update install.func * Add post_to_api_vm * Update api.func * Update api.func * Update api.func * update api.func --- frontend/src/app/data/page.tsx | 80 ++++++++------------- misc/api.func | 125 +++++++++++++++++++++++++++++++++ misc/build.func | 78 ++------------------ misc/install.func | 6 +- 4 files changed, 164 insertions(+), 125 deletions(-) create mode 100644 misc/api.func diff --git a/frontend/src/app/data/page.tsx b/frontend/src/app/data/page.tsx index 462158f65..e78b4a675 100644 --- a/frontend/src/app/data/page.tsx +++ b/frontend/src/app/data/page.tsx @@ -11,18 +11,16 @@ interface DataModel { disk_size: number; core_count: number; ram_size: number; - verbose: string; os_type: string; os_version: string; - hn: string; disableip6: string; - ssh: string; - tags: string; nsapp: string; created_at: string; method: string; pve_version: string; status: string; + error: string; + type: string; } @@ -36,8 +34,8 @@ const DataFetcher: React.FC = () => { const [sortConfig, setSortConfig] = useState<{ key: keyof DataModel | null, direction: 'ascending' | 'descending' }>({ key: 'id', direction: 'descending' }); const [itemsPerPage, setItemsPerPage] = useState(25); const [currentPage, setCurrentPage] = useState(1); - const [interval, setIntervalTime] = useState(10); // Default interval 10 seconds - const [reloadInterval, setReloadInterval] = useState(null); + + const [showErrorRow, setShowErrorRow] = useState(null); useEffect(() => { @@ -118,38 +116,6 @@ const DataFetcher: React.FC = () => { const paginatedData = sortedData.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage); - useEffect(() => { - const storedInterval = localStorage.getItem('reloadInterval'); - if (storedInterval) { - setIntervalTime(Number(storedInterval)); - } - }, []); - - - useEffect(() => { - if (interval <= 10) { - const newInterval = setInterval(() => { - window.location.reload(); - }, 10000); - - - return () => clearInterval(newInterval); - } else { - const newInterval = setInterval(() => { - window.location.reload(); - }, interval * 1000); - } - - }, [interval]); - - - useEffect(() => { - if (interval > 0) { - localStorage.setItem('reloadInterval', interval.toString()); - } else { - localStorage.removeItem('reloadInterval'); - } - }, [interval]); if (loading) return

Loading...

; if (error) return

Error: {error}

; @@ -211,19 +177,6 @@ const DataFetcher: React.FC = () => { />
- -
-
- setIntervalTime(Number(e.target.value))} - className="p-2 border" - placeholder="Interval (seconds)" - /> - -
-
@@ -242,6 +195,7 @@ const DataFetcher: React.FC = () => {
requestSort('status')}>Status requestSort('type')}>Type requestSort('nsapp')}>Application requestSort('os_type')}>OS requestSort('os_version')}>OS Version requestSort('ram_size')}>RAM Size requestSort('method')}>Method requestSort('pve_version')}>PVE Version requestSort('error')}>Error Message requestSort('created_at')}>Created At
{item.type === "lxc" ? ( + "📦" + ) : item.type === "vm" ? ( + "🖥️" + ) : ( + item.type + )} {item.nsapp} {item.os_type} {item.os_version}{item.ram_size} {item.method} {item.pve_version} + {item.error && item.error !== "none" ? ( + showErrorRow === index ? ( + <> + {item.error} + + + ) : ( + + ) + ) : ( + "none" + )} + {formatDate(item.created_at)}