[GH-ISSUE #5833] Feature Request: Restrict Dashboard Access to VPN-Only / Hide Login Page from Public Internet #11168

Closed
opened 2026-08-05 01:28:46 -04:00 by saavagebueno · 3 comments
Owner

Originally created by @Nitrogly on GitHub (Apr 8, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5833

Is your feature request related to a problem? Please describe.

I'm running a self-hosted NetBird instance where users join the network exclusively via Setup Keys. No end-user dashboard login is needed. Only admins should ever access the dashboard. Currently, the dashboard login page is publicly visible to anyone on the internet who knows the server address. Even though the login itself is secured, I'd prefer that the public IP shows no response at all (not even a login page). To reduce the attack surface and avoid unnecessary exposure.

Describe the solution you'd like

A configuration option or via environment variable, for making it possible to expose the dashboard or not.

When enabled:

  • The dashboard is only served on the NetBird peer IP (e.g. 100.64.x.x)
  • The public interface returns no response or a generic connection refused
  • Peer registration and connectivity via Setup Keys continues to work normally on the public interface
  • Admins access the dashboard by first connecting to the VPN

Describe alternatives you've considered

IP whitelisting via cloud firewall rules. This works but is inconvenient when admins connect from different locations and also getting probably problems because the management API runs on port 443.

Additional context
Before submitting this as a feature request: is there already a way to achieve this with the current NetBird setup that I might have missed? If so, I'd be happy to close this and just follow the existing approach.

Originally created by @Nitrogly on GitHub (Apr 8, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5833 **Is your feature request related to a problem? Please describe.** I'm running a self-hosted NetBird instance where users join the network exclusively via Setup Keys. No end-user dashboard login is needed. Only admins should ever access the dashboard. Currently, the dashboard login page is publicly visible to anyone on the internet who knows the server address. Even though the login itself is secured, I'd prefer that the public IP shows no response at all (not even a login page). To reduce the attack surface and avoid unnecessary exposure. **Describe the solution you'd like** A configuration option or via environment variable, for making it possible to expose the dashboard or not. When enabled: - The dashboard is only served on the NetBird peer IP (e.g. `100.64.x.x`) - The public interface returns no response or a generic connection refused - Peer registration and connectivity via Setup Keys continues to work normally on the public interface - Admins access the dashboard by first connecting to the VPN **Describe alternatives you've considered** IP whitelisting via cloud firewall rules. This works but is inconvenient when admins connect from different locations and also getting probably problems because the management API runs on port 443. **Additional context** Before submitting this as a feature request: is there already a way to achieve this with the current NetBird setup that I might have missed? If so, I'd be happy to close this and just follow the existing approach.
saavagebueno added the feature-request label 2026-08-05 01:28:46 -04:00
Author
Owner

@heymoe commented on GitHub (Apr 10, 2026):

I'm self-hosting Netbird using the unified netbird-server container + Traefik and was able to add 2 additional Traefik label options to the dashboard container which defines a whitelist of IPs / subnets that are allowed to access the dashboard and the rule to apply the whitelist:

      # Only allow dashboard access from allowed / whitelisted IPs
      - traefik.http.middlewares.dashboard-whitelist.ipwhitelist.sourcerange=192.168.0.0/24,192.168.1.0/24
      - traefik.http.routers.netbird-dashboard.middlewares=dashboard-whitelist@docker

When trying to access the dashboard from an IP not in the whitelist you will get a "Forbidden" message. I'm sure there might be some other Traefik label options that could maybe change the "Forbidden" message or maybe redirect the request somewhere else but this seems to do the job of preventing logins from the public Internet without being fancy about it.

I'm sure if you're using a reverse proxy other than Traefik such as Caddy or HAProxy, you could setup something similar within their configs too.

Another option would be to just shut down the dashboard container: docker compose stop dashboard and start it back up when you need to make a changes. When the dashboard is shutdown I get a "404 page not found" message but I can still down and up existing peers and they still connect to the network just fine.

<!-- gh-comment-id:4227540838 --> @heymoe commented on GitHub (Apr 10, 2026): I'm self-hosting Netbird using the unified netbird-server container + Traefik and was able to add 2 additional Traefik label options to the dashboard container which defines a whitelist of IPs / subnets that are allowed to access the dashboard and the rule to apply the whitelist: ``` # Only allow dashboard access from allowed / whitelisted IPs - traefik.http.middlewares.dashboard-whitelist.ipwhitelist.sourcerange=192.168.0.0/24,192.168.1.0/24 - traefik.http.routers.netbird-dashboard.middlewares=dashboard-whitelist@docker ``` When trying to access the dashboard from an IP not in the whitelist you will get a "Forbidden" message. I'm sure there might be some other Traefik label options that could maybe change the "Forbidden" message or maybe redirect the request somewhere else but this seems to do the job of preventing logins from the public Internet without being fancy about it. I'm sure if you're using a reverse proxy other than Traefik such as Caddy or HAProxy, you could setup something similar within their configs too. Another option would be to just shut down the dashboard container: `docker compose stop dashboard` and start it back up when you need to make a changes. When the dashboard is shutdown I get a "404 page not found" message but I can still down and up existing peers and they still connect to the network just fine.
Author
Owner

@Nitrogly commented on GitHub (Apr 30, 2026):

Thank you, that will be a workaround for now!

<!-- gh-comment-id:4354143220 --> @Nitrogly commented on GitHub (Apr 30, 2026): Thank you, that will be a workaround for now!
Author
Owner

@crazifyngers commented on GitHub (Jun 4, 2026):

Another option I have used to keep my dashboard off the internet, is to remove the dashboard from traefik, and run a netbird sidecar container that the dashboard uses as its network. Then the dashboard is ON the netbird network. If you ever "saw off the branch you are on" you can temporarily allow access via traffic again.

<!-- gh-comment-id:4627836431 --> @crazifyngers commented on GitHub (Jun 4, 2026): Another option I have used to keep my dashboard off the internet, is to remove the dashboard from traefik, and run a netbird sidecar container that the dashboard uses as its network. Then the dashboard is ON the netbird network. If you ever "saw off the branch you are on" you can temporarily allow access via traffic again.
Sign in to join this conversation.
No Label feature-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#11168