Netbird v0.69.0 + npm cant reach peers other than local resources

Is NPM capable as reverse proxy with source from other peers?

what does not work:

Cant reach services like nextcloud, nginx, adguard, .. with NPM (instead of internal reverse Proxy) on other subnets on peers.

what does work:

lokal subnets whos in the same physical network are reachable through NPM and all hostet services works (nextcloud, nginx, adguard, .. ).

To Reproduce

  1. install NPM in docker with network:
services:
  npm:
    image: "jc21/nginx-proxy-manager"
    container_name: npm
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"

    networks:
      - npm-network

    volumes:
      - ./data:/data
      - ./certs:/etc/letsencrypt

networks:
  npm-network:
    external: true
  1. Install netbird with official command
choose Option 3 for npm
use network "npm-network"
  1. create proxy host in npm with:

tick http2, exploit and in advanced tab use:

# Advanced Configuration for Nginx Proxy Manager
# Paste this into the "Advanced" tab of your Proxy Host configuration
#
# IMPORTANT: Enable "HTTP/2 Support" in the SSL tab for gRPC to work!

# Required for long-lived connections (gRPC and WebSocket)
client_header_timeout 1d;
client_body_timeout 1d;

# WebSocket connections (relay, signal, management)
location ~ ^/(relay|ws-proxy/) {
    proxy_pass http://netbird-server:80;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 1d;
}

# Native gRPC (signal + management)
location ~ ^/(signalexchange\.SignalExchange|management\.ManagementService)/ {
    grpc_pass grpc://netbird-server:80;
    grpc_read_timeout 1d;
    grpc_send_timeout 1d;
    grpc_socket_keepalive on;
}

