Compare commits

..

1 Commits

Author SHA1 Message Date
8c0319a42b Improve error handling and cleanup in shell functions
Refactored various shell functions to add more robust error handling by redirecting stderr to /dev/null and using '|| true' to prevent script failures. Enhanced npm cache cleanup to remove both _cacache and _logs directories, and improved reliability of version and keyring extraction commands. These changes increase script resilience and prevent unnecessary errors from halting execution.
2025-12-18 15:55:29 +01:00
26 changed files with 368 additions and 723 deletions

View File

@ -10,72 +10,15 @@
> [!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-12-20
## 2025-12-19
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update Reitti to Java 25 for 3.0.0 compatibility [@Copilot](https://github.com/Copilot) ([#10164](https://github.com/community-scripts/ProxmoxVE/pull/10164))
- Bump Bar-Assistant to php 8.4 [@MickLesk](https://github.com/MickLesk) ([#10138](https://github.com/community-scripts/ProxmoxVE/pull/10138))
- Zabbix: Add version-specific SQL script path for 7.0 LTS [@MickLesk](https://github.com/MickLesk) ([#10142](https://github.com/community-scripts/ProxmoxVE/pull/10142))
- InfluxDB: Fix update function [@Liganic](https://github.com/Liganic) ([#10151](https://github.com/community-scripts/ProxmoxVE/pull/10151))
- #### ✨ New Features
- Bump Immich to v2.4.1 [@vhsdream](https://github.com/vhsdream) ([#10154](https://github.com/community-scripts/ProxmoxVE/pull/10154))
- #### 🔧 Refactor
- Refactor: Cosmos: + Upgrade to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#10147](https://github.com/community-scripts/ProxmoxVE/pull/10147))
- Refactor: Proxmox-Mail-Gateway [@tremor021](https://github.com/tremor021) ([#10070](https://github.com/community-scripts/ProxmoxVE/pull/10070))
### 💾 Core
- #### ✨ New Features
- core: Auto-cleanup after all update_script executions [@MickLesk](https://github.com/MickLesk) ([#10141](https://github.com/community-scripts/ProxmoxVE/pull/10141))
### 🧰 Tools
- #### 🔧 Refactor
- fix: removed verbose option to avoid unnecessary output [@wolle604](https://github.com/wolle604) ([#10144](https://github.com/community-scripts/ProxmoxVE/pull/10144))
### ❔ Uncategorized
- Update paymenter.json(#10133) [@DragoQC](https://github.com/DragoQC) ([#10134](https://github.com/community-scripts/ProxmoxVE/pull/10134))
## 2025-12-18 ## 2025-12-18
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🐞 Bug Fixes - #### 🐞 Bug Fixes
- [HOTFIX] Fix Scanopy release check [@vhsdream](https://github.com/vhsdream) ([#10097](https://github.com/community-scripts/ProxmoxVE/pull/10097))
- Fix cleanup issues in npm cache and rustup toolchain [@MickLesk](https://github.com/MickLesk) ([#10107](https://github.com/community-scripts/ProxmoxVE/pull/10107)) - Fix cleanup issues in npm cache and rustup toolchain [@MickLesk](https://github.com/MickLesk) ([#10107](https://github.com/community-scripts/ProxmoxVE/pull/10107))
- Fix Zabbix 7.0 repository URL structure [@MickLesk](https://github.com/MickLesk) ([#10106](https://github.com/community-scripts/ProxmoxVE/pull/10106)) - Fix Zabbix 7.0 repository URL structure [@MickLesk](https://github.com/MickLesk) ([#10106](https://github.com/community-scripts/ProxmoxVE/pull/10106))
- [HOTFIX] Fix Scanopy release check [@vhsdream](https://github.com/vhsdream) ([#10097](https://github.com/community-scripts/ProxmoxVE/pull/10097))
- #### ✨ New Features
- bump pihole to debian 13 [@mschabhuettl](https://github.com/mschabhuettl) ([#10118](https://github.com/community-scripts/ProxmoxVE/pull/10118))
- Immich: v2.4.0 [@vhsdream](https://github.com/vhsdream) ([#10095](https://github.com/community-scripts/ProxmoxVE/pull/10095))
### 💾 Core
- #### 🔧 Refactor
- tools.func: hardening/Improve error handling and cleanup in shell functions [@MickLesk](https://github.com/MickLesk) ([#10116](https://github.com/community-scripts/ProxmoxVE/pull/10116))
### 🧰 Tools
- qbittorrent-exporter ([#10090](https://github.com/community-scripts/ProxmoxVE/pull/10090))
- #### 🐞 Bug Fixes
- Improved error handling when a command does not exist [@wolle604](https://github.com/wolle604) ([#10089](https://github.com/community-scripts/ProxmoxVE/pull/10089))
## 2025-12-17 ## 2025-12-17

View File

@ -34,8 +34,6 @@ function update_script() {
systemctl stop nginx systemctl stop nginx
msg_ok "Stopped nginx" msg_ok "Stopped nginx"
PHP_VERSION="8.4" PHP_FPM=YES PHP_MODULE="ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm" setup_php
msg_info "Backing up Bar Assistant" msg_info "Backing up Bar Assistant"
mv /opt/bar-assistant /opt/bar-assistant-backup mv /opt/bar-assistant /opt/bar-assistant-backup
msg_ok "Backed up Bar Assistant" msg_ok "Backed up Bar Assistant"

View File

@ -5,15 +5,14 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://https://cosmos-cloud.io/ # Source: https://https://cosmos-cloud.io/
APP="Cosmos" APP="cosmos"
var_tags="${var_tags:-cloud;docker}" var_tags="${var_tags:-os,docker}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}" var_disk="${var_disk:-8}"
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}"
var_fuse="${var_fuse:-yes}"
header_info "$APP" header_info "$APP"
variables variables

View File

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

View File

@ -35,11 +35,22 @@ function update_script() {
msg_ok "Services Stopped" msg_ok "Services Stopped"
if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then if ! { grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr/.env 2>/dev/null || grep -q '^REDIS_IS_EXTERNAL=' /opt/homarr.env 2>/dev/null; }; then
DEBIAN_VERSION=$(cat /etc/debian_version 2>/dev/null | cut -d'.' -f1)
if [[ -n "$DEBIAN_VERSION" ]] && [[ "$DEBIAN_VERSION" -lt 13 ]]; then
msg_warn "⚠️ COMPATIBILITY WARNING ⚠️"
msg_warn "You are running Debian ${DEBIAN_VERSION}. Homarr's requires Debian 13"
msg_warn ""
msg_warn "Please Upgrade to Debian 13:"
msg_warn "See: https://github.com/community-scripts/ProxmoxVE/discussions/7489"
msg_warn ""
exit
fi
msg_info "Fixing old structure" msg_info "Fixing old structure"
systemctl disable -q --now nginx # fix musl issues because homarr compiles on alpine not debian soure: https://github.com/alexander-akhmetov/python-telegram/issues/3
$STD apt install -y musl-dev
ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1
cp /opt/homarr/.env /opt/homarr.env cp /opt/homarr/.env /opt/homarr.env
echo "REDIS_IS_EXTERNAL='true'" >> /opt/homarr.env echo "REDIS_IS_EXTERNAL='true'" >> /opt/homarr.env
sed -i '/^\[Unit\]/a Requires=redis-server.service\nAfter=redis-server.service' /etc/systemd/system/homarr.service
sed -i 's|^ExecStart=.*|ExecStart=/opt/homarr/run.sh|' /etc/systemd/system/homarr.service sed -i 's|^ExecStart=.*|ExecStart=/opt/homarr/run.sh|' /etc/systemd/system/homarr.service
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=-/opt/homarr.env|' /etc/systemd/system/homarr.service sed -i 's|^EnvironmentFile=.*|EnvironmentFile=-/opt/homarr.env|' /etc/systemd/system/homarr.service
chown -R redis:redis /appdata/redis chown -R redis:redis /appdata/redis
@ -61,7 +72,7 @@ EOF
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]') NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
setup_nodejs setup_nodejs
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr" "prebuild" "latest" "/opt/homarr" "build-debian-amd64.tar.gz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr" "prebuild" "latest" "/opt/homarr" "build-amd64.tar.gz"
msg_info "Updating Homarr" msg_info "Updating Homarr"
cp /opt/homarr/redis.conf /etc/redis/redis.conf cp /opt/homarr/redis.conf /etc/redis/redis.conf

View File

@ -74,28 +74,23 @@ EOF
STAGING_DIR=/opt/staging STAGING_DIR=/opt/staging
BASE_DIR=${STAGING_DIR}/base-images BASE_DIR=${STAGING_DIR}/base-images
SOURCE_DIR=${STAGING_DIR}/image-source SOURCE_DIR=${STAGING_DIR}/image-source
cd /tmp cd /root
if [[ -f ~/.intel_version ]]; then if [[ -f ~/.intel_version ]]; then
curl -fsSLO https://raw.githubusercontent.com/immich-app/base-images/refs/heads/main/server/Dockerfile curl -fsSLO https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/machine-learning/Dockerfile
readarray -t INTEL_URLS < <( readarray -t INTEL_URLS < <(sed -n "/intel/p" ./Dockerfile | awk '{print $3}')
sed -n "/intel-[igc|opencl]/p" ./Dockerfile | awk '{print $2}' INTEL_RELEASE="$(grep "intel-opencl-icd" ./Dockerfile | awk -F '_' '{print $2}')"
sed -n "/libigdgmm12/p" ./Dockerfile | awk '{print $3}'
)
INTEL_RELEASE="$(grep "intel-opencl-icd_" ./Dockerfile | awk -F '_' '{print $2}')"
if [[ "$INTEL_RELEASE" != "$(cat ~/.intel_version)" ]]; then if [[ "$INTEL_RELEASE" != "$(cat ~/.intel_version)" ]]; then
msg_info "Updating Intel iGPU dependencies" msg_info "Updating Intel iGPU dependencies"
for url in "${INTEL_URLS[@]}"; do for url in "${INTEL_URLS[@]}"; do
curl -fsSLO "$url" curl -fsSLO "$url"
done done
$STD apt-mark unhold libigdgmm12 $STD apt-mark unhold libigdgmm12
$STD apt install -y ./libigdgmm12*.deb
rm ./libigdgmm12*.deb
$STD apt install -y ./*.deb $STD apt install -y ./*.deb
rm ./*.deb rm ./*.deb
$STD apt-mark hold libigdgmm12 $STD apt-mark hold libigdgmm12
msg_ok "Intel iGPU dependencies updated" msg_ok "Intel iGPU dependencies updated"
fi fi
rm ./Dockerfile rm ~/Dockerfile
fi fi
if [[ -f ~/.immich_library_revisions ]]; then if [[ -f ~/.immich_library_revisions ]]; then
libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips") libraries=("libjxl" "libheif" "libraw" "imagemagick" "libvips")
@ -108,7 +103,7 @@ EOF
msg_ok "Image-processing libraries up to date" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="2.4.1" RELEASE="2.3.1"
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

@ -23,7 +23,7 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /usr/bin/influxd ]]; then if [[ ! -f /etc/apt/sources.list.d/influxdata.list ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
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"

View File

@ -27,11 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating ${APP}"
msg_info "Updating Proxmox-Mail-Gateway"
$STD apt update $STD apt update
$STD apt upgrade -y $STD apt -y upgrade
msg_ok "Updated Proxmox-Mail-Gateway" msg_ok "Updated ${APP}"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }

View File

@ -32,8 +32,6 @@ function update_script() {
systemctl stop reitti systemctl stop reitti
msg_ok "Stopped Service" msg_ok "Stopped Service"
JAVA_VERSION="25" setup_java
rm -f /opt/reitti/reitti.jar rm -f /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar" USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar

View File

@ -24,7 +24,7 @@
"ram": 2048, "ram": 2048,
"hdd": 8, "hdd": 8,
"os": "debian", "os": "debian",
"version": "13" "version": "12"
} }
} }
], ],
@ -36,10 +36,6 @@
{ {
"type": "info", "type": "info",
"text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself." "text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
},
{
"type": "warning",
"text": "Requires FUSE support for mergerfs functionality. FUSE is enabled by default during installation."
} }
] ]
} }

View File

@ -11,7 +11,7 @@
"interface_port": 80, "interface_port": 80,
"documentation": "https://paymenter.org/docs", "documentation": "https://paymenter.org/docs",
"website": "https://paymenter.org/", "website": "https://paymenter.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/paymenter.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/paymeter.webp",
"config_path": "/opt/paymenter/.env", "config_path": "/opt/paymenter/.env",
"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.", "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": [ "install_methods": [

View File

@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "13" "version": "12"
} }
} }
], ],

View File

@ -1,46 +0,0 @@
{
"name": "qbittorrent Exporter",
"slug": "qbittorrent-exporter",
"categories": [
9
],
"date_created": "2025-12-18",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": 8090,
"documentation": "https://github.com/martabal/qbittorrent-exporter",
"website": "https://github.com/martabal/qbittorrent-exporter",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/qbittorrent.webp",
"config_path": "/opt/qbittorrent-exporter.env",
"description": "A fast and lightweight prometheus exporter for qBittorrent ",
"install_methods": [
{
"type": "default",
"script": "tools/addon/qbittorrent-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
},
{
"type": "alpine",
"script": "tools/addon/qbittorrent-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@ -1,274 +1,29 @@
[ [
{
"name": "pelican-dev/panel",
"version": "v1.0.0-beta30",
"date": "2025-12-19T23:37:07Z"
},
{
"name": "pelican-dev/wings",
"version": "v1.0.0-beta21",
"date": "2025-12-19T23:04:27Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.5.2",
"date": "2025-12-19T21:28:55Z"
},
{
"name": "emqx/emqx",
"version": "e5.10.3-alpha.1",
"date": "2025-12-19T21:08:48Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0.RC1",
"date": "2025-12-19T20:37:27Z"
},
{
"name": "metabase/metabase",
"version": "v0.58.x",
"date": "2025-12-19T20:05:58Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.47.0",
"date": "2025-12-19T19:42:50Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.80.10.dev.1",
"date": "2025-12-19T19:16:21Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.15.0",
"date": "2025-12-19T18:57:42Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.37",
"date": "2025-12-18T16:43:23Z"
},
{
"name": "home-assistant/core",
"version": "2025.12.4",
"date": "2025-12-19T17:55:13Z"
},
{
"name": "qdrant/qdrant",
"version": "v1.16.3",
"date": "2025-12-19T17:45:42Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
},
{
"name": "esphome/esphome",
"version": "2025.12.1",
"date": "2025-12-19T15:53:08Z"
},
{
"name": "immich-app/immich",
"version": "v2.4.1",
"date": "2025-12-19T15:50:12Z"
},
{
"name": "itsmng/itsm-ng",
"version": "v1.6.11",
"date": "2025-12-19T15:28:57Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.30.2",
"date": "2025-12-19T15:18:53Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "dedicatedcode/reitti",
"version": "v3.0.0",
"date": "2025-12-19T13:47:44Z"
},
{
"name": "raydak-labs/configarr",
"version": "v1.19.0",
"date": "2025-12-19T13:37:00Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w51-4.14.2",
"date": "2025-12-15T12:34:36Z"
},
{
"name": "fccview/jotty",
"version": "1.14.4",
"date": "2025-12-19T13:17:26Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "@fumadocs/ui@16.3.1",
"date": "2025-12-19T13:11:34Z"
},
{
"name": "readeck/readeck",
"version": "0.21.5",
"date": "2025-12-19T11:51:05Z"
},
{
"name": "forgejo/forgejo",
"version": "v15.0.0-dev",
"date": "2025-12-19T11:43:47Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.30.1-rebuild-hannoy-graph.1",
"date": "2025-12-19T11:14:05Z"
},
{
"name": "release-argus/Argus",
"version": "0.28.3",
"date": "2025-12-19T11:05:10Z"
},
{
"name": "TuroYT/snowshare",
"version": "v1.2.5",
"date": "2025-12-19T10:47:19Z"
},
{
"name": "mattermost/mattermost",
"version": "v11.1.2",
"date": "2025-12-17T09:26:24Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.487",
"date": "2025-12-19T05:55:55Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.102",
"date": "2025-12-19T03:45:13Z"
},
{
"name": "javedh-dev/tracktor",
"version": "1.0.1",
"date": "2025-12-17T23:14:39Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.8.0",
"date": "2025-12-19T01:37:04Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-19T00:27:05Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.5",
"date": "2025-09-27T20:59:46Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.7",
"date": "2025-12-18T21:27:26Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v2.1.5",
"date": "2025-12-18T20:48:01Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.4",
"date": "2025-12-18T19:25:47Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.36.2",
"date": "2025-12-03T22:46:29Z"
},
{
"name": "saltstack/salt",
"version": "v3007.10",
"date": "2025-12-18T18:14:16Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.3",
"date": "2025-12-18T18:11:48Z"
},
{
"name": "karlomikus/bar-assistant",
"version": "v5.11.0",
"date": "2025-12-18T18:06:05Z"
},
{
"name": "neo4j/neo4j",
"version": "2025.11.2",
"date": "2025-12-18T17:08:34Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.23",
"date": "2025-12-18T16:55:01Z"
},
{
"name": "ollama/ollama",
"version": "v0.13.5",
"date": "2025-12-18T16:39:08Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.20.3",
"date": "2025-12-18T16:10:13Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.123.7",
"date": "2025-12-17T14:01:25Z"
},
{
"name": "docker/compose",
"version": "v5.0.1",
"date": "2025-12-18T14:22:38Z"
},
{
"name": "coollabsio/coolify",
"version": "v4.0.0-beta.458",
"date": "2025-12-18T12:23:23Z"
},
{ {
"name": "juanfont/headscale", "name": "juanfont/headscale",
"version": "v0.27.1", "version": "v0.27.1",
"date": "2025-11-11T19:32:29Z" "date": "2025-11-11T19:32:29Z"
}, },
{
"name": "docker/compose",
"version": "v5.0.1",
"date": "2025-12-18T10:35:33Z"
},
{ {
"name": "tailscale/tailscale", "name": "tailscale/tailscale",
"version": "v1.92.4", "version": "v1.92.4",
"date": "2025-12-18T10:32:44Z" "date": "2025-12-18T10:32:44Z"
}, },
{
"name": "TuroYT/snowshare",
"version": "v1.2.3",
"date": "2025-12-18T10:06:45Z"
},
{
"name": "coollabsio/coolify",
"version": "v4.0.0-beta.456",
"date": "2025-12-18T08:59:27Z"
},
{ {
"name": "Kozea/Radicale", "name": "Kozea/Radicale",
"version": "v3.5.10", "version": "v3.5.10",
@ -279,6 +34,11 @@
"version": "7.4.6", "version": "7.4.6",
"date": "2025-12-18T07:00:26Z" "date": "2025-12-18T07:00:26Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.24.478",
"date": "2025-12-18T05:55:21Z"
},
{ {
"name": "chrisvel/tududi", "name": "chrisvel/tududi",
"version": "v0.88.1", "version": "v0.88.1",
@ -289,11 +49,56 @@
"version": "v0.5.1", "version": "v0.5.1",
"date": "2025-12-18T03:08:43Z" "date": "2025-12-18T03:08:43Z"
}, },
{
"name": "scanopy/scanopy",
"version": "v0.12.3",
"date": "2025-12-18T02:48:06Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.30.1",
"date": "2025-12-18T02:41:34Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.6",
"date": "2025-12-18T01:28:04Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-18T00:27:07Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{ {
"name": "goauthentik/authentik", "name": "goauthentik/authentik",
"version": "version/2025.10.3", "version": "version/2025.10.3",
"date": "2025-12-16T18:00:53Z" "date": "2025-12-16T18:00:53Z"
}, },
{
"name": "javedh-dev/tracktor",
"version": "1.0.1",
"date": "2025-12-17T11:31:03Z"
},
{
"name": "ollama/ollama",
"version": "v0.13.5-rc0",
"date": "2025-12-17T21:13:55Z"
},
{
"name": "fccview/jotty",
"version": "1.14.0",
"date": "2025-12-17T20:26:22Z"
},
{
"name": "emqx/emqx",
"version": "6.1.0-alpha.2",
"date": "2025-12-17T20:15:23Z"
},
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v2.8.0", "version": "v2.8.0",
@ -309,6 +114,31 @@
"version": "v4.107.0", "version": "v4.107.0",
"date": "2025-12-17T18:59:21Z" "date": "2025-12-17T18:59:21Z"
}, },
{
"name": "neo4j/neo4j",
"version": "5.26.19",
"date": "2025-12-17T18:17:55Z"
},
{
"name": "metabase/metabase",
"version": "v0.57.7",
"date": "2025-12-17T18:16:59Z"
},
{
"name": "immich-app/immich",
"version": "v2.4.0",
"date": "2025-12-17T17:44:24Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.80.10.rc.4",
"date": "2025-12-17T17:43:28Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{ {
"name": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
"version": "v2.16.47", "version": "v2.16.47",
@ -319,6 +149,11 @@
"version": "v4.7.1", "version": "v4.7.1",
"date": "2025-12-17T15:18:55Z" "date": "2025-12-17T15:18:55Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.123.7",
"date": "2025-12-17T14:01:25Z"
},
{ {
"name": "bunkerity/bunkerweb", "name": "bunkerity/bunkerweb",
"version": "testing", "version": "testing",
@ -329,6 +164,11 @@
"version": "v2.11.33", "version": "v2.11.33",
"date": "2025-12-17T10:10:19Z" "date": "2025-12-17T10:10:19Z"
}, },
{
"name": "mattermost/mattermost",
"version": "v11.1.2",
"date": "2025-12-17T09:26:24Z"
},
{ {
"name": "zitadel/zitadel", "name": "zitadel/zitadel",
"version": "v4.7.6", "version": "v4.7.6",
@ -339,6 +179,11 @@
"version": "v0.105.1", "version": "v0.105.1",
"date": "2025-12-17T08:48:52Z" "date": "2025-12-17T08:48:52Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.30.1-rebuild-hannoy-graph.0",
"date": "2025-12-17T08:38:38Z"
},
{ {
"name": "passbolt/passbolt_api", "name": "passbolt/passbolt_api",
"version": "v5.8.0-test.3", "version": "v5.8.0-test.3",
@ -354,6 +199,16 @@
"version": "v11.9.0", "version": "v11.9.0",
"date": "2025-12-17T08:26:50Z" "date": "2025-12-17T08:26:50Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{ {
"name": "nickheyer/discopanel", "name": "nickheyer/discopanel",
"version": "v1.0.16", "version": "v1.0.16",
@ -364,6 +219,11 @@
"version": "v1.19.23", "version": "v1.19.23",
"date": "2025-12-17T00:51:11Z" "date": "2025-12-17T00:51:11Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.12.0",
"date": "2025-12-16T23:57:23Z"
},
{ {
"name": "grafana/grafana", "name": "grafana/grafana",
"version": "v12.3.1", "version": "v12.3.1",
@ -389,21 +249,46 @@
"version": "v4.6.2", "version": "v4.6.2",
"date": "2025-12-16T17:54:19Z" "date": "2025-12-16T17:54:19Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@14.1.1",
"date": "2025-12-16T15:32:59Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.542", "version": "jenkins-2.542",
"date": "2025-12-16T13:49:44Z" "date": "2025-12-16T13:49:44Z"
}, },
{
"name": "release-argus/Argus",
"version": "0.28.2",
"date": "2025-12-16T12:36:26Z"
},
{ {
"name": "prometheus/prometheus", "name": "prometheus/prometheus",
"version": "v3.8.1", "version": "v3.8.1",
"date": "2025-12-16T09:59:22Z" "date": "2025-12-16T09:59:22Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.36.2",
"date": "2025-12-03T22:46:29Z"
},
{ {
"name": "sabnzbd/sabnzbd", "name": "sabnzbd/sabnzbd",
"version": "4.5.5", "version": "4.5.5",
"date": "2025-10-24T11:12:22Z" "date": "2025-10-24T11:12:22Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v2.1.4",
"date": "2025-12-16T00:02:18Z"
},
{ {
"name": "azukaar/Cosmos-Server", "name": "azukaar/Cosmos-Server",
"version": "v0.19.0", "version": "v0.19.0",
@ -449,6 +334,11 @@
"version": "v0.16.3", "version": "v0.16.3",
"date": "2025-12-15T12:56:50Z" "date": "2025-12-15T12:56:50Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w51-4.14.2",
"date": "2025-12-15T12:34:36Z"
},
{ {
"name": "LimeSurvey/LimeSurvey", "name": "LimeSurvey/LimeSurvey",
"version": "6.16.2+251209", "version": "6.16.2+251209",
@ -494,6 +384,11 @@
"version": "2025.12.14", "version": "2025.12.14",
"date": "2025-12-14T18:24:33Z" "date": "2025-12-14T18:24:33Z"
}, },
{
"name": "openhab/openhab-core",
"version": "5.1.0.M4",
"date": "2025-12-14T18:12:04Z"
},
{ {
"name": "blakeblackshear/frigate", "name": "blakeblackshear/frigate",
"version": "v0.14.1", "version": "v0.14.1",
@ -504,6 +399,11 @@
"version": "v0.24.1", "version": "v0.24.1",
"date": "2025-12-14T13:49:16Z" "date": "2025-12-14T13:49:16Z"
}, },
{
"name": "laurent22/joplin",
"version": "server-v3.5.1",
"date": "2025-12-03T11:56:50Z"
},
{ {
"name": "C4illin/ConvertX", "name": "C4illin/ConvertX",
"version": "v0.16.1", "version": "v0.16.1",
@ -534,6 +434,11 @@
"version": "v4.4.0", "version": "v4.4.0",
"date": "2025-12-13T22:49:07Z" "date": "2025-12-13T22:49:07Z"
}, },
{
"name": "karlomikus/bar-assistant",
"version": "v5.10.0",
"date": "2025-12-13T20:17:27Z"
},
{ {
"name": "fosrl/pangolin", "name": "fosrl/pangolin",
"version": "1.13.1", "version": "1.13.1",
@ -574,11 +479,36 @@
"version": "v0.26.2", "version": "v0.26.2",
"date": "2025-12-13T07:48:09Z" "date": "2025-12-13T07:48:09Z"
}, },
{
"name": "mealie-recipes/mealie",
"version": "v3.7.0",
"date": "2025-12-13T01:20:58Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.20.2",
"date": "2025-12-12T23:47:48Z"
},
{ {
"name": "mongodb/mongo", "name": "mongodb/mongo",
"version": "r7.0.27", "version": "r7.0.27",
"date": "2025-12-12T20:54:32Z" "date": "2025-12-12T20:54:32Z"
}, },
{
"name": "homarr-labs/homarr",
"version": "v1.46.0",
"date": "2025-12-12T19:23:36Z"
},
{
"name": "home-assistant/core",
"version": "2025.12.3",
"date": "2025-12-12T18:12:39Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.14.1",
"date": "2025-12-12T17:37:58Z"
},
{ {
"name": "node-red/node-red", "name": "node-red/node-red",
"version": "4.1.2", "version": "4.1.2",
@ -619,6 +549,11 @@
"version": "0.43.1", "version": "0.43.1",
"date": "2025-12-11T22:45:52Z" "date": "2025-12-11T22:45:52Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.30.22",
"date": "2025-12-11T18:02:06Z"
},
{ {
"name": "pommee/goaway", "name": "pommee/goaway",
"version": "v0.62.24", "version": "v0.62.24",
@ -629,6 +564,11 @@
"version": "v2.13.2", "version": "v2.13.2",
"date": "2025-12-11T06:31:24Z" "date": "2025-12-11T06:31:24Z"
}, },
{
"name": "moghtech/komodo",
"version": "v1.19.5",
"date": "2025-09-27T20:59:46Z"
},
{ {
"name": "TwiN/gatus", "name": "TwiN/gatus",
"version": "v5.33.1", "version": "v5.33.1",
@ -659,6 +599,16 @@
"version": "2.2.15", "version": "2.2.15",
"date": "2025-12-10T01:52:14Z" "date": "2025-12-10T01:52:14Z"
}, },
{
"name": "pelican-dev/panel",
"version": "v1.0.0-beta29",
"date": "2025-12-09T23:07:15Z"
},
{
"name": "pelican-dev/wings",
"version": "v1.0.0-beta20",
"date": "2025-12-09T22:59:09Z"
},
{ {
"name": "BookStackApp/BookStack", "name": "BookStackApp/BookStack",
"version": "v25.11.6", "version": "v25.11.6",
@ -679,6 +629,11 @@
"version": "v1.144.0", "version": "v1.144.0",
"date": "2025-12-09T16:29:00Z" "date": "2025-12-09T16:29:00Z"
}, },
{
"name": "readeck/readeck",
"version": "0.21.4",
"date": "2025-12-09T15:25:28Z"
},
{ {
"name": "gelbphoenix/autocaliweb", "name": "gelbphoenix/autocaliweb",
"version": "v0.11.3", "version": "v0.11.3",
@ -774,6 +729,11 @@
"version": "v0.28.0", "version": "v0.28.0",
"date": "2025-12-06T13:32:18Z" "date": "2025-12-06T13:32:18Z"
}, },
{
"name": "YunoHost/yunohost",
"version": "debian/13.0.2",
"date": "2025-12-06T10:46:12Z"
},
{ {
"name": "toniebox-reverse-engineering/teddycloud", "name": "toniebox-reverse-engineering/teddycloud",
"version": "tc_v0.6.5", "version": "tc_v0.6.5",
@ -824,6 +784,11 @@
"version": "v0.34.2", "version": "v0.34.2",
"date": "2025-12-04T13:08:18Z" "date": "2025-12-04T13:08:18Z"
}, },
{
"name": "qdrant/qdrant",
"version": "v1.16.2",
"date": "2025-12-04T11:03:49Z"
},
{ {
"name": "glpi-project/glpi", "name": "glpi-project/glpi",
"version": "11.0.4", "version": "11.0.4",
@ -979,6 +944,11 @@
"version": "v1.7.8", "version": "v1.7.8",
"date": "2025-11-26T22:35:03Z" "date": "2025-11-26T22:35:03Z"
}, },
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.101",
"date": "2025-11-26T17:14:35Z"
},
{ {
"name": "NLnetLabs/unbound", "name": "NLnetLabs/unbound",
"version": "release-1.24.2", "version": "release-1.24.2",
@ -1009,6 +979,21 @@
"version": "2.610", "version": "2.610",
"date": "2025-11-24T04:28:30Z" "date": "2025-11-24T04:28:30Z"
}, },
{
"name": "raydak-labs/configarr",
"version": "v1.18.0",
"date": "2025-11-23T17:42:53Z"
},
{
"name": "dedicatedcode/reitti",
"version": "v2.5.0",
"date": "2025-11-23T12:49:50Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.2",
"date": "2025-11-22T19:37:02Z"
},
{ {
"name": "TechnitiumSoftware/DnsServer", "name": "TechnitiumSoftware/DnsServer",
"version": "v14.2.0", "version": "v14.2.0",
@ -1019,6 +1004,11 @@
"version": "v5.6.1", "version": "v5.6.1",
"date": "2025-11-21T16:51:21Z" "date": "2025-11-21T16:51:21Z"
}, },
{
"name": "forgejo/forgejo",
"version": "v13.0.3",
"date": "2025-11-21T12:43:04Z"
},
{ {
"name": "seriousm4x/UpSnap", "name": "seriousm4x/UpSnap",
"version": "5.2.4", "version": "5.2.4",
@ -1039,11 +1029,21 @@
"version": "v2.1.11", "version": "v2.1.11",
"date": "2025-11-20T20:14:44Z" "date": "2025-11-20T20:14:44Z"
}, },
{
"name": "saltstack/salt",
"version": "v3007.9",
"date": "2025-11-20T17:58:32Z"
},
{ {
"name": "kimai/kimai", "name": "kimai/kimai",
"version": "2.44.0", "version": "2.44.0",
"date": "2025-11-20T11:01:01Z" "date": "2025-11-20T11:01:01Z"
}, },
{
"name": "itsmng/itsm-ng",
"version": "v2.1.1",
"date": "2025-11-20T10:54:07Z"
},
{ {
"name": "Athou/commafeed", "name": "Athou/commafeed",
"version": "5.12.0", "version": "5.12.0",

View File

@ -24,7 +24,7 @@ $STD apt-get install -y \
#php-{ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm} #php-{ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm}
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM=YES PHP_MODULE="ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm" setup_php PHP_VERSION="8.3" PHP_FPM=YES PHP_MODULE="ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm" setup_php
setup_composer setup_composer
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary" fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"

View File

@ -14,23 +14,38 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y \ $STD apt-get install -y \
ca-certificates \
openssl \
snapraid \ snapraid \
avahi-daemon \ avahi-daemon \
fdisk \ fdisk
mergerfs \
unzip
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
setup_docker msg_info "Install mergerfs"
fetch_and_deploy_gh_release "cosmos" "azukaar/Cosmos-Server" "prebuild" "latest" "/opt/cosmos" "cosmos-cloud-*-amd64.zip" MERGERFS_VERSION="2.40.2"
curl -fsSL "https://github.com/trapexit/mergerfs/releases/download/${MERGERFS_VERSION}/mergerfs_${MERGERFS_VERSION}.debian-bullseye_amd64.deb" -o "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 "Setting up Cosmos" 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 -fsSL 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 -fsSL "https://github.com/azukaar/Cosmos-Server/releases/download/${LATEST_RELEASE}/${ZIP_FILE}" -o "/opt/cosmos/${ZIP_FILE}"
cd /opt/cosmos cd /opt/cosmos
$STD 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 chmod +x /opt/cosmos/cosmos
msg_ok "Set up Cosmos" rm -f "/opt/cosmos/cosmos-cloud-${LATEST_RELEASE#v}-amd64.zip"
msg_ok "Installed Cosmos"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/cosmos.service cat <<EOF >/etc/systemd/system/cosmos.service

View File

@ -18,14 +18,17 @@ $STD apt install -y \
redis-server \ redis-server \
nginx \ nginx \
gettext \ gettext \
openssl openssl \
musl-dev
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]') NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
setup_nodejs setup_nodejs
fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr" "prebuild" "latest" "/opt/homarr" "build-debian-amd64.tar.gz" fetch_and_deploy_gh_release "homarr" "homarr-labs/homarr" "prebuild" "latest" "/opt/homarr" "build-amd64.tar.gz"
msg_info "Installing Homarr" msg_info "Installing Homarr"
# fix musl issues because homarr compiles on alpine not debian soure: https://github.com/alexander-akhmetov/python-telegram/issues/3
ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1
mkdir -p /opt/homarr_db mkdir -p /opt/homarr_db
touch /opt/homarr_db/db.sqlite touch /opt/homarr_db/db.sqlite
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)" SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
@ -62,8 +65,6 @@ ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -
EOF EOF
cat <<EOF >/etc/systemd/system/homarr.service cat <<EOF >/etc/systemd/system/homarr.service
[Unit] [Unit]
Requires=redis-server.service
After=redis-server.service
Description=Homarr Service Description=Homarr Service
After=network.target After=network.target
@ -78,9 +79,8 @@ WantedBy=multi-user.target
EOF EOF
chmod +x /opt/homarr/run.sh chmod +x /opt/homarr/run.sh
systemctl daemon-reload systemctl daemon-reload
systemctl enable -q --now redis-server systemctl enable -q --now redis-server && sleep 5
systemctl enable -q --now homarr systemctl enable -q --now homarr
systemctl disable -q --now nginx
msg_ok "Created Services" msg_ok "Created Services"
motd_ssh motd_ssh

View File

@ -99,15 +99,10 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
$STD apt install -y --no-install-recommends patchelf $STD apt install -y --no-install-recommends patchelf
tmp_dir=$(mktemp -d) tmp_dir=$(mktemp -d)
$STD pushd "$tmp_dir" $STD pushd "$tmp_dir"
curl -fsSLZ -O "https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-core_1.0.17537.24_amd64.deb" \ curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb
-O "https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.24/intel-igc-opencl_1.0.17537.24_amd64.deb" \ curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-opencl_1.0.17384.11_amd64.deb
-O "https://github.com/intel/compute-runtime/releases/download/24.35.30872.36/intel-opencl-icd-legacy1_24.35.30872.36_amd64.deb" \ curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb
-O "https://github.com/intel/intel-graphics-compiler/releases/download/v2.22.2/intel-igc-core-2_2.22.2+20121_amd64.deb" \ curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb
-O "https://github.com/intel/intel-graphics-compiler/releases/download/v2.22.2/intel-igc-opencl-2_2.22.2+20121_amd64.deb" \
-O "https://github.com/intel/compute-runtime/releases/download/25.44.36015.5/intel-opencl-icd_25.44.36015.5-0_amd64.deb" \
-O "https://github.com/intel/compute-runtime/releases/download/25.44.36015.5/libigdgmm12_22.8.2_amd64.deb"
$STD apt install -y ./libigdgmm12*.deb
rm ./libigdgmm12*.deb
$STD apt install -y ./*.deb $STD apt install -y ./*.deb
$STD apt-mark hold libigdgmm12 $STD apt-mark hold libigdgmm12
$STD popd $STD popd
@ -296,7 +291,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.4.1" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v2.3.1" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (patience)" msg_info "Installing ${APPLICATION} (patience)"

View File

@ -14,13 +14,16 @@ network_check
update_os update_os
msg_info "Installing Proxmox Mail Gateway" msg_info "Installing Proxmox Mail Gateway"
setup_deb822_repo \ curl -fsSL "https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg" -o "/usr/share/keyrings/proxmox-release-trixie.gpg"
"pmg" \ cat <<EOF >/etc/apt/sources.list.d/pmg.sources
"https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg" \ Types: deb
"http://download.proxmox.com/debian/pmg" \ URIs: http://download.proxmox.com/debian/pmg
"trixie" \ Suites: trixie
"pmg-no-subscription" Components: pmg-no-subscription
$STD apt install -y proxmox-mailgateway-container Signed-By: /usr/share/keyrings/proxmox-release-trixie.gpg
EOF
$STD apt update
$STD apt -y install proxmox-mailgateway-container
msg_ok "Installed Proxmox Mail Gateway" msg_ok "Installed Proxmox Mail Gateway"
motd_ssh motd_ssh

View File

@ -21,7 +21,7 @@ $STD apt install -y \
zstd zstd
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
JAVA_VERSION="25" setup_java JAVA_VERSION="24" setup_java
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
PG_DB_NAME="reitti_db" PG_DB_USER="reitti" setup_postgresql_db PG_DB_NAME="reitti_db" PG_DB_USER="reitti" setup_postgresql_db

View File

@ -44,14 +44,7 @@ curl -fsSL "$ZABBIX_DEB_URL" -o /tmp/"$ZABBIX_DEB_FILE"
$STD dpkg -i /tmp/"$ZABBIX_DEB_FILE" $STD dpkg -i /tmp/"$ZABBIX_DEB_FILE"
$STD apt update $STD apt update
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts $STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u "$PG_DB_USER" psql "$PG_DB_NAME" &>/dev/null
if [[ "$ZABBIX_VERSION" == "7.0" ]]; then
ZABBIX_SQL="/usr/share/zabbix-sql-scripts/postgresql/server.sql.gz"
else
ZABBIX_SQL="/usr/share/zabbix/sql-scripts/postgresql/server.sql.gz"
fi
zcat "$ZABBIX_SQL" | sudo -u "$PG_DB_USER" psql "$PG_DB_NAME" &>/dev/null
sed -i "s/^DBName=.*/DBName=$PG_DB_NAME/" /etc/zabbix/zabbix_server.conf sed -i "s/^DBName=.*/DBName=$PG_DB_NAME/" /etc/zabbix/zabbix_server.conf
sed -i "s/^DBUser=.*/DBUser=$PG_DB_USER/" /etc/zabbix/zabbix_server.conf sed -i "s/^DBUser=.*/DBUser=$PG_DB_USER/" /etc/zabbix/zabbix_server.conf
sed -i "s/^# DBPassword=.*/DBPassword=$PG_DB_PASS/" /etc/zabbix/zabbix_server.conf sed -i "s/^# DBPassword=.*/DBPassword=$PG_DB_PASS/" /etc/zabbix/zabbix_server.conf

View File

@ -2626,8 +2626,8 @@ configure_ssh_settings() {
# #
# - Entry point of script # - Entry point of script
# - On Proxmox host: calls install_script # - On Proxmox host: calls install_script
# - In silent mode: runs update_script with automatic cleanup # - In silent mode: runs update_script
# - Otherwise: shows update/setting menu and runs update_script with cleanup # - Otherwise: shows update/setting menu
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
start() { start() {
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func) source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
@ -2638,7 +2638,6 @@ start() {
VERBOSE="no" VERBOSE="no"
set_std_mode set_std_mode
update_script update_script
cleanup_lxc
else else
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC Update/Setting" --menu \ CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC Update/Setting" --menu \
"Support/Update functions for ${APP} LXC. Choose an option:" \ "Support/Update functions for ${APP} LXC. Choose an option:" \
@ -2663,7 +2662,6 @@ start() {
;; ;;
esac esac
update_script update_script
cleanup_lxc
fi fi
} }

View File

@ -1,241 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/martabal/qbittorrent-exporter
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
# Enable error handling
set -Eeuo pipefail
trap 'error_handler' ERR
load_functions
# ==============================================================================
# CONFIGURATION
# ==============================================================================
VERBOSE=${var_verbose:-no}
APP="qbittorrent-exporter"
APP_TYPE="tools"
INSTALL_PATH="/opt/qbittorrent-exporter"
CONFIG_PATH="/opt/qbittorrent-exporter.env"
header_info
ensure_usr_local_bin_persist
# ==============================================================================
# OS DETECTION
# ==============================================================================
if [[ -f "/etc/alpine-release" ]]; then
OS="Alpine"
SERVICE_PATH="/etc/init.d/qbittorrent-exporter"
elif grep -qE 'ID=debian|ID=ubuntu' /etc/os-release; then
OS="Debian"
SERVICE_PATH="/etc/systemd/system/qbittorrent-exporter.service"
else
echo -e "${CROSS} Unsupported OS detected. Exiting."
exit 1
fi
# ==============================================================================
# UNINSTALL
# ==============================================================================
function uninstall() {
msg_info "Uninstalling qBittorrent-Exporter"
if [[ "$OS" == "Alpine" ]]; then
rc-service qbittorrent-exporter stop &>/dev/null
rc-update del qbittorrent-exporter &>/dev/null
rm -f "$SERVICE_PATH"
else
systemctl disable -q --now qbittorrent-exporter
rm -f "$SERVICE_PATH"
fi
rm -rf "$INSTALL_PATH" "$CONFIG_PATH"
rm -f "/usr/local/bin/update_qbittorrent-exporter"
rm -f "$HOME/.qbittorrent-exporter"
msg_ok "qBittorrent-Exporter has been uninstalled"
}
# ==============================================================================
# UPDATE
# ==============================================================================
function update() {
if check_for_gh_release "qbittorrent-exporter" "martabal/qbittorrent-exporter"; then
msg_info "Stopping service"
if [[ "$OS" == "Alpine" ]]; then
rc-service qbittorrent-exporter stop &>/dev/null
else
systemctl stop qbittorrent-exporter
fi
msg_ok "Stopped service"
fetch_and_deploy_gh_release "qbittorrent-exporter" "martabal/qbittorrent-exporter" "tarball" "latest"
setup_go
msg_info "Building qBittorrent-Exporter"
cd /opt/qbittorrent-exporter
$STD /usr/local/bin/go build -o ./qbittorrent-exporter
msg_ok "Built qBittorrent-Exporter"
msg_info "Starting service"
if [[ "$OS" == "Alpine" ]]; then
rc-service qbittorrent-exporter start &>/dev/null
else
systemctl start qbittorrent-exporter
fi
msg_ok "Started service"
msg_ok "Updated successfully"
exit
fi
}
# ==============================================================================
# INSTALL
# ==============================================================================
function install() {
read -erp "Enter URL of qBittorrent, example: (http://127.0.0.1:8080): " QBITTORRENT_BASE_URL
read -erp "Enter qBittorrent username: " QBITTORRENT_USERNAME
read -rsp "Enter qBittorrent password: " QBITTORRENT_PASSWORD
printf "\n"
fetch_and_deploy_gh_release "qbittorrent-exporter" "martabal/qbittorrent-exporter" "tarball" "latest"
setup_go
msg_info "Building qBittorrent-Exporter on ${OS}"
cd /opt/qbittorrent-exporter
$STD /usr/local/bin/go build -o ./qbittorrent-exporter
msg_ok "Built qBittorrent-Exporter"
msg_info "Creating configuration"
cat <<EOF >"$CONFIG_PATH"
# https://github.com/martabal/qbittorrent-exporter?tab=readme-ov-file#parameters
QBITTORRENT_BASE_URL="${QBITTORRENT_BASE_URL}"
QBITTORRENT_USERNAME="${QBITTORRENT_USERNAME}"
QBITTORRENT_PASSWORD="${QBITTORRENT_PASSWORD}"
EOF
msg_ok "Created configuration"
msg_info "Creating service"
if [[ "$OS" == "Debian" ]]; then
cat <<EOF >"$SERVICE_PATH"
[Unit]
Description=qbittorrent-exporter
After=network.target
[Service]
User=root
WorkingDirectory=/opt/qbittorrent-exporter
EnvironmentFile=$CONFIG_PATH
ExecStart=/opt/qbittorrent-exporter/qbittorrent-exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now qbittorrent-exporter
else
cat <<EOF >"$SERVICE_PATH"
#!/sbin/openrc-run
name="qbittorrent-exporter"
description="qBittorrent Exporter for Prometheus"
command="${INSTALL_PATH}/qbittorrent-exporter"
command_background=true
directory="/opt/qbittorrent-exporter"
pidfile="/run/\${RC_SVCNAME}.pid"
output_log="/var/log/qbittorrent-exporter.log"
error_log="/var/log/qbittorrent-exporter.log"
depend() {
need net
after firewall
}
start_pre() {
if [ -f "$CONFIG_PATH" ]; then
export \$(grep -v '^#' $CONFIG_PATH | xargs)
fi
}
EOF
chmod +x "$SERVICE_PATH"
$STD rc-update add qbittorrent-exporter default
$STD rc-service qbittorrent-exporter start
fi
msg_ok "Created and started service"
# Create update script
msg_info "Creating update script"
ensure_usr_local_bin_persist
cat <<'UPDATEEOF' >/usr/local/bin/update_qbittorrent-exporter
#!/usr/bin/env bash
# qbittorrent-exporter Update Script
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/qbittorrent-exporter.sh)"
UPDATEEOF
chmod +x /usr/local/bin/update_qbittorrent-exporter
msg_ok "Created update script (/usr/local/bin/update_qbittorrent-exporter)"
echo ""
msg_ok "qBittorrent-Exporter installed successfully"
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:8090/metrics${CL}"
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
}
# ==============================================================================
# MAIN
# ==============================================================================
header_info
ensure_usr_local_bin_persist
import_local_ip
# Handle type=update (called from update script)
if [[ "${type:-}" == "update" ]]; then
if [[ -d "$INSTALL_PATH" && -f "$INSTALL_PATH/qbittorrent-exporter" ]]; then
update
else
msg_error "qBittorrent-Exporter is not installed. Nothing to update."
exit 1
fi
exit 0
fi
# Check if already installed
if [[ -d "$INSTALL_PATH" && -f "$INSTALL_PATH/qbittorrent-exporter" ]]; then
msg_warn "qBittorrent-Exporter is already installed."
echo ""
echo -n "${TAB}Uninstall qBittorrent-Exporter? (y/N): "
read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
uninstall
exit 0
fi
echo -n "${TAB}Update qBittorrent-Exporter? (y/N): "
read -r update_prompt
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
update
exit 0
fi
msg_warn "No action selected. Exiting."
exit 0
fi
# Fresh installation
msg_warn "qBittorrent-Exporter is not installed."
echo ""
echo -e "${TAB}${INFO} This will install:"
echo -e "${TAB} - qBittorrent Exporter (Go binary)"
echo -e "${TAB} - Systemd/OpenRC service"
echo ""
echo -n "${TAB}Install qBittorrent-Exporter? (y/N): "
read -r install_prompt
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
install
else
msg_warn "Installation cancelled. Exiting."
exit 0
fi

View File

@ -1,6 +0,0 @@
__ _ __ __ __ __
____ _/ /_ (_) /_/ /_____ _____________ ____ / /_ ___ _ ______ ____ _____/ /____ _____
/ __ `/ __ \/ / __/ __/ __ \/ ___/ ___/ _ \/ __ \/ __/_____/ _ \| |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/
/ /_/ / /_/ / / /_/ /_/ /_/ / / / / / __/ / / / /_/_____/ __/> </ /_/ / /_/ / / / /_/ __/ /
\__, /_.___/_/\__/\__/\____/_/ /_/ \___/_/ /_/\__/ \___/_/|_/ .___/\____/_/ \__/\___/_/
/_/ /_/

View File

@ -50,12 +50,7 @@ function execute_in() {
container=$1 container=$1
name=$(pct exec "$container" hostname) name=$(pct exec "$container" hostname)
echo -e "${BL}[Info]${GN} Execute inside${BL} ${name}${GN} with output: ${CL}" echo -e "${BL}[Info]${GN} Execute inside${BL} ${name}${GN} with output: ${CL}"
if ! pct exec "$container" -- bash -c "command ${custom_command} >/dev/null 2>&1"
then
echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container has no command: ${custom_command}"
else
pct exec "$container" -- bash -c "${custom_command}" | tee pct exec "$container" -- bash -c "${custom_command}" | tee
fi
} }
for container in $(pct list | awk '{if(NR>1) print $1}'); do for container in $(pct list | awk '{if(NR>1) print $1}'); do