· 10 min read · updated August 2, 2026

Managing proxies and SSL certificates efficiently is essential to keeping your web services secure and reachable. Nginx Proxy Manager (NPM) is a powerful tool that simplifies reverse proxy administration and SSL certificate management. Whether you are running multiple applications on a Linux PC, a virtual machine (VM), a Raspberry Pi or even an LXC container on Proxmox VE, NPM gives you an intuitive interface to centralize and streamline your network configuration.

Why Install Nginx Proxy Manager?

Before we dive into the installation steps, let’s look at a few practical use cases that show why NPM can be an invaluable addition to your infrastructure:

The word Why? handwritten in black on a white background, opening the section on why to use Nginx Proxy Manager

1. Centralized Access to Multiple Applications

Imagine you have several web applications running in different containers or on different machines, each listening on its own port or even on a different internal IP address. Without NPM, you would have to reach each application by typing the IP and the port in your browser, for example:

With NPM you can simplify all of that by using domain names (FQDNs). You set up domain-based forwarding so the only thing you have to type in your browser is the domain name:

2. Less Firewall Complexity

Reverse proxy diagram: several laptops pass through a firewall to a server rack

Without NPM, reaching multiple applications from outside means opening several ports on your firewall and writing forwarding rules for each one. That complicates administration and widens your attack surface.

With NPM you only need to open the standard ports (80 and 443) on your firewall. NPM takes care of routing internal traffic to the right application based on the requested domain. This simplifies the firewall configuration and reduces the security risks that come with opening multiple ports.

3. Simplified SSL Certificate Management

Illustration of a padlock inside a glowing ring surrounded by the word SSL and circuit traces, representing certificate management

NPM makes it easy to obtain and automatically renew Let’s Encrypt SSL certificates for every domain you configure. That removes the need to manage individual certificates by hand and keeps all your applications protected with secure connections at all times.

1. What Is Nginx Proxy Manager?

Nginx Proxy Manager (NPM) is an easy-to-use web interface for managing reverse proxies with Nginx. It lets you set up and administer proxies, SSL certificates and redirect rules without deep Nginx knowledge. Its standout features include:

Nginx Proxy Manager logo: a hexagon with an orange and purple gradient

2. Prerequisites

Before you start, make sure you meet the following requirements:

Note: In my case I will be installing NPM in a Proxmox VE LXC container (CT), but the steps apply to any environment that supports Docker: a Linux PC, a VM or a Raspberry Pi.

3. Install Docker and Docker Compose

Nginx Proxy Manager runs on Docker, so you need it installed first. If it is not there yet, the guide on installing Docker and Docker Compose on Linux covers it step by step, including user permissions and a first commented docker-compose.yml. Come back here once docker compose version answers.

4. Set Up Nginx Proxy Manager with Docker Compose

Now that Docker and Docker Compose are installed, let’s configure NPM.

Step 1: Create a Directory for NPM

It is a good idea to keep your configuration files organized in a dedicated directory.

mkdir npm
cd npm

Step 2: Create the docker-compose.yml File

This file defines the services NPM needs, along with its database.

sudo nano docker-compose.yml

Copy and paste the following content into the file:

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Step 3: Start the Docker Compose Services

docker compose up -d

This command downloads the required images and brings the containers up in the background.

You should see something like:

docker compose output pulling the image layers until it creates the npm_default network and starts the npm-app-1 container

Step 4: Check That the Containers Are Running

docker ps

You should see the container up:

docker ps output showing the npm-app-1 container in the Up state with ports 80, 443 and 81 published

5. Access and Configure Nginx Proxy Manager

Now that NPM is installed, let’s configure it.

Step 1: Open the NPM Web Interface

From your browser, go to:

http://[Server_IP_Address]:81

If you do not know your IP, use:

ip a

In our case:

ip addr output with the eth0 interface address 192.168.101.201/24 outlined in red

So from the browser we go to http://192.168.101.201:81

Step 2: Initial Setup

The first time you open it, you will see the initial setup screen:

Nginx Proxy Manager 2.12.1 login screen with the default admin@example.com credentials

Step 3: Edit the Admin User

Once you log in, you will land on this page. You should change the name, the nickname and the email address to personalize your account and improve security.

Nginx Proxy Manager Edit User window for changing the administrator name, nickname and email

Next you will be asked to set a new password. Make sure you use a strong one.

Nginx Proxy Manager Change Password window with the current, new and confirmation password fields

With those changes done, your account is ready and you can move on to configuring proxies.

Step 4: Add a Proxy Host

Go to the Dashboard, then click “Proxy Hosts”

