Nginx Proxy Manager

macOS Setup Guide with Free SSL

Powered by ChatGPT 🤖

What We'll Do
  • Install Nginx Proxy Manager using Docker on macOS
  • Set up port forwarding on your router
  • Point your domain to your home IP
  • Create a Proxy Host in NPM
  • Request free SSL from Let's Encrypt

STEP 1Install Docker

Nginx Proxy Manager runs in Docker.

  1. Download and install Docker Desktop for Mac
  2. Open Docker and make sure it's running
  3. Confirm: docker --version

STEP 2Install Nginx Proxy Manager

Create a folder:

mkdir nginx-proxy-manager
cd nginx-proxy-manager

Create docker-compose.yml:

version: "3"
services:
  app:
    image: jc21/nginx-proxy-manager:latest
    restart: always
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Start it:

docker compose up -d

Open: http://localhost:81

Default login: admin@example.com / changeme

STEP 3Static Local IP

System Settings → Network → Your Connection → Details → TCP/IP

Set Configure IPv4: Manually

Choose: 192.168.1.10 (or your preferred IP)

Router: 192.168.1.1

This ensures port forwarding always works

STEP 4Port Forwarding

Log into your router (192.168.1.1) and add these rules:

External PortInternal IPInternal Port
80192.168.1.1080
443192.168.1.10443
Only ports 80/443 needed!

STEP 5Domain DNS

Go to your domain DNS provider and create an A Record:

TypeNameValue
A@YOUR_PUBLIC_IP

Find your public IP: search what is my ip

Wait 5-30 min for DNS propagation

STEP 6Create Proxy Host

  1. Log into NPM (http://localhost:81)
  2. Click Proxy Hosts → Add Proxy Host

Details:

  • Domain Names: example.com
  • Scheme: http
  • Forward Hostname/IP: 192.168.1.50
  • Forward Port: 3000

Click Save

STEP 7SSL Certificate

  1. Edit the Proxy Host
  2. Go to SSL tab
  3. Select Request a new SSL Certificate
  4. ✅ Force SSL
  5. ✅ HTTP/2 Support
  6. Agree to Let's Encrypt terms
  7. Click Save
NPM verifies domain over port 80 and auto-installs cert!

STEP 8Test

Visit: https://example.com

✅ Your local service with valid SSL!

Test externally: Use mobile data (turn off WiFi) or an online SSL checker

Troubleshooting

Certificate fails?

  • Port 80 not forwarded correctly
  • DNS not pointing to correct public IP
  • ISP blocking port 80

Works locally but not externally?

  • Check router port forwarding
  • Confirm Mac firewall allows 80/443