mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-04-18 16:32:17 +00:00
Refactor: nginxproxymanager update and OpenResty flow (#13216)
This commit is contained in:
committed by
GitHub
parent
1512711435
commit
5c795395ca
@@ -49,41 +49,25 @@ function update_script() {
|
|||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
|
|
||||||
RELEASE=$(get_latest_github_release "NginxProxyManager/nginx-proxy-manager")
|
if dpkg -s openresty &>/dev/null 2>&1; then
|
||||||
|
msg_info "Migrating from packaged OpenResty to source"
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "v${RELEASE}" "/opt/nginxproxymanager"
|
rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg /etc/apt/trusted.gpg.d/openresty.gpg
|
||||||
|
rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/openresty.sources
|
||||||
msg_info "Stopping Services"
|
|
||||||
systemctl stop openresty
|
|
||||||
systemctl stop npm
|
|
||||||
msg_ok "Stopped Services"
|
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
|
||||||
$STD rm -rf /app \
|
|
||||||
/var/www/html \
|
|
||||||
/etc/nginx \
|
|
||||||
/var/log/nginx \
|
|
||||||
/var/lib/nginx \
|
|
||||||
/var/cache/nginx
|
|
||||||
msg_ok "Cleaned old files"
|
|
||||||
|
|
||||||
msg_info "Migrating to OpenResty from source"
|
|
||||||
rm -f /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg /etc/apt/trusted.gpg.d/openresty.gpg
|
|
||||||
rm -f /etc/apt/sources.list.d/openresty.list /etc/apt/sources.list.d/openresty.sources
|
|
||||||
if dpkg -l openresty &>/dev/null; then
|
|
||||||
$STD apt remove -y openresty
|
$STD apt remove -y openresty
|
||||||
$STD apt autoremove -y
|
$STD apt autoremove -y
|
||||||
|
rm -f ~/.openresty
|
||||||
|
msg_ok "Migrated from packaged OpenResty to source"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local pcre_pkg="libpcre3-dev"
|
local pcre_pkg="libpcre3-dev"
|
||||||
if grep -qE 'VERSION_ID="1[3-9]"' /etc/os-release 2>/dev/null; then
|
if grep -qE 'VERSION_ID="1[3-9]"' /etc/os-release 2>/dev/null; then
|
||||||
pcre_pkg="libpcre2-dev"
|
pcre_pkg="libpcre2-dev"
|
||||||
fi
|
fi
|
||||||
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
$STD apt install -y build-essential "$pcre_pkg" libssl-dev zlib1g-dev
|
||||||
msg_ok "Migrated to OpenResty from source"
|
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "latest" "/opt/openresty" "openresty-*.tar.gz"
|
if check_for_gh_release "openresty" "openresty/openresty"; then
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "openresty" "openresty/openresty" "prebuild" "${CHECK_UPDATE_RELEASE}" "/opt/openresty" "openresty-*.tar.gz"
|
||||||
|
|
||||||
if [[ -d /opt/openresty ]]; then
|
|
||||||
msg_info "Building OpenResty"
|
msg_info "Building OpenResty"
|
||||||
cd /opt/openresty
|
cd /opt/openresty
|
||||||
$STD ./configure \
|
$STD ./configure \
|
||||||
@@ -114,75 +98,100 @@ ExecStart=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
systemctl restart openresty
|
||||||
msg_ok "Built OpenResty"
|
msg_ok "Built OpenResty"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Setting up Environment"
|
if [ -d /opt/certbot ]; then
|
||||||
ln -sf /usr/bin/python3 /usr/bin/python
|
msg_info "Updating Certbot"
|
||||||
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
||||||
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
||||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
msg_ok "Updated Certbot"
|
||||||
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
|
||||||
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
|
||||||
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
|
||||||
for NGINX_CONF in $NGINX_CONFS; do
|
|
||||||
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -p /var/www/html /etc/nginx/logs
|
|
||||||
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
|
||||||
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
|
||||||
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
|
|
||||||
|
|
||||||
mkdir -p /tmp/nginx/body \
|
|
||||||
/run/nginx \
|
|
||||||
/data/nginx \
|
|
||||||
/data/custom_ssl \
|
|
||||||
/data/logs \
|
|
||||||
/data/access \
|
|
||||||
/data/nginx/default_host \
|
|
||||||
/data/nginx/default_www \
|
|
||||||
/data/nginx/proxy_host \
|
|
||||||
/data/nginx/redirection_host \
|
|
||||||
/data/nginx/stream \
|
|
||||||
/data/nginx/dead_host \
|
|
||||||
/data/nginx/temp \
|
|
||||||
/var/lib/nginx/cache/public \
|
|
||||||
/var/lib/nginx/cache/private \
|
|
||||||
/var/cache/nginx/proxy_temp
|
|
||||||
|
|
||||||
chmod -R 777 /var/cache/nginx
|
|
||||||
chown root /tmp/nginx
|
|
||||||
|
|
||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
|
||||||
|
|
||||||
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
|
||||||
$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
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p /app/frontend/images
|
if check_for_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager"; then
|
||||||
cp -r /opt/nginxproxymanager/backend/* /app
|
msg_info "Stopping Services"
|
||||||
msg_ok "Set up Environment"
|
systemctl stop openresty
|
||||||
|
systemctl stop npm
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
msg_info "Building Frontend"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "nginxproxymanager" "NginxProxyManager/nginx-proxy-manager" "tarball" "${CHECK_UPDATE_RELEASE}" "/opt/nginxproxymanager"
|
||||||
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
|
||||||
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
|
|
||||||
msg_ok "Built Frontend"
|
|
||||||
|
|
||||||
msg_info "Initializing Backend"
|
msg_info "Cleaning old files"
|
||||||
rm -rf /app/config/default.json
|
$STD rm -rf /app \
|
||||||
if [ ! -f /app/config/production.json ]; then
|
/var/www/html \
|
||||||
cat <<'EOF' >/app/config/production.json
|
/etc/nginx \
|
||||||
|
/var/log/nginx \
|
||||||
|
/var/lib/nginx \
|
||||||
|
/var/cache/nginx
|
||||||
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
|
local RELEASE="${CHECK_UPDATE_RELEASE#v}"
|
||||||
|
msg_info "Setting up Environment"
|
||||||
|
ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
|
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
|
||||||
|
ln -sf /usr/local/openresty/nginx/ /etc/nginx
|
||||||
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/backend/package.json
|
||||||
|
sed -i "0,/\"version\": \"[^\"]*\"/s|\"version\": \"[^\"]*\"|\"version\": \"$RELEASE\"|" /opt/nginxproxymanager/frontend/package.json
|
||||||
|
sed -i 's+^daemon+#daemon+g' /opt/nginxproxymanager/docker/rootfs/etc/nginx/nginx.conf
|
||||||
|
NGINX_CONFS=$(find /opt/nginxproxymanager -type f -name "*.conf")
|
||||||
|
for NGINX_CONF in $NGINX_CONFS; do
|
||||||
|
sed -i 's+include conf.d+include /etc/nginx/conf.d+g' "$NGINX_CONF"
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p /var/www/html /etc/nginx/logs
|
||||||
|
cp -r /opt/nginxproxymanager/docker/rootfs/var/www/html/* /var/www/html/
|
||||||
|
cp -r /opt/nginxproxymanager/docker/rootfs/etc/nginx/* /etc/nginx/
|
||||||
|
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
|
||||||
|
|
||||||
|
mkdir -p /tmp/nginx/body \
|
||||||
|
/run/nginx \
|
||||||
|
/data/nginx \
|
||||||
|
/data/custom_ssl \
|
||||||
|
/data/logs \
|
||||||
|
/data/access \
|
||||||
|
/data/nginx/default_host \
|
||||||
|
/data/nginx/default_www \
|
||||||
|
/data/nginx/proxy_host \
|
||||||
|
/data/nginx/redirection_host \
|
||||||
|
/data/nginx/stream \
|
||||||
|
/data/nginx/dead_host \
|
||||||
|
/data/nginx/temp \
|
||||||
|
/var/lib/nginx/cache/public \
|
||||||
|
/var/lib/nginx/cache/private \
|
||||||
|
/var/cache/nginx/proxy_temp
|
||||||
|
|
||||||
|
chmod -R 777 /var/cache/nginx
|
||||||
|
chown root /tmp/nginx
|
||||||
|
|
||||||
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" {print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf);" >/etc/nginx/conf.d/include/resolvers.conf
|
||||||
|
|
||||||
|
if [ ! -f /data/nginx/dummycert.pem ] || [ ! -f /data/nginx/dummykey.pem ]; then
|
||||||
|
$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
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /app/frontend/images
|
||||||
|
cp -r /opt/nginxproxymanager/backend/* /app
|
||||||
|
msg_ok "Set up Environment"
|
||||||
|
|
||||||
|
msg_info "Building Frontend"
|
||||||
|
export NODE_OPTIONS="--max_old_space_size=2048 --openssl-legacy-provider"
|
||||||
|
cd /opt/nginxproxymanager/frontend
|
||||||
|
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
|
||||||
|
msg_ok "Built Frontend"
|
||||||
|
|
||||||
|
msg_info "Initializing Backend"
|
||||||
|
rm -rf /app/config/default.json
|
||||||
|
if [ ! -f /app/config/production.json ]; then
|
||||||
|
cat <<'EOF' >/app/config/production.json
|
||||||
{
|
{
|
||||||
"database": {
|
"database": {
|
||||||
"engine": "knex-native",
|
"engine": "knex-native",
|
||||||
@@ -196,28 +205,21 @@ EOF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
|
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
||||||
|
cd /app
|
||||||
|
$STD yarn install --network-timeout 600000
|
||||||
|
msg_ok "Initialized Backend"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
||||||
|
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable -q --now openresty
|
||||||
|
systemctl enable -q --now npm
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
sed -i 's/"client": "sqlite3"/"client": "better-sqlite3"/' /app/config/production.json
|
|
||||||
cd /app
|
|
||||||
$STD yarn install --network-timeout 600000
|
|
||||||
msg_ok "Initialized Backend"
|
|
||||||
|
|
||||||
msg_info "Updating Certbot"
|
|
||||||
if [ -d /opt/certbot ]; then
|
|
||||||
$STD /opt/certbot/bin/pip install --upgrade pip setuptools wheel
|
|
||||||
$STD /opt/certbot/bin/pip install --upgrade certbot certbot-dns-cloudflare
|
|
||||||
fi
|
|
||||||
msg_ok "Updated Certbot"
|
|
||||||
|
|
||||||
msg_info "Starting Services"
|
|
||||||
sed -i 's/user npm/user root/g; s/^pid/#pid/g' /usr/local/openresty/nginx/conf/nginx.conf
|
|
||||||
sed -r -i 's/^([[:space:]]*)su npm npm/\1#su npm npm/g;' /etc/logrotate.d/nginx-proxy-manager
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable -q --now openresty
|
|
||||||
systemctl enable -q --now npm
|
|
||||||
msg_ok "Started Services"
|
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user