Skip to content

Installing & Configuring Nginx Proxy Manager on TrueNAS SCALE 24.10

Since TrueNAS SCALE 24.10 no longer supports Kubernetes, we will install Nginx Proxy Manager (NPM) via the TrueNAS Apps Store (podman-based) or manually deploy it as a custom pod.

This guide will cover: 1. Reconfiguring TrueNAS to free ports 80 & 443 2. Installing Nginx Proxy Manager (NPM) 3. Configuring router NAT to forward external traffic 4. Deploying and serving a basic Hello World application via NPM


1. Change TrueNAS Web UI Ports (80 & 443)

TrueNAS runs its Web UI on ports 80 and 443 by default. Since NPM requires these ports, we need to reassign TrueNAS to alternative ports.

Steps:

  1. Log in to the TrueNAS SCALE Web UI.
  2. Navigate to System Settings > General > GUI Settings.
  3. Modify:
  4. GUI Port: Change from 80 → 8080
  5. GUI HTTPS Port: Change from 443 → 8443
  6. Click Save and Apply.
  7. Restart the middleware (optional, but recommended) via SSH:
    systemctl restart middlewared
    
  8. Access TrueNAS Web UI at:
  9. http://<truenas-ip>:8080
  10. https://<truenas-ip>:8443

2. Install Nginx Proxy Manager (NPM)

Since TrueNAS SCALE 24.10 now uses Podman instead of Kubernetes, we will install NPM via the TrueNAS Apps Store.

Steps to Install NPM via Apps Store:

  1. Navigate to Apps > Available Applications.
  2. Search for nginx-proxy-manager.
  3. Click Install and configure:
  4. HTTP Port: 80
  5. HTTPS Port: 443
  6. Admin UI Port: 81
  7. Click Save & Install.
  8. After installation, access the NPM Admin Panel at:
  9. http://<truenas-ip>:81
  10. Default login credentials:
  11. Email: admin@example.com
  12. Password: changeme
  13. (You’ll be prompted to change the password on first login.)

3. Configure Router NAT for External Access

To allow WAN traffic to be forwarded to services behind NPM, set up port forwarding on your router.

Steps:

  1. Log in to your router’s admin panel.
  2. Navigate to Port Forwarding / NAT settings.
  3. Add the following port forwarding rules:
  4. External WAN Port 80 → TrueNAS IP Port 80
  5. External WAN Port 443 → TrueNAS IP Port 443
  6. Apply the changes.

This ensures all incoming HTTP and HTTPS traffic is routed to NPM, allowing it to manage reverse proxying.


4. Deploy a Simple "Hello World" Web App & Serve via NPM

Now, let’s create a basic web app running on TrueNAS and serve it via Nginx Proxy Manager.

Step 1: Create a Simple Web Server

We’ll deploy a simple Hello World application using Python.

  1. SSH into your TrueNAS server.
  2. Create a directory for the web app:
    mkdir -p /mnt/tank/webapps/hello-world
    cd /mnt/tank/webapps/hello-world
    
  3. Create a simple Python HTTP server:
    echo 'Hello, World!' > index.html
    
  4. Run the Python HTTP server:
    python3 -m http.server 8081
    
  5. This serves index.html on port 8081.

Step 2: Configure Nginx Proxy Manager to Serve the App

Now, we will set up NPM to serve this Hello World application.

  1. Log in to NPM (http://<truenas-ip>:81).
  2. Navigate to Hosts > Proxy Hosts > Add Proxy Host.
  3. Configure the settings:
  4. Domain Name: hello.local (or your actual domain if using public DNS)
  5. Forward Hostname/IP: <truenas-ip>
  6. Forward Port: 8081
  7. Scheme: http
  8. Enable:
  9. ✅ Block Common Exploits
  10. ✅ Websockets Support
  11. Click Save.

Now, visiting http://hello.local (or your custom domain) will serve the Hello World page from NPM.


Conclusion

This setup allows TrueNAS SCALE 24.10 to: - Run Nginx Proxy Manager (NPM) via TrueNAS Apps. - Free up ports 80 & 443 for NPM while keeping TrueNAS Web UI accessible on 8080/8443. - **Automatically route all external WAN traffic to NPM via router NAT. - Host and serve a simple web app through NPM with domain-based routing.

Let me know if you need further refinements! 🚀