#!/bin/bash # WARNING: USE at your own risk. Test carefully BEFORE applying IN production. # THIS SCRIPT WAS UPDATED FROM THE ORIGINAL USING CHATGPT! # IT worked ON a DS920+ AS OF 19th May 25. # Updated FOR DSM 7.2.2 compatibility. # This script will attempt TO free up ports 80 AND 443 used BY the built-IN nginx. HTTP_PORT=980 HTTPS_PORT=444 BACKUP_FILES=TRUE BACKUP_DIR=/volume1/kashubnfs/cronjobs/backup DELETE_OLD_BACKUPS=FALSE KEEP_BACKUP_DAYS=30 NGINX_DIR="/usr/syno/share/nginx" DATE=$(DATE +%Y-%m-%d-%H-%M-%S) CURRENT_BACKUP_DIR="$BACKUP_DIR/$DATE" IF [ "$BACKUP_FILES" = "true" ]; THEN mkdir -p "$CURRENT_BACKUP_DIR" cp "$NGINX_DIR"/*.mustache "$CURRENT_BACKUP_DIR" fi if [ "$DELETE_OLD_BACKUPS" = "true" ]; then find "$BACKUP_DIR/" -type d -mtime +$KEEP_BACKUP_DAYS -exec rm -r {} \; fi # Replace IPv4 listen ports 80 and 443 sed -i "s/^\([ \t]*listen[ \t]*\[\?:\?]*\)80\([^0-9]\)/\1$HTTP_PORT\2/" "$NGINX_DIR"/*.mustache sed -i "s/^\([ \t]*listen[ \t]*\[\?:\?]*\)443\([^0-9]\)/\1$HTTPS_PORT\2/" "$NGINX_DIR"/*.mustache # Replace IPv6 listen ports [::]:80 and [::]:443 sed -i "s/^\([ \t]*listen[ \t]*\[::\]:\)80\([^0-9]\)/\1$HTTP_PORT\2/" "$NGINX_DIR"/*.mustache sed -i "s/^\([ \t]*listen[ \t]*\[::\]:\)443\([^0-9]\)/\1$HTTPS_PORT\2/" "$NGINX_DIR"/*.mustache if command -v synoservicecfg >/dev/null; then synoservicecfg --restart nginx elif command -v synosystemctl >/dev/null; then synosystemctl restart nginx elif systemctl status nginx >/dev/null 2>&1; then systemctl restart nginx else echo "Could not find nginx service restart command." fi echo "Port replacements complete. Here are the diffs:" diff -u "$CURRENT_BACKUP_DIR" "$NGINX_DIR" | tee "$CURRENT_BACKUP_DIR/changes.log"