From 38172655f72934680119c9dbc78420468c890a55 Mon Sep 17 00:00:00 2001 From: fadmin Date: Thu, 23 Jul 2026 18:58:39 -0400 Subject: [PATCH] Add install-npm.sh --- install-npm.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 install-npm.sh diff --git a/install-npm.sh b/install-npm.sh new file mode 100644 index 0000000..64d19d9 --- /dev/null +++ b/install-npm.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +# +# Nginx Proxy Manager (NPM) Automated Installer for Fedora +# + +set -e + +# 1. Ensure script is run with root/sudo privileges +if [ "$EUID" -ne 0 ]; then + echo "❌ Please run this script with sudo or as root." + exit 1 +fi + +echo "🚀 Starting Nginx Proxy Manager installation for Fedora..." + +# 2. Install Docker and Docker Compose plugin if not already installed +if ! command -v docker &> /dev/null; then + echo "📦 Docker not found. Installing Docker and dependencies via dnf..." + dnf install -y dnf-plugins-core + dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo + dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +fi + +# 3. Start and enable Docker service +echo "⚙️ Enabling and starting Docker service..." +systemctl enable --now docker + +# 4. Open required firewall ports (Firewalld is default on Fedora) +if command -v firewall-cmd &> /dev/null; then + echo "🔥 Configuring Firewalld to allow HTTP (80), HTTPS (443), and NPM Admin (81)..." + firewall-cmd --permanent --add-port=80/tcp + firewall-cmd --permanent --add-port=81/tcp + firewall-cmd --permanent --add-port=443/tcp + firewall-cmd --reload +fi + +# 5. Create deployment directory +INSTALL_DIR="/opt/nginx-proxy-manager" +echo "📁 Creating installation directory at ${INSTALL_DIR}..." +mkdir -p "${INSTALL_DIR}" +cd "${INSTALL_DIR}" + +# 6. Generate docker-compose.yml +echo "📝 Writing docker-compose.yml configuration..." +cat << 'EOF' > docker-compose.yml +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + container_name: nginx-proxy-manager + restart: unless-stopped + ports: + - '80:80' # Public HTTP + - '81:81' # Admin Web Port + - '443:443' # Public HTTPS + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt +EOF + +# 7. Start the container stack +echo "🐳 Launching Nginx Proxy Manager container..." +docker compose up -d + +# 8. Complete setup feedback +echo "" +echo "==========================================================" +echo "🎉 Setup complete! Nginx Proxy Manager is running." +echo "" +echo "🌐 Access the Web Dashboard at:" +echo " http://$(hostname -I | awk '{print $1}'):81" +echo "" +echo "🔑 Default Credentials:" +echo " Email: admin@example.com" +echo " Password: changeme" +echo "==========================================================" \ No newline at end of file