Skip to content

Commit bca8559

Browse files
authored
Reverse proxy amendments 2 (#616)
* Reverse Proxy Doc Amendments - update custom domains page to more closely reflect wording in the UI, added screenshots - add warning to index page that reverse proxy feature does not currently work with pre-shared keys/rosenpass * Update navigation order (move reverse proxy below network routes) * update migration guide to mention the need for TWO cname records (proxy and proxy wildcard)
1 parent f007175 commit bca8559

File tree

6 files changed

+49
-39
lines changed

6 files changed

+49
-39
lines changed
265 KB
Loading
44.6 KB
Loading

src/components/NavigationDocs.jsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,6 @@ export const docsNavigation = [
156156
}
157157
]
158158
},
159-
{
160-
title: 'Reverse Proxy',
161-
isOpen: false,
162-
links: [
163-
{ title: 'Overview', href: '/manage/reverse-proxy' },
164-
{ title: 'Custom Domains', href: '/manage/reverse-proxy/custom-domains' },
165-
{ title: 'Authentication', href: '/manage/reverse-proxy/authentication' },
166-
{ title: 'Access Logs', href: '/manage/reverse-proxy/access-logs' },
167-
]
168-
},
169159
{
170160
title: 'Network Routes',
171161
isOpen: false,
@@ -199,6 +189,16 @@ export const docsNavigation = [
199189
}
200190
]
201191
},
192+
{
193+
title: 'Reverse Proxy',
194+
isOpen: false,
195+
links: [
196+
{ title: 'Overview', href: '/manage/reverse-proxy' },
197+
{ title: 'Custom Domains', href: '/manage/reverse-proxy/custom-domains' },
198+
{ title: 'Authentication', href: '/manage/reverse-proxy/authentication' },
199+
{ title: 'Access Logs', href: '/manage/reverse-proxy/access-logs' },
200+
]
201+
},
202202
{
203203
title: 'DNS',
204204
isOpen: false,

src/pages/manage/reverse-proxy/custom-domains.mdx

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {Note} from "@/components/mdx"
22

33
export const description =
4-
'Configure free and custom domains for NetBird Reverse Proxy services, including CNAME validation and DNS setup.'
4+
'Configure free and custom domains for NetBird Reverse Proxy services, including CNAME verification and DNS setup.'
55

66
# Custom Domains
77

8-
When you create a reverse proxy service, you need to assign it a domain. NetBird provides built-in domains that are automatically available for every account, and also supports custom domains where you bring your own domain name. This page explains how both types work and walks you through adding and validating a custom domain.
8+
When you create a reverse proxy service, you need to assign it a domain. NetBird provides built-in domains that are automatically available for every account, and also supports custom domains where you bring your own domain name. This page explains how both types work and walks you through adding and verifying a custom domain.
99

1010
## Built-in domains
1111

@@ -43,7 +43,7 @@ Built-in domains are a quick way to get started. They receive automatic TLS cert
4343

4444
## Custom domains
4545

46-
Custom domains let you use your own domain name (e.g., `app.example.com`) for reverse proxy services. Custom domains work identically in both cloud and self-hosted deployments. Before a custom domain can be used, you must validate ownership by creating a CNAME record in your DNS provider.
46+
Custom domains let you use your own domain name (e.g., `app.example.com`) for reverse proxy services. Custom domains work identically in both cloud and self-hosted deployments. Before a custom domain can be used, you must verify ownership by creating a CNAME record in your DNS provider.
4747

4848
To manage custom domains, navigate to **Reverse Proxy** > **Custom Domains** in the NetBird dashboard.
4949

@@ -61,15 +61,15 @@ Follow these steps to add a custom domain to your account:
6161
<img src="/docs-static/img/manage/reverse-proxy/custom-domains-add.png" alt="Add Domain modal showing domain name and proxy cluster fields" className="imagewrapper"/>
6262
</p>
6363

64-
After saving, the domain appears in your list with an **unvalidated** status. You must complete CNAME validation before you can use the domain with a service.
64+
After saving, the domain appears in your list with a **Pending Verification** status. You must complete CNAME verification before you can use the domain with a service.
6565

66-
## Validating a custom domain
66+
## Verifying a custom domain
6767

6868
To prove that you own the domain, NetBird requires you to create a specific CNAME record in your DNS provider.
6969

7070
### Step 1: Create the CNAME record
7171

72-
In your DNS provider, create a CNAME record for the `validation` subdomain of your custom domain, pointing to the proxy cluster address. The CNAME target depends on your deployment type:
72+
In your DNS provider, create a wildcard CNAME record for your custom domain, pointing to the proxy cluster address. The CNAME target depends on your deployment type:
7373

7474
- **Cloud deployments** - point to a NetBird-hosted cluster address (e.g., `eu.proxy.netbird.io`)
7575
- **Self-hosted deployments** - point to your own proxy URL (e.g., `proxy.mycompany.com`)
@@ -78,28 +78,34 @@ For example, on a cloud deployment:
7878

7979
| Record Type | Name | Value |
8080
|-------------|------|-------|
81-
| `CNAME` | `validation.proxy.example.com` | `eu.proxy.netbird.io` |
81+
| `CNAME` | `*.proxy.example.com` | `eu.proxy.netbird.io` |
8282

8383
On a self-hosted deployment:
8484

8585
| Record Type | Name | Value |
8686
|-------------|------|-------|
87-
| `CNAME` | `validation.proxy.example.com` | `proxy.mycompany.com` |
87+
| `CNAME` | `*.proxy.example.com` | `proxy.mycompany.com` |
8888

89-
The exact target value depends on the proxy cluster you selected when adding the domain. The NetBird dashboard displays the required CNAME target after you save the domain.
89+
The exact target value depends on the proxy cluster you selected when adding the domain. The NetBird dashboard displays the required CNAME record and target after you save the domain.
9090

91-
### Step 2: Validate in the dashboard
91+
### Step 2: Verify in the dashboard
9292

93-
After creating the DNS record, return to the **Reverse Proxy** > **Custom Domains** page and click **Validate** next to the domain.
93+
After creating the DNS record, return to the **Reverse Proxy** > **Custom Domains** page and click **Verify Domain** next to the domain.
9494

9595
<p>
96-
<img src="/docs-static/img/manage/reverse-proxy/custom-domains-validation.png" alt="Domain validation status showing CNAME record details" className="imagewrapper"/>
96+
<img src="/docs-static/img/manage/reverse-proxy/custom-domains-verification.png" alt="Domain verification modal showing CNAME record details" className="imagewrapper-big"/>
9797
</p>
9898

99-
NetBird performs a CNAME lookup on `validation.<your-domain>` and verifies that it resolves to a known proxy cluster. Once validation succeeds, the domain status changes to **validated** and it becomes available in the domain selector when creating or editing services.
99+
Confirm that the dialog reflects CNAME record you added to your domain provider and click **Start Verification**.
100+
101+
<p>
102+
<img src="/docs-static/img/manage/reverse-proxy/custom-domains-start-verification.png" alt="Start Verification Dialog" className="imagewrapper"/>
103+
</p>
104+
105+
NetBird performs a CNAME lookup on `*.<your-domain>` and verifies that it resolves to a known proxy cluster. Once verification succeeds, the domain status changes to **Active** and it becomes available in the domain selector when creating or editing services.
100106

101107
<Note>
102-
DNS changes can take time to propagate. If validation fails immediately after creating the CNAME record, wait a few minutes and try again. In some cases, DNS propagation can take up to 48 hours depending on your provider and TTL settings.
108+
DNS changes can take time to propagate. If NetBird does not find the record immediately, please wait up to 24 hours and try again.
103109
</Note>
104110

105111
## Managing custom domains
@@ -108,11 +114,11 @@ The **Custom Domains** page lists all domains associated with your account, incl
108114

109115
### Viewing domains
110116

111-
The domain list shows each domain along with its type (Free, Cluster, or Custom), the associated proxy cluster, and the current validation status.
117+
The domain list shows each domain along with its type (Free, Cluster, or Custom), the associated proxy cluster, and the current verification status.
112118

113-
### Re-validating a domain
119+
### Re-verifying a domain
114120

115-
If a custom domain becomes unvalidated - for example, after a DNS configuration change - you can click **Validate** to trigger a new CNAME lookup.
121+
If a custom domain returns to **Pending Verification** status - for example, after a DNS configuration change - you can click **Verify Domain** to trigger a new CNAME lookup.
116122

117123
### Deleting a custom domain
118124

@@ -126,7 +132,7 @@ To remove a custom domain, click the delete action next to the domain in the lis
126132

127133
When you create or edit a reverse proxy service, the domain selector presents all available domains:
128134

129-
- All **validated** custom domains
135+
- All **Active** custom domains
130136
- All built-in domains - **Free** domains (cloud) or **Cluster** domains (self-hosted)
131137

132138
To assign a domain to a service, enter a **subdomain** on the left side of the selector and choose a **base domain** on the right side. The full public URL for your service is the combination of both:
@@ -141,19 +147,19 @@ All domain types receive automatic TLS certificates managed by the proxy.
141147

142148
## Troubleshooting
143149

144-
### Domain shows as unvalidated
150+
### Domain shows as Pending Verification
145151

146-
Verify that the CNAME record for `validation.<your-domain>` is correctly configured and points to the right proxy cluster address. For cloud deployments, this is a NetBird-hosted address (e.g., `eu.proxy.netbird.io`). For self-hosted deployments, this is your own proxy URL (e.g., `proxy.mycompany.com`). Use a DNS lookup tool to confirm the record has propagated:
152+
Verify that the wildcard CNAME record for `*.<your-domain>` is correctly configured and points to the right proxy cluster address. For cloud deployments, this is a NetBird-hosted address (e.g., `eu.proxy.netbird.io`). For self-hosted deployments, this is your own proxy URL (e.g., `proxy.mycompany.com`). Use a DNS lookup tool to confirm the record has propagated:
147153

148154
```bash
149-
dig CNAME validation.proxy.example.com
155+
dig CNAME *.proxy.example.com
150156
```
151157

152158
If the record does not appear, check your DNS provider for typos or wait for propagation to complete.
153159

154160
### CNAME pointing to the wrong cluster
155161

156-
The CNAME record must resolve to one of your available proxy clusters. If you selected a different cluster when adding the domain, the validation lookup will fail. Verify the expected target value on the Custom Domains page in the dashboard and update your DNS record accordingly.
162+
The CNAME record must resolve to one of your available proxy clusters. If you selected a different cluster when adding the domain, the verification lookup will fail. Verify the expected target value on the Custom Domains page in the dashboard and update your DNS record accordingly.
157163

158164
### Domain already in use
159165

src/pages/manage/reverse-proxy/index.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Note} from "@/components/mdx"
1+
import {Note, Warning} from "@/components/mdx"
22

