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
22 changed files with 264 additions and 637 deletions

View File

@ -10,59 +10,14 @@
> [!CAUTION]
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))
### 🧰 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
### 🚀 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))

View File

@ -34,8 +34,6 @@ function update_script() {
systemctl stop 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"
mv /opt/bar-assistant /opt/bar-assistant-backup
msg_ok "Backed up Bar Assistant"

View File

@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"

View File

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

View File

@ -35,11 +35,22 @@ function update_script() {
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
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"
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
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|^EnvironmentFile=.*|EnvironmentFile=-/opt/homarr.env|' /etc/systemd/system/homarr.service
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]')
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"
cp /opt/homarr/redis.conf /etc/redis/redis.conf

View File

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

View File

@ -23,7 +23,7 @@ function update_script() {
header_info
check_container_storage
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!"
exit
fi

View File

@ -27,43 +27,11 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if [ ! -d /var/cache/nginx/tiles ]; then
msg_info "Installing Nginx Tile Cache"
mkdir -p /var/cache/nginx/tiles
$STD apt install -y nginx
cat >> /etc/nginx/nginx.conf << 'EOF'
events {
worker_connections 1024;
}
http {
proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off;
server {
listen 80;
location / {
proxy_pass https://tile.openstreetmap.org/;
proxy_set_header Host tile.openstreetmap.org;
proxy_set_header User-Agent "Reitti/1.0";
proxy_cache tiles;
proxy_cache_valid 200 30d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
}
}
}
EOF
systemctl restart nginx
echo "reitti.ui.tiles.cache.url=http://127.0.0.1" >> /opt/reitti/application.properties
systemctl restart reitti
msg_info "Installed Nginx Tile Cache"
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop reitti
msg_ok "Stopped Service"
JAVA_VERSION="25" setup_java
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"
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
$STD tar zxvf /opt/DnsServerPortable.tar.gz -C /opt/technitium/dns/
rm -f /opt/DnsServerPortable.tar.gz
echo "${RELEASE}" >~/.technitium
systemctl restart technitium
msg_ok "Updated Technitium DNS"
msg_ok "Updated successfully!"
else

View File

@ -23,7 +23,7 @@
"ram": 1024,
"hdd": 5,
"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,219 +1,29 @@
[
{
"name": "scanopy/scanopy",
"version": "v0.12.5",
"date": "2025-12-20T22:40:12Z"
},
{
"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": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@16.0.30",
"date": "2025-12-20T10:47:00Z"
},
{
"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": "Jackett/Jackett",
"version": "v0.24.488",
"date": "2025-12-20T05:55:23Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-20T00:27:06Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"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": "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": "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": "fccview/jotty",
"version": "1.14.2",
"date": "2025-12-19T11:25:29Z"
},
{
"name": "readeck/readeck",
"version": "0.21.5",
"date": "2025-12-19T11:22:20Z"
},
{
"name": "release-argus/Argus",
"version": "0.28.3",
"date": "2025-12-19T11:05:10Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w51-4.14.2",
"date": "2025-12-15T12:34:36Z"
},
{
"name": "TuroYT/snowshare",
"version": "v1.2.5",
@ -229,11 +39,21 @@
"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": "BerriAI/litellm",
"version": "v1.80.10.rc.5",
"date": "2025-12-19T03:38:23Z"
},
{
"name": "javedh-dev/tracktor",
"version": "1.0.1",
@ -244,11 +64,26 @@
"version": "v3.8.0",
"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",
"version": "v1.19.5",
"date": "2025-09-27T20:59:46Z"
},
{
"name": "metabase/metabase",
"version": "v0.57.x",
"date": "2025-12-18T22:02:32Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.7",
@ -259,6 +94,11 @@
"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",
@ -279,21 +119,31 @@
"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": "YunoHost/yunohost",
"version": "debian/12.1.37",
"date": "2025-12-18T16:43:23Z"
},
{
"name": "ollama/ollama",
"version": "v0.13.5",
"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",
"version": "v2.20.3",
@ -304,6 +154,11 @@
"version": "n8n@1.123.7",
"date": "2025-12-17T14:01:25Z"
},
{
"name": "immich-app/immich",
"version": "v2.4.0",
"date": "2025-12-18T14:51:33Z"
},
{
"name": "docker/compose",
"version": "v5.0.1",
@ -344,11 +199,21 @@
"version": "v0.5.1",
"date": "2025-12-18T03:08:43Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.30.1",
"date": "2025-12-18T02:41:34Z"
},
{
"name": "goauthentik/authentik",
"version": "version/2025.10.3",
"date": "2025-12-16T18:00:53Z"
},
{
"name": "emqx/emqx",
"version": "6.1.0-alpha.2",
"date": "2025-12-17T20:15:23Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.8.0",
@ -364,6 +229,11 @@
"version": "v4.107.0",
"date": "2025-12-17T18:59:21Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.19",
"date": "2025-12-17T18:17:55Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.47",
@ -404,6 +274,21 @@
"version": "@jupyter-notebook/ui-components@7.6.0-alpha.0",
"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",
"version": "v1.0.16",
@ -414,6 +299,11 @@
"version": "v1.19.23",
"date": "2025-12-17T00:51:11Z"
},
{
"name": "esphome/esphome",
"version": "2025.12.0",
"date": "2025-12-16T23:57:23Z"
},
{
"name": "grafana/grafana",
"version": "v12.3.1",
@ -439,6 +329,11 @@
"version": "v4.6.2",
"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",
"version": "jenkins-2.542",
@ -544,6 +439,11 @@
"version": "2025.12.14",
"date": "2025-12-14T18:24:33Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0.M4",
"date": "2025-12-14T18:12:04Z"
},
{
"name": "blakeblackshear/frigate",
"version": "v0.14.1",
@ -554,6 +454,11 @@
"version": "v0.24.1",
"date": "2025-12-14T13:49:16Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.5.1",
"date": "2025-12-03T11:56:50Z"
},
{
"name": "C4illin/ConvertX",
"version": "v0.16.1",
@ -564,6 +469,11 @@
"version": "v5.0.87",
"date": "2025-12-14T08:35:11Z"
},
{
"name": "ghostfolio/ghostfolio",
"version": "2.223.0",
"date": "2025-12-14T08:16:54Z"
},
{
"name": "mayswind/AriaNg",
"version": "1.3.12",
@ -589,6 +499,11 @@
"version": "v2025-12-14",
"date": "2025-12-13T16:39:17Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.1.4-beta",
"date": "2025-12-13T15:59:06Z"
},
{
"name": "WGDashboard/WGDashboard",
"version": "v4.3.1",
@ -619,6 +534,21 @@
"version": "r7.0.27",
"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",
"version": "4.1.2",
@ -634,6 +564,11 @@
"version": "v2.2.0.102-2.2.0.102_canary_2025-12-12",
"date": "2025-12-12T12:03:15Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.4.3",
"date": "2025-12-12T11:35:00Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.3.7",
@ -654,6 +589,11 @@
"version": "0.43.1",
"date": "2025-12-11T22:45:52Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.24",
"date": "2025-12-11T09:54:59Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.13.2",
@ -689,6 +629,16 @@
"version": "2.2.15",
"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",
"version": "v25.11.6",
@ -729,6 +679,11 @@
"version": "v1.4.7",
"date": "2025-12-09T11:44:49Z"
},
{
"name": "Dispatcharr/Dispatcharr",
"version": "v0.14.0",
"date": "2025-12-09T00:04:09Z"
},
{
"name": "seerr-team/seerr",
"version": "preview-test-fix-subscriptions",
@ -849,6 +804,11 @@
"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",
"version": "11.0.4",
@ -864,6 +824,11 @@
"version": "6.2.10",
"date": "2025-12-03T13:58:32Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "henrygd/beszel",
"version": "v0.17.0",
@ -1029,6 +994,21 @@
"version": "2.610",
"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",
"version": "v5.6.1",
@ -1059,6 +1039,11 @@
"version": "2.44.0",
"date": "2025-11-20T11:01:01Z"
},
{
"name": "itsmng/itsm-ng",
"version": "v2.1.1",
"date": "2025-11-20T10:54:07Z"
},
{
"name": "Athou/commafeed",
"version": "5.12.0",
@ -1289,11 +1274,21 @@
"version": "v0.8.8.3",
"date": "2025-10-23T12:31:49Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.2",
"date": "2025-10-22T17:03:54Z"
},
{
"name": "benzino77/tasmocompiler",
"version": "v13.0.0",
"date": "2025-10-19T10:03:18Z"
},
{
"name": "ellite/Wallos",
"version": "v4.5.0",
"date": "2025-10-18T22:00:50Z"
},
{
"name": "minio/minio",
"version": "RELEASE.2025-10-15T17-29-55Z",
@ -1579,6 +1574,11 @@
"version": "2025-05-07-r1",
"date": "2025-05-07T12:18:42Z"
},
{
"name": "CyferShepard/Jellystat",
"version": "1.1.6",
"date": "2025-05-01T17:11:00Z"
},
{
"name": "dotnetfactory/fluid-calendar",
"version": "v1.4.0",

View File

@ -17,14 +17,14 @@ update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
redis-server \
nginx \
lsb-release \
libvips
redis-server \
nginx \
lsb-release \
libvips
#php-{ffi,opcache,redis,zip,pdo-sqlite,bcmath,pdo,curl,dom,fpm}
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
NODE_VERSION="22" setup_nodejs
fetch_and_deploy_gh_release "meilisearch" "meilisearch/meilisearch" "binary"
@ -41,14 +41,14 @@ msg_info "Configure MeiliSearch"
curl -fsSL https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml -o /etc/meilisearch.toml
MASTER_KEY=$(openssl rand -base64 12)
sed -i \
-e 's|^env =.*|env = "production"|' \
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \
-e 's|^http_addr =.*|http_addr = "127.0.0.1:7700"|' \
/etc/meilisearch.toml
-e 's|^env =.*|env = "production"|' \
-e "s|^# master_key =.*|master_key = \"$MASTER_KEY\"|" \
-e 's|^db_path =.*|db_path = "/var/lib/meilisearch/data"|' \
-e 's|^dump_dir =.*|dump_dir = "/var/lib/meilisearch/dumps"|' \
-e 's|^snapshot_dir =.*|snapshot_dir = "/var/lib/meilisearch/snapshots"|' \
-e 's|^# no_analytics = true|no_analytics = true|' \
-e 's|^http_addr =.*|http_addr = "127.0.0.1:7700"|' \
/etc/meilisearch.toml
msg_ok "Configured MeiliSearch"
msg_info "Creating MeiliSearch service"
@ -77,11 +77,11 @@ MeiliSearch_API_KEY=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorizat
MeiliSearch_API_KEY_UID=$(curl -s -X GET 'http://127.0.0.1:7700/keys' -H "Authorization: Bearer $MASTER_KEY" | grep -o '"uid":"[^"]*"' | head -n 1 | sed 's/"uid":"//;s/"//')
LOCAL_IP=$(hostname -I | awk '{print $1}')
sed -i -e "s|^APP_URL=|APP_URL=http://${LOCAL_IP}/bar/|" \
-e "s|^MEILISEARCH_HOST=|MEILISEARCH_HOST=http://127.0.0.1:7700|" \
-e "s|^MEILISEARCH_KEY=|MEILISEARCH_KEY=${MASTER_KEY}|" \
-e "s|^MEILISEARCH_API_KEY=|MEILISEARCH_API_KEY=${MeiliSearch_API_KEY}|" \
-e "s|^MEILISEARCH_API_KEY_UID=|MEILISEARCH_API_KEY_UID=${MeiliSearch_API_KEY_UID}|" \
/opt/bar-assistant/.env
-e "s|^MEILISEARCH_HOST=|MEILISEARCH_HOST=http://127.0.0.1:7700|" \
-e "s|^MEILISEARCH_KEY=|MEILISEARCH_KEY=${MASTER_KEY}|" \
-e "s|^MEILISEARCH_API_KEY=|MEILISEARCH_API_KEY=${MeiliSearch_API_KEY}|" \
-e "s|^MEILISEARCH_API_KEY_UID=|MEILISEARCH_API_KEY_UID=${MeiliSearch_API_KEY_UID}|" \
/opt/bar-assistant/.env
$STD composer install --no-interaction
$STD php artisan key:generate
touch storage/bar-assistant/database.ba3.sqlite

View File

@ -14,6 +14,7 @@ network_check
update_os
setup_hwaccel
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"

View File

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

View File

@ -18,14 +18,17 @@ $STD apt install -y \
redis-server \
nginx \
gettext \
openssl
openssl \
musl-dev
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]')
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"
# 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
touch /opt/homarr_db/db.sqlite
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
@ -62,8 +65,6 @@ ReadWritePaths=-/appdata/redis -/var/lib/redis -/var/log/redis -/var/run/redis -
EOF
cat <<EOF >/etc/systemd/system/homarr.service
[Unit]
Requires=redis-server.service
After=redis-server.service
Description=Homarr Service
After=network.target
@ -78,9 +79,8 @@ WantedBy=multi-user.target
EOF
chmod +x /opt/homarr/run.sh
systemctl daemon-reload
systemctl enable -q --now redis-server
systemctl enable -q --now redis-server && sleep 5
systemctl enable -q --now homarr
systemctl disable -q --now nginx
msg_ok "Created Services"
motd_ssh

View File

@ -296,7 +296,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR"
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)"

View File

@ -21,7 +21,7 @@ $STD apt install -y \
zstd
msg_ok "Installed Dependencies"
JAVA_VERSION="25" setup_java
JAVA_VERSION="24" setup_java
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
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 apt update
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
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
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | 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/^DBUser=.*/DBUser=$PG_DB_USER/" /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
# - On Proxmox host: calls install_script
# - In silent mode: runs update_script with automatic cleanup
# - Otherwise: shows update/setting menu and runs update_script with cleanup
# - In silent mode: runs update_script
# - Otherwise: shows update/setting menu
# ------------------------------------------------------------------------------
start() {
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
@ -2638,7 +2638,6 @@ start() {
VERBOSE="no"
set_std_mode
update_script
cleanup_lxc
else
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC Update/Setting" --menu \
"Support/Update functions for ${APP} LXC. Choose an option:" \
@ -2663,7 +2662,6 @@ start() {
;;
esac
update_script
cleanup_lxc
fi
}

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

@ -50,7 +50,7 @@ function execute_in() {
container=$1
name=$(pct exec "$container" hostname)
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
echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container has no command: ${custom_command}"
else