Problem / Justification
Many TrueNAS users access their systems through a reverse proxy such as Nginx Proxy Manager, Traefik, Caddy, or Cloudflare Tunnel.
In these deployments, the TrueNAS interface is typically available at a URL such as:
https://truenas.example.com
while each application is published through its own hostname, for example:
-
https://jellyfin.example.com -
https://immich.example.com -
https://amule.example.com
Currently, the Web UI button always generates a URL using the TrueNAS hostname and the application’s port (for example https://truenas.example.com:4711).
This URL is often unreachable because application ports are intentionally not exposed to the Internet when using a reverse proxy. As a result, the Web UI button does not work in these deployments, even though the application itself is available through its public URL.
I would like to propose adding an optional External URL (or Public URL) field for applications. If configured, the Web UI button would open that URL instead of constructing one from the hostname and port.
Impact
This feature would improve compatibility with modern reverse proxy deployments while remaining fully backward compatible.
Benefits
-
Makes the Web UI button functional for users behind reverse proxies.
-
Supports common solutions such as Nginx Proxy Manager, Traefik, Caddy, HAProxy, and Cloudflare Tunnel.
-
Improves the remote access experience.
-
Does not change the default behavior for existing users.
-
Optional configuration, so users who do not use reverse proxies are unaffected.
Disadvantages
-
Adds one optional configuration field to an application’s settings.
-
Minimal additional UI complexity.
User Story
As a TrueNAS administrator, I access my NAS through a reverse proxy.
My setup is:
-
TrueNAS:
https://truenas.example.com -
aMule:
https://amule.example.com -
Jellyfin:
https://jellyfin.example.com
For each application, I configure an optional External URL.
When I click the Web UI button in the Apps page, TrueNAS opens the configured external URL instead of https://truenas.example.com:<port>.
If no External URL is configured, the current behavior remains unchanged.