Files
Docker_Compose_Files/Nginx-Proxy-Manager.sh
2026-07-23 19:00:34 -04:00

75 lines
2.4 KiB
Bash

#!/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 "=========================================================="