Nginx Proxy Manager

Connect Your Domain to Local Servers with Free SSL

A Step-by-Step macOS Tutorial

Before You Start

You need: A domain name pointing to your home IP, Docker Desktop for Mac installed, and access to your router's admin panel.

01 Install Docker Desktop for macOS

Docker Desktop is required to run Nginx Proxy Manager as a container.

Steps:

  1. Download Docker Desktop from docker.com
  2. Run the installer (.dmg file)
  3. Move Docker.app to Applications
  4. Launch Docker Desktop and wait for it to start
  5. Verify installation: docker --version
Tip: Docker Desktop requires macOS 10.15 (Catalina) or later.

02 Create docker-compose.yml

Create a folder for Nginx Proxy Manager and add the configuration file.

mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager
nano docker-compose.yml

Add the following content:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'    # Public HTTP
      - '443:443'  # Public HTTPS
      - '81:81'     # Admin UI
    environment:
      TZ: "Australia/Melbourne"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
Save: Press Ctrl + O then Ctrl + X to exit nano.

03 Start Nginx Proxy Manager

Launch Nginx Proxy Manager using Docker Compose.

cd ~/nginx-proxy-manager
docker compose up -d

Wait about 2 minutes for first-time setup (database initialization).

Check Status: docker ps should show the container running.

04 Initial Admin Setup

Access the admin interface to configure your admin account.

Steps:

  1. Open browser: http://localhost:81
  2. Default credentials:
    • Email: admin@example.com
    • Password: changeme
  3. You'll be prompted to create a new admin account
  4. Fill in your details and click Create Admin User
Important: Change the default password immediately!

05 Configure a Proxy Host

Create a proxy host to forward traffic from your domain to your local server.

Steps:

  1. Click Proxy Hosts in the sidebar
  2. Click Add Proxy Host (top right)
  3. Details tab:
    • Domain Names: yourdomain.com
    • Scheme: http
    • Forward Hostname/IP: 192.168.1.100 (your local server IP)
    • Forward Port: 8080 (or your service port)
  4. Click Save
Test: Visit your domain - it should now forward to your local server!

06 Enable Free SSL with Let's Encrypt

Nginx Proxy Manager includes free SSL certificate support via Let's Encrypt.

Steps:

  1. Edit your Proxy Host
  2. Go to the SSL tab
  3. Select Request a new SSL Certificate
  4. Check Force SSL
  5. Check I Agree to Let's Encrypt Terms of Service
  6. Click Save
✅ Certificate will be automatically issued and configured!
✅ Renews automatically before expiration
Note: Your domain must already point to your public IP for SSL to work.

07 Router Port Forwarding

Forward external traffic to your Nginx Proxy Manager server.

Steps:

  1. Access your router admin panel (usually http://192.168.1.1)
  2. Find Port Forwarding or Virtual Server
  3. Create these forwards:
    External Port Internal IP Internal Port Protocol
    80 YOUR_MAC_IP 80 TCP
    443 YOUR_MAC_IP 443 TCP
  4. Save settings and reboot router if required
Security: Only forward ports 80 and 443. Never expose port 81 to the internet!

You're All Set!

Your domain should now:

  • ✅ Forward to your local server
  • ✅ Have a valid SSL certificate
  • ✅ Redirect HTTP to HTTPS automatically

Useful Commands:

# View logs
docker logs nginx-proxy-manager-1

# Restart
docker compose restart

# Stop
docker compose down

# Update
docker compose pull
docker compose up -d