[GH-ISSUE #4829] [SOLVED] Cannot connect to network after login. Authentik/PocketID + Caddy #10220

Open
opened 2026-08-05 01:25:03 -04:00 by saavagebueno · 0 comments
Owner

Originally created by @afonsofrancof on GitHub (Nov 20, 2025).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/4829

I setup everything, and after logging in, it stays on "connecting" forever.
The clients say they authenticated successfully, but I get this error in the management container (which makes me think that the clients falsely believe they are authenticated):

2025-11-21T01:16:59Z WARN [requestID: 850f2233-1ba3-43c4-8ae2-159db24915b6, accountID: UNKNOWN, peerID: 1mbbYRtGPw1dQ1riMlbOxjcTWM1jyTKtMfRA171SQUo=, context: GRPC] management/internals/shared/grpc/server.go:598: failed logging in peer 1mbbYRtGPw1dQ1riMlbOxjcTWM1jyTKtMfRA171SQUo=: no peer auth method provided, please use a setup key or interactive SSO login

Compose file

x-default: &default
  restart: 'unless-stopped'
  logging:
    driver: 'json-file'
    options:
      max-size: '500m'
      max-file: '2'

services:
  # UI dashboard
  dashboard:
    <<: *default
    image: netbirdio/dashboard:latest
    networks:
      - default
      - caddy_proxy
    expose:
      - 80
    environment:
      # Endpoints
      - NETBIRD_MGMT_API_ENDPOINT=https://netbird.domain.tld:443
      - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbird.domain.tld:443
      # OIDC
      - AUTH_AUDIENCE=<CLIENT_ID>
      - AUTH_CLIENT_ID=<CLIENT_ID>
      - AUTH_CLIENT_SECRET=
      - AUTH_AUTHORITY=https://authentik.domain.tld/application/o/net-bird/
      - USE_AUTH0=false
      - AUTH_SUPPORTED_SCOPES=openid profile email offline_access api
      - AUTH_REDIRECT_URI=/auth
      - AUTH_SILENT_REDIRECT_URI=/silent-auth
      - NETBIRD_TOKEN_SOURCE=accessToken
      # SSL
      - NGINX_SSL_PORT=443
      # Letsencrypt
      - LETSENCRYPT_DOMAIN=
      - LETSENCRYPT_EMAIL=

  signal:
    <<: *default
    image: netbirdio/signal:latest
    depends_on:
          - dashboard
    volumes:
      - /home/user/netbird/signal:/var/lib/netbird
    networks:
      - default
      - caddy_proxy
    expose:
      - 80
    command: [
      "--cert-file", "",
      "--cert-key", "",
      "--log-file", "console"
    ]

  # Relay
  relay:
    <<: *default
    image: netbirdio/relay:latest
    environment:
    - NB_LOG_LEVEL=info
    - NB_LISTEN_ADDRESS=0.0.0.0:80
    - NB_EXPOSED_ADDRESS=rels://netbird.domain.tld:443/relay
    - NB_AUTH_SECRET=<REDACTED_SECRET>
    networks:
      - default
      - caddy_proxy
    expose:
      - 80

  management:
    <<: *default
    image: netbirdio/management:latest
    depends_on:
      - dashboard
    volumes:
      - /home/user/netbird/mgmt:/var/lib/netbird
      - /home/user/netbird/conf/management.json:/etc/netbird/management.json
    networks:
      - default
      - caddy_proxy
    expose:
      - 80
    command: [
      "--port", "80",
      "--log-file", "console",
      "--log-level", "info",
      "--disable-anonymous-metrics=false",
      "--single-account-mode-domain=netbird.domain.tld",
      "--dns-domain=netbird.selfhosted"
      ]
    environment:
      - NETBIRD_STORE_ENGINE_POSTGRES_DSN=
      - NETBIRD_STORE_ENGINE_MYSQL_DSN=


networks:
  caddy_proxy:
    external: true
    name: "caddy_proxy"

Management Config

{
    "Stuns": [],
    "TURNConfig": {
        "TimeBasedCredentials": false,
        "CredentialsTTL": "12h0m0s",
        "Secret": "secret",
        "Turns": []
    },
    "Relay": {
        "Addresses": [
            "rels://netbird.domain.tld:443/relay"
        ],
        "CredentialsTTL": "24h0m0s",
        "Secret": "<REDACTED_SECRET>"
    },
    "Signal": {
        "Proto": "http",
        "URI": "netbird.domain.tld:443",
        "Username": "",
        "Password": ""
    },
    "Datadir": "/var/lib/netbird/",
    "DataStoreEncryptionKey": "<REDACTED_KEY>",
    "HttpConfig": {
        "LetsEncryptDomain": "",
        "CertFile": "",
        "CertKey": "",
        "AuthAudience": "<CLIENT_ID>",
        "AuthIssuer": "https://authentik.domain.tld/application/o/net-bird/",
        "AuthUserIDClaim": "",
        "AuthKeysLocation": "https://authentik.domain.tld/application/o/net-bird/jwks/",
        "OIDCConfigEndpoint": "https://authentik.domain.tld/application/o/net-bird/.well-known/openid-configuration",
        "IdpSignKeyRefreshEnabled": false,
        "ExtraAuthAudience": ""
    },
    "IdpManagerConfig": {
        "ManagerType": "authentik",
        "ClientConfig": {
            "Issuer": "https://authentik.domain.tld/application/o/net-bird/",
            "TokenEndpoint": "https://authentik.domain.tld/application/o/token/",
            "ClientID": "<CLIENT_ID>",
            "ClientSecret": "",
            "GrantType": "client_credentials"
        },
        "ExtraConfig": {
            "Password": "<APP_PASSWORD_GENERATED_ON_AUTHENTIK>",
            "Username": "Netbird"
        },
        "Auth0ClientCredentials": null,
        "AzureClientCredentials": null,
        "KeycloakClientCredentials": null,
        "ZitadelClientCredentials": null
    },
    "DeviceAuthorizationFlow": {
        "Provider": "hosted",
        "ProviderConfig": {
            "ClientID": "<CLIENT_ID>",
            "ClientSecret": "",
            "Domain": "authentik.domain.tld",
            "Audience": "<CLIENT_ID>",
            "TokenEndpoint": "https://authentik.domain.tld/application/o/token/",
            "DeviceAuthEndpoint": "https://authentik.domain.tld/application/o/device/",
            "AuthorizationEndpoint": "",
            "Scope": "openid",
            "UseIDToken": false,
            "RedirectURLs": null,
            "DisablePromptLogin": false,
            "LoginFlag": 0
        }
    },
    "PKCEAuthorizationFlow": {
        "ProviderConfig": {
            "ClientID": "<CLIENT_ID>",
            "ClientSecret": "",
            "Domain": "",
            "Audience": "<CLIENT_ID>",
            "TokenEndpoint": "https://authentik.domain.tld/application/o/token/",
            "DeviceAuthEndpoint": "",
            "AuthorizationEndpoint": "https://authentik.domain.tld/application/o/authorize/",
            "Scope": "openid profile email offline_access api",
            "UseIDToken": false,
            "RedirectURLs": [
                "http://localhost:53000"
            ],
            "DisablePromptLogin": true,
            "LoginFlag": 0
        }
    },
    "StoreConfig": {
        "Engine": "sqlite"
    },
    "ReverseProxy": {
        "TrustedHTTPProxies": [],
        "TrustedHTTPProxiesCount": 0,
        "TrustedPeers": [
            "0.0.0.0/0"
        ]
    },
    "DisableDefaultPolicy": false
}

Caddyfile

netbird.domain.tld {

        reverse_proxy /* dashboard

        reverse_proxy /signalexchange.SignalExchange/* h2c://signal

        reverse_proxy /ws-proxy/signal signal

        reverse_proxy /management.ManagementService/* h2c://management

        reverse_proxy /ws-proxy/management management

        reverse_proxy /api* management

        reverse_proxy /relay* relay
}

I have no idea what else to do.
I followed the docs exactly to create the service accounts and app password and device flows, etc. I also followed Authentik's guide for NetBird which mentioned some things that NetBird doesn't mention in its docs.

Originally created by @afonsofrancof on GitHub (Nov 20, 2025). Original GitHub issue: https://github.com/netbirdio/netbird/issues/4829 I setup everything, and after logging in, it stays on "connecting" forever. The clients say they authenticated successfully, but I get this error in the management container (which makes me think that the clients falsely believe they are authenticated): `2025-11-21T01:16:59Z WARN [requestID: 850f2233-1ba3-43c4-8ae2-159db24915b6, accountID: UNKNOWN, peerID: 1mbbYRtGPw1dQ1riMlbOxjcTWM1jyTKtMfRA171SQUo=, context: GRPC] management/internals/shared/grpc/server.go:598: failed logging in peer 1mbbYRtGPw1dQ1riMlbOxjcTWM1jyTKtMfRA171SQUo=: no peer auth method provided, please use a setup key or interactive SSO login` ### Compose file ```yaml x-default: &default restart: 'unless-stopped' logging: driver: 'json-file' options: max-size: '500m' max-file: '2' services: # UI dashboard dashboard: <<: *default image: netbirdio/dashboard:latest networks: - default - caddy_proxy expose: - 80 environment: # Endpoints - NETBIRD_MGMT_API_ENDPOINT=https://netbird.domain.tld:443 - NETBIRD_MGMT_GRPC_API_ENDPOINT=https://netbird.domain.tld:443 # OIDC - AUTH_AUDIENCE=<CLIENT_ID> - AUTH_CLIENT_ID=<CLIENT_ID> - AUTH_CLIENT_SECRET= - AUTH_AUTHORITY=https://authentik.domain.tld/application/o/net-bird/ - USE_AUTH0=false - AUTH_SUPPORTED_SCOPES=openid profile email offline_access api - AUTH_REDIRECT_URI=/auth - AUTH_SILENT_REDIRECT_URI=/silent-auth - NETBIRD_TOKEN_SOURCE=accessToken # SSL - NGINX_SSL_PORT=443 # Letsencrypt - LETSENCRYPT_DOMAIN= - LETSENCRYPT_EMAIL= signal: <<: *default image: netbirdio/signal:latest depends_on: - dashboard volumes: - /home/user/netbird/signal:/var/lib/netbird networks: - default - caddy_proxy expose: - 80 command: [ "--cert-file", "", "--cert-key", "", "--log-file", "console" ] # Relay relay: <<: *default image: netbirdio/relay:latest environment: - NB_LOG_LEVEL=info - NB_LISTEN_ADDRESS=0.0.0.0:80 - NB_EXPOSED_ADDRESS=rels://netbird.domain.tld:443/relay - NB_AUTH_SECRET=<REDACTED_SECRET> networks: - default - caddy_proxy expose: - 80 management: <<: *default image: netbirdio/management:latest depends_on: - dashboard volumes: - /home/user/netbird/mgmt:/var/lib/netbird - /home/user/netbird/conf/management.json:/etc/netbird/management.json networks: - default - caddy_proxy expose: - 80 command: [ "--port", "80", "--log-file", "console", "--log-level", "info", "--disable-anonymous-metrics=false", "--single-account-mode-domain=netbird.domain.tld", "--dns-domain=netbird.selfhosted" ] environment: - NETBIRD_STORE_ENGINE_POSTGRES_DSN= - NETBIRD_STORE_ENGINE_MYSQL_DSN= networks: caddy_proxy: external: true name: "caddy_proxy" ``` ### Management Config ```json { "Stuns": [], "TURNConfig": { "TimeBasedCredentials": false, "CredentialsTTL": "12h0m0s", "Secret": "secret", "Turns": [] }, "Relay": { "Addresses": [ "rels://netbird.domain.tld:443/relay" ], "CredentialsTTL": "24h0m0s", "Secret": "<REDACTED_SECRET>" }, "Signal": { "Proto": "http", "URI": "netbird.domain.tld:443", "Username": "", "Password": "" }, "Datadir": "/var/lib/netbird/", "DataStoreEncryptionKey": "<REDACTED_KEY>", "HttpConfig": { "LetsEncryptDomain": "", "CertFile": "", "CertKey": "", "AuthAudience": "<CLIENT_ID>", "AuthIssuer": "https://authentik.domain.tld/application/o/net-bird/", "AuthUserIDClaim": "", "AuthKeysLocation": "https://authentik.domain.tld/application/o/net-bird/jwks/", "OIDCConfigEndpoint": "https://authentik.domain.tld/application/o/net-bird/.well-known/openid-configuration", "IdpSignKeyRefreshEnabled": false, "ExtraAuthAudience": "" }, "IdpManagerConfig": { "ManagerType": "authentik", "ClientConfig": { "Issuer": "https://authentik.domain.tld/application/o/net-bird/", "TokenEndpoint": "https://authentik.domain.tld/application/o/token/", "ClientID": "<CLIENT_ID>", "ClientSecret": "", "GrantType": "client_credentials" }, "ExtraConfig": { "Password": "<APP_PASSWORD_GENERATED_ON_AUTHENTIK>", "Username": "Netbird" }, "Auth0ClientCredentials": null, "AzureClientCredentials": null, "KeycloakClientCredentials": null, "ZitadelClientCredentials": null }, "DeviceAuthorizationFlow": { "Provider": "hosted", "ProviderConfig": { "ClientID": "<CLIENT_ID>", "ClientSecret": "", "Domain": "authentik.domain.tld", "Audience": "<CLIENT_ID>", "TokenEndpoint": "https://authentik.domain.tld/application/o/token/", "DeviceAuthEndpoint": "https://authentik.domain.tld/application/o/device/", "AuthorizationEndpoint": "", "Scope": "openid", "UseIDToken": false, "RedirectURLs": null, "DisablePromptLogin": false, "LoginFlag": 0 } }, "PKCEAuthorizationFlow": { "ProviderConfig": { "ClientID": "<CLIENT_ID>", "ClientSecret": "", "Domain": "", "Audience": "<CLIENT_ID>", "TokenEndpoint": "https://authentik.domain.tld/application/o/token/", "DeviceAuthEndpoint": "", "AuthorizationEndpoint": "https://authentik.domain.tld/application/o/authorize/", "Scope": "openid profile email offline_access api", "UseIDToken": false, "RedirectURLs": [ "http://localhost:53000" ], "DisablePromptLogin": true, "LoginFlag": 0 } }, "StoreConfig": { "Engine": "sqlite" }, "ReverseProxy": { "TrustedHTTPProxies": [], "TrustedHTTPProxiesCount": 0, "TrustedPeers": [ "0.0.0.0/0" ] }, "DisableDefaultPolicy": false } ``` ### Caddyfile ```caddyfile netbird.domain.tld { reverse_proxy /* dashboard reverse_proxy /signalexchange.SignalExchange/* h2c://signal reverse_proxy /ws-proxy/signal signal reverse_proxy /management.ManagementService/* h2c://management reverse_proxy /ws-proxy/management management reverse_proxy /api* management reverse_proxy /relay* relay } ``` I have no idea what else to do. I followed the docs exactly to create the service accounts and app password and device flows, etc. I also followed Authentik's guide for NetBird which mentioned some things that NetBird doesn't mention in its docs.
saavagebueno added the triage-needed label 2026-08-05 01:25:03 -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#10220