Why Zoraxy Might Be the Best Reverse Proxy for Home Labs

Best home lab reverse proxy

I am constantly on the lookout for new tools that can help with managing resources in the home lab. Reverse proxies are extremely important and useful since they allow you to manage routing traffic into your containerized and other resources by using a DNS name instead of an IP. This way you don’t have to access containers using their default non standard ports, etc. Also, they allow you to manage your SSL certificates using Let’s Encrypt. I have used and worked with many reverse proxies in the lab, including Nginx Proxy Manager, Traefik, Pangolin, and Caddy. However, there is a new one that I was actually blown away by in terms of features and functionality. It is called Zoraxy. Could this be the best reverse proxy to use for home labs? Let’s see.

What Zoraxy Is and its background

If you haven’t heard of this very cool reverse proxy, it is a modern reverse proxy that gives you web routing and it is extremely fast and lightweight since it is written in Go. It has a strong focus on usability. The core goal of the project is to give users and home labbers a powerful reverse proxy that has a modern interface and doesn’t need a deep knowledge of Nginx configuration syntax or complicated rules file edits.

Zoraxy cluster gateway reverse proxy
Zoraxy cluster gateway reverse proxy

It is very much akin to the benefits of Nginx Proxy Manager in that it encourages you to think of your resources in terms of services, domains, and routing. So, in the home lab, you just need to know where the app lives, which domain it should respond to, and if it needs TLS.

Even though it is built around the premise of being easy, it doesn’t sacrifice other more advanced features like WebSockets, automatic HTTPS, multiple routing modes, access controls, and it even does load balancing. We will get into more of what it offers below.

Check out the official project GitHub repo here: GitHub – tobychui/zoraxy.

How it is different from Nginx Proxy Manager

Nginx Proxy Manager has been the proxy that I have long recommended for beginners to use and it still is a great choice if you want to start there. However, Zoraxy has a few benefits and advantages to note. It’s written in Go so it is lighterweight. It is more configurable and gives you more options.

The interface I found to be more robust than Nginx Proxy Manager and can do more like work with more CAs like ZeroSSL or other custom SSL providers. It also has a better interface for point and click selecting your Docker containers you have running or picking a custom target as I will show below.

Take a look at the comparison below:

Feature / AreaZoraxyNginx Proxy Manager
Primary FocusSimple and clear solution for routing web trfficUI driven management of Nginx
Core EngineCustom Go based proxyNginx
Web UIVery modern and intuitive for the most partFunctional but more utilitarian
TLS and certificatesBuilt in ACME support with clear visibilityBuilt in Let’s Encrypt integration
WebSocket supportEnabled by defaultSupported but sometimes requires manual tweaks
RoutingDomain and path based routing with visual clarityDomain based routing with advanced options
ConfigurationUI first with sensible defaultsUI backed by generated Nginx configs
Difficulty to learn?Very intuitive, a little steeper learning curve than NPM since it has more optionsNot difficult. You don’t have to even understand Nginx at all if you don’t want and just rely on the UI
MonitoringHas monitoring built in and shows history of reachabilityHas basic up or down for proxy hosts but not a history graph
SSO and OAuth 2.0Has SSO and OAuth 2.0 built-inNo built-in SSO or OAuth 2.0 support
Resource usageLightweight and efficientLightweight but tied to Nginx
Best suited for?Home labs wanting a simple and fast setup and lots of featuresStill the simplest interface but fewer options

Install Zoraxy using Docker

Let’s look and see how to get up and running with Zoraxy in the home lab. The below Docker compose code is my code from a test Docker container host I have running. You will see my bind mounts listed below. Just change these to what you need in your environment.

This is pretty straightforward otherwise, including mounting the Docker socket and setting timezone, creating network, etc. I added a custom DNS server as I am doing some split horizon DNS trickery in my environment. You can strip that out if not needed.

