[GH-ISSUE #2944] Management container restarting loop #6149

Closed
opened 2026-08-05 01:06:57 -04:00 by saavagebueno · 5 comments
Owner

Originally created by @Juganooo on GitHub (Nov 24, 2024).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/2944

Describe the problem

Hello, so i run netbird with keycloak behind traefik all in the same docker network

all container seems fine except management

2024-11-24T16:46:18Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused

172.18.0.3 is keycloak container

of course traefik logs return

2024-11-24T16:59:12Z ERR github.com/traefik/traefik/v3/pkg/provider/docker/config.go:81 > error="service \"netbird-api\" error: unable to find the IP address for the container \"/netbird-management-1\": the server is ignored" container=management-netbird-681de4ed98ca8c2902fdad89840f486f24050110af16a51d4b5ad2ec272ac541 providerName=docker

In my browser i can access https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration

From user PC and docker host i can curl https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration

In my browser i can acces netbird.domain.tld get redirect to keycloak, log in and stuck there

chrome_VcNd9R7s35

To Reproduce

Steps to reproduce the behavior:

  1. Following Advanced Guide
  2. docker compose up -d
  3. management container restarting loop
  4. access netbird dashboard, log in
  5. get stuck at the previus gif screenshot

Expected behavior

Management container status should be "Up"

after loging in in Netbird Dashbord, should acces the dashboard

Are you using NetBird Cloud?

All Self-Hosted

NetBird version

REPOSITORY                                               TAG                 IMAGE ID       CREATED         SIZE
netbirdio/management                                     latest              0f52e24930eb   2 days ago      164MB
netbirdio/signal                                         latest              77e50f81efa2   2 days ago      37.5MB
netbirdio/dashboard                                      latest              a251c76874cb   4 days ago      122MB
coturn/coturn                                            latest              2179d453607c   2 months ago    145MB

NetBird status -dA output:

If applicable, add the `netbird status -dA' command output.

Do you face any (non-mobile) client issues?

Please provide the file created by netbird debug for 1m -AS.
We advise reviewing the anonymized files for any remaining PII.

Screenshots

If applicable, add screenshots to help explain your problem.

Additional context

Netbird docker-compose.yaml

---

services:
  #UI dashboard
  dashboard:
    image: netbirdio/dashboard:latest
    restart: unless-stopped
    #ports:
    #  - 80:80
    #  - 443:443
    environment:
      # Endpoints
      - NETBIRD_MGMT_API_ENDPOINT=https://netbird.domain.tld:33073
      - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbird.domain.tld:33073
      # OIDC
      - AUTH_AUDIENCE=netbird-client
      - AUTH_CLIENT_ID=netbird-client
      - AUTH_CLIENT_SECRET=
      - AUTH_AUTHORITY=https://keycloak.domain.tld/realms/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/
    labels:
      - traefik.enable=true
      - traefik.http.routers.netbird-dashboard.rule=Host(`netbird.domain.tld`)
      - traefik.http.routers.netbird-dashboard.entrypoints=websecure
      - traefik.http.routers.netbird-dashboard.tls=true
      - traefik.http.services.netbird-dashboard.loadbalancer.server.port=80
      - traefik.http.routers.netbird-dashboard.tls.certresolver=cloudflare
    networks:
      - frontend

  # Signal
  signal:
    image: netbirdio/signal:latest
    restart: unless-stopped
    volumes:
      - ./data/signal:/var/lib/netbird
    #ports:
    #  - 10000:80
  #      # port and command for Let's Encrypt validation
  #      - 443:443
  #    command: ["--letsencrypt-domain", "", "--log-file", "console"]
    labels:
      - traefik.enable=true
      - traefik.http.routers.netbird-signal.rule=Host(`netbird.domain.tld`) && PathPrefix(`/signalexchange.SignalExchange/`)
      - traefik.http.services.netbird-signal.loadbalancer.server.port=80
      - traefik.http.services.netbird-signal.loadbalancer.server.scheme=h2c
    networks:
      - frontend

  # Management
  management:
    image: netbirdio/management:latest
    restart: unless-stopped
    depends_on:
      - dashboard
    volumes:
      - ./data/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", "debug",
      "--disable-anonymous-metrics=true",
      "--single-account-mode-domain=netbird.domain.tld",
      "--dns-domain=netbird.selfhosted"
      ]
    labels:
      - traefik.enable=true
      - traefik.http.routers.netbird-api.rule=Host(`netbird.domain.tld`) && PathPrefix(`/api`)
      - traefik.http.routers.netbird-api.service=netbird-api
      - traefik.http.services.netbird-api.loadbalancer.server.port=443

      - traefik.http.routers.netbird-management.rule=Host(`netbird.domain.tld`) && PathPrefix(`/management.ManagementService/`)
      - traefik.http.routers.netbird-management.service=netbird-management
      - traefik.http.services.netbird-management.loadbalancer.server.port=443
      - traefik.http.services.netbird-management.loadbalancer.server.scheme=h2c
    environment:
      - NETBIRD_STORE_ENGINE_POSTGRES_DSN=
    networks:
      - frontend
      
  # Coturn
  coturn:
    image: coturn/coturn:latest
    restart: unless-stopped
    domainname: netbird.domain.tld
    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

networks:
  frontend:
    external: true
    
# volumes:
#   netbird-mgmt:
#   netbird-signal:
#   netbird-letsencrypt:

Netbird compose logs

management-1  | 2024-11-24T17:14:47Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:48Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:48Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:49Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:51Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:53Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1  | 2024-11-24T17:14:57Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
dashboard-1   | + LETSENCRYPT_DOMAIN=none
dashboard-1   | + LETSENCRYPT_EMAIL=example@local
dashboard-1   | + NGINX_SSL_PORT=443
dashboard-1   | + '[' none-x == none-x ']'
dashboard-1   | + exit 0
dashboard-1   | NetBird latest version: 
dashboard-1   | + LETSENCRYPT_DOMAIN=none
dashboard-1   | + LETSENCRYPT_EMAIL=example@local
dashboard-1   | + NGINX_SSL_PORT=443
dashboard-1   | + '[' none-x == none-x ']'
dashboard-1   | NetBird latest version: 
dashboard-1   | + exit 0
coturn-1      | 0: (1): INFO: System cpu num is 2
coturn-1      | 0: (1): INFO: log file opened: /var/tmp/turn_1_2024-11-24.log
coturn-1      | 0: (1): INFO: System enable num is 2
coturn-1      | 0: (1): INFO: Coturn Version Coturn-4.6.2 'Gorst'
coturn-1      | 0: (1): INFO: Coturn Version Coturn-4.6.2 'Gorst'
coturn-1      | 0: (1): INFO: Max number of open files/sockets allowed for this process: 1048576
coturn-1      | 0: (1): INFO: Due to the open files/sockets limitation, max supported number of TURN Sessions possible is: 524000 (approximately)
coturn-1      | 0: (1): INFO: 
coturn-1      | 
coturn-1      | ==== Show him the instruments, Practical Frost: ====
coturn-1      | 
coturn-1      | 0: (1): INFO: OpenSSL compile-time version: OpenSSL 3.0.14 4 Jun 2024 (0x300000e0)
coturn-1      | 0: (1): INFO: TLS 1.3 supported
coturn-1      | 0: (1): INFO: DTLS 1.2 supported
coturn-1      | 0: (1): INFO: TURN/STUN ALPN supported
coturn-1      | 0: (1): INFO: Third-party authorization (oAuth) supported
coturn-1      | 0: (1): INFO: GCM (AEAD) supported
coturn-1      | 0: (1): INFO: SQLite supported, default database location is /var/lib/coturn/turndb
coturn-1      | 0: (1): INFO: Redis supported
coturn-1      | 0: (1): INFO: PostgreSQL supported
coturn-1      | 0: (1): INFO: MySQL supported
coturn-1      | 0: (1): INFO: MongoDB supported
coturn-1      | 0: (1): INFO: Default Net Engine version: 3 (UDP thread per CPU core)
coturn-1      | 0: (1): INFO: Domain name: netbird.domain.tld
coturn-1      | 0: (1): INFO: Default realm: wiretrustee.com
coturn-1      | 0: (1): WARNING: cannot find certificate file: /etc/coturn/certs/cert.pem (1)
coturn-1      | 0: (1): WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
coturn-1      | 0: (1): WARNING: cannot find private key file: /etc/coturn/private/privkey.pem (1)
coturn-1      | 0: (1): WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
coturn-1      | 0: (1): INFO: Certificate file found: /etc/coturn/certs/cert.pem
coturn-1      | 0: (1): INFO: Private key file found: /etc/coturn/private/privkey.pem
coturn-1      | 0: (1): WARNING: NO EXPLICIT LISTENER ADDRESS(ES) ARE CONFIGURED
coturn-1      | 0: (1): INFO: ===========Discovering listener addresses: =========
coturn-1      | 0: (1): INFO: Listener address to use: 127.0.0.1
coturn-1      | 0: (1): INFO: Listener address to use: 192.168.1.111
coturn-1      | 0: (1): INFO: Listener address to use: 172.18.0.1
coturn-1      | 0: (1): INFO: Listener address to use: 172.17.0.1
coturn-1      | 0: (1): INFO: Listener address to use: 172.19.0.1
coturn-1      | 0: (1): INFO: Listener address to use: 172.20.0.1
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:181: running without TLS
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:99: running metrics server: :9090/metrics
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:127: running gRPC server: [::]:80
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:137: running gRPC backward compatibility server: [::]:10000
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:140: signal server version 0.33.0
signal-1      | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:141: started Signal Service
coturn-1      | 0: (1): INFO: Listener address to use: 172.21.0.1
coturn-1      | 0: (1): INFO: Listener address to use: ::1
coturn-1      | 0: (1): INFO: =====================================================
coturn-1      | 0: (1): INFO: Total: 6 'real' addresses discovered
coturn-1      | 0: (1): INFO: =====================================================
coturn-1      | 0: (1): WARNING: NO EXPLICIT RELAY ADDRESS(ES) ARE CONFIGURED
coturn-1      | 0: (1): INFO: ===========Discovering relay addresses: =============
coturn-1      | 0: (1): INFO: Relay address to use: 192.168.1.111
coturn-1      | 0: (1): INFO: Relay address to use: 172.18.0.1
coturn-1      | 0: (1): INFO: Relay address to use: 172.17.0.1
coturn-1      | 0: (1): INFO: Relay address to use: 172.19.0.1
coturn-1      | 0: (1): INFO: Relay address to use: 172.20.0.1
coturn-1      | 0: (1): INFO: Relay address to use: 172.21.0.1
coturn-1      | 0: (1): INFO: Relay address to use: ::1
coturn-1      | 0: (1): INFO: =====================================================
coturn-1      | 0: (1): INFO: Total: 7 relay addresses discovered
coturn-1      | 0: (1): INFO: =====================================================
coturn-1      | 0: (1): INFO: pid file created: /var/tmp/turnserver.pid
coturn-1      | 0: (1): INFO: IO method: epoll (with changelist)
coturn-1      | 0: (1): INFO: Wait for relay ports initialization...
coturn-1      | 0: (1): INFO:   relay 192.168.1.111 initialization...
coturn-1      | 0: (1): INFO:   relay 192.168.1.111 initialization done
coturn-1      | 0: (1): INFO:   relay 172.18.0.1 initialization...
coturn-1      | 0: (1): INFO:   relay 172.18.0.1 initialization done
coturn-1      | 0: (1): INFO:   relay 172.17.0.1 initialization...
coturn-1      | 0: (1): INFO:   relay 172.17.0.1 initialization done
coturn-1      | 0: (1): INFO:   relay 172.19.0.1 initialization...
coturn-1      | 0: (1): INFO:   relay 172.19.0.1 initialization done
coturn-1      | 0: (1): INFO:   relay 172.20.0.1 initialization...
coturn-1      | 0: (1): INFO:   relay 172.20.0.1 initialization done
coturn-1      | 0: (1): INFO:   relay 172.21.0.1 initialization...
coturn-1      | 0: (1): INFO:   relay 172.21.0.1 initialization done
coturn-1      | 0: (1): INFO:   relay ::1 initialization...
coturn-1      | 0: (1): INFO:   relay ::1 initialization done
coturn-1      | 0: (1): INFO: Relay ports initialization done
coturn-1      | 0: (1): INFO: Total General servers: 2
coturn-1      | 11: (9): DEBUG: turn server id=0 created
coturn-1      | 11: (10): DEBUG: turn server id=1 created
coturn-1      | 11: (1): INFO: Total auth threads: 3
coturn-1      | 11: (1): INFO: prometheus collector disabled, not started
management-1  | 2024-11-24T17:15:03Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration
management-1  | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused
management-1 exited with code 1
Originally created by @Juganooo on GitHub (Nov 24, 2024). Original GitHub issue: https://github.com/netbirdio/netbird/issues/2944 **Describe the problem** Hello, so i run netbird with keycloak behind traefik all in the same docker network all container seems fine except management ``` 2024-11-24T16:46:18Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused ``` `172.18.0.3` is keycloak container of course traefik logs return ``` 2024-11-24T16:59:12Z ERR github.com/traefik/traefik/v3/pkg/provider/docker/config.go:81 > error="service \"netbird-api\" error: unable to find the IP address for the container \"/netbird-management-1\": the server is ignored" container=management-netbird-681de4ed98ca8c2902fdad89840f486f24050110af16a51d4b5ad2ec272ac541 providerName=docker ``` In my browser i can access `https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration` From user PC and docker host i can `curl https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration` In my browser i can acces netbird.domain.tld get redirect to keycloak, log in and stuck there ![chrome_VcNd9R7s35](https://github.com/user-attachments/assets/ead7d4a4-795e-4234-bce3-b737c82e05ba) **To Reproduce** Steps to reproduce the behavior: 1. Following Advanced Guide 2. docker compose up -d 3. management container restarting loop 4. access netbird dashboard, log in 5. get stuck at the previus gif screenshot **Expected behavior** Management container status should be "Up" after loging in in Netbird Dashbord, should acces the dashboard **Are you using NetBird Cloud?** All Self-Hosted **NetBird version** ``` REPOSITORY TAG IMAGE ID CREATED SIZE netbirdio/management latest 0f52e24930eb 2 days ago 164MB netbirdio/signal latest 77e50f81efa2 2 days ago 37.5MB netbirdio/dashboard latest a251c76874cb 4 days ago 122MB coturn/coturn latest 2179d453607c 2 months ago 145MB ``` **NetBird status -dA output:** If applicable, add the `netbird status -dA' command output. **Do you face any (non-mobile) client issues?** Please provide the file created by `netbird debug for 1m -AS`. We advise reviewing the anonymized files for any remaining PII. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Netbird `docker-compose.yaml` ``` --- services: #UI dashboard dashboard: image: netbirdio/dashboard:latest restart: unless-stopped #ports: # - 80:80 # - 443:443 environment: # Endpoints - NETBIRD_MGMT_API_ENDPOINT=https://netbird.domain.tld:33073 - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbird.domain.tld:33073 # OIDC - AUTH_AUDIENCE=netbird-client - AUTH_CLIENT_ID=netbird-client - AUTH_CLIENT_SECRET= - AUTH_AUTHORITY=https://keycloak.domain.tld/realms/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/ labels: - traefik.enable=true - traefik.http.routers.netbird-dashboard.rule=Host(`netbird.domain.tld`) - traefik.http.routers.netbird-dashboard.entrypoints=websecure - traefik.http.routers.netbird-dashboard.tls=true - traefik.http.services.netbird-dashboard.loadbalancer.server.port=80 - traefik.http.routers.netbird-dashboard.tls.certresolver=cloudflare networks: - frontend # Signal signal: image: netbirdio/signal:latest restart: unless-stopped volumes: - ./data/signal:/var/lib/netbird #ports: # - 10000:80 # # port and command for Let's Encrypt validation # - 443:443 # command: ["--letsencrypt-domain", "", "--log-file", "console"] labels: - traefik.enable=true - traefik.http.routers.netbird-signal.rule=Host(`netbird.domain.tld`) && PathPrefix(`/signalexchange.SignalExchange/`) - traefik.http.services.netbird-signal.loadbalancer.server.port=80 - traefik.http.services.netbird-signal.loadbalancer.server.scheme=h2c networks: - frontend # Management management: image: netbirdio/management:latest restart: unless-stopped depends_on: - dashboard volumes: - ./data/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", "debug", "--disable-anonymous-metrics=true", "--single-account-mode-domain=netbird.domain.tld", "--dns-domain=netbird.selfhosted" ] labels: - traefik.enable=true - traefik.http.routers.netbird-api.rule=Host(`netbird.domain.tld`) && PathPrefix(`/api`) - traefik.http.routers.netbird-api.service=netbird-api - traefik.http.services.netbird-api.loadbalancer.server.port=443 - traefik.http.routers.netbird-management.rule=Host(`netbird.domain.tld`) && PathPrefix(`/management.ManagementService/`) - traefik.http.routers.netbird-management.service=netbird-management - traefik.http.services.netbird-management.loadbalancer.server.port=443 - traefik.http.services.netbird-management.loadbalancer.server.scheme=h2c environment: - NETBIRD_STORE_ENGINE_POSTGRES_DSN= networks: - frontend # Coturn coturn: image: coturn/coturn:latest restart: unless-stopped domainname: netbird.domain.tld 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 networks: frontend: external: true # volumes: # netbird-mgmt: # netbird-signal: # netbird-letsencrypt: ``` Netbird compose logs ``` management-1 | 2024-11-24T17:14:47Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:48Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:48Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:49Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:51Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:53Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 | 2024-11-24T17:14:57Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused dashboard-1 | + LETSENCRYPT_DOMAIN=none dashboard-1 | + LETSENCRYPT_EMAIL=example@local dashboard-1 | + NGINX_SSL_PORT=443 dashboard-1 | + '[' none-x == none-x ']' dashboard-1 | + exit 0 dashboard-1 | NetBird latest version: dashboard-1 | + LETSENCRYPT_DOMAIN=none dashboard-1 | + LETSENCRYPT_EMAIL=example@local dashboard-1 | + NGINX_SSL_PORT=443 dashboard-1 | + '[' none-x == none-x ']' dashboard-1 | NetBird latest version: dashboard-1 | + exit 0 coturn-1 | 0: (1): INFO: System cpu num is 2 coturn-1 | 0: (1): INFO: log file opened: /var/tmp/turn_1_2024-11-24.log coturn-1 | 0: (1): INFO: System enable num is 2 coturn-1 | 0: (1): INFO: Coturn Version Coturn-4.6.2 'Gorst' coturn-1 | 0: (1): INFO: Coturn Version Coturn-4.6.2 'Gorst' coturn-1 | 0: (1): INFO: Max number of open files/sockets allowed for this process: 1048576 coturn-1 | 0: (1): INFO: Due to the open files/sockets limitation, max supported number of TURN Sessions possible is: 524000 (approximately) coturn-1 | 0: (1): INFO: coturn-1 | coturn-1 | ==== Show him the instruments, Practical Frost: ==== coturn-1 | coturn-1 | 0: (1): INFO: OpenSSL compile-time version: OpenSSL 3.0.14 4 Jun 2024 (0x300000e0) coturn-1 | 0: (1): INFO: TLS 1.3 supported coturn-1 | 0: (1): INFO: DTLS 1.2 supported coturn-1 | 0: (1): INFO: TURN/STUN ALPN supported coturn-1 | 0: (1): INFO: Third-party authorization (oAuth) supported coturn-1 | 0: (1): INFO: GCM (AEAD) supported coturn-1 | 0: (1): INFO: SQLite supported, default database location is /var/lib/coturn/turndb coturn-1 | 0: (1): INFO: Redis supported coturn-1 | 0: (1): INFO: PostgreSQL supported coturn-1 | 0: (1): INFO: MySQL supported coturn-1 | 0: (1): INFO: MongoDB supported coturn-1 | 0: (1): INFO: Default Net Engine version: 3 (UDP thread per CPU core) coturn-1 | 0: (1): INFO: Domain name: netbird.domain.tld coturn-1 | 0: (1): INFO: Default realm: wiretrustee.com coturn-1 | 0: (1): WARNING: cannot find certificate file: /etc/coturn/certs/cert.pem (1) coturn-1 | 0: (1): WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly coturn-1 | 0: (1): WARNING: cannot find private key file: /etc/coturn/private/privkey.pem (1) coturn-1 | 0: (1): WARNING: cannot start TLS and DTLS listeners because private key file is not set properly coturn-1 | 0: (1): INFO: Certificate file found: /etc/coturn/certs/cert.pem coturn-1 | 0: (1): INFO: Private key file found: /etc/coturn/private/privkey.pem coturn-1 | 0: (1): WARNING: NO EXPLICIT LISTENER ADDRESS(ES) ARE CONFIGURED coturn-1 | 0: (1): INFO: ===========Discovering listener addresses: ========= coturn-1 | 0: (1): INFO: Listener address to use: 127.0.0.1 coturn-1 | 0: (1): INFO: Listener address to use: 192.168.1.111 coturn-1 | 0: (1): INFO: Listener address to use: 172.18.0.1 coturn-1 | 0: (1): INFO: Listener address to use: 172.17.0.1 coturn-1 | 0: (1): INFO: Listener address to use: 172.19.0.1 coturn-1 | 0: (1): INFO: Listener address to use: 172.20.0.1 signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:181: running without TLS signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:99: running metrics server: :9090/metrics signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:127: running gRPC server: [::]:80 signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:137: running gRPC backward compatibility server: [::]:10000 signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:140: signal server version 0.33.0 signal-1 | 2024-11-24T17:14:46Z INFO signal/cmd/run.go:141: started Signal Service coturn-1 | 0: (1): INFO: Listener address to use: 172.21.0.1 coturn-1 | 0: (1): INFO: Listener address to use: ::1 coturn-1 | 0: (1): INFO: ===================================================== coturn-1 | 0: (1): INFO: Total: 6 'real' addresses discovered coturn-1 | 0: (1): INFO: ===================================================== coturn-1 | 0: (1): WARNING: NO EXPLICIT RELAY ADDRESS(ES) ARE CONFIGURED coturn-1 | 0: (1): INFO: ===========Discovering relay addresses: ============= coturn-1 | 0: (1): INFO: Relay address to use: 192.168.1.111 coturn-1 | 0: (1): INFO: Relay address to use: 172.18.0.1 coturn-1 | 0: (1): INFO: Relay address to use: 172.17.0.1 coturn-1 | 0: (1): INFO: Relay address to use: 172.19.0.1 coturn-1 | 0: (1): INFO: Relay address to use: 172.20.0.1 coturn-1 | 0: (1): INFO: Relay address to use: 172.21.0.1 coturn-1 | 0: (1): INFO: Relay address to use: ::1 coturn-1 | 0: (1): INFO: ===================================================== coturn-1 | 0: (1): INFO: Total: 7 relay addresses discovered coturn-1 | 0: (1): INFO: ===================================================== coturn-1 | 0: (1): INFO: pid file created: /var/tmp/turnserver.pid coturn-1 | 0: (1): INFO: IO method: epoll (with changelist) coturn-1 | 0: (1): INFO: Wait for relay ports initialization... coturn-1 | 0: (1): INFO: relay 192.168.1.111 initialization... coturn-1 | 0: (1): INFO: relay 192.168.1.111 initialization done coturn-1 | 0: (1): INFO: relay 172.18.0.1 initialization... coturn-1 | 0: (1): INFO: relay 172.18.0.1 initialization done coturn-1 | 0: (1): INFO: relay 172.17.0.1 initialization... coturn-1 | 0: (1): INFO: relay 172.17.0.1 initialization done coturn-1 | 0: (1): INFO: relay 172.19.0.1 initialization... coturn-1 | 0: (1): INFO: relay 172.19.0.1 initialization done coturn-1 | 0: (1): INFO: relay 172.20.0.1 initialization... coturn-1 | 0: (1): INFO: relay 172.20.0.1 initialization done coturn-1 | 0: (1): INFO: relay 172.21.0.1 initialization... coturn-1 | 0: (1): INFO: relay 172.21.0.1 initialization done coturn-1 | 0: (1): INFO: relay ::1 initialization... coturn-1 | 0: (1): INFO: relay ::1 initialization done coturn-1 | 0: (1): INFO: Relay ports initialization done coturn-1 | 0: (1): INFO: Total General servers: 2 coturn-1 | 11: (9): DEBUG: turn server id=0 created coturn-1 | 11: (10): DEBUG: turn server id=1 created coturn-1 | 11: (1): INFO: Total auth threads: 3 coturn-1 | 11: (1): INFO: prometheus collector disabled, not started management-1 | 2024-11-24T17:15:03Z INFO [context: SYSTEM] management/cmd/management.go:497: loading OIDC configuration from the provided IDP configuration endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration management-1 | Error: failed reading provided config file: /etc/netbird/management.json: failed fetching OIDC configuration from endpoint https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration Get "https://keycloak.domain.tld/realms/netbird/.well-known/openid-configuration": dial tcp 172.18.0.3:443: connect: connection refused management-1 exited with code 1 ```
saavagebueno added the self-hosting label 2026-08-05 01:06:57 -04:00
Author
Owner

@saule1508 commented on GitHub (Nov 25, 2024):

I think you should post in the slack channel, to get help. It looks like a docker issue, not related to netbird itself. The management container cannot access the keycload container, probably because the keycloak container is not in the same network as the management (frontend).
You can get into the management container (docker exec -ti /bin/sh) then try to reach the keycloak container

<!-- gh-comment-id:2497336999 --> @saule1508 commented on GitHub (Nov 25, 2024): I think you should post in the slack channel, to get help. It looks like a docker issue, not related to netbird itself. The management container cannot access the keycload container, probably because the keycloak container is not in the same network as the management (frontend). You can get into the management container (docker exec -ti <id> /bin/sh) then try to reach the keycloak container
Author
Owner

@Juganooo commented on GitHub (Nov 25, 2024):

I will do that, but as i mentioned

Hello, so i run netbird with keycloak behind traefik all in the same docker network

Both netbird and keycloak are behind traefik, they both appear in docker network inspect frontend

You can get into the management container (docker exec -ti /bin/sh) then try to reach the keycloak container

I can't actually because the container is stuck in restarting loop

Thank you tho

<!-- gh-comment-id:2498634122 --> @Juganooo commented on GitHub (Nov 25, 2024): I will do that, but as i mentioned > Hello, so i run netbird with keycloak behind traefik all in the same docker network Both netbird and keycloak are behind traefik, they both appear in `docker network inspect frontend` > You can get into the management container (docker exec -ti /bin/sh) then try to reach the keycloak container I can't actually because the container is stuck in restarting loop Thank you tho
Author
Owner

@saule1508 commented on GitHub (Nov 26, 2024):

Is the port 443 exposed in the container as well ? Obviously it is exposed on the host since you can access it from outside. But from your docker container it goes directly to the other container

<!-- gh-comment-id:2500087976 --> @saule1508 commented on GitHub (Nov 26, 2024): Is the port 443 exposed in the container as well ? Obviously it is exposed on the host since you can access it from outside. But from your docker container it goes directly to the other container
Author
Owner

@Juganooo commented on GitHub (Nov 29, 2024):

As you said that it appears to me. Keycloak default https port is 8443 so traefik route to 8443 so i set keycloak https port on 443 management container start but i'm facing another issue, i'm still stuck at the loading page after login and when i inspect network it can't load netbird.domain.tld:33073/api/users, it's the management port api in the docker compose the internal port is 443.

I think it's the same problem as my first issue, those requests are not handled by traefik, it's seems hardcoded to use the port even tho those labels is configured (from netbird-traefik-docker compose example) :

labels:
  - traefik.enable=true
  - traefik.http.routers.netbird-api.rule=Host(`netbird.zebi.mielo.ovh`) && PathPrefix(`/api`)
  - traefik.http.routers.netbird-api.service=netbird-api
  - traefik.http.routers.netbird-api.entrypoints=netbird-api
  - traefik.http.services.netbird-api.loadbalancer.server.port=443
<!-- gh-comment-id:2508732851 --> @Juganooo commented on GitHub (Nov 29, 2024): As you said that it appears to me. Keycloak default https port is 8443 so traefik route to 8443 so i set keycloak https port on 443 management container start but i'm facing another issue, i'm still stuck at the loading page after login and when i inspect network it can't load `netbird.domain.tld:33073/api/users`, it's the management port api in the docker compose the internal port is 443. I think it's the same problem as my first issue, those requests are not handled by traefik, it's seems hardcoded to use the port even tho those labels is configured (from netbird-traefik-docker compose example) : ``` labels: - traefik.enable=true - traefik.http.routers.netbird-api.rule=Host(`netbird.zebi.mielo.ovh`) && PathPrefix(`/api`) - traefik.http.routers.netbird-api.service=netbird-api - traefik.http.routers.netbird-api.entrypoints=netbird-api - traefik.http.services.netbird-api.loadbalancer.server.port=443 ```
Author
Owner

@Juganooo commented on GitHub (Feb 28, 2025):

Finally can make this work.

i'm still stuck at the loading page after login and when i inspect network it can't load netbird.domain.tld:33073/api/users

Concerning this i just had to re read the docs line by line :). I did see that they provide custom docker compose for traefik, i just thought with their docker compose it should work straight away. At first, I didn't see there were specials environment variable to be add to work with reverse proxy. I just needed to :

  • add NETBIRD_MGMT_API_PORT to your reverse-proxy TLS-port
  • add NETBIRD_SIGNAL_PORT to your reverse-proxy TLS-port
    both set to port 443.

