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
33 changed files with 361 additions and 818 deletions

View File

@ -10,77 +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-22
## 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))
- #### ✨ New Features
- recyclarr: add default daily cron job for recyclarr sync [@MickLesk](https://github.com/MickLesk) ([#10208](https://github.com/community-scripts/ProxmoxVE/pull/10208))
- #### 🔧 Refactor
- Optimize Jotty installation with standalone mode [@MickLesk](https://github.com/MickLesk) ([#10207](https://github.com/community-scripts/ProxmoxVE/pull/10207))
- unifi: remove mongodb 4.4 support | bump to java 21 [@MickLesk](https://github.com/MickLesk) ([#10206](https://github.com/community-scripts/ProxmoxVE/pull/10206))
- Refactor: Backrest [@tremor021](https://github.com/tremor021) ([#10193](https://github.com/community-scripts/ProxmoxVE/pull/10193))
### 💾 Core
- #### ✨ New Features
- Fix AMD GPU firmware installation by adding non-free repositories [@MickLesk](https://github.com/MickLesk) ([#10205](https://github.com/community-scripts/ProxmoxVE/pull/10205))
### 🧰 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

@ -27,18 +27,28 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "backrest" "garethgeorge/backrest"; then
RELEASE=$(curl -fsSL https://api.github.com/repos/garethgeorge/backrest/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop backrest
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"
systemctl start backrest
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi
exit
}

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

@ -48,17 +48,6 @@ function update_script() {
$STD yarn --frozen-lockfile
$STD yarn next telemetry disable
$STD yarn build
[ -d "public" ] && cp -r public .next/standalone/
[ -d "howto" ] && cp -r howto .next/standalone/
mkdir -p .next/standalone/.next
cp -r .next/static .next/standalone/.next/
mv .next/standalone /tmp/jotty_standalone
rm -rf * .next .git .gitignore .yarn
mv /tmp/jotty_standalone/* .
mv /tmp/jotty_standalone/.[!.]* . 2>/dev/null || true
rm -rf /tmp/jotty_standalone
msg_ok "Updated jotty"
msg_info "Restoring configuration & data"
@ -66,24 +55,6 @@ function update_script() {
$STD tar -xf /opt/data_config.tar
msg_ok "Restored configuration & data"
msg_info "Updating Service"
cat <<EOF >/etc/systemd/system/jotty.service
[Unit]
Description=jotty server
After=network.target
[Service]
WorkingDirectory=/opt/jotty
EnvironmentFile=/opt/jotty/.env
ExecStart=/usr/bin/node server.js
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
msg_ok "Updated Service"
msg_info "Starting Service"
systemctl start jotty
msg_ok "Started Service"

View File

@ -41,7 +41,6 @@ function update_script() {
fetch_and_deploy_gh_release "kometa" "Kometa-Team/Kometa"
msg_info "Updating Kometa"
cd /opt/kometa
$STD uv pip install -r requirements.txt --system
mkdir -p config/assets
cp /opt/config.yml config/config.yml

View File

@ -32,8 +32,6 @@ function update_script() {
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
@ -67,4 +65,4 @@ description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

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

@ -28,8 +28,6 @@ function update_script() {
exit
fi
JAVA_VERSION="21" setup_java
msg_info "Updating ${APP}"
$STD apt update --allow-releaseinfo-change
$STD apt install -y unifi

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

@ -31,14 +31,5 @@
"username": null,
"password": null
},
"notes": [
{
"type": "warning",
"content": "Configure your Radarr/Sonarr instances in `/root/.config/recyclarr/recyclarr.yml` before the first sync."
},
{
"type": "info",
"content": "Automatic daily sync is configured via `/etc/cron.d/recyclarr`. Sync logs are saved to `/root/.config/recyclarr/sync.log`."
}
]
"notes": []
}

View File

@ -1,274 +1,29 @@
[
{
"name": "advplyr/audiobookshelf",
"version": "v2.32.0",
"date": "2025-12-21T22:27:29Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.42",
"date": "2025-12-21T21:09:09Z"
},
{
"name": "project-zot/zot",
"version": "v2.1.12",
"date": "2025-12-21T20:45:14Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0.RC3",
"date": "2025-12-21T20:04:16Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.11.0",
"date": "2025-12-21T19:58:49Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.5",
"date": "2025-12-21T19:24:42Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.7.1",
"date": "2025-12-21T17:06:17Z"
},
{
"name": "ventoy/Ventoy",
"version": "v1.1.10",
"date": "2025-12-21T13:13:01Z"
},
{
"name": "jason5ng32/MyIP",
"version": "v5.1.1",
"date": "2025-12-21T12:59:32Z"
},
{
"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": "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": "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",
"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",
@ -279,26 +34,56 @@
"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": "BerriAI/litellm",
"version": "v1.80.10.rc.5",
"date": "2025-12-19T03:38:23Z"
},
{
"name": "javedh-dev/tracktor",
"version": "1.0.2",
"date": "2025-12-19T02:43:42Z"
"version": "1.0.1",
"date": "2025-12-17T23:14:39Z"
},
{
"name": "mealie-recipes/mealie",
"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",
"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",
@ -309,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",
@ -330,15 +120,30 @@
"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",
@ -349,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",
@ -389,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",
@ -409,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",
@ -449,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",
@ -459,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",
@ -484,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",
@ -589,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",
@ -599,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",
@ -609,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",
@ -634,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",
@ -664,16 +534,41 @@
"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",
"date": "2025-12-03T16:12:05Z"
},
{
"name": "ventoy/Ventoy",
"version": "v1.1.09",
"date": "2025-12-12T13:06:36Z"
},
{
"name": "duplicati/duplicati",
"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",
@ -694,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",
@ -729,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",
@ -769,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",
@ -794,6 +709,11 @@
"version": "2.2.1",
"date": "2025-12-08T12:01:34Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.10.0",
"date": "2025-12-07T23:41:51Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v2.3.0",
@ -879,6 +799,16 @@
"version": "v1.7.4",
"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",
"version": "11.0.4",
@ -894,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",
@ -904,6 +839,11 @@
"version": "10.1.50",
"date": "2025-12-02T22:59:59Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.41",
"date": "2025-12-02T22:28:58Z"
},
{
"name": "WordPress/WordPress",
"version": "6.9",
@ -919,6 +859,11 @@
"version": "v2.0.12",
"date": "2025-12-02T08:11:24Z"
},
{
"name": "advplyr/audiobookshelf",
"version": "v2.31.0",
"date": "2025-12-01T23:49:11Z"
},
{
"name": "OliveTin/OliveTin",
"version": "3000.7.0",
@ -1049,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",
@ -1069,11 +1029,21 @@
"version": "v4.3.2",
"date": "2025-10-18T12:11:00Z"
},
{
"name": "project-zot/zot",
"version": "v2.1.11",
"date": "2025-11-20T20:14:44Z"
},
{
"name": "kimai/kimai",
"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",
@ -1164,6 +1134,11 @@
"version": "v1.0.25",
"date": "2025-11-12T16:57:54Z"
},
{
"name": "jason5ng32/MyIP",
"version": "v5.1.0",
"date": "2025-11-12T10:44:24Z"
},
{
"name": "CrazyWolf13/web-check",
"version": "1.1.0",
@ -1299,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",
@ -1414,6 +1399,11 @@
"version": "v2.7.6",
"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",
"version": "v2.0.1",
@ -1449,6 +1439,11 @@
"version": "v2.1.0",
"date": "2025-08-29T12:56:13Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.7.0",
"date": "2025-08-28T18:10:59Z"
},
{
"name": "plexguide/Huntarr.io",
"version": "8.2.10",
@ -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

@ -13,7 +13,16 @@ setting_up_container
network_check
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"
cat <<EOF >/etc/systemd/system/backrest.service
@ -23,6 +32,7 @@ After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/backrest/bin/backrest
Environment="BACKREST_PORT=9898"
Environment="BACKREST_CONFIG=/opt/backrest/config/config.json"
@ -38,3 +48,4 @@ msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

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,18 +21,6 @@ cd /opt/jotty
$STD yarn --frozen-lockfile
$STD yarn next telemetry disable
$STD yarn build
[ -d "public" ] && cp -r public .next/standalone/
[ -d "howto" ] && cp -r howto .next/standalone/
mkdir -p .next/standalone/.next
cp -r .next/static .next/standalone/.next/
mv .next/standalone /tmp/jotty_standalone
rm -rf * .next .git .gitignore .yarn
mv /tmp/jotty_standalone/* .
mv /tmp/jotty_standalone/.[!.]* . 2>/dev/null || true
rm -rf /tmp/jotty_standalone
mkdir -p data/{users,checklists,notes}
cat <<EOF >/opt/jotty/.env
@ -67,7 +55,7 @@ After=network.target
[Service]
WorkingDirectory=/opt/jotty
EnvironmentFile=/opt/jotty/.env
ExecStart=/usr/bin/node server.js
ExecStart=yarn start
Restart=on-abnormal
[Install]

View File

@ -24,14 +24,6 @@ mkdir -p /root/.config/recyclarr
$STD recyclarr config create
msg_ok "Configured Recyclarr"
msg_info "Setting up Daily Sync Cron"
cat <<EOF >/etc/cron.d/recyclarr
# Run recyclarr sync daily
@daily root recyclarr sync >> /root/.config/recyclarr/sync.log 2>&1
EOF
chmod 644 /etc/cron.d/recyclarr
msg_ok "Setup Daily Sync Cron"
motd_ssh
customize
cleanup_lxc

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

@ -17,6 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y apt-transport-https
msg_ok "Installed Dependencies"
JAVA_VERION="17" setup_java
setup_deb822_repo \
"unifi" \
"https://dl.ui.com/unifi/unifi-repo.gpg" \
@ -25,22 +26,17 @@ setup_deb822_repo \
"ubiquiti" \
"amd64"
JAVA_VERSION="21" setup_java
if lscpu | grep -q 'avx'; then
MONGO_VERSION="8.0" setup_mongodb
if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then
msg_warn "No AVX Support Detected. MongoDB v4.4 will be installed"
if ! dpkg -l | grep -q "libssl1.1"; then
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "libssl1.1_1.1.1w-0+deb11u4_amd64.deb"
$STD dpkg -i libssl1.1_1.1.1w-0+deb11u4_amd64.deb
fi
MONGO_VERSION="4.4" setup_mongodb
else
msg_error "No AVX detected (CPU-Flag)! We have discontinued support for this. You are welcome to try it manually with a Debian LXC, but due to the many issues with Unifi, we currently only support AVX CPUs."
exit 10
fi
if ! dpkg -l | grep -q 'libssl1.1'; then
msg_info "Installing libssl (if needed)"
curl -fsSL "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u4_amd64.deb" -o "/tmp/libssl.deb"
$STD dpkg -i /tmp/libssl.deb
rm -f /tmp/libssl.deb
msg_ok "Installed libssl1.1"
MONGO_VERSION="7.0" setup_mongodb
fi
msg_ok "Installed MongoDB"
msg_info "Installing UniFi Network Server"
$STD apt install -y unifi

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

@ -2734,57 +2734,11 @@ EOF
return 1
}
# For AMD GPUs, firmware-amd-graphics requires non-free repositories
# AMD firmware for better GPU support
if [[ "$os_id" == "debian" ]]; then
# Add non-free-firmware repository if not already present
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
# 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"
}
elif [[ "$os_id" == "ubuntu" ]]; then
# For Ubuntu, ensure multiverse is enabled (firmware-amd-graphics is in multiverse)
if ! grep -qE '^deb.*multiverse' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null; then
$STD add-apt-repository -y multiverse
$STD apt update
fi
# 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 other distributions, try without adding repositories
$STD apt -y install libdrm-amdgpu1 2>/dev/null || true
$STD apt -y install firmware-amd-graphics 2>/dev/null || true
fi
$STD apt -y install libdrm-amdgpu1 2>/dev/null || true
;;
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
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