Compare commits

..

1 Commits

Author SHA1 Message Date
CanbiZ
5b213a4086 Refactor agent service control in zabbix.sh
Replaces conditional logic for stopping and starting Zabbix agent services with a variable ($AGENT_SERVICE), simplifying service management.
2025-11-05 15:01:38 +01:00
30 changed files with 411 additions and 791 deletions

View File

@@ -10,54 +10,10 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-11-07
### 🆕 New Scripts
- infisical ([#8926](https://github.com/community-scripts/ProxmoxVE/pull/8926))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update script URLs to ProxmoxVE repository [@MickLesk](https://github.com/MickLesk) ([#8946](https://github.com/community-scripts/ProxmoxVE/pull/8946))
- tools.func: fix amd64 arm64 mismatch [@MickLesk](https://github.com/MickLesk) ([#8943](https://github.com/community-scripts/ProxmoxVE/pull/8943))
- ghostfolio: refactor CoinGecko key prompts in installer [@MickLesk](https://github.com/MickLesk) ([#8935](https://github.com/community-scripts/ProxmoxVE/pull/8935))
- flaresolverr: pin release to 3.4.3 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8937](https://github.com/community-scripts/ProxmoxVE/pull/8937))
- #### ✨ New Features
- Pangolin: Add Traefik proxy [@tremor021](https://github.com/tremor021) ([#8952](https://github.com/community-scripts/ProxmoxVE/pull/8952))
## 2025-11-06
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- OpenProject: Remove duplicate server_path_prefix configuration [@tremor021](https://github.com/tremor021) ([#8919](https://github.com/community-scripts/ProxmoxVE/pull/8919))
- Grist: Fix change directory to /opt/grist before build steps [@tremor021](https://github.com/tremor021) ([#8913](https://github.com/community-scripts/ProxmoxVE/pull/8913))
- Jotty hotfix: SSO_FALLBACK_LOCAL value [@vhsdream](https://github.com/vhsdream) ([#8907](https://github.com/community-scripts/ProxmoxVE/pull/8907))
- npm: add Debian version check to update script [@MickLesk](https://github.com/MickLesk) ([#8901](https://github.com/community-scripts/ProxmoxVE/pull/8901))
- #### ✨ New Features
- MongoDB: install script now use setup_mongodb [@MickLesk](https://github.com/MickLesk) ([#8897](https://github.com/community-scripts/ProxmoxVE/pull/8897))
- #### 🔧 Refactor
- Refactor: Graylog [@tremor021](https://github.com/tremor021) ([#8912](https://github.com/community-scripts/ProxmoxVE/pull/8912))
## 2025-11-05 ## 2025-11-05
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Immich: Pin version to 2.2.3 [@vhsdream](https://github.com/vhsdream) ([#8861](https://github.com/community-scripts/ProxmoxVE/pull/8861))
- Jotty: increase RAM to 4GB [@vhsdream](https://github.com/vhsdream) ([#8887](https://github.com/community-scripts/ProxmoxVE/pull/8887))
- Zabbix: fix agent service recognition in update [@MickLesk](https://github.com/MickLesk) ([#8881](https://github.com/community-scripts/ProxmoxVE/pull/8881))
- #### 💥 Breaking Changes - #### 💥 Breaking Changes
- fix: npm: refactor for v2.13.x [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8870](https://github.com/community-scripts/ProxmoxVE/pull/8870)) - fix: npm: refactor for v2.13.x [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8870](https://github.com/community-scripts/ProxmoxVE/pull/8870))
@@ -71,7 +27,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 📝 Script Information - #### 📝 Script Information
- npm: Increase RAM and HDD, update Certbot notes [@MickLesk](https://github.com/MickLesk) ([#8882](https://github.com/community-scripts/ProxmoxVE/pull/8882))
- Update config_path in donetick.json [@fyxtro](https://github.com/fyxtro) ([#8872](https://github.com/community-scripts/ProxmoxVE/pull/8872)) - Update config_path in donetick.json [@fyxtro](https://github.com/fyxtro) ([#8872](https://github.com/community-scripts/ProxmoxVE/pull/8872))
## 2025-11-04 ## 2025-11-04

View File

@@ -33,13 +33,13 @@ function update_script() {
msg_error "You must upgrade your LXC to Debian Trixie before updating." msg_error "You must upgrade your LXC to Debian Trixie before updating."
exit exit
fi fi
if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "3.4.3"; then if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
msg_info "Stopping service" msg_info "Stopping service"
systemctl stop flaresolverr systemctl stop flaresolverr
msg_ok "Stopped service" msg_ok "Stopped service"
rm -rf /opt/flaresolverr rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.4.3" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Starting service" msg_info "Starting service"
systemctl start flaresolverr systemctl start flaresolverr

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-8192}" var_ram="${var_ram:-8192}"
var_disk="${var_disk:-30}" var_disk="${var_disk:-30}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,32 +28,15 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop graylog-datanode systemctl stop graylog-datanode
systemctl stop graylog-server systemctl stop graylog-server
msg_info "Stopped Service" msg_info "Stopped Service"
CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+') msg_info "Updating $APP"
$STD apt-get update
if dpkg --compare-versions "$CURRENT_VERSION" lt "6.3"; then $STD apt-get upgrade -y
MONGO_VERSION="8.0" setup_mongodb msg_ok "Updated $APP"
msg_info "Updating Graylog"
$STD apt update
$STD apt upgrade -y
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb" -o "graylog-7.0-repository_latest.deb"
$STD dpkg -i graylog-7.0-repository_latest.deb
$STD apt update
$STD apt install -y graylog-server graylog-datanode
rm -f graylog-7.0-repository_latest.deb
msg_ok "Updated Graylog"
elif dpkg --compare-versions "$CURRENT_VERSION" ge "7.0"; then
msg_info "Updating Graylog"
$STD apt update
$STD apt upgrade -y
msg_ok "Updated Graylog"
fi
msg_info "Starting Service" msg_info "Starting Service"
systemctl start graylog-datanode systemctl start graylog-datanode

View File

@@ -47,7 +47,6 @@ function update_script() {
cp -r /opt/grist_bak/docs/* /opt/grist/docs/ cp -r /opt/grist_bak/docs/* /opt/grist/docs/
cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
cp /opt/grist_bak/landing.db /opt/grist/landing.db cp /opt/grist_bak/landing.db /opt/grist/landing.db
cd /opt/grist
$STD yarn install $STD yarn install
$STD yarn run build:prod $STD yarn run build:prod
$STD yarn run install:python $STD yarn run install:python

View File

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

View File

@@ -93,7 +93,7 @@ EOF
msg_ok "Image-processing libraries up to date" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="2.2.3" RELEASE="2.2.2"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop immich-web systemctl stop immich-web

View File

@@ -1,60 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL 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://infisical.com/
APP="Infisical"
var_tags="${var_tags:-auth}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /etc/infisical ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping service"
$STD infisical-ctl stop
msg_ok "Service stopped"
msg_info "Creating backup"
DB_PASS=$(grep -Po '(?<=^Database Password:\s).*' ~/infisical.creds | head -n1)
PGPASSWORD=$DB_PASS pg_dump -U infisical -h localhost -d infisical_db > /opt/infisical_backup.sql
msg_ok "Created backup"
msg_info "Updating Infisical"
$STD apt update
$STD apt install -y infisical-core
$STD infisical-ctl reconfigure
msg_ok "Updated Infisical"
msg_info "Starting service"
infisical-ctl start
msg_ok "Started service"
msg_ok "Updated successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

View File

@@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
APP="jotty" APP="jotty"
var_tags="${var_tags:-tasks;notes}" var_tags="${var_tags:-tasks;notes}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-3072}"
var_disk="${var_disk:-6}" var_disk="${var_disk:-6}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-13}" var_version="${var_version:-13}"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: dkuku # Author: dkuku
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE

View File

@@ -28,12 +28,6 @@ function update_script() {
exit exit
fi fi
if [[ $(grep -E '^VERSION_ID=' /etc/os-release) == *"12"* ]]; then
msg_error "Wrong Debian version detected!"
msg_error "Please create a snapshot first. You must upgrade your LXC to Debian Trixie before updating. Visit: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
exit
fi
if command -v node &>/dev/null; then if command -v node &>/dev/null; then
CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1) CURRENT_NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then if [[ "$CURRENT_NODE_VERSION" != "22" ]]; then
@@ -150,7 +144,7 @@ EOF
cd /app cd /app
$STD yarn install --network-timeout 600000 $STD yarn install --network-timeout 600000
msg_ok "Initialized Backend" msg_ok "Initialized Backend"
msg_info "Updating Certbot" msg_info "Updating Certbot"
[ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg [ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
[ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list [ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list

View File

@@ -21,52 +21,52 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /opt/pangolin ]]; then if [[ ! -d /opt/pangolin ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "pangolin" "fosrl/pangolin"; then
msg_info "Stopping Service"
systemctl stop pangolin
systemctl stop gerbil
msg_info "Service stopped"
msg_info "Creating backup"
tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
msg_ok "Created backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
msg_info "Updating Pangolin"
cd /opt/pangolin
$STD npm ci
$STD npm run set:sqlite
$STD npm run set:oss
rm -rf server/private
$STD npm run build:sqlite
$STD npm run build:cli
cp -R .next/standalone ./
chmod +x ./dist/cli.mjs
cp server/db/names.json ./dist/names.json
msg_ok "Updated Pangolin"
msg_info "Restoring config"
tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
rm -f /opt/pangolin_config_backup.tar.gz
msg_ok "Restored config"
msg_info "Starting Services"
systemctl start pangolin
systemctl start gerbil
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit exit
fi
if check_for_gh_release "pangolin" "fosrl/pangolin"; then
msg_info "Stopping Service"
systemctl stop pangolin
systemctl stop gerbil
msg_info "Service stopped"
msg_info "Creating backup"
tar -czf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin config
msg_ok "Created backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
msg_info "Updating Pangolin"
cd /opt/pangolin
$STD npm ci
$STD npm run set:sqlite
$STD npm run set:oss
rm -rf server/private
$STD npm run build:sqlite
$STD npm run build:cli
cp -R .next/standalone ./
chmod +x ./dist/cli.mjs
cp server/db/names.json ./dist/names.json
msg_ok "Updated Pangolin"
msg_info "Restoring config"
tar -xzf /opt/pangolin_config_backup.tar.gz -C /opt/pangolin --overwrite
rm -f /opt/pangolin_config_backup.tar.gz
msg_ok "Restored config"
msg_info "Starting Services"
systemctl start pangolin
systemctl start gerbil
msg_ok "Started Services"
msg_ok "Updated successfully!"
fi
exit
} }
start start
@@ -76,4 +76,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}https://<YOUR_PANGOLIN_URL>${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3002${CL}"

View File

@@ -39,7 +39,6 @@ function update_script() {
msg_ok "Backup created" msg_ok "Backup created"
msg_info "Installing sonarqube" msg_info "Installing sonarqube"
temp_file=$(mktemp)
RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') RELEASE=$(curl -fsSL https://api.github.com/repos/SonarSource/sonarqube/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file curl -fsSL "https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-${RELEASE}.zip" -o $temp_file
unzip -q "$temp_file" -d /opt unzip -q "$temp_file" -d /opt

View File

@@ -1,44 +1,44 @@
{ {
"name": "Graylog", "name": "Graylog",
"slug": "graylog", "slug": "graylog",
"categories": [ "categories": [
9 9
], ],
"date_created": "2025-02-12", "date_created": "2025-02-12",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 9000, "interface_port": 9000,
"documentation": "https://go2docs.graylog.org/current/home.htm", "documentation": "https://go2docs.graylog.org/current/home.htm",
"website": "https://graylog.org/", "website": "https://graylog.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/graylog.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/graylog.webp",
"config_path": "/etc/graylog/server/server.conf", "config_path": "/etc/graylog/server/server.conf",
"description": "Graylog is an open-source log management and analysis platform that centralizes and processes log data from various sources, enabling real-time search, analysis, and alerting for IT infrastructure monitoring and troubleshooting.", "description": "Graylog is an open-source log management and analysis platform that centralizes and processes log data from various sources, enabling real-time search, analysis, and alerting for IT infrastructure monitoring and troubleshooting.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/graylog.sh", "script": "ct/graylog.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 8192, "ram": 8192,
"hdd": 30, "hdd": 30,
"os": "debian", "os": "debian",
"version": "13" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": 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"
}, },
{ "notes": [
"text": "Type `cat ~/graylog.creds` to get admin password that you use to log in AFTER the Initial Setup", {
"type": "info" "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"
}
]
} }

View File

@@ -1,35 +0,0 @@
{
"name": "Infisical",
"slug": "infisical",
"categories": [
6
],
"date_created": "2025-11-07",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://infisical.com/docs/documentation/getting-started/overview",
"config_path": "/etc/infisical/infisical.rb",
"website": "https://infisical.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/infisical.webp",
"description": "Secrets, certificates, and access management on autopilot. All-in-one platform to securely manage application secrets, certificates, SSH keys, and configurations across your team and infrastructure.",
"install_methods": [
{
"type": "default",
"script": "ct/infisical.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -20,7 +20,7 @@
"script": "ct/jotty.sh", "script": "ct/jotty.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 4096, "ram": 3072,
"hdd": 6, "hdd": 6,
"os": "debian", "os": "debian",
"version": "13" "version": "13"

View File

@@ -20,8 +20,8 @@
"script": "ct/nginxproxymanager.sh", "script": "ct/nginxproxymanager.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 1024,
"hdd": 8, "hdd": 4,
"os": "debian", "os": "debian",
"version": "13" "version": "13"
} }
@@ -33,8 +33,12 @@
}, },
"notes": [ "notes": [
{ {
"text": "You can install the specific one certbot you prefer, or you can Running /app/scripts/install-certbot-plugins within the Nginx Proxy Manager (NPM) LXC shell will install many common plugins. Important: This script does not install all Certbot plugins, as some require additional, external system dependencies (like specific packages for certain DNS providers). These external dependencies must be manually installed within the LXC container before you can successfully install and use the corresponding Certbot plugin. Consult the plugin's documentation for required packages.", "text": "Since there are hundreds of Certbot instances, it's necessary to install the specific Certbot of your preference. Running `/app/scripts/install-certbot-plugins` within the nginxproxymanager LXC shell will install many additional plugins.",
"type": "info" "type": "warning"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
} }
] ]
} }

View File

@@ -8,7 +8,7 @@
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 443, "interface_port": 3002,
"documentation": "https://docs.pangolin.net/", "documentation": "https://docs.pangolin.net/",
"config_path": "/opt/pangolin/config/config.yml", "config_path": "/opt/pangolin/config/config.yml",
"website": "https://pangolin.net/", "website": "https://pangolin.net/",

View File

@@ -1,244 +1,14 @@
[ [
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-core@16.0.8",
"date": "2025-11-07T11:23:47Z"
},
{
"name": "element-hq/synapse",
"version": "v1.142.0rc4",
"date": "2025-11-07T11:19:40Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.3",
"date": "2025-11-07T11:07:17Z"
},
{
"name": "cloudflare/cloudflared",
"version": "2025.11.0",
"date": "2025-11-07T10:19:35Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.16.0",
"date": "2025-11-07T09:42:01Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w45-4.14.1",
"date": "2025-11-05T16:56:57Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.4",
"date": "2025-11-07T08:55:27Z"
},
{
"name": "mattermost/mattermost",
"version": "v10.11.6",
"date": "2025-11-04T09:43:16Z"
},
{
"name": "umami-software/umami",
"version": "v3.0.0",
"date": "2025-11-07T06:13:49Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.255",
"date": "2025-11-07T05:55:20Z"
},
{
"name": "documenso/documenso",
"version": "v2.0.0",
"date": "2025-11-07T04:44:34Z"
},
{
"name": "OliveTin/OliveTin",
"version": "3000.3.2",
"date": "2025-11-07T01:05:59Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-07T00:27:13Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.10",
"date": "2025-11-06T23:10:38Z"
},
{
"name": "Ombi-app/Ombi",
"version": "v4.52.0",
"date": "2025-11-06T22:39:26Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.26.4",
"date": "2025-11-06T22:38:52Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.36",
"date": "2025-11-06T21:45:33Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.5",
"date": "2025-11-06T20:20:13Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.22.12",
"date": "2025-11-06T18:43:51Z"
},
{
"name": "MariaDB/server",
"version": "mariadb-11.8.4",
"date": "2025-11-06T17:24:30Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.85.1",
"date": "2025-10-31T10:45:26Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.41.6",
"date": "2025-11-06T15:32:07Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v1.15.0",
"date": "2025-11-06T15:03:22Z"
},
{
"name": "wizarrrr/wizarr",
"version": "v2025.11.2",
"date": "2025-11-06T12:08:24Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.24.0.s3-snapshots-5",
"date": "2025-11-06T11:43:12Z"
},
{
"name": "transmission/transmission",
"version": "4.0.1-beta.1",
"date": "2024-12-13T00:16:24Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.17.0-beta20",
"date": "2025-11-06T10:49:56Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.100.1",
"date": "2025-11-06T07:53:11Z"
},
{
"name": "apache/tomcat",
"version": "9.0.112",
"date": "2025-11-06T07:49:59Z"
},
{
"name": "Kozea/Radicale",
"version": "v3.5.8",
"date": "2025-11-06T05:32:51Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.4",
"date": "2025-11-01T19:48:08Z"
},
{
"name": "apache/couchdb",
"version": "3.5.1-RC1",
"date": "2025-11-06T03:23:20Z"
},
{
"name": "Notifiarr/notifiarr",
"version": "v0.9.1",
"date": "2025-11-06T02:26:53Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.10",
"date": "2025-11-05T21:41:21Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.16",
"date": "2025-11-05T20:41:40Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.79.1.dev6",
"date": "2025-11-05T19:25:05Z"
},
{
"name": "home-assistant/core",
"version": "2025.11.0",
"date": "2025-11-05T19:23:12Z"
},
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-11-05",
"date": "2025-11-05T18:08:26Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.118.2",
"date": "2025-11-05T18:07:04Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.5",
"date": "2025-10-06T15:25:17Z"
},
{
"name": "javedh-dev/tracktor",
"version": "0.5.1",
"date": "2025-11-05T15:51:02Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.4",
"date": "2025-11-05T15:57:00Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.2.9",
"date": "2025-11-05T13:55:39Z"
},
{
"name": "immich-app/immich",
"version": "v2.2.3",
"date": "2025-11-05T13:47:03Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.2.0.100-2.2.0.100_canary_2025-11-05",
"date": "2025-11-05T13:01:37Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{ {
"name": "getumbrel/umbrel", "name": "getumbrel/umbrel",
"version": "1.5.0", "version": "1.5.0",
"date": "2025-11-05T11:10:20Z" "date": "2025-11-05T11:10:20Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.10.4",
"date": "2025-10-24T20:03:03Z"
},
{ {
"name": "emqx/emqx", "name": "emqx/emqx",
"version": "e5.10.2-alpha.1", "version": "e5.10.2-alpha.1",
@@ -249,6 +19,11 @@
"version": "11.0.2", "version": "11.0.2",
"date": "2025-11-05T09:55:05Z" "date": "2025-11-05T09:55:05Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.6.3",
"date": "2025-11-05T09:16:08Z"
},
{ {
"name": "nicolargo/glances", "name": "nicolargo/glances",
"version": "v4.4.1", "version": "v4.4.1",
@@ -259,11 +34,21 @@
"version": "0.209.7", "version": "0.209.7",
"date": "2025-11-05T08:32:08Z" "date": "2025-11-05T08:32:08Z"
}, },
{
"name": "SigNoz/signoz",
"version": "v0.100.0",
"date": "2025-11-05T06:38:34Z"
},
{ {
"name": "NginxProxyManager/nginx-proxy-manager", "name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.13.1", "version": "v2.13.1",
"date": "2025-11-05T06:06:08Z" "date": "2025-11-05T06:06:08Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.24.250",
"date": "2025-11-05T05:55:30Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.535", "version": "jenkins-2.535",
@@ -279,6 +64,16 @@
"version": "v4.0.16.2944", "version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z" "date": "2025-11-05T01:56:48Z"
}, },
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-05T00:27:06Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{ {
"name": "gethomepage/homepage", "name": "gethomepage/homepage",
"version": "v1.6.1", "version": "v1.6.1",
@@ -294,6 +89,16 @@
"version": "v0.15.4", "version": "v0.15.4",
"date": "2025-11-04T22:34:12Z" "date": "2025-11-04T22:34:12Z"
}, },
{
"name": "chrisbenincasa/tunarr",
"version": "v0.23.0-alpha.21",
"date": "2025-11-04T22:05:17Z"
},
{
"name": "wizarrrr/wizarr",
"version": "v2025.11.1",
"date": "2025-11-04T20:55:51Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.25.1", "version": "v1.25.1",
@@ -301,8 +106,18 @@
}, },
{ {
"name": "runtipi/runtipi", "name": "runtipi/runtipi",
"version": "nightly", "version": "v4.6.2",
"date": "2025-11-04T19:16:17Z" "date": "2025-11-03T19:45:24Z"
},
{
"name": "element-hq/synapse",
"version": "v1.142.0rc2",
"date": "2025-11-04T16:22:11Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.17",
"date": "2025-11-03T15:30:01Z"
}, },
{ {
"name": "jhuckaby/Cronicle", "name": "jhuckaby/Cronicle",
@@ -314,6 +129,11 @@
"version": "v1.30.6", "version": "v1.30.6",
"date": "2025-11-04T17:41:01Z" "date": "2025-11-04T17:41:01Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.24.0-s3-snapshots-4",
"date": "2025-11-04T16:46:01Z"
},
{ {
"name": "VictoriaMetrics/VictoriaMetrics", "name": "VictoriaMetrics/VictoriaMetrics",
"version": "v1.129.1", "version": "v1.129.1",
@@ -339,6 +159,11 @@
"version": "16.3", "version": "16.3",
"date": "2025-11-04T12:28:47Z" "date": "2025-11-04T12:28:47Z"
}, },
{
"name": "mattermost/mattermost",
"version": "v10.11.6",
"date": "2025-11-04T09:43:16Z"
},
{ {
"name": "syncthing/syncthing", "name": "syncthing/syncthing",
"version": "v2.0.11", "version": "v2.0.11",
@@ -354,11 +179,26 @@
"version": "v3.0.9", "version": "v3.0.9",
"date": "2025-11-04T07:28:45Z" "date": "2025-11-04T07:28:45Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.4",
"date": "2025-11-01T19:48:08Z"
},
{
"name": "immich-app/immich",
"version": "v2.2.3",
"date": "2025-11-04T03:14:34Z"
},
{ {
"name": "esphome/esphome", "name": "esphome/esphome",
"version": "2025.10.4", "version": "2025.10.4",
"date": "2025-11-04T03:04:13Z" "date": "2025-11-04T03:04:13Z"
}, },
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.4",
"date": "2025-11-04T01:34:35Z"
},
{ {
"name": "hyperion-project/hyperion.ng", "name": "hyperion-project/hyperion.ng",
"version": "2.1.1", "version": "2.1.1",
@@ -374,11 +214,26 @@
"version": "1.1.2", "version": "1.1.2",
"date": "2025-11-03T23:16:29Z" "date": "2025-11-03T23:16:29Z"
}, },
{
"name": "BerriAI/litellm",
"version": "v1.79.1.rc.2",
"date": "2025-11-03T23:14:45Z"
},
{ {
"name": "gtsteffaniak/filebrowser", "name": "gtsteffaniak/filebrowser",
"version": "v1.0.0-stable", "version": "v1.0.0-stable",
"date": "2025-11-03T22:24:23Z" "date": "2025-11-03T22:24:23Z"
}, },
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.37",
"date": "2025-10-30T07:54:49Z"
},
{ {
"name": "jupyter/notebook", "name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.5.0-rc.0", "version": "@jupyter-notebook/ui-components@7.5.0-rc.0",
@@ -389,6 +244,11 @@
"version": "0.50.39", "version": "0.50.39",
"date": "2025-11-03T17:58:41Z" "date": "2025-11-03T17:58:41Z"
}, },
{
"name": "cloudflare/cloudflared",
"version": "2025.10.1-3-g52809511",
"date": "2025-11-03T17:13:35Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.10.1", "version": "version/2025.10.1",
@@ -404,11 +264,31 @@
"version": "debian/12.1.34", "version": "debian/12.1.34",
"date": "2025-11-03T16:42:07Z" "date": "2025-11-03T16:42:07Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.117.3",
"date": "2025-10-28T12:00:42Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "7.0.0",
"date": "2025-11-03T12:22:00Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.2",
"date": "2025-11-03T11:52:53Z"
},
{ {
"name": "silverbulletmd/silverbullet", "name": "silverbulletmd/silverbullet",
"version": "2.2.1", "version": "2.2.1",
"date": "2025-11-03T06:57:15Z" "date": "2025-11-03T06:57:15Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@13.0.5",
"date": "2025-11-03T06:55:11Z"
},
{ {
"name": "jellyfin/jellyfin", "name": "jellyfin/jellyfin",
"version": "v10.11.2", "version": "v10.11.2",
@@ -454,6 +334,11 @@
"version": "3.3.6", "version": "3.3.6",
"date": "2025-11-01T10:41:15Z" "date": "2025-11-01T10:41:15Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.12.9",
"date": "2025-10-31T23:33:13Z"
},
{ {
"name": "tailscale/tailscale", "name": "tailscale/tailscale",
"version": "v1.90.6", "version": "v1.90.6",
@@ -469,11 +354,21 @@
"version": "v3.4.0", "version": "v3.4.0",
"date": "2025-10-31T18:50:18Z" "date": "2025-10-31T18:50:18Z"
}, },
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-10-31",
"date": "2025-10-31T17:57:06Z"
},
{ {
"name": "pommee/goaway", "name": "pommee/goaway",
"version": "v0.62.12", "version": "v0.62.12",
"date": "2025-10-31T17:30:55Z" "date": "2025-10-31T17:30:55Z"
}, },
{
"name": "bunkerity/bunkerweb",
"version": "testing",
"date": "2025-10-30T14:33:36Z"
},
{ {
"name": "zabbix/zabbix", "name": "zabbix/zabbix",
"version": "7.4.5", "version": "7.4.5",
@@ -489,6 +384,16 @@
"version": "planka-1.1.1", "version": "planka-1.1.1",
"date": "2025-10-31T12:38:47Z" "date": "2025-10-31T12:38:47Z"
}, },
{
"name": "chrisvel/tududi",
"version": "v0.85.1",
"date": "2025-10-31T10:45:26Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w44-4.14.1",
"date": "2025-10-29T11:28:37Z"
},
{ {
"name": "garethgeorge/backrest", "name": "garethgeorge/backrest",
"version": "v1.10.1", "version": "v1.10.1",
@@ -514,6 +419,11 @@
"version": "v5.30.0", "version": "v5.30.0",
"date": "2025-10-30T16:52:58Z" "date": "2025-10-30T16:52:58Z"
}, },
{
"name": "OliveTin/OliveTin",
"version": "2025.10.30",
"date": "2025-10-30T16:22:45Z"
},
{ {
"name": "AdguardTeam/AdGuardHome", "name": "AdguardTeam/AdGuardHome",
"version": "v0.107.69", "version": "v0.107.69",
@@ -529,6 +439,11 @@
"version": "v5.4", "version": "v5.4",
"date": "2025-10-30T14:25:23Z" "date": "2025-10-30T14:25:23Z"
}, },
{
"name": "neo4j/neo4j",
"version": "5.26.15",
"date": "2025-10-30T11:17:14Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v2.40.3", "version": "v2.40.3",
@@ -544,6 +459,11 @@
"version": "v1.5.3", "version": "v1.5.3",
"date": "2025-09-20T12:12:33Z" "date": "2025-09-20T12:12:33Z"
}, },
{
"name": "documenso/documenso",
"version": "v1.13.2",
"date": "2025-10-30T04:12:40Z"
},
{ {
"name": "ipfs/kubo", "name": "ipfs/kubo",
"version": "v0.38.2", "version": "v0.38.2",
@@ -579,11 +499,21 @@
"version": "350", "version": "350",
"date": "2025-10-29T09:51:00Z" "date": "2025-10-29T09:51:00Z"
}, },
{
"name": "pocket-id/pocket-id",
"version": "v1.14.2",
"date": "2025-10-29T08:37:03Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-5.0.6", "version": "cassandra-5.0.6",
"date": "2025-10-29T07:40:47Z" "date": "2025-10-29T07:40:47Z"
}, },
{
"name": "openobserve/openobserve",
"version": "v0.15.3",
"date": "2025-10-29T05:15:45Z"
},
{ {
"name": "outline/outline", "name": "outline/outline",
"version": "v1.0.1", "version": "v1.0.1",
@@ -604,6 +534,11 @@
"version": "v4.4.5", "version": "v4.4.5",
"date": "2025-10-28T18:35:47Z" "date": "2025-10-28T18:35:47Z"
}, },
{
"name": "javedh-dev/tracktor",
"version": "0.4.4",
"date": "2025-10-28T17:39:14Z"
},
{ {
"name": "pi-hole/pi-hole", "name": "pi-hole/pi-hole",
"version": "v6.2.2", "version": "v6.2.2",
@@ -699,11 +634,26 @@
"version": "v2.7.0", "version": "v2.7.0",
"date": "2025-10-23T17:15:07Z" "date": "2025-10-23T17:15:07Z"
}, },
{
"name": "HabitRPG/habitica",
"version": "v5.41.5",
"date": "2025-10-23T15:12:42Z"
},
{ {
"name": "Kareadita/Kavita", "name": "Kareadita/Kavita",
"version": "v0.8.8.3", "version": "v0.8.8.3",
"date": "2025-10-23T12:31:49Z" "date": "2025-10-23T12:31:49Z"
}, },
{
"name": "duplicati/duplicati",
"version": "v2.2.0.0_stable_2025-10-23",
"date": "2025-10-23T11:48:25Z"
},
{
"name": "rcourtman/Pulse",
"version": "issue-596",
"date": "2025-10-22T19:48:56Z"
},
{ {
"name": "louislam/uptime-kuma", "name": "louislam/uptime-kuma",
"version": "2.0.2", "version": "2.0.2",
@@ -784,6 +734,11 @@
"version": "v2.1.10", "version": "v2.1.10",
"date": "2025-10-18T18:46:36Z" "date": "2025-10-18T18:46:36Z"
}, },
{
"name": "Notifiarr/notifiarr",
"version": "v0.9.0",
"date": "2025-10-18T17:03:56Z"
},
{ {
"name": "TasmoAdmin/TasmoAdmin", "name": "TasmoAdmin/TasmoAdmin",
"version": "v4.3.2", "version": "v4.3.2",
@@ -819,11 +774,21 @@
"version": "RELEASE.2025-10-15T17-29-55Z", "version": "RELEASE.2025-10-15T17-29-55Z",
"date": "2025-10-16T19:33:51Z" "date": "2025-10-16T19:33:51Z"
}, },
{
"name": "open-webui/open-webui",
"version": "v0.6.34",
"date": "2025-10-16T16:55:58Z"
},
{ {
"name": "cloudreve/cloudreve", "name": "cloudreve/cloudreve",
"version": "4.9.2", "version": "4.9.2",
"date": "2025-10-16T03:24:44Z" "date": "2025-10-16T03:24:44Z"
}, },
{
"name": "Ombi-app/Ombi",
"version": "v4.47.1",
"date": "2025-01-05T21:14:23Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"version": "v2.13.1", "version": "v2.13.1",
@@ -899,6 +864,11 @@
"version": "v1.17.1", "version": "v1.17.1",
"date": "2025-10-10T16:12:41Z" "date": "2025-10-10T16:12:41Z"
}, },
{
"name": "apache/tomcat",
"version": "10.1.48",
"date": "2025-10-10T14:46:53Z"
},
{ {
"name": "projectsend/projectsend", "name": "projectsend/projectsend",
"version": "r1945", "version": "r1945",
@@ -914,6 +884,11 @@
"version": "v2.30.0", "version": "v2.30.0",
"date": "2025-10-08T16:03:49Z" "date": "2025-10-08T16:03:49Z"
}, },
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.8",
"date": "2025-10-08T12:19:18Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.23.5", "version": "1.23.5",
@@ -959,6 +934,11 @@
"version": "2.520", "version": "2.520",
"date": "2025-10-05T00:51:34Z" "date": "2025-10-05T00:51:34Z"
}, },
{
"name": "Kozea/Radicale",
"version": "v3.5.7.pypi",
"date": "2025-10-01T05:32:27Z"
},
{ {
"name": "WordPress/WordPress", "name": "WordPress/WordPress",
"version": "4.7.31", "version": "4.7.31",
@@ -1214,6 +1194,11 @@
"version": "1012-08-09", "version": "1012-08-09",
"date": "2025-08-10T13:50:58Z" "date": "2025-08-10T13:50:58Z"
}, },
{
"name": "MariaDB/server",
"version": "mariadb-12.0.2",
"date": "2025-08-07T21:23:15Z"
},
{ {
"name": "TryGhost/Ghost-CLI", "name": "TryGhost/Ghost-CLI",
"version": "v1.28.3", "version": "v1.28.3",
@@ -1249,6 +1234,11 @@
"version": "v0.58.0", "version": "v0.58.0",
"date": "2025-07-28T18:59:50Z" "date": "2025-07-28T18:59:50Z"
}, },
{
"name": "umami-software/umami",
"version": "v2.19.0",
"date": "2025-07-27T22:25:00Z"
},
{ {
"name": "PCJones/UmlautAdaptarr", "name": "PCJones/UmlautAdaptarr",
"version": "v0.7.3", "version": "v0.7.3",
@@ -1349,6 +1339,11 @@
"version": "2025-05-07-r1", "version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z" "date": "2025-05-07T12:18:42Z"
}, },
{
"name": "apache/couchdb",
"version": "3.5.0",
"date": "2025-05-05T16:28:24Z"
},
{ {
"name": "TechnitiumSoftware/DnsServer", "name": "TechnitiumSoftware/DnsServer",
"version": "v13.6.0", "version": "v13.6.0",
@@ -1419,6 +1414,11 @@
"version": "v0.22.1", "version": "v0.22.1",
"date": "2025-03-18T21:01:22Z" "date": "2025-03-18T21:01:22Z"
}, },
{
"name": "transmission/transmission",
"version": "4.0.1-beta.1",
"date": "2024-12-13T00:16:24Z"
},
{ {
"name": "excalidraw/excalidraw", "name": "excalidraw/excalidraw",
"version": "v0.18.0", "version": "v0.18.0",

View File

@@ -32,7 +32,7 @@ $STD apt install -y google-chrome-stable
rm /etc/apt/sources.list.d/google-chrome.list rm /etc/apt/sources.list.d/google-chrome.list
msg_ok "Installed Chrome" msg_ok "Installed Chrome"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.4.3" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz" fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/flaresolverr.service cat <<EOF >/etc/systemd/system/flaresolverr.service

View File

@@ -60,10 +60,11 @@ $STD npm ci
$STD npm run build:production $STD npm run build:production
msg_ok "Built Ghostfolio" msg_ok "Built Ghostfolio"
echo -e "" msg_ok "Optional CoinGecko API Configuration"
msg_custom "🪙" "$YW" "CoinGecko API keys are optional but provide better cryptocurrency data." echo
msg_custom "🪙" "$YW" "You can skip this and add them later by editing /opt/ghostfolio/.env" echo -e "${YW}CoinGecko API keys are optional but provide better cryptocurrency data.${CL}"
echo -e "" echo -e "${YW}You can skip this and add them later by editing /opt/ghostfolio/.env${CL}"
echo
read -rp "${TAB3}CoinGecko Demo API key (press Enter to skip): " COINGECKO_DEMO_KEY read -rp "${TAB3}CoinGecko Demo API key (press Enter to skip): " COINGECKO_DEMO_KEY
read -rp "${TAB3}CoinGecko Pro API key (press Enter to skip): " COINGECKO_PRO_KEY read -rp "${TAB3}CoinGecko Pro API key (press Enter to skip): " COINGECKO_PRO_KEY

View File

@@ -13,12 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
MONGO_VERSION="8.0" setup_mongodb MONGO_VERSION="7.0" setup_mongodb
msg_info "Setup Graylog Data Node" msg_info "Setup Graylog Data Node"
PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16) PASSWORD_SECRET=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb" -o "graylog-7.0-repository_latest.deb" curl -fsSL "https://packages.graylog2.org/repo/packages/graylog-6.3-repository_latest.deb" -o "graylog-6.3-repository_latest.deb"
$STD dpkg -i graylog-7.0-repository_latest.deb $STD dpkg -i graylog-6.3-repository_latest.deb
$STD apt-get update $STD apt-get update
$STD apt-get install graylog-datanode -y $STD apt-get install graylog-datanode -y
sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf sed -i "s/password_secret =/password_secret = $PASSWORD_SECRET/g" /etc/graylog/datanode/datanode.conf
@@ -42,4 +42,9 @@ msg_ok "Setup ${APPLICATION}"
motd_ssh motd_ssh
customize customize
cleanup_lxc
msg_info "Cleaning up"
rm -f graylog-*-repository_latest.deb
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -288,7 +288,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache} mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.3" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.2.2" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (patience)" msg_info "Installing ${APPLICATION} (patience)"

View File

@@ -1,68 +0,0 @@
#!/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://infisical.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
apt-transport-https \
ca-certificates \
redis
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
msg_info "Setting up Infisical Repository"
setup_deb822_repo \
"infisical" \
"https://artifacts-infisical-core.infisical.com/infisical.gpg" \
"https://artifacts-infisical-core.infisical.com/deb" \
"stable"
msg_ok "Setup Infisical repository"
msg_info "Configuring PostgreSQL"
DB_NAME="infisical_db"
DB_USER="infisical"
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 "Infiscal Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/infisical.creds
msg_ok "Configured PostgreSQL"
msg_info "Setting up Infisical"
AUTH_SECRET="$(openssl rand -base64 32 | tr -d '\n')"
ENC_KEY="$(openssl rand -hex 16 | tr -d '\n')"
IP_ADDR=$(hostname -I | awk '{print $1}')
$STD apt install -y infisical-core
mkdir -p /etc/infisical
cat <<EOF >/etc/infisical/infisical.rb
infisical_core['ENCRYPTION_KEY'] = '$ENC_KEY'
infisical_core['AUTH_SECRET'] = '$AUTH_SECRET'
infisical_core['HOST'] = '$IP_ADDR'
infisical_core['DB_CONNECTION_URI'] = 'postgres://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}'
infisical_core['REDIS_URL'] = 'redis://localhost:6379'
EOF
$STD infisical-ctl reconfigure
msg_ok "Setup Infisical"
motd_ssh
customize
cleanup_lxc

View File

@@ -40,7 +40,7 @@ NODE_ENV=production
# OIDC_ISSUER=<your-oidc-issuer-url> # OIDC_ISSUER=<your-oidc-issuer-url>
# OIDC_CLIENT_ID=<oidc-client-id> # OIDC_CLIENT_ID=<oidc-client-id>
# APP_URL=<https://app.domain.tld> # APP_URL=<https://app.domain.tld>
# SSO_FALLBACK_LOCAL=yes # Allow both SSO and normal login # SSO_FALLBACK_LOCAL=true # Allow both SSO and normal login
# OIDC_CLIENT_SECRET=your_client_secret # Enable confidential client mode with client authentication # OIDC_CLIENT_SECRET=your_client_secret # Enable confidential client mode with client authentication
# OIDC_ADMIN_GROUPS=admins # Map provider groups to admin role # OIDC_ADMIN_GROUPS=admins # Map provider groups to admin role
EOF EOF

View File

@@ -15,12 +15,25 @@ update_os
read -p "${TAB3}Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8 read -p "${TAB3}Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8
if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then
MONGO_VERSION="8.0" setup_mongodb MONGODB_VERSION="8.0"
else else
MONGO_VERSION="7.0" setup_mongodb MONGODB_VERSION="7.0"
fi fi
msg_info "Installing MongoDB $MONGODB_VERSION"
curl -fsSL "https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc" | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
cat <<EOF >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.sources
Types: deb
URIs: http://repo.mongodb.org/apt/debian
Suites: $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION}
Components: main
Signed-By: /usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg
EOF
$STD apt update
$STD apt install -y mongodb-org
sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf
msg_ok "Installed MongoDB $MONGO_VERSION" systemctl enable -q --now mongod
msg_ok "Installed MongoDB $MONGODB_VERSION"
motd_ssh motd_ssh
customize customize

View File

@@ -66,6 +66,7 @@ server/hostname ${IP_ADDR}
server/server_path_prefix /openproject server/server_path_prefix /openproject
server/ssl no server/ssl no
server/variant apache2 server/variant apache2
server/server_path_prefix
repositories/api-key ${API_KEY} repositories/api-key ${API_KEY}
repositories/svn-install skip repositories/svn-install skip
repositories/git-install install repositories/git-install install

View File

@@ -22,16 +22,11 @@ msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball" fetch_and_deploy_gh_release "pangolin" "fosrl/pangolin" "tarball"
fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64" fetch_and_deploy_gh_release "gerbil" "fosrl/gerbil" "singlefile" "latest" "/usr/bin" "gerbil_linux_amd64"
fetch_and_deploy_gh_release "traefik" "traefik/traefik" "prebuild" "latest" "/usr/bin" "traefik_v*_linux_amd64.tar.gz"
read -rp "${TAB3}Enter your Pangolin URL (ex: https://pangolin.example.com): " pango_url
read -rp "${TAB3}Enter your email address: " pango_email
msg_info "Setup Pangolin" msg_info "Setup Pangolin"
IP_ADDR=$(hostname -I | awk '{print $1}') IP_ADDR=$(hostname -I | awk '{print $1}')
SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32) SECRET_KEY=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c 32)
cd /opt/pangolin cd /opt/pangolin
mkdir -p /opt/pangolin/config/{traefik,db,letsencrypt,logs}
$STD npm ci $STD npm ci
$STD npm run set:sqlite $STD npm run set:sqlite
$STD npm run set:oss $STD npm run set:oss
@@ -51,129 +46,30 @@ mkdir -p /var/config
cat <<EOF >/opt/pangolin/config/config.yml cat <<EOF >/opt/pangolin/config/config.yml
app: app:
dashboard_url: "$pango_url" dashboard_url: http://$IP_ADDR:3002
log_level: debug
domains: domains:
domain1: domain1:
base_domain: "$pango_url" base_domain: example.com
cert_resolver: "letsencrypt"
server: server:
secret: "$SECRET_KEY" secret: $SECRET_KEY
gerbil: gerbil:
base_endpoint: "$pango_url" base_endpoint: example.com
orgs:
block_size: 24
subnet_group: 100.90.137.0/20
flags: flags:
require_email_verification: false require_email_verification: false
disable_signup_without_invite: false disable_signup_without_invite: true
disable_user_create_org: false disable_user_create_org: true
EOF allow_raw_resources: true
enable_integration_api: true
cat <<EOF >/opt/pangolin/config/traefik/traefik_config.yml enable_clients: true
api:
insecure: true
dashboard: true
providers:
http:
endpoint: "http://$IP_ADDR:3001/api/v1/traefik-config"
pollInterval: "5s"
file:
filename: "/opt/pangolin/config/traefik/dynamic_config.yml"
experimental:
plugins:
badger:
moduleName: "github.com/fosrl/badger"
version: "v1.2.0"
log:
level: "INFO"
format: "common"
certificatesResolvers:
letsencrypt:
acme:
httpChallenge:
entryPoint: web
email: $pango_email
storage: "/opt/pangolin/config/letsencrypt/acme.json"
caServer: "https://acme-v02.api.letsencrypt.org/directory"
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
transport:
respondingTimeouts:
readTimeout: "30m"
http:
tls:
certResolver: "letsencrypt"
serversTransport:
insecureSkipVerify: true
ping:
entryPoint: "web"
EOF
cat <<EOF >/opt/pangolin/config/traefik/dynamic_config.yml
http:
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
routers:
# HTTP to HTTPS redirect router
main-app-router-redirect:
rule: "Host(\`$pango_url\`)"
service: next-service
entryPoints:
- web
middlewares:
- redirect-to-https
# Next.js router (handles everything except API and WebSocket paths)
next-router:
rule: "Host(\`$pango_url\`) && !PathPrefix(\`/api/v1\`)"
service: next-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
# API router (handles /api/v1 paths)
api-router:
rule: "Host(\`$pango_url\`) && PathPrefix(\`/api/v1\`)"
service: api-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
# WebSocket router
ws-router:
rule: "Host(\`$pango_url\`)"
service: api-service
entryPoints:
- websecure
tls:
certResolver: letsencrypt
services:
next-service:
loadBalancer:
servers:
- url: "http://$IP_ADDR:3002"
api-service:
loadBalancer:
servers:
- url: "http://$IP_ADDR:3000"
EOF EOF
$STD npm run db:sqlite:generate $STD npm run db:sqlite:generate
$STD npm run db:sqlite:push $STD npm run db:sqlite:push
@@ -226,21 +122,6 @@ RestartSec=10
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF
systemctl enable -q --now gerbil systemctl enable -q --now gerbil
cat <<'EOF' >/etc/systemd/system/traefik.service
[Unit]
Description=Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience
[Service]
Type=notify
ExecStart=/usr/bin/traefik --configFile=/opt/pangolin/config/traefik/traefik_config.yml
Restart=on-failure
ExecReload=/bin/kill -USR1 \$MAINPID
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now traefik
msg_ok "Created Services" msg_ok "Created Services"
motd_ssh motd_ssh

View File

@@ -427,12 +427,7 @@ manage_tool_repository() {
suite=$(get_fallback_suite "$distro_id" "$distro_codename" "$repo_url/$distro_id") suite=$(get_fallback_suite "$distro_id" "$distro_codename" "$repo_url/$distro_id")
# Setup new repository using deb822 format # Setup new repository using deb822 format
setup_deb822_repo \ setup_deb822_repo "mariadb" "$gpg_key_url" "$repo_url/$distro_id" "$suite" "main" "amd64 arm64" || return 1
"mariadb" \
"$gpg_key_url" \
"$repo_url/$distro_id" \
"$suite" \
"main"
return 0 return 0
;; ;;
@@ -455,51 +450,7 @@ manage_tool_repository() {
# Setup repository # Setup repository
local distro_codename local distro_codename
distro_codename=$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release) distro_codename=$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)
suite=$(get_fallback_suite "$distro_id" "$distro_codename" "$repo_url")
# Suite mapping with fallback for newer releases not yet supported by upstream
if [[ "$distro_id" == "debian" ]]; then
case "$distro_codename" in
trixie | forky | sid)
# Testing/unstable releases fallback to latest stable suite
suite="bookworm"
;;
bookworm)
suite="bookworm"
;;
bullseye)
suite="bullseye"
;;
*)
# Unknown release: fallback to latest stable suite
msg_warn "Unknown Debian release '${distro_codename}', using bookworm"
suite="bookworm"
;;
esac
elif [[ "$distro_id" == "ubuntu" ]]; then
case "$distro_codename" in
oracular | plucky)
# Newer releases fallback to latest LTS
suite="noble"
;;
noble)
suite="noble"
;;
jammy)
suite="jammy"
;;
focal)
suite="focal"
;;
*)
# Unknown release: fallback to latest LTS
msg_warn "Unknown Ubuntu release '${distro_codename}', using noble"
suite="noble"
;;
esac
else
# For other distros, try generic fallback
suite=$(get_fallback_suite "$distro_id" "$distro_codename" "$repo_url")
fi
repo_component="main" repo_component="main"
[[ "$distro_id" == "ubuntu" ]] && repo_component="multiverse" [[ "$distro_id" == "ubuntu" ]] && repo_component="multiverse"
@@ -509,7 +460,7 @@ Types: deb
URIs: ${repo_url} URIs: ${repo_url}
Suites: ${suite}/mongodb-org/${version} Suites: ${suite}/mongodb-org/${version}
Components: ${repo_component} Components: ${repo_component}
Architectures: $(dpkg --print-architecture) Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/mongodb-server-${version}.gpg Signed-By: /etc/apt/keyrings/mongodb-server-${version}.gpg
EOF EOF
return 0 return 0
@@ -541,7 +492,7 @@ Types: deb
URIs: $repo_url URIs: $repo_url
Suites: nodistro Suites: nodistro
Components: main Components: main
Architectures: $(dpkg --print-architecture) Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/nodesource.gpg Signed-By: /etc/apt/keyrings/nodesource.gpg
EOF EOF
return 0 return 0
@@ -575,7 +526,7 @@ Types: deb
URIs: https://packages.sury.org/php URIs: https://packages.sury.org/php
Suites: $distro_codename Suites: $distro_codename
Components: main Components: main
Architectures: $(dpkg --print-architecture) Architectures: amd64 arm64
Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg
EOF EOF
return 0 return 0
@@ -606,7 +557,7 @@ Types: deb
URIs: http://apt.postgresql.org/pub/repos/apt URIs: http://apt.postgresql.org/pub/repos/apt
Suites: $distro_codename-pgdg Suites: $distro_codename-pgdg
Components: main Components: main
Architectures: $(dpkg --print-architecture) Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/postgresql.gpg Signed-By: /etc/apt/keyrings/postgresql.gpg
EOF EOF
return 0 return 0
@@ -1207,7 +1158,7 @@ setup_deb822_repo() {
local repo_url="$3" local repo_url="$3"
local suite="$4" local suite="$4"
local component="${5:-main}" local component="${5:-main}"
local architectures="${6:-$(dpkg --print-architecture)}" local architectures="${6:-amd64 arm64}"
# Validate required parameters # Validate required parameters
if [[ -z "$name" || -z "$gpg_url" || -z "$repo_url" || -z "$suite" ]]; then if [[ -z "$name" || -z "$gpg_url" || -z "$repo_url" || -z "$suite" ]]; then
@@ -2785,7 +2736,8 @@ function setup_java() {
"https://packages.adoptium.net/artifactory/api/gpg/key/public" \ "https://packages.adoptium.net/artifactory/api/gpg/key/public" \
"https://packages.adoptium.net/artifactory/deb" \ "https://packages.adoptium.net/artifactory/deb" \
"$SUITE" \ "$SUITE" \
"main" "main" \
"amd64 arm64"
fi fi
# Get currently installed version # Get currently installed version
@@ -3237,12 +3189,12 @@ function setup_mysql() {
return 1 return 1
fi fi
cat >/etc/apt/sources.list.d/mysql.sources <<EOF cat >/etc/apt/sources.list.d/mysql.sources <<'EOF'
Types: deb Types: deb
URIs: https://repo.mysql.com/apt/debian/ URIs: https://repo.mysql.com/apt/debian/
Suites: bookworm Suites: bookworm
Components: mysql-8.4-lts Components: mysql-8.4-lts
Architectures: $(dpkg --print-architecture) Architectures: amd64 arm64
Signed-By: /etc/apt/keyrings/mysql.gpg Signed-By: /etc/apt/keyrings/mysql.gpg
EOF EOF
@@ -3750,7 +3702,8 @@ function setup_postgresql() {
"https://www.postgresql.org/media/keys/ACCC4CF8.asc" \ "https://www.postgresql.org/media/keys/ACCC4CF8.asc" \
"https://apt.postgresql.org/pub/repos/apt" \ "https://apt.postgresql.org/pub/repos/apt" \
"$SUITE" \ "$SUITE" \
"main" "main" \
"amd64 arm64"
if ! $STD apt update; then if ! $STD apt update; then
msg_error "APT update failed for PostgreSQL repository" msg_error "APT update failed for PostgreSQL repository"
@@ -4099,7 +4052,8 @@ function setup_clickhouse() {
"https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key" \ "https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key" \
"https://packages.clickhouse.com/deb" \ "https://packages.clickhouse.com/deb" \
"stable" \ "stable" \
"main" "main" \
"amd64 arm64"
# Install packages with retry logic # Install packages with retry logic
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive

View File

@@ -48,7 +48,7 @@ install_glances_debian() {
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
msg_info "Setting up Python + uv" msg_info "Setting up Python + uv"
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/tools.func)
setup_uv PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12"
msg_ok "Setup Python + uv" msg_ok "Setup Python + uv"
@@ -118,7 +118,7 @@ install_glances_alpine() {
msg_ok "Installed dependencies" msg_ok "Installed dependencies"
msg_info "Setting up Python + uv" msg_info "Setting up Python + uv"
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/tools.func)
setup_uv PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12"
msg_ok "Setup Python + uv" msg_ok "Setup Python + uv"

View File

@@ -10,7 +10,7 @@ if ! command -v curl >/dev/null 2>&1; then
apt-get update >/dev/null 2>&1 apt-get update >/dev/null 2>&1
apt-get install -y curl >/dev/null 2>&1 apt-get install -y curl >/dev/null 2>&1
fi fi
source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVE/raw/branch/main/misc/core.func) source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/core.func)
load_functions load_functions
set -euo pipefail set -euo pipefail