mirror of
https://github.com/netbirdio/docs.git
synced 2026-08-25 01:01:27 +02:00
* docs: add Site-to-VPN scenario guide
New dedicated guide for letting clientless devices on a local network
initiate connections to NetBird peers (the reverse of VPN-to-Site).
Covers static-route and DNAT options, DNS resolution via dnsmasq, and
explains why the target peer always observes the routing peer's NetBird
IP as the source.
- Add src/pages/manage/network-routes/use-cases/by-scenario/site-to-vpn.mdx
- Wire it into NavigationDocs.jsx
- Update the site-to-site overview table row to point at the new page
- Replace the stub Site-to-VPN subsection in site-to-site-office.mdx
with a pointer to the new guide
* docs(site-to-vpn): correct source-IP section, add firewall and interface notes
- Source IP Behavior: remove the option that suggested emptying the
destination peer's policies. That doesn't preserve source IP; it just
tears down the wireguard pairing. Replace with an honest "not possible
with legacy Network Routes."
- Step 3: call out that hosts with FORWARD-DROP firewalls (UFW, firewalld)
need an explicit ACCEPT rule between the site interface and wt0.
- Option B: prefix the DNAT step with `ip -br addr` so customers find the
right site-facing interface instead of assuming eth0.
- Step 1: use "Name" for the setup key field instead of the route-only
"Network Identifier".
* docs(site-to-vpn): tighten prereqs, firewall step, and source-IP wording
- Drop generic prereqs (account, routing peer hardware, target peer)
- Reduce Step 3 to the host-firewall FORWARD rule
- Label Networks-feature Site-to-VPN as 'not possible' rather than limited
- Rename topology arrow to 'NetBird Overlay'
- Clarify masquerade lives on the routing peer in troubleshooting
* docs(site-to-vpn): switch primary path to Networks; document outbound SNAT requirement
Verified in the lab that Networks supports Site-to-VPN with the same
shape as Network Routes (Resource + Routing Peer + peer-group policy).
The differentiating factor is not the feature but the routing peer
platform: NetBird's masquerade flag does not install a working outbound
SNAT on non-Linux peers or in userspace mode, so the user must configure
it explicitly on the routing peer or upstream firewall.
Doc changes:
- Lead with Networks; Network Routes is now framed as an equivalent
alternative rather than the only option
- New Step 3 dedicated to the outbound SNAT (Linux iptables, pfSense /
OPNsense, MikroTik examples)
- New section "Outbound SNAT requirement" explaining why the destination
peer's access control rejects unrewritten site IPs and where the
dashboard masquerade flag is and isn't sufficient
- Up-front Warning calls out the platform requirement so customers don't
silently misconfigure
- Troubleshooting entry updated to point at SNAT counters and tcpdump
- Updated Source IP Behavior section to reflect that the behavior is the
same on both Networks and Network Routes
Parent page changes:
- /use-cases/site-to-site: Scenario Support table now shows Site-to-VPN
as Yes on both Networks and Network Routes; "Which Scenario Do I Need"
row points at both implementations
* docs(site-to-vpn): make static route the only Step 6 path; move DNAT to appendix
The static-route approach is the canonical setup; the per-service DNAT
option is a fallback for sites where routing changes aren't possible.
Treat it that way in the doc to keep the main flow linear.
- Step 6 now describes only the static-route approach (former Option A)
- Add a one-line pointer at the end of Step 6 to the appendix for sites
where the route can't be set
- Move the DNAT instructions to a new appendix at the bottom of the page
- Simplify Test Connectivity to a single curl
- Trim the Option-A/Option-B framing from the Troubleshooting "Connection
times out" entry
* docs(site-to-vpn): drop Source IP Behavior section
The "Outbound SNAT requirement" section already covers why the source IP
ends up as the routing peer's NetBird IP; a separate Source IP Behavior
section was repeating the same point and adding a speculative paragraph
about future Networks support. Drop both, plus the up-front Warning that
pointed at the removed section.
* docs(site-to-vpn): drop the Networks-vs-Network-Routes note
The guide is written around Networks; the side-note suggesting Network
Routes as an alternative path adds noise without value. The Step 4 inline
note keeps the Network Routes equivalent for anyone who needs it.
* docs(site-to-vpn): drop the inline Network Routes equivalent note
The guide is Networks-only now. Pointing readers at Network Routes mid-flow
just creates two paths to maintain without serving the reader who's
following the steps in front of them.
* docs(site-to-vpn): move page under Networks → Use Cases
The page describes a Networks-based setup; living under Network Routes
mis-categorised it.
- git mv to /manage/networks/use-cases/site-to-vpn.mdx (as a direct
child of Use Cases, not under By Scenario)
- Navigation: remove entry from Network Routes → By Scenario, add under
Networks → Use Cases
- Redirect old URL (/manage/network-routes/use-cases/by-scenario/site-to-vpn)
to new URL, permanent
- Update in-tree links in use-cases/site-to-site/index.mdx and
network-routes/use-cases/by-scenario/site-to-site-office.mdx
* docs(site-to-site): drop Network Routes mentions for Site-to-VPN
The Site-to-VPN guide is Networks-only; the overview page shouldn't
still be listing Network Routes alongside it.
* docs(site-to-vpn): trust NetBird's automatic SNAT on Linux kernel mode
On Linux in kernel mode, NetBird installs the SNAT itself when masquerade
is enabled on the routing peer — the user does not need a manual iptables
rule. Reframe Step 3 around this:
- Linux: enable ip_forward only; NetBird does the SNAT
- Non-Linux (pfSense / OPNsense / MikroTik / Windows / macOS / userspace):
configure manual outbound SNAT on the routing peer or upstream firewall
- Tighten the "Outbound SNAT requirement" appendix accordingly
- Move the explicit Linux iptables MASQUERADE rule into a troubleshooting
fallback for the case where NetBird's automatic SNAT doesn't fire
* docs(site-to-vpn): drop sysctl ip_forward instruction on Linux
NetBird handles IP forwarding itself on Linux; the manual sysctl was
unnecessary noise. Keep the host-firewall FORWARD-ACCEPT note since
UFW/firewalld setups still need it.
* docs(site-to-vpn): route the account's /16, not the entire /10 CGNAT range
NetBird assigns each account one /16 block out of 100.64.0.0/10 (chosen
randomly, customisable). Routing the whole /10 sends unrelated CGNAT
addresses through the routing peer; the correct target is the account's
own /16.
Step 6 now:
- Explains the /16-per-account model with the 64-block context
- Shows how to read the account's /16 from `netbird status` on any peer
- Switches the Linux / Windows / DHCP-option-121 examples to a concrete
/16 example (100.121.0.0/16) with a note to substitute your own
* docs(site-to-vpn): clarify when the target peer uses a setup key
Setup keys are for service / appliance peers; user peers (laptops,
workstations) enroll through SSO and inherit groups from existing
assignments. Reword the target-peer instruction to reflect that
distinction.
* docs(site-to-vpn): rename target peer to overlay-peer / overlay-peers
The previous backup-collector / backup-collectors naming carried
scenario-specific framing into the step examples. Use the generic
overlay-peer / overlay-peers throughout to keep the guide universal.
* chore: add trailing commas in Kubernetes nav entries
* Revert "chore: add trailing commas in Kubernetes nav entries"
This reverts commit d11b7eb7d0.
702 lines
26 KiB
JavaScript
702 lines
26 KiB
JavaScript
import nextMDX from '@next/mdx'
|
|
import {remarkPlugins} from './mdx/remark.mjs'
|
|
import {rehypePlugins} from './mdx/rehype.mjs'
|
|
import {recmaPlugins} from './mdx/recma.mjs'
|
|
|
|
const withMDX = nextMDX({
|
|
options: {
|
|
remarkPlugins,
|
|
// rehypeSlug,
|
|
rehypePlugins,
|
|
recmaPlugins,
|
|
providerImportSource: '@mdx-js/react',
|
|
},
|
|
})
|
|
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
assetPrefix: undefined,
|
|
reactStrictMode: true,
|
|
pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'mdx'],
|
|
redirects: async () => {
|
|
return [
|
|
{
|
|
source: '/slack-url',
|
|
destination: 'https://join.slack.com/t/netbirdio/shared_invite/zt-3wwkb0b9y-opbG_pFSoOgP41KUV00MtA',
|
|
permanent: false,
|
|
},
|
|
{
|
|
source: '/how-to/networks-concept',
|
|
destination: '/manage/networks',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/use-cases/by-scenario/site-to-vpn',
|
|
destination: '/manage/networks/use-cases/site-to-vpn',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/getting-started/installation',
|
|
destination: '/get-started/install',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/overview/personal-access-tokens',
|
|
destination: '/manage/public-api',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/overview/acls',
|
|
destination: '/manage/access-control/manage-network-access',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/how-to-guides/nameservers',
|
|
destination: '/manage/dns/internal-dns-servers',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/manage-dns-in-your-network',
|
|
destination: '/manage/dns',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/how-to-guides/network-routes',
|
|
destination: '/manage/network-routes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/overview/setup-keys',
|
|
destination: '/manage/peers/register-machines-using-setup-keys',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/how-to-guides/activity-monitoring',
|
|
destination: '/manage/activity/traffic-events-logging',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/how-to-guides/periodic-authentication',
|
|
destination: '/manage/settings/enforce-periodic-user-authentication',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/overview/setup-keys',
|
|
destination: '/manage/peers/register-machines-using-setup-keys',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs',
|
|
destination: '/',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/docs/:path*',
|
|
destination: '/:path*',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/ipa/:path*',
|
|
destination: '/api/:path*',
|
|
permanent: true
|
|
},
|
|
// documentation redirects for about
|
|
{
|
|
source: '/selfhosted/self-hosted-vs-cloud-netbird',
|
|
destination: '/about-netbird/self-hosted-vs-cloud',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/about-netbird/other',
|
|
destination: '/introduction',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for access control
|
|
{
|
|
source: '/how-to/manage-network-access',
|
|
destination: '/manage/access-control/manage-network-access',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/manage-posture-checks',
|
|
destination: '/manage/access-control/posture-checks',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/disabling-network-route-when-connecting-from-the-office',
|
|
destination: '/manage/access-control/posture-checks/connecting-from-the-office',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/endpoint-detection-and-response',
|
|
destination: '/manage/access-control/endpoint-detection-and-response',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/crowdstrike-edr',
|
|
destination: '/manage/access-control/endpoint-detection-and-response/crowdstrike-edr',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/sentinelone-edr',
|
|
destination: '/manage/access-control/endpoint-detection-and-response/sentinelone-edr',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/huntress-edr',
|
|
destination: '/manage/access-control/endpoint-detection-and-response/huntress-edr',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/intune-mdm',
|
|
destination: '/manage/access-control/endpoint-detection-and-response/intune-mdm',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for get-started
|
|
{
|
|
source: '/how-to/getting-started',
|
|
destination: '/get-started',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation',
|
|
destination: '/get-started/install',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/linux',
|
|
destination: '/get-started/install/linux',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/windows',
|
|
destination: '/get-started/install/windows',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/macos',
|
|
destination: '/get-started/install/macos',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/docker',
|
|
destination: '/get-started/install/docker',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/synology',
|
|
destination: '/get-started/install/synology',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/mobile',
|
|
destination: '/get-started/install',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/pfsense',
|
|
destination: '/get-started/install/pfsense',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/installation/opnsense',
|
|
destination: '/get-started/install/opnsense',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/cli',
|
|
destination: '/get-started/cli',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for peers
|
|
{
|
|
source: '/how-to/add-machines-to-your-network',
|
|
destination: '/manage/peers/add-machines-to-your-network',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/approve-peers',
|
|
destination: '/manage/peers/approve-peers',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/register-machines-using-setup-keys',
|
|
destination: '/manage/peers/register-machines-using-setup-keys',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/browser-client',
|
|
destination: '/manage/peers/browser-client',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/ssh',
|
|
destination: '/manage/peers/ssh',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/lazy-connection',
|
|
destination: '/manage/peers/lazy-connection',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/secure-remote-webserver-access',
|
|
destination: '/manage/peers/access-infrastructure/secure-remote-webserver-access',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/setup-keys-add-servers-to-network',
|
|
destination: '/manage/peers/access-infrastructure/setup-keys-add-servers-to-network',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/access-internal-resources-from-autoscaled-environments',
|
|
destination: '/manage/peers/access-infrastructure/access-internal-resources-from-autoscaled-environments',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/peer-approval-for-remote-worker-access',
|
|
destination: '/manage/peers/access-infrastructure/peer-approval-for-remote-worker-access',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/db-workload-migration',
|
|
destination: '/manage/peers/site-to-site/db-workload-migration',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for use-cases
|
|
{
|
|
source: '/how-to/examples',
|
|
destination: '/use-cases/cloud/aws-ecs-terraform',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/netbird-on-faas',
|
|
destination: '/use-cases/cloud/netbird-on-faas',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/routing-peers-and-kubernetes',
|
|
destination: '/use-cases/cloud/routing-peers-and-kubernetes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/client-on-mikrotik-router',
|
|
destination: '/use-cases/homelab/client-on-mikrotik-router',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/distributed-multi-cloud-ai-argocd-microk8s-vllm',
|
|
destination: '/use-cases/cloud/distributed-multi-cloud-ai',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for networks
|
|
{
|
|
source: '/how-to/networks',
|
|
destination: '/manage/networks',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/routing-traffic-to-multiple-resources',
|
|
destination: '/manage/networks/routing-traffic-to-multiple-resources',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/accessing-restricted-domain-resources',
|
|
destination: '/manage/networks/accessing-restricted-domain-resources',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/accessing-entire-domains-within-networks',
|
|
destination: '/manage/networks/accessing-entire-domains-within-networks',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/access-home-network',
|
|
destination: '/manage/networks/homelab/access-home-network',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for network-routes
|
|
{
|
|
source: '/how-to/routing-traffic-to-private-networks',
|
|
destination: '/manage/network-routes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/configuring-default-routes-for-internet-traffic',
|
|
destination: '/manage/network-routes/configuring-default-routes-for-internet-traffic',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/configuring-routes-with-access-control',
|
|
destination: '/manage/network-routes/configuring-routes-with-access-control',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/resolve-overlapping-routes',
|
|
destination: '/manage/network-routes/resolve-overlapping-routes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/control-center',
|
|
destination: '/manage/control-center',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for activity
|
|
{
|
|
source: '/how-to/audit-events-logging',
|
|
destination: '/manage/activity',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/traffic-events-logging',
|
|
destination: '/manage/activity/traffic-events-logging',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/activity-event-streaming',
|
|
destination: '/manage/activity/event-streaming',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/stream-activity-to-datadog',
|
|
destination: '/manage/activity/event-streaming/datadog',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/stream-activity-to-amazon-s3',
|
|
destination: '/manage/activity/event-streaming/amazon-s3',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/stream-activity-to-amazon-firehose',
|
|
destination: '/manage/activity/event-streaming/amazon-firehose',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/stream-activity-to-sentinelone-data-lake',
|
|
destination: '/manage/activity/event-streaming/sentinelone-data-lake',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/stream-activity-to-generic-http',
|
|
destination: '/manage/activity/event-streaming/generic-http',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/monitor-system-and-network-activity',
|
|
destination: '/manage/activity/traffic-events-logging',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for team
|
|
{
|
|
source: '/how-to/idp-sync',
|
|
destination: '/manage/team/idp-sync',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/add-users-to-your-network',
|
|
destination: '/manage/team/add-users-to-your-network',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/approve-users',
|
|
destination: '/manage/team/approve-users',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/auto-offboard-users',
|
|
destination: '/manage/team/auto-offboard-users',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/single-sign-on',
|
|
destination: '/manage/team/single-sign-on',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/microsoft-entra-id-sync',
|
|
destination: '/manage/team/idp-sync/microsoft-entra-id-sync',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/okta-sync',
|
|
destination: '/manage/team/idp-sync/okta-sync',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/google-workspace-sync',
|
|
destination: '/manage/team/idp-sync/google-workspace-sync',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/jumpcloud-sync',
|
|
destination: '/manage/team/idp-sync/jumpcloud-sync',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/keycloak-sync',
|
|
destination: '/manage/team/idp-sync/keycloak-sync',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for settings
|
|
{
|
|
source: '/how-to/enforce-periodic-user-authentication',
|
|
destination: '/manage/settings/enforce-periodic-user-authentication',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/multi-factor-authentication',
|
|
destination: '/manage/settings/multi-factor-authentication',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/delete-account',
|
|
destination: '/manage/settings/delete-account',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/plans-and-billing',
|
|
destination: '/manage/settings/plans-and-billing',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for integrations
|
|
{
|
|
source: '/how-to/enable-post-quantum-cryptography',
|
|
destination: '/client/post-quantum-cryptography',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/integrations/enable-post-quantum-cryptography',
|
|
destination: '/client/post-quantum-cryptography',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/client/enable-post-quantum-cryptography',
|
|
destination: '/client/post-quantum-cryptography',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/jamf-pro-netbird-integration',
|
|
destination: '/manage/integrations/mdm-deployment/jamf-pro-netbird-integration',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/kandji-netbird-integration',
|
|
destination: '/manage/integrations/mdm-deployment/kandji-netbird-integration',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/intune-netbird-integration',
|
|
destination: '/manage/integrations/mdm-deployment/intune-netbird-integration',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/kubernetes-operator',
|
|
destination: '/manage/integrations/kubernetes',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for public-api
|
|
{
|
|
source: '/how-to/access-netbird-public-api',
|
|
destination: '/manage/public-api',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for for-partners
|
|
{
|
|
source: '/how-to/msp-portal',
|
|
destination: '/manage/for-partners/msp-portal',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/acronis-netbird-integration',
|
|
destination: '/manage/for-partners/acronis-integration',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for client
|
|
{
|
|
source: '/client/allow-ssh',
|
|
destination: '/manage/peers/ssh#enabling-ssh',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/client/enable-lazy-connections',
|
|
destination: '/manage/peers/lazy-connection',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/profiles',
|
|
destination: '/client/profiles',
|
|
permanent: true,
|
|
},
|
|
// documentation redirects for help
|
|
{
|
|
source: '/how-to/troubleshooting-client',
|
|
destination: '/help/troubleshooting-client',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/how-to/report-bug-issues',
|
|
destination: '/help/report-bug-issues',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/dns/zones',
|
|
destination: '/manage/dns/custom-zones',
|
|
permanent: true,
|
|
},
|
|
// Site-to-site documentation restructure redirects
|
|
{
|
|
source: '/use-cases/setup-site-to-site-access',
|
|
destination: '/use-cases/site-to-site',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/peers/site-to-site/db-workload-migration',
|
|
destination: '/manage/network-routes/use-cases/by-scenario/site-to-site-cloud',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/use-cases/site-to-site-cloud',
|
|
destination: '/manage/network-routes/use-cases/by-scenario/site-to-site-cloud',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/networks/homelab/access-home-network',
|
|
destination: '/manage/networks/use-cases/by-scenario/access-home-devices',
|
|
permanent: true,
|
|
},
|
|
// Networks guides moved to use-cases
|
|
{
|
|
source: '/manage/networks/routing-traffic-to-multiple-resources',
|
|
destination: '/manage/networks/use-cases/by-resource-type/routing-traffic-to-multiple-resources',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/networks/accessing-restricted-domain-resources',
|
|
destination: '/manage/networks/use-cases/by-resource-type/accessing-restricted-domain-resources',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/networks/accessing-entire-domains-within-networks',
|
|
destination: '/manage/networks/use-cases/by-resource-type/accessing-entire-domains-within-networks',
|
|
permanent: true,
|
|
},
|
|
// Network Routes guides moved to use-cases
|
|
{
|
|
source: '/manage/network-routes/routing-traffic-to-private-networks',
|
|
destination: '/manage/network-routes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/use-cases/routing-traffic-to-private-networks',
|
|
destination: '/manage/network-routes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/configuring-default-routes-for-internet-traffic',
|
|
destination: '/manage/network-routes/use-cases/by-scenario/exit-nodes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/configuring-routes-with-access-control',
|
|
destination: '/manage/network-routes/use-cases/by-configuration/access-control',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/network-routes/resolve-overlapping-routes',
|
|
destination: '/manage/network-routes/use-cases/by-configuration/overlapping-routes',
|
|
permanent: true,
|
|
},
|
|
// Site-to-Site section redirects (overview and comprehensive guides)
|
|
{
|
|
source: '/manage/site-to-site',
|
|
destination: '/use-cases/site-to-site',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/site-to-site/connect-home-networks',
|
|
destination: '/use-cases/site-to-site',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/site-to-site/connect-office-networks',
|
|
destination: '/use-cases/site-to-site',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/site-to-site/connect-cloud-environments',
|
|
destination: '/use-cases/site-to-site',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/manage/site-to-site/advanced-configuration',
|
|
destination: '/manage/network-routes/use-cases/by-configuration/advanced-configuration',
|
|
permanent: true,
|
|
},
|
|
// Use-cases flat pages -> categorized
|
|
{
|
|
source: '/use-cases/examples',
|
|
destination: '/use-cases/cloud/aws-ecs-terraform',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/use-cases/netbird-on-faas',
|
|
destination: '/use-cases/cloud/netbird-on-faas',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/use-cases/routing-peers-and-kubernetes',
|
|
destination: '/use-cases/cloud/routing-peers-and-kubernetes',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/use-cases/implement-zero-trust',
|
|
destination: '/use-cases/security/implement-zero-trust',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/use-cases/client-on-mikrotik-router',
|
|
destination: '/use-cases/homelab/client-on-mikrotik-router',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/use-cases/distributed-multi-cloud-ai-argocd-microk8s-vllm',
|
|
destination: '/use-cases/cloud/distributed-multi-cloud-ai',
|
|
permanent: true,
|
|
},
|
|
// selfhosted reverse proxy rename
|
|
{
|
|
source: '/selfhosted/reverse-proxy',
|
|
destination: '/selfhosted/external-reverse-proxy',
|
|
permanent: true,
|
|
},
|
|
// selfhosted scaling redirect
|
|
{
|
|
source: '/scaling-your-self-hosted-deployment',
|
|
destination: '/selfhosted/maintenance/scaling/scaling-your-self-hosted-deployment',
|
|
permanent: true,
|
|
},
|
|
]
|
|
},
|
|
rewrites: async () => {
|
|
return [
|
|
{
|
|
source: '/',
|
|
destination: '/introduction',
|
|
},
|
|
{
|
|
source: '/api',
|
|
destination: '/ipa/introduction',
|
|
},
|
|
{
|
|
source: '/api/:path*',
|
|
destination: '/ipa/:path*',
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
export default withMDX(nextConfig)
|