From 83a4addccd1101439b187df7db935f6ed051a833 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Sat, 26 Sep 2026 20:51:17 +0200 Subject: [PATCH] Generate the NPM admin config and repair certbot's venv on update (#17523) 2.16.0 ships production.conf only as a template that its s6 prepare step renders, so installs outside Docker never listened on 81; render it on install, on update while keeping a custom admin port, and on update for containers already stuck on 2.16.0. Certbot's upgrade died on a dist-info without RECORD, which pip's own --ignore-installed hint does not clear, so drop such records before upgrading. --- ct/nginxproxymanager.sh | 12 ++++++++++++ install/nginxproxymanager-install.sh | 3 +++ 2 files changed, 15 insertions(+) diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index 607f6e32c..ab4f93b33 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -118,10 +118,18 @@ EOF $STD "$CERTBOT_PYTHON" -m ensurepip --upgrade fi $STD "$CERTBOT_PYTHON" -m pip install --upgrade pip setuptools wheel + find /opt/certbot/lib/python3*/site-packages -maxdepth 1 -name '*.dist-info' -type d ! -exec test -e '{}/RECORD' ';' -exec rm -rf '{}' + 2>/dev/null || true $STD "$CERTBOT_PYTHON" -m pip install --upgrade certbot certbot-dns-cloudflare msg_ok "Updated Certbot" fi + if [[ -f /etc/nginx/conf.d/production.conf.template && ! -f /etc/nginx/conf.d/production.conf ]]; then + msg_info "Restoring Admin Interface" + sed 's/{{NPM_ADMIN_PORT}}/81/g' /etc/nginx/conf.d/production.conf.template >/etc/nginx/conf.d/production.conf + systemctl restart openresty + msg_ok "Restored Admin Interface" + fi + if check_for_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"; then msg_info "Stopping Services" systemctl stop openresty @@ -159,6 +167,10 @@ EOF cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf rm -f /etc/nginx/conf.d/dev.conf + if [[ -f /etc/nginx/conf.d/production.conf.template ]]; then + ADMIN_PORT=$(grep -oP '^\s*listen\s+\K[0-9]+(?=\s+default)' /etc/nginx/conf.d/production.conf 2>/dev/null | head -n1 || true) + sed "s/{{NPM_ADMIN_PORT}}/${ADMIN_PORT:-81}/g" /etc/nginx/conf.d/production.conf.template >/etc/nginx/conf.d/production.conf + fi mkdir -p /tmp/nginx/body \ /run/nginx \ diff --git a/install/nginxproxymanager-install.sh b/install/nginxproxymanager-install.sh index 4c5471b83..992eb4990 100644 --- a/install/nginxproxymanager-install.sh +++ b/install/nginxproxymanager-install.sh @@ -96,6 +96,9 @@ cp /opt/nginxproxymanager/docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini cp /opt/nginxproxymanager/docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf rm -f /etc/nginx/conf.d/dev.conf +if [[ -f /etc/nginx/conf.d/production.conf.template ]]; then + sed 's/{{NPM_ADMIN_PORT}}/81/g' /etc/nginx/conf.d/production.conf.template >/etc/nginx/conf.d/production.conf +fi mkdir -p /tmp/nginx/body \ /run/nginx \