33
export const description =
44
'Expose internal services to the public internet with automatic TLS, authentication, and traffic routing through the NetBird mesh network.'
@@ -13,6 +13,9 @@ NetBird Reverse Proxy lets you expose internal services running on peers or behi
1313
<Note>
1414
**Self-hosted requirement:** Self-hosted deployments **must** use [Traefik](/selfhosted/reverse-proxy) as their reverse proxy. Traefik is the only supported reverse proxy that provides TLS passthrough, which is required for the Reverse Proxy feature to function correctly.
1515
</Note>
16+
<Warning>
17+
The Reverse Proxy feature does not currently support pre-shared keys or Rosenpass. If your network relies on either of these features, reverse proxy services will not function as expected.
18+
</Warning>
1619

1720
## How it works
1821

src/pages/selfhosted/migration/enable-reverse-proxy.mdx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,15 +150,16 @@ The Traefik labels configure a **TCP router** that:
150150
The `HostSNI(*)` rule acts as a catch-all for any domain not matched by the existing NetBird HTTP routers. The `priority=1` ensures this TCP router only handles traffic that no other router claims. Any domain pointing to your server that isn't `netbird.example.com` will be forwarded to the proxy.
151151
</Note>
152152

153-
### Step 4: Set up wildcard DNS
153+
### Step 4: Set up DNS records
154154

155-
Create a wildcard DNS record pointing to the server running your NetBird stack:
155+
Create two DNS records pointing to the server running your NetBird stack — one for the base proxy domain and one wildcard for service subdomains:
156156

157-
```
158-
*.proxy.example.com → <your-server-IP>
159-
```
157+
| Type | Name | Content |
158+
|------|------|---------|
159+
| `CNAME` | `proxy.example.com` | `netbird.example.com` |
160+
| `CNAME` | `*.proxy.example.com` | `netbird.example.com` |
160161

161-
This ensures that all service subdomains (e.g., `myapp.proxy.example.com`, `dashboard.proxy.example.com`) resolve to your server where Traefik forwards them to the proxy container.
162+
The base domain record is required because a wildcard DNS record does not cover the bare domain itself. The wildcard record ensures that all service subdomains (e.g., `myapp.proxy.example.com`, `dashboard.proxy.example.com`) resolve to your server where Traefik forwards them to the proxy container.
162163

163164
### Step 5: Apply changes
164165

0 commit comments

Comments
 (0)