# HTTP routes (API + OAuth2)
location ~ ^/(api|oauth2)/ {
    proxy_pass http://netbird-server:80;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Expected behavior

I need clean advice on how to expose services with npm where the source come from peers on other subnets

I need Netbird as replacement for my existing solution with site2site wireguard and zoraxy reverse proxy between “homelab proxmox” ←→ “Hetzner vps“

Are you using NetBird Cloud?

self-host NetBird’s control plane.

NetBird version

v0.69.0

Is any other VPN software installed?

wireguard on my “opnsense firewall vm” on my “proxmox host” (Port 51825)

site2site wiregaurd on “local proxmox vm” between Hetzner (51820 not exposed in local Firewall)

“Both shouldnt interference because i use this setup localy in my homenet for testing before i switch to hetzner”

Debug output

Peers detail:
firefox-149-browser-client-20-3.netbird.selfhosted:
NetBird IP: 100.65.20.3
Public key: ZGTFCo1fpMiVVSP3SLQCpQOwb/QvasSLdTqu6H/jpSs=
Status: Connecting
– detail –
Connection type: -
ICE candidate (Local/Remote): -/-
ICE candidate endpoints (Local/Remote): -/-
Relay server address:
Last connection update: 1 hour, 37 minutes ago
Last WireGuard handshake: -
Transfer status (received/sent) 0 B/0 B
Quantum resistance: false
Networks: -
Latency: 0s

netbird-peer-pe.netbird.selfhosted:
NetBird IP: 100.65.64.247
Public key: F8qVXZb1v6IsAyHgZdawtkvO5Iq68BaEIRJS86kO0UA=
Status: Connecting
– detail –
Connection type: -
ICE candidate (Local/Remote): -/-
ICE candidate endpoints (Local/Remote): -/-
Relay server address:
Last connection update: 1 hour, 37 minutes ago
Last WireGuard handshake: -
Transfer status (received/sent) 0 B/0 B
Quantum resistance: false
Networks: -
Latency: 0s

pbs-zero2.netbird.selfhosted:
NetBird IP: 100.65.168.71
Public key: K17POQC4VQwBpG77McywUmRLu+6EjaMRBnwmKLpTLEo=
Status: Connected
– detail –
Connection type: Relayed
ICE candidate (Local/Remote): -/-
ICE candidate endpoints (Local/Remote): -/-
Relay server address: rels://netbird.anon-mIbst.domain:443
Last connection update: 1 hour, 37 minutes ago
Last WireGuard handshake: 2 minutes, 20 seconds ago
Transfer status (received/sent) 33.3 KiB/46.7 KiB
Quantum resistance: false
Networks: -
Latency: 0s

Events:
[INFO] SYSTEM (fb4772db-f245-4595-9028-86cf441d254e)
Message: Network map updated
Time: 1 hour, 31 minutes ago
[INFO] SYSTEM (6822a2b1-160d-4e74-9b1f-ef497910cd05)
Message: Network map updated
Time: 1 hour, 31 minutes ago
[INFO] SYSTEM (e271fc89-1b77-4e22-a466-e01608e8bacf)
Message: Network map updated
Time: 1 hour, 28 minutes ago
[INFO] SYSTEM (75a1c675-1825-47c6-9ee2-c15929010ba7)
Message: Network map updated
Time: 1 hour, 27 minutes ago
[INFO] SYSTEM (f869c672-3457-442c-8f8d-d26b09ac08af)
Message: Network map updated
Time: 1 hour, 27 minutes ago
[INFO] SYSTEM (d19d8da4-d4d5-4364-9180-40290f0871e4)
Message: Network map updated
Time: 1 hour, 25 minutes ago
[INFO] SYSTEM (007d37fe-f6c5-4413-ab98-240270dbbf3c)
Message: Network map updated
Time: 1 hour, 24 minutes ago
[INFO] SYSTEM (5ec56e6d-3359-4274-991d-b474878e8902)
Message: Network map updated
Time: 1 hour, 24 minutes ago
[INFO] SYSTEM (cf6dea08-0f18-4ff5-8748-f3ea245c7389)
Message: Network map updated
Time: 1 hour, 24 minutes ago
[INFO] SYSTEM (367b6b43-ed10-4791-ae74-1ecb4afc0c06)
Message: Network map updated
Time: 1 hour, 20 minutes ago
OS: windows/amd64
Daemon version: 0.69.0
CLI version: 0.69.0
Profile: default
Management: Connected to https ://netbird.anon-mIbst.domain:443
Signal: Connected to https ://netbird.anon-mIbst.domain:443
Relays:
[stun:netbird.anon-mIbst.domain:3478] is Available
[rels://netbird.anon-mIbst.domain:443] is Available
Nameservers:
FQDN: kemi-zenbook.netbird.selfhosted
NetBird IP: 100.65.226.231/16
Interface type: Userspace
Quantum resistance: false
Lazy connection: false
SSH Server: Disabled
Networks: 0.0.0.0/0, 10.0.0.0/24
Peers count: 1/3 Connected

Have you tried these troubleshooting steps?

  • Reviewed client troubleshooting (if applicable)
  • Checked for newer NetBird versions
  • Searched for similar issues on GitHub (including closed ones)
  • Restarted the NetBird client
  • Disabled other VPN software
  • Checked firewall settings

What are you exactly trying to do? Reach services on the same place as NetBird under NPM while routing back top NPM to get to those services?

1 Like

I have installed netbird on Hetzner Server and want services on my “local homelab” available on far away Hetzner

Services on the same network where netbird is installed are working

I just want to know if there are limitations if using NPM in Combination with Netbird
Thanks for reply

VPN works just NPM doesnt reach the “Hello Wolrd Nginx Container”

Ah, I see. You are using Networks, make sure you’ve created an Access Policy, otherwise the connection between NPM and the service is blocked. Alternativly, check if NPM itself has the access to the routing peer/service behind the routing peer.

Okay now it works what i needet was a “route” with peer “OPNsense”

and

A peer on the Hetzner Server (host no docker)

Pefekt now :slight_smile:
Thank you

Now as it works i can dive into Policy´s to enhace permissens :slight_smile:

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.