Nginx Proxy Manager + ZeroTier: Reverse Proxy and SSL Automation Solution

10/6/2025IT

I previously wrote a tutorial on deploying a reverse proxy and SSL certification using frp + Docker. While it was feature-complete, there were many configuration details to handle, especially the complex environment variable settings for frp intranet penetration.

Deploy Reverse Proxy and SSL with Docker instantly

I've found that using Vultr VPS + ZeroTier + Nginx Proxy Manager is actually a much simpler way to achieve the same goal. In this post, I'll share my new approach.

Vultr VPS Specs and Cost

I chose Vultr for this setup with the following specifications:

At only about $6 per month, it's half the price of a similar spec VPS from GCP or AWS. It offers great value for self-hosting small services.

Architecture Diagram

Rendering diagram...

Implementation Steps

1. Vultr VPS Setup and Docker Installation

Once the Vultr VPS is up and running, ensure that Docker and docker-compose are installed.

2. Deploy Nginx Proxy Manager

Create a docker-compose.yml file:

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

Start the service:

docker-compose up -d

3. Install ZeroTier and Connect the Local Server

Install ZeroTier on both the VPS and the local server:

curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join <Your Network ID>

Approve the two hosts in the ZeroTier console to allow them to communicate, and note the ZeroTier IP of the local server.

4. Configure Reverse Proxy in Nginx Proxy Manager

Advantages Comparison

Thoughts

Even though Nginx Proxy Manager only uses a UI for reverse proxy configuration, it makes the setup incredibly simple.
Every time I add a new service, I just need to set the domain in my DNS provider and add a new proxy host in Nginx Proxy Manager.