this post was submitted on 12 Mar 2026
26 points (100.0% liked)

Selfhosted

57456 readers
759 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Hey Everyone, I'm currently wanting to switch from Headscale to Netbird. It looks like Netbird is much easier to self host now except I can't get it working with my current Traefik v3.6 config. Here is my config.yaml file for the routers and headers. Any ideas?

Everything loads up fine (from the logs) however I can't go to the domain address. I have a CNAME record in cloudflare not proxied. The documentation says to set an A record of "netbird.mydomain.com" however wouldn't that defeat the purpose of the reverse proxy? I have an A record setup already pointing to my public ip and everything gets sent to my traefik reverse proxy.

` ###http:

routers:

netbird-dashboard:
  rule: Host(`netbird.mydomain.com`)
  entryPoints:
    - https
  tls: {} 
  service: dashboard
  priority: 1

netbird-grpc:
  rule: >
    Host(`netbird.mydomain.com`)
    && (PathPrefix(`/signalexchange.SignalExchange/`)
    || PathPrefix(`/management.ManagementService/`))
  entryPoints:
    - https
  tls: {} 
  service: netbird-server-h2c
  priority: 100

  netbird-backend:
  rule: >
    Host(`netbird.mydomain.com`)
    && (PathPrefix(`/relay`)
    || PathPrefix(`/ws-proxy/`)
    || PathPrefix(`/api`)
    || PathPrefix(`/oauth2`))
  entryPoints:
    - https
  tls: {} 
  service: netbird-server
  priority: 100

services:

 dashboard:
  loadBalancer:
    servers:
      - url: "http://netbird/"

 netbird-server:
  loadBalancer:
    servers:
      - url: "http://netbird/"

netbird-server-h2c:
  loadBalancer:
    servers:
      - url: "h2c://netbird:80"

___`

top 1 comments
sorted by: hot top controversial new old
[–] Tinkerer@lemmy.ca 1 points 22 minutes ago* (last edited 21 minutes ago)

Ok looks like I figured it out, turns out Netbird doesn't like wildcard certificates, I spun up a quick NPM reverse proxy in docker and everything is now working fine using a certificate for netbird.mydomain.com instead of a wildcard cert like *.mydomain.com