I have been testing a lot of reverse proxies lately, comparing features, and thinking about which ones are best for which use cases. For a long while, I have thought Nginx Proxy Manager is arguably the best reverse proxy for beginners. It does have some shortcomings. However, there is a new fork of Nginx Proxy manager called NPMplus. Is this fork of the project better than the original Nginx Proxy Manager for home lab and otherwise? Let’s look at Nginx Proxy Manager vs NPMplus and find out.
Brief overview of Nginx Proxy Manager
Most are familiar with Nginx Proxy Manager (NPM). It provides a web GUI around the underlying Nginx proxy and web server. Without Nginx Proxy Manager, you have to edit configuration files and manage certificates manually. The GUI interface is very helpful to configure things without worrying about syntax. This lets you setup things like proxy hosts, SSL certs and Let’s Encrypt certificates without the complex configuration it would require.
This is a game changer, especially if you are a beginner with reverse proxies and trying to implement a solution in front of your containers. You can easily setup your certificates and route traffic for these hostnames to your backend containers.
What is Nginx Proxy Manager Plus
NPMplus is a community fork of the original project. It builds on the same code base but it adds extra features for home labs and power users. There are new web standards are part of the solution and advanced security integrations as well as better performance.
What are some of the new features?
- Support for HTTP/3 and QUIC
- CrowdSec integration for automated intrusion protection
- Support for geo-blocking
- Additional performance tweaks.
These are features that home lab users may not need right at the start, but as you scale up services or want to protect your setup from the wider internet, these definitely come into play.
Similarities between NPM and NPMplus
Both of the tools at the heart of their functionality, provide a web GUI for Nginx. They handle Letโs Encrypt SSL certificates as well, and they allow you to add new proxy hosts and services. Both allow you to do this without needing to write configuration files by hand. You can run both in Docker and deploy them easily on home lab servers or NAS devices.
So think of it this way. NPMplus is not a replacement from scratch but an enhancement to the original Nginx Proxy Manager. If you are already using and comfortable with NPM, you will feel the same with NPMplus.
Key differences that may make a difference to many in the home lab
Now letโs get into what sets Nginx Proxy Manager Plus apart and why home lab users might prefer it. There are a few reasons to note.
HTTP/3 and QUIC support
There is a push moving into HTTP/3 that is based on the QUIC protocol. HTTP/3 provides better connection setup and performance compared to HTTP/2. Also, it has better performance on mobile networks that are unreliable.
NPMplus provides native HTTP/3 support. For remote connections to a home lab, this can lead to much snappier connections and better stability for those connections overall.
CrowdSec integration
Also, one of the big things you can do with NPMplus is add CrowdSec integration. Especially when you expose things in your home lab to the Internet, security is definitely a concern. Bots and attackers are always scanning IP ranges for vulnerable services.
CrowdSec is a modern intrusion prevention system that provides log analysis and real-time threat blocking for malicious actors. NPMplus integrates CrowdSec natively. So, you can add a strong layer of protection with not much configuration. This feature alone is a major reason many users are testing NPMplus.
So if security is a big focus, as it should be, this would definitely be a reason to choose NPMplus over NPM.
Geo-blocking
Another feature that is closely related to the topic of security that many users are keen to have running is geo-blocking. There is little reason to allow all countries for ingress connectivity if there is only need to connect from one country or two countries, etc.
With that, NPMplus adds geo-blocking options and gives more control over who can reach your services from only those countries you want to be able to connect.
Performance tweaks and stability improvements
With NPMplus, it builds on top of the original codebase. The contributors to the project have worked on optimizing many of the performance bottlenecks and have worked on fixing different types of issues. In real-world terms, this means better memory usage, faster startups, and more stable handling of many hosts.
More active contributions
One of the things I personally like to see with any project that I use is that it is an active project, meaning there are recent contributions and a history of many recent contributions across the board. This shows the project is alive and well and is constantly being improved upon.
The original Nginx Proxy Manager is a project that has been around forever and doesn’t have as much activity in terms of contributions.
No MySQL container needed
One of the other nice things about this project is that there is no MySQL container needed to spin up separately. The DB is part of the NPMplus container itself. I really like this as it makes things simpler and easier. You only have one container to maintain instead of two.
Dark mode
Another quality of life improvement of NPMplus over the original Nginx Proxy Manager project is that it has dark mode by default.
Installing NPMplus
When you look at the example docker compose code for NPMplus, wow, there is a lot you can configure with it, including the security plugins, etc. Take a look at the example docker compose code here:
We can use simple Docker Compose to spin up NPMplus. Below is a quick example of how to spin up NPM plus. You can uncomment the DISABLE_ACME=true if you just want to play around with NPMplus without worrying about ACME email, etc from the beginning.
In the below, change the volume location to where you want to store your bind mounts. Replace your ACME_EMAIL and decide if you want to uncomment the DISABLE_ACME configuration. Save this as docker-compose.yml.
services:
npmplus:
container_name: npmplus
image: 'docker.io/zoeyvid/npmplus:latest'
restart: always
network_mode: host
volumes:
- "/home/linuxadmin/homelabservices/npmplus/data:/data"
- "/home/linuxadmin/homelabservices/npmplus/letsencrypt:/etc/letsencrypt"
environment:
- "TZ=America/Chicago"
- "[email protected]" # Replace with your real email address
#- "DISABLE_ACME=true" # Uncomment to disable ACME/SSL for testing
- "DISABLE_IPV6=true"
- "LOGROTATE=true"
- "FULLCLEAN=true"
- "HTTP_PORT=80"
- "HTTPS_PORT=443"
- "NPM_PORT=81"
After you save the file, you can run a docker compose up -d:
docker compose up -d
If you just browse to port 80 of your docker host, you will see the following. It advises you to navigate to the admin panel.
To navigate to the admin panel, just browse to port 81.
To find your password for the default [email protected] account, you will need to look in the docker logs:
docker logs npmplus
After logging in, the dashboard should look familiar.
Which one should you use in your home lab?
You can’t go wrong if you choose the original Nginx Proxy Manager and it will definitely serve you well. I have used it for years now and it is a great solution I think especially for beginners. However, I think if you are wanting to have a more robust Nginx-based reverse proxy, NPMplus is the way to go.
It has several clear advantages, including a simpler architecture with only one container, meaning you don’t have to spin up a MySQL container as part of the stack. It supports HTTP3, and it has great security features you can integrate, including Crowdsec and Geo-blocking.
For many home labbers, the best approach might be to start with NPM to learn the basics of how it works. Then migrate to NPMplus once you are comfortable and want the extra security features.
Wrapping up
Reverse proxies are an important part of any home lab that is running containerized applications. Nginx Proxy Manager is one of the best ones out there for beginners since it has a web GUI. However, the NPMplus fork of Nginx Proxy Manager is definitely worthy alternative. When looking at Nginx Proxy Manager vs NPMplus, NPMplus has some great features when compared to the original project, including great security features like Crowdsec integration.
Let me know. Are you using Nginx Proxy Manager now? Have you tried out NPMplus yet? Are you going to? Let me know in the comments.