services:
  zoraxy:
    image: zoraxydocker/zoraxy:latest
    container_name: zoraxy
    restart: unless-stopped
    networks:
      - zoraxy
    ports:
      - 80:80
      - 443:443
      - 8000:8000
    volumes:
      - /home/linuxadmin/homelabservices/zoraxy/config/:/opt/zoraxy/config/
      - /home/linuxadmin/homelabservices/zoraxy/plugin/:/opt/zoraxy/plugin/
      - /var/run/docker.sock:/var/run/docker.sock
    extra_hosts:
      - "host.docker.internal:host-gateway"
    dns:
      - 10.1.149.10
    environment:
      FASTGEOIP: "true"
      TZ: "America/Chicago"

networks:
  zoraxy:
    driver: bridge
    name: zoraxy

In the default configuration, ports 80 and 443 handle incoming traffic. Then port 8000 is used for the management interface. So once you have your Docker compose file in place, just run the standard command to bring up the stack:

docker compose up -d
Bringing the zoraxy reverse proxy up and running
Bringing the zoraxy reverse proxy up and running

You can then do a simple:

docker compose ps

This will show you if the container is healthy, etc.

Checking that the container is healthy
Checking that the container is healthy

Browse out to port 8000 on the host. It will ask you to create your first admin account and password.

Creating the first user and password in zoraxy reverse proxy
Creating the first user and password in zoraxy reverse proxy

Creating the first admin account.

Login with the admin user and pass you created
Login with the admin user and pass you created

After creating the account and logging in, here is the default dashboard. The solution looks really really good. And I like the modern layout with the menus on the left and slick dashboards and toggles for configuration.

Default zoraxy dashboard after bringing up the container
Default zoraxy dashboard after bringing up the container

Simple walkthroughs to help learn Zoraxy

One of the very cool features I think about Zoraxy is the Quick Start walkthrough wizard. You can click one of the three types of endpoints that you want to configure, and Zoraxy will step you through the process, highlighting the areas of the interface where you need to make the configuration changes.

Let me show you what the HTTPS Green Lock(s) wizard looks like. Here you can click one of the three options.

The simple quick start wizard interface
The simple quick start wizard interface

After clicking the HTTPS Green Locks, you can see the checkbox on that selector, then the dialog box opens to Enable HTTPS for your site.

Enabling the green lock wizard
Enabling the green lock wizard

Here we are shown how to change the listening port.

Change listening port to 443
Change listening port to 443

Next, we can enable TLS serving.

Enable tls serving
Enable tls serving

Also, you can enable port 80 HTTP.

Enable http server on port 80
Enable http server on port 80

If you want to force a redirect to HTTPS, we can do that as well.

Force redirect from http to https
Force redirect from http to https

HTTPS is now enabled.

Https is now enabled and ready to serve in zoraxy reverse proxy
Https is now enabled and ready to serve in zoraxy reverse proxy

TLS/SSL certificates configuration as the next part of the wizard.

Tls and ssl certificate handling
Tls and ssl certificate handling

Showing how to setup ACME configuration and auto renew.

Setting up acme
Setting up acme

The ACME tool in Zoraxy.

Opening the acme tool
Opening the acme tool

Configuring the auto renew settings, email, and where you can generate a new certificate. Like NPM and others, you can use DNS challenge. It supports a wide range of DNS providers.

Obtain certificate with acme
Obtain certificate with acme

Enabling auto renew.

Enabling auto renew
Enabling auto renew

Certificate installed as part of the wizard.

Certificate installed in zoraxy reverse proxy
Certificate installed in zoraxy reverse proxy

Configuring the ACME tool

After stepping through the wizard above where it shows you where everything is, I wanted to start configuring things manually just to learn the process. To get to the area of the interface where you can open the ACME tool and start configuring, you can navigate to TLS / SSL certificates > Open ACME Tool. This will pop out the side blade in the interface where you can configure the DNS challenge, etc.

You can see below, I am using Cloudflare. The information I found that it needed is the AuthEmail and AuthToken. Just put in your domain name, select the DNS challenge option, and configure your provider that you need for obtaining the certificate.

Configuring the acme tool
Configuring the acme tool

Creating a new Proxy Host

If I could make a suggestion to the developer here on the interface, it would be to combine the Create Proxy Rules menu with the HTTP Proxy menu as this would be more intuitive. I know I immediately went to the HTTP Proxy menu when I wanted to create a new proxy host. It seems like this additional menu is a bit redundant. But this is just a small gripe and hopefully something that might be considered.