I know that i just should have read the docs correctly, but this step should be, based on their documentation included in step 2, and maybe those variable should already be present in setup.env.example and commented out maybe ?

Image

PS : they already mentionned to go back to step 2, reason more to include this in this step

Image

<!-- gh-comment-id:2691206749 --> @Juganooo commented on GitHub (Feb 28, 2025): Finally can make this work. > i'm still stuck at the loading page after login and when i inspect network it can't load netbird.domain.tld:33073/api/users Concerning this i just had to re read the docs line by line :). I did see that they provide custom docker compose for traefik, i just thought with their docker compose it should work straight away. At first, I didn't see there were specials environment variable to be add to work with reverse proxy. I just needed to : - add `NETBIRD_MGMT_API_PORT` to your reverse-proxy TLS-port - add `NETBIRD_SIGNAL_PORT` to your reverse-proxy TLS-port both set to port `443`. I know that i just should have read the docs correctly, but this step should be, based on their documentation included in step 2, and maybe those variable should already be present in setup.env.example and commented out maybe ? ![Image](https://github.com/user-attachments/assets/bfc3f1d9-5e32-458f-a6d4-c4688509d862) PS : they already mentionned to go back to step 2, reason more to include this in this step ![Image](https://github.com/user-attachments/assets/84f5a6d0-3c02-438d-8c4f-97834e5a40b4)
Sign in to join this conversation.
No Label self-hosting
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#6149