Compare commits

..

9 Commits

Author SHA1 Message Date
CanbiZ
950b32fef8 tools.func: Smarter parallel jobs calculation with load awareness
- get_parallel_jobs: Add memory-based limiting (1.5GB/job), load awareness,
  and container detection for conservative limits
- get_default_php_version: Add future versions (Debian 14, Ubuntu 26.04),
  update defaults to 8.3
- get_default_python_version: Add future versions, update defaults to 3.12
2026-01-05 17:36:51 +01:00
CanbiZ
01ba7356e0 foirmatting 2026-01-05 17:12:54 +01:00
CanbiZ
ef7015e232 Optimize tools.func: intelligent fallbacks, retry logic, caching, DNS pre-check
- curl_with_retry: DNS pre-check + exponential backoff
- download_gpg_key: Auto-detect key format, validation
- ensure_dependencies: Batch dpkg-query check, individual fallback
- install_packages_with_retry: Progressive recovery (dpkg fix, broken deps, individual packages)
- verify_repo_available: Caching with TTL to avoid repeated HTTP requests
- get_fallback_suite: Dynamic HTTP availability check cascade
- ensure_apt_working: APT lock handling, progressive recovery
- safe_service_restart: Wait-for-ready with configurable timeout, retry logic
- get_latest_github_release: Fallback to tags API, prerelease support, rate limit handling
2026-01-05 17:09:16 +01:00
CanbiZ
c118377665 Optimize tools.func: fix typos, duplicate debug_log, Node.js version, PG backup, Intel VPL 2026-01-05 17:05:24 +01:00
CanbiZ
8022525b49 Fix removed features in refactor branch
- Add libmfx-gen1.2 back for Intel Quick Sync Video encoding (Debian 12+13)
- Restore tmpfiles.d configuration for MariaDB /run/mysqld persistence
- Fix MariaDB fallback version from 11.4 to 12.2 (latest GA version)

These changes were incorrectly removed in the refactor commits.
2026-01-05 16:55:26 +01:00
MickLesk
c8dbce6e58 typo 2025-12-28 20:40:02 +01:00
MickLesk
0d821dd704 feat(tools.func): extend retry logic to all major downloads
Added curl_with_retry to all critical download operations:
- Adminer download
- Composer installer
- FFmpeg (binary and source)
- Go tarball
- Ghostscript source
- ImageMagick source
- rbenv and ruby-build
- uv (astral-sh)
- yq binary
- Go version check

Extended timeouts for large downloads:
- CURL_TIMEOUT=300 for FFmpeg, Go (large tarballs)
- CURL_TIMEOUT=180 for Ghostscript, ImageMagick

Remaining without retry (intentional):
- download_with_progress (specialized function)
- Rustup installer (piped to shell)
- Portainer version check (non-critical)

Total curl_with_retry/download_gpg_key usage: 27 locations
2025-12-26 19:03:41 +01:00
MickLesk
52061ea0db feat(tools.func): add retry logic and debug mode for stability
New helper functions:
- curl_with_retry: Robust curl wrapper with retry logic (3 attempts)
- curl_api_with_retry: API calls with HTTP status handling
- download_gpg_key: GPG key download with retry and dearmor support
- debug_log: Conditional debug output when TOOLS_DEBUG=true

Replaced critical curl calls:
- MongoDB GPG key download
- NodeSource GPG key download
- PostgreSQL GPG key download
- PHP (Sury) keyring download
- MySQL GPG key download
- setup_deb822_repo GPG import

Benefits:
- Automatic retry on transient network failures
- Configurable timeouts (CURL_TIMEOUT, CURL_CONNECT_TO)
- Debug mode for troubleshooting (TOOLS_DEBUG=true)
- Consistent error handling across all GPG key imports
2025-12-26 18:50:56 +01:00
MickLesk
5c82757c69 refactor(tools.func): use distro packages by default for stability
- fetch_and_deploy_gh_release: add validation for empty app names
  - Derives app name from repo if not provided
  - Prevents '/root/.: Is a directory' error (fixes #10342)

- setup_hwaccel: fix Intel driver app names for fetch_and_deploy_gh_release
  - Add proper app names: intel-igc-core, intel-igc-opencl, libigdgmm12, intel-opencl-icd

- setup_mariadb: use distro packages by default
  - Default: apt packages (default-mysql-server, mariadb-server)
  - Optional: USE_MARIADB_REPO=true for official MariaDB repo
  - Fixes GPG key/mirror availability issues

- setup_mysql: use distro packages by default
  - Default: apt packages (default-mysql-server, mysql-server)
  - Optional: USE_MYSQL_REPO=true for official MySQL repo
  - Keeps Debian Trixie 8.4 LTS handling when using official repo

- setup_postgresql: use distro packages by default
  - Default: apt packages (postgresql, postgresql-client)
  - Optional: USE_PGDG_REPO=true for official PGDG repo

- setup_docker: use distro packages by default
  - Default: docker.io package
  - Optional: USE_DOCKER_REPO=true for official Docker repo
  - Maintains Portainer support in both modes

This refactoring prioritizes stability by using well-tested distro
packages while maintaining the option to use official repos for
specific version requirements.
2025-12-26 18:42:48 +01:00
36 changed files with 1253 additions and 982 deletions

View File

@@ -10,75 +10,8 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-12-30
## 2025-12-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- syncthing: check for deb822 source [@MickLesk](https://github.com/MickLesk) ([#10414](https://github.com/community-scripts/ProxmoxVE/pull/10414))
- speedtest-tracker: add external IP URL and internet check hostname in .env [@MickLesk](https://github.com/MickLesk) ([#10078](https://github.com/community-scripts/ProxmoxVE/pull/10078))
- Pelican-panel: prevent composer superuser prompt [@MickLesk](https://github.com/MickLesk) ([#10418](https://github.com/community-scripts/ProxmoxVE/pull/10418))
### 💾 Core
- #### 🐞 Bug Fixes
- add libmfx-gen1.2 for intel gpu hwaccel [@jcnix](https://github.com/jcnix) ([#10400](https://github.com/community-scripts/ProxmoxVE/pull/10400))
## 2025-12-28
### 🆕 New Scripts
- Mail-Archiver ([#10393](https://github.com/community-scripts/ProxmoxVE/pull/10393))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Fix mongodb update logic [@durzo](https://github.com/durzo) ([#10388](https://github.com/community-scripts/ProxmoxVE/pull/10388))
- fix pulse downloading incorrect tarball [@durzo](https://github.com/durzo) ([#10383](https://github.com/community-scripts/ProxmoxVE/pull/10383))
- #### 🔧 Refactor
- Linkwarden: enable Corepack and prepare Yarn v4 before running yarn [@MickLesk](https://github.com/MickLesk) ([#10390](https://github.com/community-scripts/ProxmoxVE/pull/10390))
- metube: use pnpm + corepack for frontend build [@MickLesk](https://github.com/MickLesk) ([#10392](https://github.com/community-scripts/ProxmoxVE/pull/10392))
### 💾 Core
- #### 🐞 Bug Fixes
- Set default LANG in locale configuration [@jamezpolley](https://github.com/jamezpolley) ([#10378](https://github.com/community-scripts/ProxmoxVE/pull/10378))
### ❔ Uncategorized
- Updated Frontend Debian and Ubuntu VM notes so links can be copied quickly. [@mzb2xeo](https://github.com/mzb2xeo) ([#10379](https://github.com/community-scripts/ProxmoxVE/pull/10379))
## 2025-12-27
### 🆕 New Scripts
- nextcloud-exporter ([#10314](https://github.com/community-scripts/ProxmoxVE/pull/10314))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Dotnet ASP Web API: Fix need for verbose [@tremor021](https://github.com/tremor021) ([#10368](https://github.com/community-scripts/ProxmoxVE/pull/10368))
- Npm: fix build for 2.13.5 [@durzo](https://github.com/durzo) ([#10340](https://github.com/community-scripts/ProxmoxVE/pull/10340))
- Outline: Fix for database connection string [@tremor021](https://github.com/tremor021) ([#10359](https://github.com/community-scripts/ProxmoxVE/pull/10359))
## 2025-12-26
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- phpipam: use PHP 8.4 with correct mysql module for PDO support [@MickLesk](https://github.com/MickLesk) ([#10348](https://github.com/community-scripts/ProxmoxVE/pull/10348))
- hyperion: increase disk to 4GB and tools.func: fix /root/. path error [@MickLesk](https://github.com/MickLesk) ([#10349](https://github.com/community-scripts/ProxmoxVE/pull/10349))
### ❔ Uncategorized
- fix: zoraxy: category [@CrazyWolf13](https://github.com/CrazyWolf13) ([#10344](https://github.com/community-scripts/ProxmoxVE/pull/10344))

View File

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

View File

@@ -9,7 +9,7 @@ APP="Hyperion"
var_tags="${var_tags:-ambient-lightning}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"

View File

@@ -42,23 +42,11 @@ function update_script() {
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
msg_info "Updating Linkwarden"
msg_info "Updating ${APP}"
cd /opt/linkwarden
yarn_ver="4.12.0"
if [[ -f package.json ]]; then
pkg_manager=$(jq -r '.packageManager // empty' package.json 2>/dev/null || true)
if [[ -n "$pkg_manager" && "$pkg_manager" == yarn@* ]]; then
yarn_spec="${pkg_manager#yarn@}"
yarn_ver="${yarn_spec%%+*}"
fi
fi
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare "yarn@${yarn_ver}" --activate || true
fi
$STD yarn
$STD npx playwright install-deps
$STD npx playwright install
$STD yarn playwright install
mv /opt/.env /opt/linkwarden/.env
$STD yarn prisma:generate
$STD yarn web:build
@@ -67,7 +55,7 @@ function update_script() {
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
rm -rf /root/.cache/yarn
rm -rf /opt/linkwarden/.next/cache
msg_ok "Updated Linkwarden"
msg_ok "Updated ${APP}"
msg_info "Starting Service"
systemctl start linkwarden

View File

@@ -1,71 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/s1t5/mail-archiver
APP="Mail-Archiver"
var_tags="${var_tags:-mail-archiver}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/mail-archiver ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "mail-archiver" "s1t5/mail-archiver"; then
msg_info "Stopping Mail-Archiver"
systemctl stop mail-archiver
msg_ok "Stopped Mail-Archiver"
msg_info "Creating Backup"
cp /opt/mail-archiver/appsettings.json /opt/mail-archiver/.env /opt/
[[ -d /opt/mail-archiver/DataProtection-Keys ]] && cp -r /opt/mail-archiver/DataProtection-Keys /opt
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball"
msg_info "Updating Mail-Archiver"
mv /opt/mail-archiver /opt/mail-archiver-build
cd /opt/mail-archiver-build
$STD dotnet restore
$STD dotnet publish -c Release -o /opt/mail-archiver
rm -rf /opt/mail-archiver-build
msg_ok "Updated Mail-Archiver"
msg_info "Restoring Backup"
cp /opt/appsettings.json /opt/.env /opt/mail-archiver
[[ -d /opt/DataProtection-Keys ]] && cp -r /opt/DataProtection-Keys /opt/mail-archiver/
msg_ok "Restored Backup"
msg_info "Starting Mail-Archiver"
systemctl start mail-archiver
msg_ok "Started Mail-Archiver"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"

View File

@@ -40,8 +40,6 @@ function update_script() {
fi
fi
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
if check_for_gh_release "metube" "alexta69/metube"; then
msg_info "Stopping Service"
systemctl stop metube
@@ -58,12 +56,8 @@ function update_script() {
msg_info "Building Frontend"
cd /opt/metube/ui
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare pnpm --activate || true
fi
$STD pnpm install --frozen-lockfile
$STD pnpm run build
$STD npm install
$STD node_modules/.bin/ng build
msg_ok "Built Frontend"
PYTHON_VERSION="3.13" setup_uv

View File

@@ -23,14 +23,13 @@ function update_script() {
header_info
check_container_storage
check_container_resources
if ! command -v mongod &>/dev/null; then
msg_error "No ${APP} Installation Found!"
exit
if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list && ! -f /etc/apt/sources.list.d/mongodb-org-8.0.list ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating MongoDB LXC"
msg_info "Updating ${APP} LXC"
$STD apt update
$STD apt upgrade -y
$STD apt -y upgrade
msg_ok "Updated successfully!"
exit
}

View File

@@ -53,7 +53,7 @@ function update_script() {
#grep "tag_name" |
#awk '{print substr($2, 3, length($2)-4) }')
RELEASE="2.13.5"
RELEASE="2.13.4"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
msg_info "Stopping Services"
@@ -126,7 +126,6 @@ function update_script() {
# Replace node-sass with sass in package.json before installation
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
$STD yarn install --network-timeout 600000
$STD yarn locale-compile
$STD yarn build
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images

View File

@@ -33,7 +33,7 @@ function update_script() {
systemctl stop apache2
msg_ok "Stopped Service"
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
msg_info "Installing PHP-PEAR"
$STD apt install -y \

View File

@@ -38,7 +38,7 @@ function update_script() {
rm -f /opt/pulse/pulse
fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-amd64.tar.gz"
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
mkdir -p /etc/pulse
chown pulse:pulse /etc/pulse

View File

@@ -33,7 +33,6 @@ function update_script() {
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
setup_composer
NODE_VERSION="22" setup_nodejs
setcap cap_net_raw+ep /bin/ping
msg_info "Stopping Service"
systemctl stop speedtest-tracker

View File

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

View File

@@ -37,11 +37,11 @@
"type": "info"
},
{
"text": "For additional Debian commands and tips after installation, checkout: `https://github.com/community-scripts/ProxmoxVE/discussions/836`",
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
"type": "info"
},
{
"text": "If you use Cloud-init, checkout cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"text": "If you use Cloud-init, checkout after installation: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"type": "info"
}
]

View File

@@ -37,7 +37,7 @@
"type": "info"
},
{
"text": "For additional Debian commands and tips after installation, checkout: `https://github.com/community-scripts/ProxmoxVE/discussions/836`",
"text": "After installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/836´ for useful Debian commands",
"type": "info"
}
]

View File

@@ -21,7 +21,7 @@
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"hdd": 2,
"os": "debian",
"version": "13"
}

View File

@@ -1,35 +0,0 @@
{
"name": "Mail-Archiver",
"slug": "mail-archiver",
"categories": [
7
],
"date_created": "2025-12-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 5000,
"documentation": "https://github.com/s1t5/mail-archiver/blob/main/doc/Index.md",
"config_path": "/opt/mail-archiver/.env, /opt/mail-archiver/appsettings.json",
"website": "https://github.com/s1t5/mail-archiver",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/mail-archiver.webp",
"description": "Mail-Archiver is a web application for archiving, searching, and exporting emails from multiple accounts. Featuring folder sync, attachment support, mailbox migration and a dashboard.",
"install_methods": [
{
"type": "default",
"script": "ct/mail-archiver.sh",
"resources": {
"cpu": 1,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "secure123!"
},
"notes": []
}

View File

@@ -1,35 +0,0 @@
{
"name": "Nextcloud Exporter",
"slug": "nextcloud-exporter",
"categories": [
9
],
"date_created": "2025-12-27",
"type": "addon",
"updateable": true,
"privileged": false,
"interface_port": 9205,
"documentation": "https://github.com/xperimental/nextcloud-exporter",
"website": "https://github.com/xperimental/nextcloud-exporter",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nextcloud.webp",
"config_path": "/etc/nextcloud-exporter.env",
"description": "Prometheus exporter for Nextcloud servers. ",
"install_methods": [
{
"type": "default",
"script": "tools/addon/nextcloud-exporter.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"type": "info"
}
]

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"type": "info"
}
]

View File

@@ -33,7 +33,7 @@
},
"notes": [
{
"text": "This VM uses Cloud-init, for more information see cloud-init discussion: `https://github.com/community-scripts/ProxmoxVE/discussions/272`",
"text": "after installation, checkout: ´https://github.com/community-scripts/ProxmoxVE/discussions/272´",
"type": "info"
}
]

View File

@@ -1,219 +1,49 @@
[
{
"name": "karlomikus/bar-assistant",
"version": "v5.11.2",
"date": "2025-12-29T21:09:41Z"
},
{
"name": "outline/outline",
"version": "v1.2.0-0",
"date": "2025-12-29T20:53:30Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.9.0",
"date": "2025-12-29T20:46:08Z"
},
{
"name": "livebook-dev/livebook",
"version": "nightly",
"date": "2025-12-29T20:41:56Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.8",
"date": "2025-12-29T19:43:21Z"
},
{
"name": "home-assistant/core",
"version": "2025.12.5",
"date": "2025-12-29T12:55:22Z"
},
{
"name": "metabase/metabase",
"version": "v0.58.x",
"date": "2025-12-29T19:09:12Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.40.0-rc4",
"date": "2025-12-29T16:54:07Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.31.1",
"date": "2025-12-29T16:50:03Z"
},
{
"name": "traefik/traefik",
"version": "v3.6.6",
"date": "2025-12-29T15:56:09Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "develop-20251228",
"date": "2025-12-28T05:59:54Z"
},
{
"name": "emqx/emqx",
"version": "6.1.0",
"date": "2025-12-29T13:59:25Z"
},
{
"name": "ArchiveBox/ArchiveBox",
"version": "v0.8.6rc1",
"date": "2025-12-29T10:58:49Z"
},
{
"name": "rcourtman/Pulse",
"version": "v5.0.6",
"date": "2025-12-29T10:39:08Z"
},
{
"name": "alam00000/bentopdf",
"version": "v1.15.3",
"date": "2025-12-29T09:33:00Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.16.1",
"date": "2025-12-29T06:08:46Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.612",
"date": "2025-12-29T05:55:22Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-29T00:27:07Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.11",
"date": "2025-12-28T23:39:20Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v3.1.0.4875",
"date": "2025-11-16T22:40:18Z"
},
{
"name": "Radarr/Radarr",
"version": "v6.0.4.10291",
"date": "2025-11-16T22:39:01Z"
},
{
"name": "bluenviron/mediamtx",
"version": "v1.15.6",
"date": "2025-12-28T16:38:35Z"
},
{
"name": "release-argus/Argus",
"version": "0.29.0",
"date": "2025-12-28T14:32:36Z"
},
{
"name": "pommee/goaway",
"version": "v0.63.3",
"date": "2025-12-28T10:17:20Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.13.5",
"date": "2025-12-28T09:15:51Z"
},
{
"name": "kimai/kimai",
"version": "2.45.0",
"date": "2025-12-28T06:32:47Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "dani-garcia/vaultwarden",
"version": "1.35.0",
"date": "2025-12-27T23:07:12Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.5.2",
"date": "2025-12-19T21:28:55Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.7.0",
"date": "2025-12-27T20:37:54Z"
},
{
"name": "hargata/lubelog",
"version": "v1.5.6",
"date": "2025-12-27T20:29:53Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.4.5",
"date": "2025-12-27T19:40:14Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{
"name": "alexta69/metube",
"version": "2025.12.27",
"date": "2025-12-27T10:24:02Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@16.4.1",
"date": "2025-12-27T09:40:37Z"
},
{
"name": "sysadminsmedia/homebox",
"version": "v0.22.3",
"date": "2025-12-26T22:31:20Z"
},
{
"name": "seerr-team/seerr",
"version": "preview-music-support",
"date": "2025-12-26T22:24:19Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.48.0",
"date": "2025-12-26T19:23:50Z"
},
{
"name": "toniebox-reverse-engineering/teddycloud",
"version": "tc_v0.6.6",
"date": "2025-12-26T18:45:22Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w52-4.14.2",
"date": "2025-12-19T13:31:21Z"
},
{
"name": "theonedev/onedev",
"version": "v13.1.7",
"date": "2025-12-26T07:59:41Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.545",
"date": "2025-12-26T05:55:25Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.40.0-rc2",
"date": "2025-12-26T02:02:43Z"
},
{
"name": "jeedom/core",
"version": "4.5.1",
"date": "2025-12-26T00:27:05Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.1.0",
"date": "2025-11-23T12:13:34Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.13.4",
"date": "2025-12-25T21:38:43Z"
},
{
"name": "HydroshieldMKII/Guardian",
"version": "v1.3.3",
"date": "2025-12-25T20:19:52Z"
},
{
"name": "alexta69/metube",
"version": "2025.12.25",
"date": "2025-12-25T19:34:19Z"
},
{
"name": "matze/wastebin",
"version": "3.4.0",
@@ -224,6 +54,16 @@
"version": "3000.8.0",
"date": "2025-12-25T15:10:19Z"
},
{
"name": "metabase/metabase",
"version": "v0.58.x",
"date": "2025-12-25T15:06:53Z"
},
{
"name": "rcourtman/Pulse",
"version": "v5.0.3",
"date": "2025-12-25T13:51:42Z"
},
{
"name": "PatchMon/PatchMon",
"version": "v1.3.7",
@@ -244,6 +84,11 @@
"version": "1.14.1",
"date": "2025-12-24T21:33:56Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.16.0",
"date": "2025-12-24T19:57:11Z"
},
{
"name": "FreshRSS/FreshRSS",
"version": "1.28.0",
@@ -269,11 +114,26 @@
"version": "v25.12",
"date": "2025-12-24T12:19:42Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@16.4.0",
"date": "2025-12-24T10:16:33Z"
},
{
"name": "emqx/emqx",
"version": "6.1.0-rc.1",
"date": "2025-12-24T09:46:02Z"
},
{
"name": "comfyanonymous/ComfyUI",
"version": "v0.6.0",
"date": "2025-12-24T03:32:16Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "advplyr/audiobookshelf",
"version": "v2.32.1",
@@ -284,6 +144,11 @@
"version": "n8n@2.1.4",
"date": "2025-12-23T20:53:07Z"
},
{
"name": "scanopy/scanopy",
"version": "v0.12.6",
"date": "2025-12-23T19:24:15Z"
},
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.8.0",
@@ -324,6 +189,11 @@
"version": "v3.8.1",
"date": "2025-12-16T09:59:22Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.7",
"date": "2025-12-01T08:14:11Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.543",
@@ -349,6 +219,11 @@
"version": "v2.1.13",
"date": "2025-12-23T10:14:48Z"
},
{
"name": "pommee/goaway",
"version": "v0.63.2",
"date": "2025-12-23T09:32:55Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.12",
@@ -389,6 +264,16 @@
"version": "latest",
"date": "2025-12-22T16:21:19Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.25",
"date": "2025-12-22T16:03:19Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v1.0.9",
"date": "2025-12-22T15:55:49Z"
},
{
"name": "openhab/openhab-core",
"version": "5.1.0",
@@ -409,6 +294,11 @@
"version": "v0.6.43",
"date": "2025-12-22T06:03:45Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.14",
"date": "2025-12-16T05:42:34Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.7.1",
@@ -439,6 +329,11 @@
"version": "v0.8.2",
"date": "2025-12-21T03:53:53Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.4.4",
"date": "2025-12-20T22:12:02Z"
},
{
"name": "CyferShepard/Jellystat",
"version": "1.1.7",
@@ -479,11 +374,21 @@
"version": "v1.0.0-beta21",
"date": "2025-12-19T23:04:27Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.47.0",
"date": "2025-12-19T19:42:50Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.37",
"date": "2025-12-18T16:43:23Z"
},
{
"name": "home-assistant/core",
"version": "2025.12.4",
"date": "2025-12-19T17:55:13Z"
},
{
"name": "qdrant/qdrant",
"version": "v1.16.3",
@@ -499,6 +404,11 @@
"version": "v1.19.0",
"date": "2025-12-19T13:37:00Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w52-4.14.2",
"date": "2025-12-19T13:31:21Z"
},
{
"name": "fccview/jotty",
"version": "1.14.4",
@@ -514,6 +424,11 @@
"version": "v15.0.0-dev",
"date": "2025-12-19T11:43:47Z"
},
{
"name": "release-argus/Argus",
"version": "0.28.3",
"date": "2025-12-19T11:05:10Z"
},
{
"name": "mattermost/mattermost",
"version": "v11.1.2",
@@ -529,6 +444,11 @@
"version": "1.0.2",
"date": "2025-12-19T02:43:42Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.8.0",
"date": "2025-12-19T01:37:04Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.5",
@@ -549,6 +469,11 @@
"version": "v1.25.3",
"date": "2025-12-18T18:11:48Z"
},
{
"name": "karlomikus/bar-assistant",
"version": "v5.11.0",
"date": "2025-12-18T18:06:05Z"
},
{
"name": "neo4j/neo4j",
"version": "2025.11.2",
@@ -614,6 +539,11 @@
"version": "testing",
"date": "2025-12-16T11:13:20Z"
},
{
"name": "traefik/traefik",
"version": "v2.11.33",
"date": "2025-12-17T10:10:19Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.7.6",
@@ -649,11 +579,21 @@
"version": "1.1.7",
"date": "2025-12-16T21:44:58Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.6.2",
"date": "2025-12-16T17:54:19Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.19.0",
"date": "2025-12-15T19:43:03Z"
},
{
"name": "livebook-dev/livebook",
"version": "v0.18.2",
"date": "2025-12-15T19:17:42Z"
},
{
"name": "opencloud-eu/opencloud",
"version": "v4.1.0",
@@ -699,6 +639,16 @@
"version": "v2.3.0.5236",
"date": "2025-11-16T22:41:22Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v3.1.0.4875",
"date": "2025-11-16T22:40:18Z"
},
{
"name": "Radarr/Radarr",
"version": "v6.0.4.10291",
"date": "2025-11-16T22:39:01Z"
},
{
"name": "jellyfin/jellyfin",
"version": "v10.11.5",
@@ -754,6 +704,11 @@
"version": "v4.3.1",
"date": "2025-12-13T15:38:37Z"
},
{
"name": "alam00000/bentopdf",
"version": "v1.11.2",
"date": "2025-12-13T15:28:49Z"
},
{
"name": "autobrr/autobrr",
"version": "v1.71.0",
@@ -859,6 +814,11 @@
"version": "v1.4.7",
"date": "2025-12-09T11:44:49Z"
},
{
"name": "seerr-team/seerr",
"version": "preview-test-fix-subscriptions",
"date": "2025-12-08T23:15:30Z"
},
{
"name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.9",
@@ -889,6 +849,16 @@
"version": "v6.11.1",
"date": "2025-12-07T19:19:08Z"
},
{
"name": "bluenviron/mediamtx",
"version": "v1.15.5",
"date": "2025-12-07T12:24:21Z"
},
{
"name": "sysadminsmedia/homebox",
"version": "v0.22.0-rc.2",
"date": "2025-12-06T21:24:28Z"
},
{
"name": "Koenkk/zigbee2mqtt",
"version": "2.7.1",
@@ -909,6 +879,11 @@
"version": "v0.28.0",
"date": "2025-12-06T13:32:18Z"
},
{
"name": "toniebox-reverse-engineering/teddycloud",
"version": "tc_v0.6.5",
"date": "2025-12-06T10:32:07Z"
},
{
"name": "inspircd/inspircd",
"version": "v4.9.0",
@@ -1009,6 +984,11 @@
"version": "v2.4.7",
"date": "2025-11-30T20:59:51Z"
},
{
"name": "hargata/lubelog",
"version": "v1.5.5",
"date": "2025-11-30T18:33:20Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v1.16.0",
@@ -1114,6 +1094,11 @@
"version": "v4.3.2",
"date": "2025-10-18T12:11:00Z"
},
{
"name": "kimai/kimai",
"version": "2.44.0",
"date": "2025-11-20T11:01:01Z"
},
{
"name": "Athou/commafeed",
"version": "5.12.0",
@@ -1164,6 +1149,11 @@
"version": "v2.15.0",
"date": "2025-11-16T18:53:49Z"
},
{
"name": "outline/outline",
"version": "v1.1.0",
"date": "2025-11-16T15:07:09Z"
},
{
"name": "bastienwirtz/homer",
"version": "v25.11.1",
@@ -1519,6 +1509,11 @@
"version": "v2.1.1867",
"date": "2025-07-31T18:08:43Z"
},
{
"name": "dani-garcia/vaultwarden",
"version": "1.34.3",
"date": "2025-07-30T09:10:59Z"
},
{
"name": "eko/pihole-exporter",
"version": "v1.2.0",
@@ -1694,6 +1689,11 @@
"version": "v1.15.1",
"date": "2024-12-16T13:00:05Z"
},
{
"name": "ArchiveBox/ArchiveBox",
"version": "v0.7.3",
"date": "2024-12-15T10:18:06Z"
},
{
"name": "swizzin/swizzin",
"version": "stable",

View File

@@ -26,8 +26,11 @@ $STD apt-get install -y \
nginx
msg_ok "Installed Dependencies"
msg_info "Configure Application"
var_project_name="default"
read -r -p "${TAB3}Type the assembly name of the project: " var_project_name
echo "Target assembly: '${var_project_name}'"
msg_ok "Application Configured"
msg_info "Setting up FTP Server"
useradd ftpuser

View File

@@ -19,42 +19,45 @@ $STD apt install -y \
build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
PG_VERSION="16" setup_postgresql
RUST_CRATES="monolith" setup_rust
PG_DB_NAME="linkwardendb" PG_DB_USER="linkwarden" setup_postgresql_db
msg_info "Setting up PostgreSQL DB"
DB_NAME=linkwardendb
DB_USER=linkwarden
DB_PASS="$(openssl rand -base64 18 | tr -d '/' | cut -c1-13)"
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
{
echo "Linkwarden-Credentials"
echo "Linkwarden Database User: $DB_USER"
echo "Linkwarden Database Password: $DB_PASS"
echo "Linkwarden Database Name: $DB_NAME"
echo "Linkwarden Secret: $SECRET_KEY"
} >>~/linkwarden.creds
msg_ok "Set up PostgreSQL DB"
read -r -p "${TAB3}Would you like to add Adminer? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
setup_adminer
fi
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
msg_info "Installing Linkwarden (Patience)"
SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
echo "Linkwarden Secret: $SECRET_KEY" >>"${HOME}/linkwarden.creds"
fetch_and_deploy_gh_release "linkwarden" "linkwarden/linkwarden"
cd /opt/linkwarden
yarn_ver="4.12.0"
if [[ -f package.json ]]; then
pkg_manager=$(jq -r '.packageManager // empty' package.json 2>/dev/null || true)
if [[ -n "$pkg_manager" && "$pkg_manager" == yarn@* ]]; then
yarn_spec="${pkg_manager#yarn@}"
yarn_ver="${yarn_spec%%+*}"
fi
fi
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare "yarn@${yarn_ver}" --activate || true
fi
$STD yarn
$STD npx playwright install-deps
$STD npx playwright install
$STD yarn playwright install
IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/linkwarden/.env
NEXTAUTH_SECRET=${SECRET_KEY}
NEXTAUTH_URL=http://${IP}:3000
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}
EOF
$STD yarn prisma:generate
$STD yarn web:build

View File

@@ -1,68 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/s1t5/mail-archiver
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
"https://packages.microsoft.com/debian/13/prod/" \
"trixie" \
"main"
$STD apt install -y \
dotnet-sdk-10.0 \
aspnetcore-runtime-8.0
msg_ok "Installed Dependencies"
PG_VERSION="17" setup_postgresql
PG_DB_NAME="mailarchiver_db" PG_DB_USER="mailarchiver" setup_postgresql_db
fetch_and_deploy_gh_release "mail-archiver" "s1t5/mail-archiver" "tarball"
msg_info "Setting up Mail-Archiver"
mv /opt/mail-archiver /opt/mail-archiver-build
cd /opt/mail-archiver-build
$STD dotnet restore
$STD dotnet publish -c Release -o /opt/mail-archiver
cp /opt/mail-archiver-build/appsettings.json /opt/mail-archiver/appsettings.json
sed -i "s|\"DefaultConnection\": \"[^\"]*\"|\"DefaultConnection\": \"Host=localhost;Database=mailarchiver_db;Username=mailarchiver;Password=$PG_DB_PASS\"|" /opt/mail-archiver/appsettings.json
rm -rf /opt/mail-archiver-build
cat <<EOF >/opt/mail-archiver/.env
ASPNETCORE_URLS=http://+:5000
ASPNETCORE_ENVIRONMENT=Production
TZ=UTC
EOF
msg_ok "Setup Mail-Archiver"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/mail-archiver.service
[Unit]
Description=Mail-Archiver Service
After=network.target
[Service]
EnvironmentFile=/opt/mail-archiver/.env
WorkingDirectory=/opt/mail-archiver
ExecStart=/usr/bin/dotnet MailArchiver.dll
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now mail-archiver
msg_info "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -23,7 +23,7 @@ $STD apt install -y \
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.13" setup_uv
NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs
NODE_VERSION="24" setup_nodejs
msg_info "Installing Deno"
export DENO_INSTALL="/usr/local"
@@ -37,12 +37,8 @@ fetch_and_deploy_gh_release "metube" "alexta69/metube" "tarball" "latest"
msg_info "Installing MeTube"
cd /opt/metube/ui
if command -v corepack >/dev/null 2>&1; then
$STD corepack enable
$STD corepack prepare pnpm --activate || true
fi
$STD pnpm install --frozen-lockfile
$STD pnpm run build
$STD npm ci
$STD node_modules/.bin/ng build --configuration production
cd /opt/metube
$STD uv sync
mkdir -p /opt/metube_downloads /opt/metube_downloads/.metube /opt/metube_downloads/music /opt/metube_downloads/videos

View File

@@ -57,9 +57,9 @@ NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
# RELEASE=$(curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
# grep "tag_name" |
# awk '{print substr($2, 3, length($2)-4) }')
RELEASE="2.13.5"
RELEASE="2.13.4"
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v2.13.5"
fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v2.13.4"
msg_info "Setting up Environment"
ln -sf /usr/bin/python3 /usr/bin/python
@@ -117,7 +117,6 @@ cd /opt/nginxproxymanager/frontend
# Replace node-sass with sass in package.json before installation
sed -E -i 's/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
$STD yarn install --network-timeout 600000
$STD yarn locale-compile
$STD yarn build
cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images

View File

@@ -33,7 +33,7 @@ cp .env.sample .env
export NODE_ENV=development
sed -i 's/NODE_ENV=production/NODE_ENV=development/g' /opt/outline/.env
sed -i "s/generate_a_new_key/${SECRET_KEY}/g" /opt/outline/.env
sed -i "s/user:pass@postgres/${PG_DB_USER}:${PG_DB_PASS}@localhost/g" /opt/outline/.env
sed -i "s/user:pass@postgres/${DB_USER}:${DB_PASS}@localhost/g" /opt/outline/.env
sed -i 's/redis:6379/localhost:6379/g' /opt/outline/.env
sed -i "5s#URL=#URL=http://${LOCAL_IP}#g" /opt/outline/.env
sed -i 's/FORCE_HTTPS=true/FORCE_HTTPS=false/g' /opt/outline/.env

View File

@@ -64,7 +64,7 @@ mkdir /opt/pelican-panel
cd /opt/pelican-panel
curl -fsSL "https://github.com/pelican-dev/panel/releases/download/v${RELEASE}/panel.tar.gz" -o "panel.tar.gz"
tar -xzf "panel.tar.gz"
COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader --no-interaction
$STD composer install --no-dev --optimize-autoloader --no-interaction
$STD php artisan p:environment:setup
$STD php artisan p:environment:queue-service --no-interaction
echo "* * * * * php /opt/pelican-panel/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -

View File

@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y fping
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="mysql,gmp,snmp,ldap,apcu" setup_php
PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="pdo,pdo-mysql,gmp,snmp,ldap,apcu" setup_php
msg_info "Installing PHP-PEAR"
$STD apt install -y \
@@ -39,7 +39,7 @@ sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
-e "s/\(\$db\['pass'\] = \).*/\1'$MARIADB_DB_PASS';/" \
-e "s/\(\$db\['name'\] = \).*/\1'$MARIADB_DB_NAME';/" \
/opt/phpipam/config.php
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.4/apache2/php.ini
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.3/apache2/php.ini
msg_ok "Installed phpIPAM"
msg_info "Creating Service"

View File

@@ -29,7 +29,7 @@ else
fi
mkdir -p /etc/pulse
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "pulse-v*-linux-amd64.tar.gz"
fetch_and_deploy_gh_release "pulse" "rcourtman/Pulse" "prebuild" "latest" "/opt/pulse" "*-linux-amd64.tar.gz"
ln -sf /opt/pulse/bin/pulse /usr/local/bin/pulse
chown -R pulse:pulse /etc/pulse /opt/pulse
msg_ok "Installed Pulse"

View File

@@ -17,7 +17,6 @@ msg_info "Installing Dependencies"
$STD apt install -y \
nginx \
sqlite3
setcap cap_net_raw+ep /bin/ping
msg_ok "Installed Dependencies"
PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="common,sqlite3,redis" setup_php
@@ -72,8 +71,6 @@ SESSION_LIFETIME=120
SPEEDTEST_SCHEDULE="0 */6 * * *"
SPEEDTEST_SERVERS=
SPEEDTEST_EXTERNAL_IP_URL=https://ip.me
SPEEDTEST_INTERNET_CHECK_HOSTNAME=1.1.1.1
PRUNE_RESULTS_OLDER_THAN=0
DISPLAY_TIMEZONE=${TIMEZONE}

View File

@@ -3181,8 +3181,7 @@ EOF'
pct exec "$CTID" -- ash -c "apk add bash newt curl openssh nano mc ncurses jq >/dev/null"
else
sleep 3
LANG=${LANG:-en_US.UTF-8}
pct exec "$CTID" -- bash -c "sed -i \"/$LANG/ s/^# //\" /etc/locale.gen"
pct exec "$CTID" -- bash -c "sed -i '/$LANG/ s/^# //' /etc/locale.gen"
pct exec "$CTID" -- bash -c "locale_line=\$(grep -v '^#' /etc/locale.gen | grep -E '^[a-zA-Z]' | awk '{print \$1}' | head -n 1) && \
echo LANG=\$locale_line >/etc/default/locale && \
locale-gen >/dev/null && \

View File

@@ -821,9 +821,9 @@ cleanup_lxc() {
rm -rf /root/.npm/_cacache /root/.npm/_logs 2>/dev/null || true
fi
# Node.js yarn
if command -v yarn &>/dev/null; then yarn cache clean &>/dev/null || true; fi
if command -v yarn &>/dev/null; then $STD yarn cache clean || true; fi
# Node.js pnpm
if command -v pnpm &>/dev/null; then pnpm store prune &>/dev/null || true; fi
if command -v pnpm &>/dev/null; then $STD pnpm store prune || true; fi
# Go
if command -v go &>/dev/null; then $STD go clean -cache -modcache || true; fi
# Rust cargo
@@ -831,7 +831,7 @@ cleanup_lxc() {
# Ruby gem
if command -v gem &>/dev/null; then $STD gem cleanup || true; fi
# Composer (PHP)
if command -v composer &>/dev/null; then COMPOSER_ALLOW_SUPERUSER=1 $STD composer clear-cache || true; fi
if command -v composer &>/dev/null; then COMPOSER_ALLOW_SUPERUSER=1 && $STD composer clear-cache || true; fi
if command -v journalctl &>/dev/null; then
$STD journalctl --vacuum-time=10m || true

File diff suppressed because it is too large Load Diff

View File

@@ -1,209 +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/xperimental/nextcloud-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="nextcloud-exporter"
APP_TYPE="tools"
BINARY_PATH="/usr/bin/nextcloud-exporter"
CONFIG_PATH="/etc/nextcloud-exporter.env"
SERVICE_PATH="/etc/systemd/system/nextcloud-exporter.service"
# ==============================================================================
# OS DETECTION
# ==============================================================================
if ! grep -qE 'ID=debian|ID=ubuntu' /etc/os-release 2>/dev/null; then
echo -e "${CROSS} Unsupported OS detected. This script only supports Debian and Ubuntu."
exit 1
fi
# ==============================================================================
# UNINSTALL
# ==============================================================================
function uninstall() {
msg_info "Uninstalling Nextcloud-Exporter"
systemctl disable -q --now nextcloud-exporter
rm -f "$SERVICE_PATH"
if dpkg -l | grep -q nextcloud-exporter; then
$STD apt-get remove -y nextcloud-exporter || $STD dpkg -r nextcloud-exporter
fi
rm -f "$CONFIG_PATH"
rm -f "/usr/local/bin/update_nextcloud-exporter"
rm -f "$HOME/.nextcloud-exporter"
msg_ok "Nextcloud-Exporter has been uninstalled"
}
# ==============================================================================
# UPDATE
# ==============================================================================
function update() {
if check_for_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter"; then
msg_info "Stopping service"
systemctl stop nextcloud-exporter
msg_ok "Stopped service"
fetch_and_deploy_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter" "binary" "latest"
msg_info "Starting service"
systemctl start nextcloud-exporter
msg_ok "Started service"
msg_ok "Updated successfully"
exit
fi
}
# ==============================================================================
# INSTALL
# ==============================================================================
function install() {
read -erp "Enter URL of Nextcloud, example: (http://127.0.0.1:8080): " NEXTCLOUD_SERVER
read -rsp "Enter Nextcloud auth token (press Enter to use username/password instead): " NEXTCLOUD_AUTH_TOKEN
printf "\n"
if [[ -z "$NEXTCLOUD_AUTH_TOKEN" ]]; then
read -erp "Enter Nextcloud username: " NEXTCLOUD_USERNAME
read -rsp "Enter Nextcloud password: " NEXTCLOUD_PASSWORD
printf "\n"
fi
read -erp "Query additional info for apps? [Y/n]: " QUERY_APPS
if [[ "${QUERY_APPS,,}" =~ ^(n|no)$ ]]; then
NEXTCLOUD_INFO_APPS="false"
fi
read -erp "Query update information? [Y/n]: " QUERY_UPDATES
if [[ "${QUERY_UPDATES,,}" =~ ^(n|no)$ ]]; then
NEXTCLOUD_INFO_UPDATE="false"
fi
read -erp "Do you want to skip TLS-Verification (if using a self-signed Certificate on Nextcloud) [y/N]: " SKIP_TLS
if [[ "${SKIP_TLS,,}" =~ ^(y|yes)$ ]]; then
NEXTCLOUD_TLS_SKIP_VERIFY="true"
fi
fetch_and_deploy_gh_release "nextcloud-exporter" "xperimental/nextcloud-exporter" "binary" "latest"
msg_info "Creating configuration"
cat <<EOF >"$CONFIG_PATH"
# https://github.com/xperimental/nextcloud-exporter
NEXTCLOUD_SERVER="${NEXTCLOUD_SERVER}"
NEXTCLOUD_AUTH_TOKEN="${NEXTCLOUD_AUTH_TOKEN:-}"
NEXTCLOUD_USERNAME="${NEXTCLOUD_USERNAME:-}"
NEXTCLOUD_PASSWORD="${NEXTCLOUD_PASSWORD:-}"
NEXTCLOUD_INFO_UPDATE=${NEXTCLOUD_INFO_UPDATE:-"true"}
NEXTCLOUD_INFO_APPS=${NEXTCLOUD_INFO_APPS:-"true"}
NEXTCLOUD_TLS_SKIP_VERIFY=${NEXTCLOUD_TLS_SKIP_VERIFY:-"false"}
NEXTCLOUD_LISTEN_ADDRESS=":9205"
EOF
msg_ok "Created configuration"
msg_info "Creating service"
cat <<EOF >"$SERVICE_PATH"
[Unit]
Description=nextcloud-exporter
After=network.target
[Service]
User=root
EnvironmentFile=$CONFIG_PATH
ExecStart=$BINARY_PATH
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable -q --now nextcloud-exporter
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_nextcloud-exporter
#!/usr/bin/env bash
# nextcloud-exporter Update Script
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/nextcloud-exporter.sh)"
UPDATEEOF
chmod +x /usr/local/bin/update_nextcloud-exporter
msg_ok "Created update script (/usr/local/bin/update_nextcloud-exporter)"
echo ""
msg_ok "Nextcloud-Exporter installed successfully"
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:9205/metrics${CL}"
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
}
# ==============================================================================
# MAIN
# ==============================================================================
header_info
ensure_usr_local_bin_persist
import_local_ip
# Handle type=update (called from update script)
if [[ "${type:-}" == "update" ]]; then
if [[ -f "$BINARY_PATH" ]]; then
update
else
msg_error "Nextcloud-Exporter is not installed. Nothing to update."
exit 1
fi
exit 0
fi
# Check if already installed
if [[ -f "$BINARY_PATH" ]]; then
msg_warn "Nextcloud-Exporter is already installed."
echo ""
echo -n "${TAB}Uninstall Nextcloud-Exporter? (y/N): "
read -r uninstall_prompt
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
uninstall
exit 0
fi
echo -n "${TAB}Update Nextcloud-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 "Nextcloud-Exporter is not installed."
echo ""
echo -e "${TAB}${INFO} This will install:"
echo -e "${TAB} - Nextcloud Exporter (binary)"
echo -e "${TAB} - Systemd service"
echo ""
echo -n "${TAB}Install Nextcloud-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 @@
__ __ __ __
____ ___ _ __/ /______/ /___ __ ______/ / ___ _ ______ ____ _____/ /____ _____
/ __ \/ _ \| |/_/ __/ ___/ / __ \/ / / / __ /_____/ _ \| |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/
/ / / / __/> </ /_/ /__/ / /_/ / /_/ / /_/ /_____/ __/> </ /_/ / /_/ / / / /_/ __/ /
/_/ /_/\___/_/|_|\__/\___/_/\____/\__,_/\__,_/ \___/_/|_/ .___/\____/_/ \__/\___/_/
/_/