Compare commits

...

16 Commits

Author SHA1 Message Date
github-actions[bot]
336443175d Update CHANGELOG.md 2026-10-27 18:57:02 +00:00
CanbiZ (MickLesk)
4439ef2f3f TurnKey: offer only current appliances, stop on arm64 (#18265)
* TurnKey: offer only current appliances, stop on arm64

* Update turnkey/turnkey.sh

---------

Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-10-27 19:56:36 +01:00
community-scripts-pr-app[bot]
d864252eb8 Update CHANGELOG.md (#18274)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 18:56:32 +00:00
community-scripts-pr-app[bot]
472813b409 Update CHANGELOG.md (#18273)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 18:56:11 +00:00
CanbiZ (MickLesk)
40663cb865 NPMplus: let the ACME e-mail stay empty again, Let's Encrypt does not need one (#18263) 2026-10-27 19:55:52 +01:00
CanbiZ (MickLesk)
4b22056eb9 Zabbix: leave out the NVIDIA agent2 plugin that breaks the all-plugins install (#18262) 2026-10-27 19:55:40 +01:00
community-scripts-pr-app[bot]
55dec1b1b8 Update CHANGELOG.md (#18270)
Some checks failed
Create Changelog Pull Request / update-changelog-pull-request (push) Has been cancelled
Set state to is_deleted in pocketbase / delete-pocketbase-entry (push) Has been cancelled
Sync ct/install to Incus / dispatch (push) Has been cancelled
Update script timestamp on .sh changes / update-script-timestamp (push) Has been cancelled
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 12:03:48 +00:00
CanbiZ (MickLesk)
8171d2c3dc Remove: Readarr (#18264) 2026-10-27 13:03:24 +01:00
ChrisKappe
1c9245c417 [fix/omada-version-detection] (#18248)
Co-authored-by: Christian Mütze <cmuetze@epacflexibles.com>
2026-10-27 13:03:13 +01:00
community-scripts-pr-app[bot]
28fd647e6a Update CHANGELOG.md (#18268)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 10:14:27 +00:00
community-scripts-pr-app[bot]
8001edc4d4 Update CHANGELOG.md (#18267)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 09:30:03 +00:00
community-scripts-pr-app[bot]
83af1dccc3 Update CHANGELOG.md (#18266)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 09:29:48 +00:00
community-scripts-pr-app[bot]
b1cf184616 Update CHANGELOG.md (#18261)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 08:33:48 +00:00
CanbiZ (MickLesk)
fd12b4c1db LanguageTool: count ngram prompt retries without tripping errexit (#18258) 2026-10-27 09:33:23 +01:00
community-scripts-pr-app[bot]
c3ba64bf0c Update CHANGELOG.md (#18260)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-27 08:29:42 +00:00
CanbiZ (MickLesk)
031debe496 Overseerr: point fresh installs to Seerr instead of a missing install script (#18259) 2026-10-27 09:29:06 +01:00
10 changed files with 56 additions and 119 deletions

View File

@@ -574,8 +574,30 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🐞 Bug Fixes
- Zabbix: leave out the NVIDIA agent2 plugin that breaks the all-plugins install [@MickLesk](https://github.com/MickLesk) ([#18262](https://github.com/community-scripts/ProxmoxVE/pull/18262))
- Omada: detect latest version from product download page [@ChrisKappe](https://github.com/ChrisKappe) ([#18248](https://github.com/community-scripts/ProxmoxVE/pull/18248))
- LanguageTool: count ngram prompt retries without tripping errexit [@MickLesk](https://github.com/MickLesk) ([#18258](https://github.com/community-scripts/ProxmoxVE/pull/18258))
- Overseerr: point fresh installs to Seerr [@MickLesk](https://github.com/MickLesk) ([#18259](https://github.com/community-scripts/ProxmoxVE/pull/18259))
- stalwart: pin to v0.16.27 until v1 migration is supported [@MickLesk](https://github.com/MickLesk) ([#18252](https://github.com/community-scripts/ProxmoxVE/pull/18252))
- #### ✨ New Features
- TurnKey: offer only current appliances, stop on arm64 [@MickLesk](https://github.com/MickLesk) ([#18265](https://github.com/community-scripts/ProxmoxVE/pull/18265))
- #### 🔧 Refactor
- NPMplus: let the ACME e-mail stay empty again, Let's Encrypt does not need one [@MickLesk](https://github.com/MickLesk) ([#18263](https://github.com/community-scripts/ProxmoxVE/pull/18263))
### 🗑️ Deleted Scripts
- Remove: Readarr [@MickLesk](https://github.com/MickLesk) ([#18264](https://github.com/community-scripts/ProxmoxVE/pull/18264))
### 💾 Core
- Say the same thing on both hosts while a container is created [@MickLesk](https://github.com/MickLesk) ([core#173](https://github.com/community-scripts/core/pull/173))
- Skip the IPv6 sysctl when the host kernel has no IPv6 [@MickLesk](https://github.com/MickLesk) ([core#171](https://github.com/community-scripts/core/pull/171))
- Stop reporting a closed console as a user abort, and shield the host's own work [@MickLesk](https://github.com/MickLesk) ([core#172](https://github.com/community-scripts/core/pull/172))
## 2026-10-26
### 🆕 New Scripts

View File

@@ -40,9 +40,12 @@ function update_script() {
JAVA_VERSION="21" setup_java
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" "https://support.omadanetworks.com/en/download/software/omada-controller/" |
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" \
"https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" \
"https://support.omadanetworks.com/en/download/software/omada-controller/" |
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
head -n1)
sed -n 's/.*_v\([0-9.]*\)_linux.*/\1 &/p' |
sort -V | tail -n1 | cut -d' ' -f2)
OMADA_PKG=$(basename "${OMADA_URL}")
VERSION=$(sed -n 's/.*_v\([0-9.]*\)_linux.*/\1/p' <<<"${OMADA_PKG}")

View File

@@ -82,6 +82,12 @@ EOF
exit
}
if [[ ! -d /opt/overseerr ]]; then
msg_error "Overseerr is now Seerr and can no longer be installed with this script."
msg_warn "Install Seerr instead: https://community-scripts.org/scripts/seerr"
exit 1
fi
start
build_container
description

View File

@@ -1,47 +0,0 @@
#!/usr/bin/env bash
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://readarr.com/
APP="Readarr"
var_tags="${var_tags:-media;comic;eBook}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}"
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 /var/lib/readarr/ ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
apt_update_safe
$STD apt -y upgrade
msg_ok "Updated $APP LXC"
msg_ok "Updated successfully!"
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 "${GATEWAY}${BGN}http://${IP}:8787${CL}"

View File

@@ -41,7 +41,7 @@ while [[ $attempt -lt $max_attempts ]]; do
fi
if [[ "$lang_code" =~ [[:space:]] ]]; then
((attempt++))
attempt=$((attempt + 1))
remaining=$((max_attempts - attempt))
lang_code=""
if [[ $remaining -gt 0 ]]; then

View File

@@ -55,8 +55,7 @@ while true; do
done
ACME_EMAIL_INPUT="${var_npmplus_acme_email:-}"
[[ -n "$ACME_EMAIL_INPUT" ]] || read -r -p "${TAB3}Enter your ACME Email: " ACME_EMAIL_INPUT || true
[[ -n "$ACME_EMAIL_INPUT" ]] || { msg_error "No ACME e-mail given; set var_npmplus_acme_email or answer the prompt"; exit 64; }
[[ -n "$ACME_EMAIL_INPUT" ]] || read -r -p "${TAB3}Enter your ACME Email (optional, press ENTER to skip): " ACME_EMAIL_INPUT || true
yq -i "
.services.npmplus.environment |=

View File

@@ -59,9 +59,12 @@ if ! dpkg -l | grep -q 'libssl1.1'; then
fi
msg_info "Installing Omada Controller"
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" "https://support.omadanetworks.com/en/download/software/omada-controller/" |
OMADA_URL=$(curl -fsSL -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.5 Safari/605.1.15" \
"https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" \
"https://support.omadanetworks.com/en/download/software/omada-controller/" |
grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' |
head -n1)
sed -n 's/.*_v\([0-9.]*\)_linux.*/\1 &/p' |
sort -V | tail -n1 | cut -d' ' -f2)
OMADA_PKG=$(basename "${OMADA_URL}")
curl_download "${OMADA_PKG}" "${OMADA_URL}"
$STD dpkg -i "${OMADA_PKG}"

View File

@@ -1,52 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 tteck
# Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://readarr.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y sqlite3 libicu-dev
msg_ok "Installed Dependencies"
msg_info "Installing Readarr"
mkdir -p /var/lib/readarr/
chmod 775 /var/lib/readarr/
cd /var/lib/readarr/
$STD curl -fsSL "https://readarr.servarr.com/v1/update/develop/updatefile?os=linux&runtime=netcore&arch=$(arch_resolve "x64" "arm64")" -o readarr.tar.gz
$STD tar -xvzf readarr.tar.gz
mv Readarr /opt
chmod 775 /opt/Readarr
rm -rf Readarr.develop.*.tar.gz
msg_ok "Installed Readarr"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/readarr.service
[Unit]
Description=Readarr Daemon
After=syslog.target network.target
[Service]
UMask=0002
Type=simple
ExecStart=/opt/Readarr/Readarr -nobrowser -data=/var/lib/readarr/
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl -q daemon-reload
systemctl enable --now -q readarr
msg_ok "Created Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -83,23 +83,20 @@ msg_ok "Selected $AGENT_PKG"
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
echo "Choose plugins for Zabbix Agent2:"
echo "1) PostgreSQL only (default, recommended)"
echo "2) All plugins (may cause issues)"
echo "2) All plugins except NVIDIA GPU (may cause issues)"
PLUGIN_CHOICE="${var_zabbix_plugins:-}"
[[ -n "$PLUGIN_CHOICE" ]] || read -rp "Choose option [1-2]: " PLUGIN_CHOICE || true
case "$PLUGIN_CHOICE" in
2)
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-*
# The NVIDIA plugin fails the agent's config test without NVML, which aborts the package install
mapfile -t AGENT2_PLUGINS < <(apt-cache search --names-only '^zabbix-agent2-plugin-' | awk '{print $1}' | grep -v nvidia)
$STD apt install -y zabbix-agent2 "${AGENT2_PLUGINS[@]}"
;;
*)
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
;;
esac
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
fi
else
$STD apt install -y zabbix-agent
fi

View File

@@ -12,6 +12,7 @@ catch_errors
APP="TurnKey LXC"
NSAPP="turnkey"
var_arm64="no"
DIAGNOSTICS="no"
METHOD="default"
RANDOM_UUID="$(cat /proc/sys/kernel/random/uuid)"
@@ -159,6 +160,7 @@ fi
pve_check
shell_check
root_check
arch_check
# Read diagnostics preference (same logic as build.func diagnostics_check)
DIAG_CONFIG="/usr/local/community-scripts/diagnostics"
@@ -178,6 +180,7 @@ msg_ok "Updated LXC template list"
# Build TurnKey selection menu dynamically from available templates
# Requires gawk for regex capture groups in match()
# Newest template per appliance, current or previous Debian only: the catalog still lists dropped appliances on EOL releases
command -v gawk &>/dev/null || apt-get install -y gawk &>/dev/null
declare -A TURNKEY_TEMPLATES
TURNKEY_MENU=()
@@ -187,10 +190,14 @@ while IFS=$'\t' read -r TEMPLATE_FILE TAG ITEM; do
OFFSET=2
((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=$((${#ITEM} + OFFSET))
TURNKEY_MENU+=("$TAG" "$ITEM " "OFF")
done < <(pveam available -section turnkeylinux | gawk '{
tpl = $2
if (match(tpl, /debian-([0-9]+)-turnkey-([^_]+)_([^_]+)_/, m)) {
app = m[2]; deb = m[1]; ver = m[3]
done < <(pveam available -section turnkeylinux | sort -k2,2V | gawk '
match($2, /debian-([0-9]+)-turnkey-([^_]+)_([^_]+)_/, m) {
tpl[m[2]] = $2; deb[m[2]] = m[1] + 0; ver[m[2]] = m[3]
if (m[1] + 0 > newest) newest = m[1] + 0
}
END {
for (app in tpl) {
if (deb[app] < newest - 1) continue
display = app
gsub(/-/, " ", display)
n = split(display, words, " ")
@@ -199,8 +206,7 @@ done < <(pveam available -section turnkeylinux | gawk '{
words[i] = toupper(substr(words[i], 1, 1)) substr(words[i], 2)
display = display (i > 1 ? " " : "") words[i]
}
tag = app "-" deb
printf "%s\t%s\t%s | Debian %s | %s\n", tpl, tag, display, deb, ver
printf "%s\t%s-%s\t%s | Debian %s | %s\n", tpl[app], app, deb[app], display, deb[app], ver[app]
}
}' | sort -t$'\t' -k2,2)