Compare commits

..

3 Commits

Author SHA1 Message Date
2a0b061c34 Merge branch 'refactor-cosmos-debian13' of https://github.com/community-scripts/ProxmoxVE into refactor-cosmos-debian13 2025-12-19 13:45:40 +01:00
908daaefee [Refactor] Cosmos: Upgrade to Debian 13 and modernize with tools.func
Major refactoring to fix mergerfs dependency issues and modernize the installation:

Changes in ct/cosmos.sh:
- Updated from Debian 12 to Debian 13 (Trixie)
- Fixed APP name capitalization: cosmos  Cosmos
- Improved tags formatting: os,docker  cloud;docker

Changes in install/cosmos-install.sh:
- Install mergerfs via apt (available in Debian 13 repos)
  * Automatically handles fuse dependencies
  * Removes need for manual .deb installation
  * No more hardcoded Bullseye package
- Added ca-certificates and openssl (per official Dockerfile)
- Replaced manual Docker installation with setup_docker helper
- Replaced manual GitHub release download with fetch_and_deploy_gh_release
  * Uses prebuild mode with cosmos-cloud-*-amd64.zip pattern
  * Automatic version detection and extraction
  * Proper error handling and retry logic
- Standardized apt-get  apt usage
- Added unzip to dependencies (required by fetch_and_deploy_gh_release)