Take a look at the darkened area here. I have clicked the Create Proxy Rules menu. This launches the New Proxy Rule workflow. What I really like about Zoraxy is the visibility it gives you when creating your proxy rules. I spun up a new Nginx container to have something to play around with for proxy traffic. Note how I clicked the Show Containers with Unexposed Ports. I had put the Ngin container on the same network as my Zoraxy container so I didn’t expose any ports. This allows you to see the containers on Zoraxy’s networks, but notice you also get Containers using Host Network and Containers on different networks. This is really cool that it gives you this level of information and granularity building your rule.

Creating a new http proxy rule in zoraxy
Creating a new http proxy rule in zoraxy

Here, I have expanded the Advanced settings so you can see some of the other settings you can set up. Note how if your container is setup on the backend to use SSL, you can set the Ignore TLS/SSL Verification Error if it is using a self-signed certificate. This is a handy setting.

Http proxy rule advanced settings
Http proxy rule advanced settings

The proxy host will also automatically request a new SSL certificate for the host.

Request new certificate for the new http proxy host in zoraxy
Request new certificate for the new http proxy host in zoraxy
Viewing the http proxy host that is configured in zoraxy
Viewing the http proxy host that is configured in zoraxy

You can see below we have a proper certificate provisioned for the Nginx website.

Navigating to a test nginx container with the zoraxy managed ssl certificate
Navigating to a test nginx container with the zoraxy managed ssl certificate

Access control

Zoraxy has a healthy configuration section for setting up access control for your hosts. You can whitelist and ban various IPs or ranges, or perform Quick bans.

Access control built into the zoraxy interface
Access control built into the zoraxy interface

Network tools

Zoraxy has various network tools built into the interface that I think are a nice touch to have access to a few scanners at your fingertips when you are figuring out how you want to route traffic into your containers or other services. These include:

  • Multicast DNS (mDNS) scanner
  • IP Scanner
  • Port Scanner
  • Traceroute/Ping
Network tools with zoraxy
Network tools with zoraxy

Uptime monitoring

A really cool GUI feaure that is built in is the Uptime Monitor. This almost looks like an uptime Kuma type monitor visually that allows you to not only see the current status of a proxy host, but the history of the proxy host which is nice to be able to see a history of reachability for your services.

Uptime monitor
Uptime monitor

SSO and OAuth 2.0

Another nice feature that makes the login experience much better is the integration of SSO and OAuth 2.0. Especially if you are already using something like Authelia, Authentik, or OAuth2 Proxy, you can forward your authentication requests to these providers. There is also OAuth 2.0 configuration possibilities here as well.

Sso and oauth2 configuration
Sso and oauth2 configuration

Utilities and plugins

Zoraxy also has a wide range of other utilities, including system backup and restore, IP CIDR conversions, and also a plugins feature that is experimental. This will allow the solution to be extensible with plugins written for Zoraxy.

Zoraxy utilities including system backup and restore
Zoraxy utilities including system backup and restore

Here is a quick look at the Toolbox tab

Zoraxy toolbox under the utilities section
Zoraxy toolbox under the utilities section

It has a plugins feature that shows to be experimental at this point, but will be a great addition to extend the solution.

Zoraxy experimental plugins feature
experimental plugins feature

Wrapping up

I’ve only scratched the surface of all the settings and “nerd knobs” of Zoraxy. It has a crazy amount that you can do with it. But, it has quickly become my new favorite GUI-based reverse proxy. It has many advantages in terms of features and capabilities over Nginx Proxy Manager and it is super efficient and quick since it is written in Go. I still think for the absolute simplest solution for beginners, Nginx Proxy Manager still edges Zoraxy out, simply due to the fact it has less you can configure so might be slightly more beginner friendly. But, in terms of features and capabilities Zoraxy is impressive. Let me know in the comments if you are using Zoraxy. If so do you like it? If you aren’t currently using it, are you going to try it out?

Google
Add as a preferred source on Google

Google is updating how articles are shown. Don’t miss our leading home lab and tech content, written by humans, by setting Virtualization Howto as a preferred source.

About The Author

Brandon Lee

Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments