[GH-ISSUE #1835] Dashboard doesn't load after initial setup - IDP authenticates and forwards fine #3317

Open
opened 2026-08-05 00:51:49 -04:00 by saavagebueno · 0 comments
Owner

Originally created by @Sgt-Ogre on GitHub (Apr 11, 2024).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/1835

Using Ubuntu 22.04 on a VM. Netbird is the only application running. My Idp is Authentik on another VM. I am using Nginx Proxy Manager and have Lets Encrypt certificates for both. HTTPS connections seem to work.

When i navigate to the netbird URL, it forward to Authentik, i sign in, it authenticates me and forwards me to https://mynetbirddomain.com/peers.

The issues is the website never loads. I just get the netbird loading icon. The containers are up and i can see the dashboard container doing things in the logs.

I have reinstalled multiple times and this is very repeatable.

Are there other logs i can look at? I feel like it should be loading the page. I know i probably am missing some NGINX config for the gRPC stuff and other things but would that affect this?

Docker Compose Config:

version: "3"
services:
  #UI dashboard
  dashboard:
    image: netbirdio/dashboard:latest
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    environment:
      # Endpoints
      - NETBIRD_MGMT_API_ENDPOINT=https://netbirddomain.com:33073
      - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbirddomain.com:33073
      # OIDC
      - AUTH_AUDIENCE=EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox
      - AUTH_CLIENT_ID=EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox
      - AUTH_CLIENT_SECRET=
      - AUTH_AUTHORITY=https://idpdomain.com/application/o/netbird/
      - USE_AUTH0=false
      - AUTH_SUPPORTED_SCOPES=openid profile email offline_access api
      - AUTH_REDIRECT_URI=
      - AUTH_SILENT_REDIRECT_URI=
      - NETBIRD_TOKEN_SOURCE=accessToken
      # SSL
      - NGINX_SSL_PORT=443
      # Letsencrypt
      - LETSENCRYPT_DOMAIN=
      - LETSENCRYPT_EMAIL=
    volumes:
      - netbird-letsencrypt:/etc/letsencrypt/

  # Signal
  signal:
    image: netbirdio/signal:latest
    restart: unless-stopped
    volumes:
      - netbird-signal:/var/lib/netbird
    ports:
      - 10000:80
  #      # port and command for Let's Encrypt validation
  #      - 443:443
  #    command: ["--letsencrypt-domain", "", "--log-file", "console"]

  # Management
  management:
    image: netbirdio/management:latest
    restart: unless-stopped
    depends_on:
      - dashboard
    volumes:
      - netbird-mgmt:/var/lib/netbird
      - netbird-letsencrypt:/etc/letsencrypt:ro
      - ./management.json:/etc/netbird/management.json
    ports:
      - 33073:443 #API port
  #    # command for Let's Encrypt validation without dashboard container
  #    command: ["--letsencrypt-domain", "", "--log-file", "console"]
    command: [
      "--port", "443",
      "--log-file", "console",
      "--log-level", "info",
      "--disable-anonymous-metrics=true",
      "--single-account-mode-domain=netbirddomain.com",
      "--dns-domain=netbird.selfhosted"
      ]
                                                                                                                                                                                                                   # Coturn                                                                                                                                                                                                         coturn:
    image: coturn/coturn:latest
    restart: unless-stopped
    domainname: netbirddomain.com
    volumes:
      - ./turnserver.conf:/etc/turnserver.conf:ro
    #      - ./privkey.pem:/etc/coturn/private/privkey.pem:ro
    #      - ./cert.pem:/etc/coturn/certs/cert.pem:ro
    network_mode: host
    command:
      - -c /etc/turnserver.conf

volumes:
  netbird-mgmt:
  netbird-signal:
  netbird-letsencrypt:

Setup.env file config:


# Dashboard domain. e.g. app.mydomain.com
NETBIRD_DOMAIN="netbirddomain.com"

# TURN server domain. e.g. turn.mydomain.com
# if not specified it will assume NETBIRD_DOMAIN
NETBIRD_TURN_DOMAIN=""

# TURN server public IP address
# required for a connection involving peers in
# the same network as the server and external peers
# usually matches the IP for the domain set in NETBIRD_TURN_DOMAIN
NETBIRD_TURN_EXTERNAL_IP="EXTERNAL IP"

# -------------------------------------------
# OIDC
#  e.g., https://example.eu.auth0.com/.well-known/openid-configuration
# -------------------------------------------
NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT="https://idpdomain.com/application/o/netbird/.well-known/openid-configuration"
NETBIRD_AUTH_AUDIENCE="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox"
NETBIRD_AUTH_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox"
NETBIRD_AUTH_SUPPORTED_SCOPES="openid profile email offline_access api"
NETBIRD_USE_AUTH0="false"
NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox"
NETBIRD_AUTH_DEVICE_AUTH_AUDIENCE="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox"
NETBIRD_MGMT_IDP="authentik"
NETBIRD_IDP_MGMT_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox"
NETBIRD_IDP_MGMT_EXTRA_USERNAME="Netbird"
NETBIRD_IDP_MGMT_EXTRA_PASSWORD="XLzYVo8fc6cQFhAGeTJzh7xfJiG5sYzBtXngapH6UvAt6s2tplWrQxOm9C9K"
# -------------------------------------------
# Letsencrypt
# -------------------------------------------
# Disable letsencrypt
#  if disabled, cannot use HTTPS anymore and requires setting up a reverse-proxy to do it instead
NETBIRD_DISABLE_LETSENCRYPT=true
# e.g. hello@mydomain.com
NETBIRD_LETSENCRYPT_EMAIL=""
# -------------------------------------------
# Extra settings
# -------------------------------------------
# Disable anonymous metrics collection, see more information at https://netbird.io/docs/FAQ/metrics-collection
NETBIRD_DISABLE_ANONYMOUS_METRICS=true
# DNS DOMAIN configures the domain name used for peer resolution. By default it is netbird.selfhosted
NETBIRD_MGMT_DNS_DOMAIN=netbird.selfhosted

Originally created by @Sgt-Ogre on GitHub (Apr 11, 2024). Original GitHub issue: https://github.com/netbirdio/netbird/issues/1835 Using Ubuntu 22.04 on a VM. Netbird is the only application running. My Idp is Authentik on another VM. I am using Nginx Proxy Manager and have Lets Encrypt certificates for both. HTTPS connections seem to work. When i navigate to the netbird URL, it forward to Authentik, i sign in, it authenticates me and forwards me to https://mynetbirddomain.com/peers. The issues is the website never loads. I just get the netbird loading icon. The containers are up and i can see the dashboard container doing things in the logs. I have reinstalled multiple times and this is very repeatable. Are there other logs i can look at? I feel like it should be loading the page. I know i probably am missing some NGINX config for the gRPC stuff and other things but would that affect this? **Docker Compose Config:** ``` version: "3" services: #UI dashboard dashboard: image: netbirdio/dashboard:latest restart: unless-stopped ports: - 80:80 - 443:443 environment: # Endpoints - NETBIRD_MGMT_API_ENDPOINT=https://netbirddomain.com:33073 - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbirddomain.com:33073 # OIDC - AUTH_AUDIENCE=EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox - AUTH_CLIENT_ID=EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox - AUTH_CLIENT_SECRET= - AUTH_AUTHORITY=https://idpdomain.com/application/o/netbird/ - USE_AUTH0=false - AUTH_SUPPORTED_SCOPES=openid profile email offline_access api - AUTH_REDIRECT_URI= - AUTH_SILENT_REDIRECT_URI= - NETBIRD_TOKEN_SOURCE=accessToken # SSL - NGINX_SSL_PORT=443 # Letsencrypt - LETSENCRYPT_DOMAIN= - LETSENCRYPT_EMAIL= volumes: - netbird-letsencrypt:/etc/letsencrypt/ # Signal signal: image: netbirdio/signal:latest restart: unless-stopped volumes: - netbird-signal:/var/lib/netbird ports: - 10000:80 # # port and command for Let's Encrypt validation # - 443:443 # command: ["--letsencrypt-domain", "", "--log-file", "console"] # Management management: image: netbirdio/management:latest restart: unless-stopped depends_on: - dashboard volumes: - netbird-mgmt:/var/lib/netbird - netbird-letsencrypt:/etc/letsencrypt:ro - ./management.json:/etc/netbird/management.json ports: - 33073:443 #API port # # command for Let's Encrypt validation without dashboard container # command: ["--letsencrypt-domain", "", "--log-file", "console"] command: [ "--port", "443", "--log-file", "console", "--log-level", "info", "--disable-anonymous-metrics=true", "--single-account-mode-domain=netbirddomain.com", "--dns-domain=netbird.selfhosted" ] # Coturn coturn: image: coturn/coturn:latest restart: unless-stopped domainname: netbirddomain.com volumes: - ./turnserver.conf:/etc/turnserver.conf:ro # - ./privkey.pem:/etc/coturn/private/privkey.pem:ro # - ./cert.pem:/etc/coturn/certs/cert.pem:ro network_mode: host command: - -c /etc/turnserver.conf volumes: netbird-mgmt: netbird-signal: netbird-letsencrypt: ``` **Setup.env file config:** ``` # Dashboard domain. e.g. app.mydomain.com NETBIRD_DOMAIN="netbirddomain.com" # TURN server domain. e.g. turn.mydomain.com # if not specified it will assume NETBIRD_DOMAIN NETBIRD_TURN_DOMAIN="" # TURN server public IP address # required for a connection involving peers in # the same network as the server and external peers # usually matches the IP for the domain set in NETBIRD_TURN_DOMAIN NETBIRD_TURN_EXTERNAL_IP="EXTERNAL IP" # ------------------------------------------- # OIDC # e.g., https://example.eu.auth0.com/.well-known/openid-configuration # ------------------------------------------- NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT="https://idpdomain.com/application/o/netbird/.well-known/openid-configuration" NETBIRD_AUTH_AUDIENCE="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox" NETBIRD_AUTH_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox" NETBIRD_AUTH_SUPPORTED_SCOPES="openid profile email offline_access api" NETBIRD_USE_AUTH0="false" NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox" NETBIRD_AUTH_DEVICE_AUTH_AUDIENCE="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox" NETBIRD_MGMT_IDP="authentik" NETBIRD_IDP_MGMT_CLIENT_ID="EBjiOlTxSIf07j1vjXbw01tnDBGZqAaPGYaKdAox" NETBIRD_IDP_MGMT_EXTRA_USERNAME="Netbird" NETBIRD_IDP_MGMT_EXTRA_PASSWORD="XLzYVo8fc6cQFhAGeTJzh7xfJiG5sYzBtXngapH6UvAt6s2tplWrQxOm9C9K" # ------------------------------------------- # Letsencrypt # ------------------------------------------- # Disable letsencrypt # if disabled, cannot use HTTPS anymore and requires setting up a reverse-proxy to do it instead NETBIRD_DISABLE_LETSENCRYPT=true # e.g. hello@mydomain.com NETBIRD_LETSENCRYPT_EMAIL="" # ------------------------------------------- # Extra settings # ------------------------------------------- # Disable anonymous metrics collection, see more information at https://netbird.io/docs/FAQ/metrics-collection NETBIRD_DISABLE_ANONYMOUS_METRICS=true # DNS DOMAIN configures the domain name used for peer resolution. By default it is netbird.selfhosted NETBIRD_MGMT_DNS_DOMAIN=netbird.selfhosted ```
saavagebueno added the triage-needed label 2026-08-05 00:51:49 -04:00
Sign in to join this conversation.
No Label triage-needed
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#3317