Nginx Proxy Manager dashboard with all counters at zero and red arrows pointing to the Dashboard menu and the Proxy Hosts block

Click the “Add Proxy Host” button.

Empty Proxy Hosts list with a red arrow pointing to the Add Proxy Host button

Fill in the information on the “Details” tab:

Details tab of a new proxy host: domain plex.itrafa.com, https scheme, target 192.168.101.222 and port 32400

Domain Names: Specify the domain or subdomain that will be forwarded to your application. In this case we will use plex.itrafa.com.

Scheme: Choose http or https, depending on how your server is configured to listen. For this example we will pick https. Later on you can add an SSL certificate to secure the communication.

Forward Hostname / IP: Enter the IP of the server that hosts your application. For this example we use 192.168.101.222.

Forward Port: Specify the port Nginx Proxy Manager will forward the requests to. In this case, Plex uses port 32400.

Block Common Exploits: Turn this on to block common exploits.

Websockets Support: Enable it if your application uses websockets.

Now click the “SSL” tab and request a new SSL certificate:

SSL tab with the dropdown open and the Request a new SSL Certificate with Let's Encrypt option marked in red

Force SSL: Enable Force SSL so that all traffic to this Proxy Host uses HTTPS instead of HTTP. It automatically redirects requests that arrive over HTTP to HTTPS, guaranteeing a secure connection.

Accept the Terms of Service: Check the I Agree to the Let’s Encrypt Terms of Service box to continue with the certificate generation.

Save the changes: Click Save to finish the setup. Nginx Proxy Manager generates the SSL certificate automatically and applies it to the Proxy Host you configured.

SSL tab with Force SSL enabled and the Let's Encrypt terms accepted, and a red arrow pointing to the Save button

Now, when you go to https://plex.itrafa.com, NPM forwards the traffic to the matching internal service (in this case at 192.168.101.222:32400) and handles the SSL certificates automatically.

Red WARNING stamp on a black background, preceding an important warning in the tutorial

Important Notes

For this subdomain to work properly on a private network, there are a few things you need to take into account (I will cover them in detail in future posts, but here is the overview):

These steps let subdomain traffic reach the internal services you configured through Nginx Proxy Manager.

For now, this post focuses on installing and doing the basic configuration of Nginx Proxy Manager. Port forwarding and advanced DNS configuration will get their own detailed post later on.

6. Practical Use Cases

Use-case illustration with interconnected icons for servers, cloud, security and automation

Nginx Proxy Manager makes it much easier to manage multiple applications and services on your network, letting you centralize access and improve security. Here are some practical use cases that show how NPM can streamline your infrastructure:

6.1. Integration with Containers and Virtual Machines

NPM fits neatly into environments built on Docker containers or virtual machines, adding an extra layer of management and security. That is especially useful in development and testing infrastructure, where flexibility and security are the priority.

6.2. Role-Based Access

You can set up multiple users with different access levels and permissions in NPM. That is ideal for collaborative environments where different teams need to manage different applications without stepping on each other.

7. Additional Considerations

Compatibility with Different Environments

Although in this tutorial we installed NPM in a Proxmox VE LXC container, the steps are practically identical if you decide to install it on:

Security

8. Conclusion

Closing illustration with the word Conclusions, a lit lightbulb, check marks and charts

Installing Nginx Proxy Manager in a Docker container is an efficient and flexible way to manage reverse proxies and SSL certificates across your infrastructure. Whether you install it in a Proxmox VE LXC container, a VM, a Linux PC or a Raspberry Pi, the steps are practically identical, so you get plenty of room to adapt it to your specific needs.

With NPM you can centralize the management of multiple applications, simplify your firewall configuration and secure every connection with automatic SSL certificates. On top of that, its intuitive interface makes administration approachable even if your technical background is limited.

If you are looking for a way to manage your web services centrally and securely, Nginx Proxy Manager is the right choice. Take advantage of Docker to streamline your infrastructure and keep your services available and protected at all times.


Did you find this tutorial useful? Share it and help us keep creating quality content.

Thanks for your support!

Security: First Steps After Installing

Nginx Proxy Manager ships with default credentials ([email protected] / changeme). Change the password and the email address immediately after your first login. If you expose the panel to the internet without changing them, anyone can take over your infrastructure.

An Alternative That Does Not Need Open Ports

If you do not want to open ports on your router, or you cannot (CGNAT, dynamic IP), you can expose your services securely with a Cloudflare tunnel. It is free, it does not require open ports, and it adds DDoS protection. To set up your domain first, follow the guide on how to connect your domain to Cloudflare.

Leave a Reply

Your email address will not be published. Required fields are marked *