Benefits:
- Fixes mergerfs dependency errors (issue #TMD44)
- More maintainable (uses helper functions instead of manual curl/unzip)
- Better error handling and version tracking
- Automatic architecture detection via apt
- Matches official Cosmos Dockerfile dependency list
- Future-proof for Debian version changes

Fixes dependency issues where mergerfs failed to install due to missing fuse
package. In Debian 13, mergerfs is available via apt and properly declares its
dependencies, so apt handles everything automatically.
2025-12-19 13:45:26 +01:00
38a2fec5d3 [Refactor] Cosmos: Upgrade to Debian 13 and modernize with tools.func
Major refactoring to fix mergerfs dependency issues and modernize the installation:

Changes in ct/cosmos.sh:
- Updated from Debian 12 to Debian 13 (Trixie)
- Fixed APP name capitalization: cosmos  Cosmos
- Improved tags formatting: os,docker  cloud;docker

Changes in install/cosmos-install.sh:
- Install mergerfs via apt (available in Debian 13 repos)
  * Automatically handles fuse dependencies
  * Removes need for manual .deb installation
  * No more hardcoded Bullseye package
- Added ca-certificates and openssl (per official Dockerfile)
- Replaced manual Docker installation with setup_docker helper
- Replaced manual GitHub release download with fetch_and_deploy_gh_release
  * Uses prebuild mode with cosmos-cloud-*-amd64.zip pattern
  * Automatic version detection and extraction
  * Proper error handling and retry logic
- Standardized apt-get  apt usage
- Added unzip to dependencies (required by fetch_and_deploy_gh_release)

Benefits:
- Fixes mergerfs dependency errors (issue #TMD44)
- More maintainable (uses helper functions instead of manual curl/unzip)
- Better error handling and version tracking
- Automatic architecture detection via apt
- Matches official Cosmos Dockerfile dependency list
- Future-proof for Debian version changes

Fixes dependency issues where mergerfs failed to install due to missing fuse
package. In Debian 13, mergerfs is available via apt and properly declares its
dependencies, so apt handles everything automatically.
2025-12-19 13:43:16 +01:00
26 changed files with 312 additions and 679 deletions

View File

@ -10,63 +10,14 @@
> [!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-21
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Typo fix in Heimdall install script [@Turcid-uwu](https://github.com/Turcid-uwu) ([#10187](https://github.com/community-scripts/ProxmoxVE/pull/10187))
- #### 🔧 Refactor
- Refactor: Backrest [@tremor021](https://github.com/tremor021) ([#10193](https://github.com/community-scripts/ProxmoxVE/pull/10193))
### 🧰 Tools
- pihole-exporter ([#10091](https://github.com/community-scripts/ProxmoxVE/pull/10091))
## 2025-12-20
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Update Technitium DNS and Restart Service [@DrEVILish](https://github.com/DrEVILish) ([#10181](https://github.com/community-scripts/ProxmoxVE/pull/10181))
- bump: ersatztv: deb13 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10174](https://github.com/community-scripts/ProxmoxVE/pull/10174))
## 2025-12-19 ## 2025-12-19
### 🚀 Updated Scripts ### 🚀 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
- 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)) - 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 ### ❔ Uncategorized
- Update paymenter.json(#10133) [@DragoQC](https://github.com/DragoQC) ([#10134](https://github.com/community-scripts/ProxmoxVE/pull/10134)) - Update paymenter.json(#10133) [@DragoQC](https://github.com/DragoQC) ([#10134](https://github.com/community-scripts/ProxmoxVE/pull/10134))

View File

@ -27,18 +27,28 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if check_for_gh_release "backrest" "garethgeorge/backrest"; then if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop backrest systemctl stop backrest
msg_ok "Stopped Service" msg_ok "Stopped Service"
fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_x86_64.tar.gz" msg_info "Updating ${APP} to ${RELEASE}"
temp_file=$(mktemp)
rm -f /opt/backrest/bin/backrest
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
tar xzf $temp_file -C /opt/backrest/bin
chmod +x /opt/backrest/bin/backrest
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to ${RELEASE}"
msg_info "Starting Service" msg_info "Starting Service"
systemctl start backrest systemctl start backrest
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

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

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}" var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-5}"
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_gpu="${var_gpu:-yes}" var_gpu="${var_gpu:-yes}"

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

@ -108,7 +108,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.4.0"
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

@ -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

@ -47,8 +47,6 @@ function update_script() {
curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz curl -fsSL "https://download.technitium.com/dns/DnsServerPortable.tar.gz" -o /opt/DnsServerPortable.tar.gz
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/ $STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
rm -f /opt/DnsServerPortable.tar.gz rm -f /opt/DnsServerPortable.tar.gz
echo "${RELEASE}" >~/.technitium
systemctl restart technitium
msg_ok "Updated Technitium DNS" msg_ok "Updated Technitium DNS"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else else

View File

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

View File

@ -1,46 +0,0 @@
{
"name": "Pi-Hole Exporter",
"slug": "pihole-exporter",
"categories": [
9
],
"date_created": "2025-12-21",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": 9617,
"documentation": "https://github.com/eko/pihole-exporter",
"website": "https://github.com/eko/pihole-exporter",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/pi-hole.webp",
"config_path": "/opt/pihole-exporter.env",
"description": "A Prometheus exporter for PI-Hole's Raspberry PI ad blocker",
"install_methods": [
{
"type": "default",
"script": "tools/addon/pihole-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
},
{
"type": "alpine",
"script": "tools/addon/pihole-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@ -1,239 +1,29 @@
[ [
{
"name": "msgbyte/tianji",
"version": "v1.30.24",
"date": "2025-12-21T10:26:35Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.35.0",
"date": "2025-12-21T07:44:15Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.498",
"date": "2025-12-21T05:55:52Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.5",
"date": "2025-12-21T05:36:12Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@16.3.2",
"date": "2025-12-21T05:23:55Z"
},
{
"name": "dedicatedcode/reitti",
"version": "v3.0.1",
"date": "2025-12-21T04:35:21Z"
},
{
"name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.8.2",
"date": "2025-12-21T03:53:53Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-21T00:27:04Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.4.4",
"date": "2025-12-20T22:12:02Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.2.0-experimental-sql-indexing-v3",
"date": "2025-12-20T21:57:53Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0.RC2",
"date": "2025-12-20T20:17:29Z"
},
{
"name": "CyferShepard/Jellystat",
"version": "1.1.7",
"date": "2025-12-20T17:13:34Z"
},
{
"name": "ghostfolio/ghostfolio",
"version": "2.224.2",
"date": "2025-12-20T16:39:52Z"
},
{
"name": "ellite/Wallos",
"version": "v4.6.0",
"date": "2025-12-20T15:57:51Z"
},
{
"name": "TechnitiumSoftware/DnsServer",
"version": "v14.3.0",
"date": "2025-12-20T13:16:37Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.9.1",
"date": "2025-12-20T09:14:25Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.25",
"date": "2025-12-20T09:11:49Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.15.0",
"date": "2025-12-20T00:12:04Z"
},
{
"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": "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": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{
"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": "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": "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": "readeck/readeck",
"version": "0.21.5",
"date": "2025-12-19T11:51:05Z"
},
{ {
"name": "forgejo/forgejo", "name": "forgejo/forgejo",
"version": "v15.0.0-dev", "version": "v15.0.0-dev",
"date": "2025-12-19T11:43:47Z" "date": "2025-12-19T11:43:47Z"
}, },
{ {
"name": "meilisearch/meilisearch", "name": "fccview/jotty",
"version": "prototype-v1.30.1-rebuild-hannoy-graph.1", "version": "1.14.2",
"date": "2025-12-19T11:14:05Z" "date": "2025-12-19T11:25:29Z"
},
{
"name": "readeck/readeck",
"version": "0.21.5",
"date": "2025-12-19T11:22:20Z"
}, },
{ {
"name": "release-argus/Argus", "name": "release-argus/Argus",
"version": "0.28.3", "version": "0.28.3",
"date": "2025-12-19T11:05:10Z" "date": "2025-12-19T11:05:10Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w51-4.14.2",
"date": "2025-12-15T12:34:36Z"
},
{ {
"name": "TuroYT/snowshare", "name": "TuroYT/snowshare",
"version": "v1.2.5", "version": "v1.2.5",
@ -244,11 +34,26 @@
"version": "v11.1.2", "version": "v11.1.2",
"date": "2025-12-17T09:26:24Z" "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", "name": "jhuckaby/Cronicle",
"version": "v0.9.102", "version": "v0.9.102",
"date": "2025-12-19T03:45:13Z" "date": "2025-12-19T03:45:13Z"
}, },
{
"name": "BerriAI/litellm",
"version": "v1.80.10.rc.5",
"date": "2025-12-19T03:38:23Z"
},
{ {
"name": "javedh-dev/tracktor", "name": "javedh-dev/tracktor",
"version": "1.0.1", "version": "1.0.1",
@ -257,13 +62,28 @@
{ {
"name": "mealie-recipes/mealie", "name": "mealie-recipes/mealie",
"version": "v3.8.0", "version": "v3.8.0",
"date": "2025-12-19T01:37:04Z" "date": "2025-12-19T01:37:16Z"
},
{
"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", "name": "moghtech/komodo",
"version": "v1.19.5", "version": "v1.19.5",
"date": "2025-09-27T20:59:46Z" "date": "2025-09-27T20:59:46Z"
}, },
{
"name": "metabase/metabase",
"version": "v0.57.x",
"date": "2025-12-18T22:02:32Z"
},
{ {
"name": "chrisbenincasa/tunarr", "name": "chrisbenincasa/tunarr",
"version": "v1.0.7", "version": "v1.0.7",
@ -274,6 +94,11 @@
"version": "v2.1.5", "version": "v2.1.5",
"date": "2025-12-18T20:48:01Z" "date": "2025-12-18T20:48:01Z"
}, },
{
"name": "scanopy/scanopy",
"version": "v0.12.4",
"date": "2025-12-18T19:25:47Z"
},
{ {
"name": "rcourtman/Pulse", "name": "rcourtman/Pulse",
"version": "v4.36.2", "version": "v4.36.2",
@ -295,15 +120,30 @@
"date": "2025-12-18T18:06:05Z" "date": "2025-12-18T18:06:05Z"
}, },
{ {
"name": "neo4j/neo4j", "name": "msgbyte/tianji",
"version": "2025.11.2", "version": "v1.30.23",
"date": "2025-12-18T17:08:34Z" "date": "2025-12-18T16:55:01Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.37",
"date": "2025-12-18T16:43:23Z"
}, },
{ {
"name": "ollama/ollama", "name": "ollama/ollama",
"version": "v0.13.5", "version": "v0.13.5",
"date": "2025-12-18T16:39:08Z" "date": "2025-12-18T16:39:08Z"
}, },
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-12-18T16:38:45Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{ {
"name": "paperless-ngx/paperless-ngx", "name": "paperless-ngx/paperless-ngx",
"version": "v2.20.3", "version": "v2.20.3",
@ -314,6 +154,11 @@
"version": "n8n@1.123.7", "version": "n8n@1.123.7",
"date": "2025-12-17T14:01:25Z" "date": "2025-12-17T14:01:25Z"
}, },
{
"name": "immich-app/immich",
"version": "v2.4.0",
"date": "2025-12-18T14:51:33Z"
},
{ {
"name": "docker/compose", "name": "docker/compose",
"version": "v5.0.1", "version": "v5.0.1",
@ -354,11 +199,21 @@
"version": "v0.5.1", "version": "v0.5.1",
"date": "2025-12-18T03:08:43Z" "date": "2025-12-18T03:08:43Z"
}, },
{
"name": "openobserve/openobserve",
"version": "v0.30.1",
"date": "2025-12-18T02:41: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": "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",
@ -374,6 +229,11 @@
"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": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
"version": "v2.16.47", "version": "v2.16.47",
@ -414,6 +274,21 @@
"version": "@jupyter-notebook/ui-components@7.6.0-alpha.0", "version": "@jupyter-notebook/ui-components@7.6.0-alpha.0",
"date": "2025-12-17T08:35:55Z" "date": "2025-12-17T08:35:55Z"
}, },
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.9.0",
"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",
@ -424,6 +299,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",
@ -449,6 +329,11 @@
"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",
@ -554,6 +439,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",
@ -564,6 +454,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",
@ -574,6 +469,11 @@
"version": "v5.0.87", "version": "v5.0.87",
"date": "2025-12-14T08:35:11Z" "date": "2025-12-14T08:35:11Z"
}, },
{
"name": "ghostfolio/ghostfolio",
"version": "2.223.0",
"date": "2025-12-14T08:16:54Z"
},
{ {
"name": "mayswind/AriaNg", "name": "mayswind/AriaNg",
"version": "1.3.12", "version": "1.3.12",
@ -599,6 +499,11 @@
"version": "v2025-12-14", "version": "v2025-12-14",
"date": "2025-12-13T16:39:17Z" "date": "2025-12-13T16:39:17Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.1.4-beta",
"date": "2025-12-13T15:59:06Z"
},
{ {
"name": "WGDashboard/WGDashboard", "name": "WGDashboard/WGDashboard",
"version": "v4.3.1", "version": "v4.3.1",
@ -629,6 +534,21 @@
"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",
@ -644,6 +564,11 @@
"version": "v2.2.0.102-2.2.0.102_canary_2025-12-12", "version": "v2.2.0.102-2.2.0.102_canary_2025-12-12",
"date": "2025-12-12T12:03:15Z" "date": "2025-12-12T12:03:15Z"
}, },
{
"name": "Luligu/matterbridge",
"version": "3.4.3",
"date": "2025-12-12T11:35:00Z"
},
{ {
"name": "grokability/snipe-it", "name": "grokability/snipe-it",
"version": "v8.3.7", "version": "v8.3.7",
@ -664,6 +589,11 @@
"version": "0.43.1", "version": "0.43.1",
"date": "2025-12-11T22:45:52Z" "date": "2025-12-11T22:45:52Z"
}, },
{
"name": "pommee/goaway",
"version": "v0.62.24",
"date": "2025-12-11T09:54:59Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"version": "v2.13.2", "version": "v2.13.2",
@ -699,6 +629,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",
@ -739,6 +679,11 @@
"version": "v1.4.7", "version": "v1.4.7",
"date": "2025-12-09T11:44:49Z" "date": "2025-12-09T11:44:49Z"
}, },
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.14.0",
"date": "2025-12-09T00:04:09Z"
},
{ {
"name": "seerr-team/seerr", "name": "seerr-team/seerr",
"version": "preview-test-fix-subscriptions", "version": "preview-test-fix-subscriptions",
@ -854,6 +799,16 @@
"version": "v1.7.4", "version": "v1.7.4",
"date": "2025-12-04T13:56:39Z" "date": "2025-12-04T13:56:39Z"
}, },
{
"name": "pocketbase/pocketbase",
"version": "v0.34.2",
"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",
@ -869,6 +824,11 @@
"version": "6.2.10", "version": "6.2.10",
"date": "2025-12-03T13:58:32Z" "date": "2025-12-03T13:58:32Z"
}, },
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{ {
"name": "henrygd/beszel", "name": "henrygd/beszel",
"version": "v0.17.0", "version": "v0.17.0",
@ -1034,6 +994,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": "TechnitiumSoftware/DnsServer",
"version": "v14.2.0",
"date": "2025-11-22T12:54:08Z"
},
{ {
"name": "Bubka/2FAuth", "name": "Bubka/2FAuth",
"version": "v5.6.1", "version": "v5.6.1",
@ -1064,6 +1039,11 @@
"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",
@ -1294,11 +1274,21 @@
"version": "v0.8.8.3", "version": "v0.8.8.3",
"date": "2025-10-23T12:31:49Z" "date": "2025-10-23T12:31:49Z"
}, },
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{ {
"name": "benzino77/tasmocompiler", "name": "benzino77/tasmocompiler",
"version": "v13.0.0", "version": "v13.0.0",
"date": "2025-10-19T10:03:18Z" "date": "2025-10-19T10:03:18Z"
}, },
{
"name": "ellite/Wallos",
"version": "v4.5.0",
"date": "2025-10-18T22:00:50Z"
},
{ {
"name": "minio/minio", "name": "minio/minio",
"version": "RELEASE.2025-10-15T17-29-55Z", "version": "RELEASE.2025-10-15T17-29-55Z",
@ -1409,6 +1399,11 @@
"version": "v2.7.6", "version": "v2.7.6",
"date": "2025-09-15T15:50:44Z" "date": "2025-09-15T15:50:44Z"
}, },
{
"name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.8.1",
"date": "2025-09-14T06:45:23Z"
},
{ {
"name": "ThePhaseless/Byparr", "name": "ThePhaseless/Byparr",
"version": "v2.0.1", "version": "v2.0.1",
@ -1579,6 +1574,11 @@
"version": "2025-05-07-r1", "version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z" "date": "2025-05-07T12:18:42Z"
}, },
{
"name": "CyferShepard/Jellystat",
"version": "1.1.6",
"date": "2025-05-01T17:11:00Z"
},
{ {
"name": "dotnetfactory/fluid-calendar", "name": "dotnetfactory/fluid-calendar",
"version": "v1.4.0", "version": "v1.4.0",

View File

@ -13,7 +13,16 @@ setting_up_container
network_check network_check
update_os update_os
fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_x86_64.tar.gz" msg_info "Installing Backrest"
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
temp_file=$(mktemp)
mkdir -p /opt/backrest/{bin,config,data}
curl -fsSL "https://github.com/garethgeorge/backrest/releases/download/v${RELEASE}/backrest_Linux_x86_64.tar.gz" -o "$temp_file"
tar xzf $temp_file -C /opt/backrest/bin
chmod +x /opt/backrest/bin/backrest
rm -f "$temp_file"
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
msg_ok "Installed Backrest"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/backrest.service cat <<EOF >/etc/systemd/system/backrest.service
@ -23,6 +32,7 @@ After=network.target
[Service] [Service]
Type=simple Type=simple
User=root
ExecStart=/opt/backrest/bin/backrest ExecStart=/opt/backrest/bin/backrest
Environment="BACKREST_PORT=9898" Environment="BACKREST_PORT=9898"
Environment="BACKREST_CONFIG=/opt/backrest/config/config.json" Environment="BACKREST_CONFIG=/opt/backrest/config/config.json"
@ -38,3 +48,4 @@ msg_ok "Created Service"
motd_ssh motd_ssh
customize customize
cleanup_lxc cleanup_lxc

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,6 +14,7 @@ network_check
update_os update_os
setup_hwaccel setup_hwaccel
fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz" fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz"
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"

View File

@ -43,7 +43,7 @@ ExecStart=/usr/bin/php artisan serve --port 7990 --host 0.0.0.0
TimeoutStopSec=30 TimeoutStopSec=30
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target"
EOF EOF
systemctl enable -q --now heimdall systemctl enable -q --now heimdall
cd /opt/Heimdall cd /opt/Heimdall

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

@ -296,7 +296,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.4.0" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (patience)" msg_info "Installing ${APPLICATION} (patience)"

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

@ -2734,46 +2734,11 @@ EOF
return 1 return 1
} }
# For AMD GPUs, firmware-amd-graphics is needed but requires non-free repositories # AMD firmware for better GPU support
if [[ "$os_id" == "debian" ]]; then if [[ "$os_id" == "debian" ]]; then
# Add non-free-firmware repository if not already present $STD apt -y install firmware-amd-graphics 2>/dev/null || true
if [[ ! -f /etc/apt/sources.list.d/non-free-firmware.sources ]]; then
if [[ "$os_codename" == "bookworm" ]]; then
cat <<EOF >/etc/apt/sources.list.d/non-free-firmware.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates
Components: non-free-firmware
Types: deb
URIs: http://deb.debian.org/debian-security
Suites: bookworm-security
Components: non-free-firmware
EOF
elif [[ "$os_codename" == "trixie" || "$os_codename" == "sid" ]]; then
cat <<EOF >/etc/apt/sources.list.d/non-free-firmware.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: non-free-firmware
Types: deb
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: non-free-firmware
EOF
fi
$STD apt update
fi
# Now install AMD firmware and libdrm
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics 2>/dev/null || {
msg_warn "Failed to install AMD firmware - may need manual installation"
}
else
# For non-Debian (Ubuntu, etc), try to install without adding repos
$STD apt -y install libdrm-amdgpu1 firmware-amd-graphics 2>/dev/null || true
fi fi
$STD apt -y install libdrm-amdgpu1 2>/dev/null || true
;; ;;
NVIDIA) NVIDIA)

View File

@ -1,249 +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/eko/pihole-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="pihole-exporter"
APP_TYPE="tools"
INSTALL_PATH="/opt/pihole-exporter"
CONFIG_PATH="/opt/pihole-exporter.env"
header_info
ensure_usr_local_bin_persist
get_current_ip &>/dev/null
# ==============================================================================
# OS DETECTION
# ==============================================================================
if [[ -f "/etc/alpine-release" ]]; then
OS="Alpine"
SERVICE_PATH="/etc/init.d/pihole-exporter"
elif grep -qE 'ID=debian|ID=ubuntu' /etc/os-release; then
OS="Debian"
SERVICE_PATH="/etc/systemd/system/pihole-exporter.service"
else
echo -e "${CROSS} Unsupported OS detected. Exiting."
exit 1
fi
# ==============================================================================
# UNINSTALL
# ==============================================================================
function uninstall() {
msg_info "Uninstalling Pihole-Exporter"
if [[ "$OS" == "Alpine" ]]; then
rc-service pihole-exporter stop &>/dev/null
rc-update del pihole-exporter &>/dev/null
rm -f "$SERVICE_PATH"
else
systemctl disable -q --now pihole-exporter
rm -f "$SERVICE_PATH"
fi
rm -rf "$INSTALL_PATH" "$CONFIG_PATH"
rm -f "/usr/local/bin/update_pihole-exporter"
rm -f "$HOME/.pihole-exporter"
msg_ok "Pihole-Exporter has been uninstalled"
}
# ==============================================================================
# UPDATE
# ==============================================================================
function update() {
if check_for_gh_release "pihole-exporter" "eko/pihole-exporter"; then
msg_info "Stopping service"
if [[ "$OS" == "Alpine" ]]; then
rc-service pihole-exporter stop &>/dev/null
else
systemctl stop pihole-exporter
fi
msg_ok "Stopped service"
fetch_and_deploy_gh_release "pihole-exporter" "eko/pihole-exporter" "tarball" "latest"
setup_go
msg_info "Building Pihole-Exporter"
cd /opt/pihole-exporter/
$STD /usr/local/bin/go build -o ./pihole-exporter
msg_ok "Built Pihole-Exporter"
msg_info "Starting service"
if [[ "$OS" == "Alpine" ]]; then
rc-service pihole-exporter start &>/dev/null
else
systemctl start pihole-exporter
fi
msg_ok "Started service"
msg_ok "Updated successfully"
exit
fi
}
# ==============================================================================
# INSTALL
# ==============================================================================
function install() {
read -erp "Enter the protocol to use (http/https), default https: " pihole_PROTOCOL
read -erp "Enter the hostname of Pihole, example: (127.0.0.1): " pihole_HOSTNAME
read -erp "Enter the port of Pihole, default 443: " pihole_PORT
read -rsp "Enter Pihole password: " pihole_PASSWORD
printf "\n"
read -erp "Do you want to skip TLS-Verification (if using a self-signed Certificate on Pi-Hole) [y/N]: " SKIP_TLS
if [[ "${SKIP_TLS,,}" =~ ^(y|yes)$ ]]; then
pihole_SKIP_TLS="true"
fi
fetch_and_deploy_gh_release "pihole-exporter" "eko/pihole-exporter" "tarball" "latest"
setup_go
msg_info "Building Pihole-Exporter on ${OS}"
cd /opt/pihole-exporter/
$STD /usr/local/bin/go build -o ./pihole-exporter
msg_ok "Built Pihole-Exporter"
msg_info "Creating configuration"
cat <<EOF >"$CONFIG_PATH"
# https://github.com/eko/pihole-exporter/?tab=readme-ov-file#available-cli-options
PIHOLE_PASSWORD="${pihole_PASSWORD}"
PIHOLE_HOSTNAME="${pihole_HOSTNAME:-127.0.0.1}"
PIHOLE_PORT="${pihole_PORT:-443}"
SKIP_TLS_VERIFICATION="${pihole_SKIP_TLS:-false}"
PIHOLE_PROTOCOL="${pihole_PROTOCOL:-https}"
EOF
msg_ok "Created configuration"
msg_info "Creating service"
if [[ "$OS" == "Debian" ]]; then
cat <<EOF >"$SERVICE_PATH"
[Unit]
Description=pihole-exporter
After=network.target
[Service]
User=root
WorkingDirectory=/opt/pihole-exporter
EnvironmentFile=$CONFIG_PATH
ExecStart=/opt/pihole-exporter/pihole-exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now pihole-exporter
else
cat <<EOF >"$SERVICE_PATH"
#!/sbin/openrc-run
name="pihole-exporter"
description="Pi-hole Exporter for Prometheus"
command="${INSTALL_PATH}/pihole-exporter"
command_background=true
directory="/opt/pihole-exporter"
pidfile="/run/\${RC_SVCNAME}.pid"
output_log="/var/log/pihole-exporter.log"
error_log="/var/log/pihole-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 pihole-exporter default
$STD rc-service pihole-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_pihole-exporter
#!/usr/bin/env bash
# pihole-exporter Update Script
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/pihole-exporter.sh)"
UPDATEEOF
chmod +x /usr/local/bin/update_pihole-exporter
msg_ok "Created update script (/usr/local/bin/update_pihole-exporter)"
echo ""
msg_ok "Pihole-Exporter installed successfully"
msg_ok "Metrics: ${BL}http://${CURRENT_IP}:9617/metrics${CL}"
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
}
# ==============================================================================
# MAIN
# ==============================================================================
header_info
ensure_usr_local_bin_persist
get_current_ip &>/dev/null
# Handle type=update (called from update script)
if [[ "${type:-}" == "update" ]]; then
if [[ -d "$INSTALL_PATH" && -f "$INSTALL_PATH/pihole-exporter" ]]; then
update
else
msg_error "Pihole-Exporter is not installed. Nothing to update."
exit 1
fi
exit 0
fi
# Check if already installed
if [[ -d "$INSTALL_PATH" && -f "$INSTALL_PATH/pihole-exporter" ]]; then
msg_warn "Pihole-Exporter is already installed."
echo ""
echo -n "${TAB}Uninstall Pihole-Exporter? (y/N): "
read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
uninstall
exit 0
fi
echo -n "${TAB}Update Pihole-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 "Pihole-Exporter is not installed."
echo ""
echo -e "${TAB}${INFO} This will install:"
echo -e "${TAB} - Pi-hole Exporter (Go binary)"
echo -e "${TAB} - Systemd/OpenRC service"
echo ""
echo -n "${TAB}Install Pihole-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,7 +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" if ! pct exec "$container" -- bash -c "command -v ${custom_command} >/dev/null 2>&1"
then then
echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container has no command: ${custom_command}" echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container has no command: ${custom_command}"
else else