11#! /usr/bin/env bash
22source <( curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
3- # Copyright (c) 2021-2025 tteck
4- # Author: tteck (tteckster)
3+ # Copyright (c) 2021-2025 Community-Script ORG
4+ # Author: tteck (tteckster) | Co-Author: CrazyWolf13
55# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
66# Source: https://nginxproxymanager.com/
77
88APP=" Nginx Proxy Manager"
99var_tags=" ${var_tags:- proxy} "
1010var_cpu=" ${var_cpu:- 2} "
11- var_ram=" ${var_ram:- 1024 } "
12- var_disk=" ${var_disk:- 4 } "
11+ var_ram=" ${var_ram:- 2048 } "
12+ var_disk=" ${var_disk:- 8 } "
1313var_os=" ${var_os:- debian} "
1414var_version=" ${var_version:- 13} "
1515var_unprivileged=" ${var_unprivileged:- 1} "
@@ -42,60 +42,47 @@ function update_script() {
4242 fi
4343
4444 NODE_VERSION=" 22" NODE_MODULE=" yarn" setup_nodejs
45- export NODE_OPTIONS=" --openssl-legacy-provider"
4645
4746 RELEASE=$( curl -fsSL https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest |
4847 grep " tag_name" |
4948 awk ' {print substr($2, 3, length($2)-4) }' )
5049
51- msg_info " Downloading NPM v${RELEASE} "
52- curl -fsSL " https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE} " | tar -xz
53- cd nginx-proxy-manager-" ${RELEASE} " || exit
54- msg_ok " Downloaded NPM v${RELEASE} "
55-
56- msg_info " Building Frontend"
57- (
58- sed -i " s|\" version\" : \" 0.0.0\" |\" version\" : \" $RELEASE \" |" backend/package.json
59- sed -i " s|\" version\" : \" 0.0.0\" |\" version\" : \" $RELEASE \" |" frontend/package.json
60- cd ./frontend || exit
61- # Replace node-sass with sass in package.json before installation
62- sed -i ' s/"node-sass".*$/"sass": "^1.92.1",/g' package.json
63- $STD yarn install --network-timeout 600000
64- $STD yarn build
65- )
66- msg_ok " Built Frontend"
50+ fetch_and_deploy_gh_release " nginxproxymanager" " NginxProxyManager/nginx-proxy-manager"
6751
6852 msg_info " Stopping Services"
6953 systemctl stop openresty
7054 systemctl stop npm
7155 msg_ok " Stopped Services"
7256
73- msg_info " Cleaning Old Files "
74- rm -rf /app \
57+ msg_info " Cleaning old files "
58+ $STD rm -rf /app \
7559 /var/www/html \
7660 /etc/nginx \
7761 /var/log/nginx \
7862 /var/lib/nginx \
79- " $STD " /var/cache/nginx
80- msg_ok " Cleaned Old Files "
63+ /var/cache/nginx
64+ msg_ok " Cleaned old files "
8165
8266 msg_info " Setting up Environment"
8367 ln -sf /usr/bin/python3 /usr/bin/python
84- ln -sf /opt/certbot/bin/certbot /usr/local/bin/certbot
8568 ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
8669 ln -sf /usr/local/openresty/nginx/ /etc/nginx
87- sed -i ' s+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
88- NGINX_CONFS=$( find " $( pwd) " -type f -name " *.conf" )
70+ sed -i " s|\" version\" : \" 2.0.0\" |\" version\" : \" $RELEASE \" |" /opt/nginxproxymanager/backend/package.json
71+ sed -i " s|\" version\" : \" 2.0.0\" |\" version\" : \" $RELEASE \" |" /opt/nginxproxymanager/frontend/package.json
72+ sed -i ' s+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
73+ NGINX_CONFS=$( find /opt/nginxproxymanager -type f -name " *.conf" )
8974 for NGINX_CONF in $NGINX_CONFS ; do
9075 sed -i ' s+include conf.d+include /etc/nginx/conf.d+g' " $NGINX_CONF "
9176 done
77+
9278 mkdir -p /var/www/html /etc/nginx/logs
93- cp -r docker/rootfs/var/www/html/* /var/www/html/
94- cp -r docker/rootfs/etc/nginx/* /etc/nginx/
95- cp docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
96- cp docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
79+ cp -r /opt/nginxproxymanager/ docker/rootfs/var/www/html/* /var/www/html/
80+ cp -r /opt/nginxproxymanager/ docker/rootfs/etc/nginx/* /etc/nginx/
81+ cp /opt/nginxproxymanager/ docker/rootfs/etc/letsencrypt.ini /etc/letsencrypt.ini
82+ cp /opt/nginxproxymanager/ docker/rootfs/etc/logrotate.d/nginx-proxy-manager /etc/logrotate.d/nginx-proxy-manager
9783 ln -sf /etc/nginx/nginx.conf /etc/nginx/conf/nginx.conf
9884 rm -f /etc/nginx/conf.d/dev.conf
85+
9986 mkdir -p /tmp/nginx/body \
10087 /run/nginx \
10188 /data/nginx \
@@ -112,27 +99,33 @@ function update_script() {
11299 /var/lib/nginx/cache/public \
113100 /var/lib/nginx/cache/private \
114101 /var/cache/nginx/proxy_temp
102+
115103 chmod -R 777 /var/cache/nginx
116104 chown root /tmp/nginx
105+
117106 echo resolver " $( awk ' BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf) ;" > /etc/nginx/conf.d/include/resolvers.conf
107+
118108 if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
119109 $STD openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj " /O=Nginx Proxy Manager/OU=Dummy Certificate/CN=localhost" -keyout /data/nginx/dummykey.pem -out /data/nginx/dummycert.pem
120110 fi
121- mkdir -p /app/global /app/frontend/images
122- cp -r frontend/dist/* /app/frontend
123- cp -r frontend/app-images/* /app/frontend/images
124- cp -r backend/* /app
125- cp -r global/* /app/global
126111
127- # Update Certbot and plugins in virtual environment
128- if [ -d /opt/certbot ]; then
129- $STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
130- $STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
131- fi
132- msg_ok " Setup Environment"
112+ mkdir -p /app/frontend/images
113+ cp -r /opt/nginxproxymanager/backend/* /app
114+ msg_ok " Set up Environment"
115+
116+ msg_info " Building Frontend"
117+ export NODE_OPTIONS=" --max_old_space_size=2048 --openssl-legacy-provider"
118+ cd /opt/nginxproxymanager/frontend
119+ # Replace node-sass with sass in package.json before installation
120+ sed -E -i ' s/"node-sass" *: *"([^"]*)"/"sass": "\1"/g' package.json
121+ $STD yarn install --network-timeout 600000
122+ $STD yarn build
123+ cp -r /opt/nginxproxymanager/frontend/dist/* /app/frontend
124+ cp -r /opt/nginxproxymanager/frontend/public/images/* /app/frontend/images
125+ msg_ok " Built Frontend"
133126
134127 msg_info " Initializing Backend"
135- $STD rm -rf /app/config/default.json
128+ rm -rf /app/config/default.json
136129 if [ ! -f /app/config/production.json ]; then
137130 cat << 'EOF ' >/app/config/production.json
138131{
@@ -148,23 +141,37 @@ function update_script() {
148141}
149142EOF
150143 fi
151- cd /app || exit
152- export NODE_OPTIONS=" --openssl-legacy-provider"
144+ cd /app
153145 $STD yarn install --network-timeout 600000
154146 msg_ok " Initialized Backend"
147+
148+ msg_info " Updating Certbot"
149+ [ -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg ] && rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg
150+ [ -f /etc/apt/sources.list.d/openresty.list ] && rm -f /etc/apt/sources.list.d/openresty.list
151+ [ ! -f /etc/apt/trusted.gpg.d/openresty.gpg ] && curl -fsSL https://openresty.org/package/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/openresty.gpg
152+ [ ! -f /etc/apt/sources.list.d/openresty.sources ] && cat << 'EOF ' >/etc/apt/sources.list.d/openresty.sources
153+ Types: deb
154+ URIs: http://openresty.org/package/debian/
155+ Suites: bookworm
156+ Components: openresty
157+ Signed-By: /etc/apt/trusted.gpg.d/openresty.gpg
158+ EOF
159+ $STD apt update
160+ $STD apt -y install openresty
161+ if [ -d /opt/certbot ]; then
162+ $STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
163+ $STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
164+ fi
165+ msg_ok " Updated Certbot"
155166
156167 msg_info " Starting Services"
157168 sed -i ' s/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
158- sed -i ' s/su npm npm/su root root/g' /etc/logrotate.d/nginx-proxy-manager
159- sed -i ' s/include-system-site-packages = false/include-system-site-packages = true/g' /opt/certbot/pyvenv.cfg
169+ sed -r -i ' s/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
160170 systemctl enable -q --now openresty
161171 systemctl enable -q --now npm
172+ systemctl restart openresty
162173 msg_ok " Started Services"
163174
164- msg_info " Cleaning up"
165- rm -rf ~ /nginx-proxy-manager-*
166- msg_ok " Cleaned"
167-
168175 msg_ok " Updated successfully!"
169176 exit
170177}
0 commit comments