Add Cloud Marketplaces section, reorganize self-hosted docs, clean up redirects (#760)

* Add marketplace section with Vultr

* Add Images and Self-Hosted Restructure

* Organize self-hosted pages

* Clean up redirects
This commit is contained in:
Brandon Hopkins
2026-05-19 07:55:43 -07:00
committed by GitHub
parent 6dc4724fa2
commit 8ab98eff17
19 changed files with 188 additions and 40 deletions

View File

@@ -81,11 +81,6 @@ const nextConfig = {
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: '/',
@@ -262,7 +257,7 @@ const nextConfig = {
},
{
source: '/how-to/db-workload-migration',
destination: '/manage/peers/site-to-site/db-workload-migration',
destination: '/manage/network-routes/use-cases/site-to-site',
permanent: true,
},
// documentation redirects for use-cases
@@ -299,22 +294,22 @@ const nextConfig = {
},
{
source: '/how-to/routing-traffic-to-multiple-resources',
destination: '/manage/networks/routing-traffic-to-multiple-resources',
destination: '/manage/networks',
permanent: true,
},
{
source: '/how-to/accessing-restricted-domain-resources',
destination: '/manage/networks/accessing-restricted-domain-resources',
destination: '/manage/networks',
permanent: true,
},
{
source: '/how-to/accessing-entire-domains-within-networks',
destination: '/manage/networks/accessing-entire-domains-within-networks',
destination: '/manage/networks',
permanent: true,
},
{
source: '/how-to/access-home-network',
destination: '/manage/networks/homelab/access-home-network',
destination: '/manage/networks/use-cases/access-home-devices',
permanent: true,
},
// documentation redirects for network-routes
@@ -325,17 +320,17 @@ const nextConfig = {
},
{
source: '/how-to/configuring-default-routes-for-internet-traffic',
destination: '/manage/network-routes/configuring-default-routes-for-internet-traffic',
destination: '/manage/network-routes/use-cases/exit-nodes',
permanent: true,
},
{
source: '/how-to/configuring-routes-with-access-control',
destination: '/manage/network-routes/configuring-routes-with-access-control',
destination: '/manage/network-routes/access-control',
permanent: true,
},
{
source: '/how-to/resolve-overlapping-routes',
destination: '/manage/network-routes/resolve-overlapping-routes',
destination: '/manage/network-routes/overlapping-routes',
permanent: true,
},
{
@@ -753,6 +748,37 @@ const nextConfig = {
destination: '/selfhosted/maintenance/scaling/scaling-your-self-hosted-deployment',
permanent: true,
},
// selfhosted maintenance reorganization
{
source: '/selfhosted/configuration-files',
destination: '/selfhosted/maintenance/configuration-files',
permanent: true,
},
{
source: '/selfhosted/sqlite-store',
destination: '/selfhosted/maintenance/sqlite-store',
permanent: true,
},
{
source: '/selfhosted/postgres-store',
destination: '/selfhosted/maintenance/postgres-store',
permanent: true,
},
{
source: '/selfhosted/activity-postgres-store',
destination: '/selfhosted/maintenance/activity-postgres-store',
permanent: true,
},
{
source: '/selfhosted/activity-mysql-store',
destination: '/selfhosted/maintenance/activity-mysql-store',
permanent: true,
},
{
source: '/selfhosted/geo-support',
destination: '/selfhosted/maintenance/geo-support',
permanent: true,
},
]
},
rewrites: async () => {

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

View File

@@ -29,7 +29,7 @@ export const docsNavigation = [
href: '/about-netbird/self-hosted-vs-cloud',
},
{
title: 'Understanding NAT and Connectivity',
title: 'NAT and Connectivity',
href: '/about-netbird/understanding-nat-and-connectivity',
},
{
@@ -513,13 +513,21 @@ export const docsNavigation = [
links: [
{ title: 'Quickstart Guide', href: '/selfhosted/selfhosted-quickstart' },
{ title: 'Automated Setup', href: '/selfhosted/automated-setup' },
{
title: 'Cloud Marketplaces',
isOpen: false,
links: [
{ title: 'Overview', href: '/selfhosted/marketplaces' },
{ title: 'Vultr', href: '/selfhosted/marketplaces/vultr' },
],
},
{
title: 'Maintenance',
isOpen: false,
links: [
{
title: 'Configuration Files',
href: '/selfhosted/configuration-files',
href: '/selfhosted/maintenance/configuration-files',
},
{
title: 'Scaling Your Deployment',
@@ -550,19 +558,19 @@ export const docsNavigation = [
{ title: 'Reverse Proxy', href: '/selfhosted/reverse-proxy' },
{
title: 'Management SQLite Store',
href: '/selfhosted/sqlite-store',
href: '/selfhosted/maintenance/sqlite-store',
},
{
title: 'Management Postgres Store',
href: '/selfhosted/postgres-store',
href: '/selfhosted/maintenance/postgres-store',
},
{
title: 'Activity Events Postgres Store',
href: '/selfhosted/activity-postgres-store',
href: '/selfhosted/maintenance/activity-postgres-store',
},
{
title: 'Management Geolocation Database',
href: '/selfhosted/geo-support',
title: 'Geolocation Database',
href: '/selfhosted/maintenance/geo-support',
},
{
title: 'CrowdSec IP Reputation',

View File

@@ -165,7 +165,7 @@ You can restrict access based on the client's country, determined by GeoIP looku
The evaluation logic mirrors CIDR restrictions: if an allowed list is present, the country must match. Then the blocked list is checked.
<Warning>
Country restrictions require a GeoIP database. On self-hosted deployments, the proxy must have the MaxMind GeoLite2 database configured. If the database is unavailable and country restrictions are configured, all connections are denied (fail-closed). See [Geolocation Database](/selfhosted/geo-support) for setup instructions.
Country restrictions require a GeoIP database. On self-hosted deployments, the proxy must have the MaxMind GeoLite2 database configured. If the database is unavailable and country restrictions are configured, all connections are denied (fail-closed). See [Geolocation Database](/selfhosted/maintenance/geo-support) for setup instructions.
</Warning>
<Note>
@@ -325,5 +325,5 @@ Authenticated sessions for reverse proxy services are managed using JWT (JSON We
- [Access Logs](/manage/reverse-proxy/access-logs) - monitor and audit traffic to your reverse proxy services
- [Single Sign-On](/manage/team/single-sign-on) - configure your identity provider for SSO across NetBird
- [Provision Users and Groups](/manage/team/idp-sync) - sync users and groups from your identity provider
- [Geolocation Database](/selfhosted/geo-support) - configure MaxMind GeoLite2 for country-based access restrictions (self-hosted)
- [Geolocation Database](/selfhosted/maintenance/geo-support) - configure MaxMind GeoLite2 for country-based access restrictions (self-hosted)
- [CrowdSec Setup](/selfhosted/maintenance/crowdsec) - enable CrowdSec IP reputation on a self-hosted proxy

View File

@@ -60,7 +60,7 @@ The default quickstart deployment uses the relay service's embedded STUN server.
| `NETBIRD_DATASTORE_ENC_KEY` | Auto-generated | Encryption key for sensitive data |
<Note>
See [Management Postgres Store](/selfhosted/postgres-store) for PostgreSQL setup details.
See [Management Postgres Store](/selfhosted/maintenance/postgres-store) for PostgreSQL setup details.
</Note>
### Single Account Mode
@@ -276,6 +276,6 @@ Configuration values are applied in the following order (later values override e
- [Self-hosting Quickstart Guide](/selfhosted/selfhosted-quickstart)
- [Advanced Self-hosting Guide](/selfhosted/selfhosted-guide)
- [Configuration Files Reference](/selfhosted/configuration-files) - Detailed documentation for docker-compose.yml, config.yaml, and other config files
- [Management SQLite Store](/selfhosted/sqlite-store)
- [Management Postgres Store](/selfhosted/postgres-store)
- [Configuration Files Reference](/selfhosted/maintenance/configuration-files) - Detailed documentation for docker-compose.yml, config.yaml, and other config files
- [Management SQLite Store](/selfhosted/maintenance/sqlite-store)
- [Management Postgres Store](/selfhosted/maintenance/postgres-store)

View File

@@ -9,7 +9,7 @@ cp docker-compose.yml dashboard.env config.yaml backup/
```
<Note>
For detailed information about each configuration file and its options, see the [Configuration Files Reference](/selfhosted/configuration-files).
For detailed information about each configuration file and its options, see the [Configuration Files Reference](/selfhosted/maintenance/configuration-files).
</Note>
To save the server databases, stop the server and copy the files from the data directory:
```bash

View File

@@ -338,7 +338,7 @@ Configures the database backend for storing all NetBird management data includin
For PostgreSQL or MySQL, set the connection string via the `server.store.dsn` field in `config.yaml` or environment variables on the `netbird-server` container. See [Using an External Database](#using-an-external-database) below.
See [Management Postgres Store](/selfhosted/postgres-store) for detailed PostgreSQL setup.
See [Management Postgres Store](/selfhosted/maintenance/postgres-store) for detailed PostgreSQL setup.
<Warning>
Keep `server.store.encryptionKey` secure and backed up. This key encrypts sensitive data in your database, including setup keys and API tokens. Losing this key means losing access to encrypted data, and you will need to regenerate all setup keys and API tokens.
@@ -469,7 +469,7 @@ netbird-server:
# - NETBIRD_STORE_ENGINE_MYSQL_DSN=user:password@tcp(host:3306)/netbird
```
See [Management Postgres Store](/selfhosted/postgres-store) for detailed setup.
See [Management Postgres Store](/selfhosted/maintenance/postgres-store) for detailed setup.
### Changing Log Level
@@ -548,5 +548,5 @@ See the [Scaling Your Self-Hosted Deployment](/selfhosted/maintenance/scaling/sc
- [Self-hosting Quickstart Guide](/selfhosted/selfhosted-quickstart) - Get started quickly with default settings
- [External Reverse Proxy Configuration](/selfhosted/external-reverse-proxy) - Nginx, Caddy, NPM, HAProxy setup
- [Management SQLite Store](/selfhosted/sqlite-store) - SQLite database details
- [Management Postgres Store](/selfhosted/postgres-store) - PostgreSQL setup
- [Management SQLite Store](/selfhosted/maintenance/sqlite-store) - SQLite database details
- [Management Postgres Store](/selfhosted/maintenance/postgres-store) - PostgreSQL setup

View File

@@ -92,5 +92,5 @@ server:
## See Also
- [Configuration Files Reference](/selfhosted/configuration-files) - Full config.yaml documentation
- [Configuration Files Reference](/selfhosted/maintenance/configuration-files) - Full config.yaml documentation
- [Self-hosting Quickstart](/selfhosted/selfhosted-quickstart) - Initial deployment guide

View File

@@ -3,7 +3,7 @@
SQLite is the default storage engine for NetBird Management. It requires no external dependencies and works out of the box for new installations.
<Note>
If you need concurrent access or high availability with multiple management instances, consider using [PostgreSQL](/selfhosted/postgres-store) instead.
If you need concurrent access or high availability with multiple management instances, consider using [PostgreSQL](/selfhosted/maintenance/postgres-store) instead.
</Note>
## SQLite entity relationship diagram

View File

@@ -0,0 +1,24 @@
import { Tiles } from '@/components/Tiles'
# VPS Marketplaces
Deploy a self-hosted NetBird control plane from your VPS provider's marketplace. Marketplace listings let you launch a pre-configured NetBird instance in a few clicks, without manually installing Docker, configuring a reverse proxy, or running the quickstart script.
<Note>
Marketplace deployments install the self-hosted NetBird management server. For installing the NetBird agent on an existing VPS, see the [Install guides](/get-started/install).
</Note>
<Tiles
title=""
items={[
{
href: '/selfhosted/marketplaces/vultr',
name: 'Vultr',
description: 'Deploy NetBird from the Vultr Marketplace',
},
]}
/>
## More providers coming soon
We are working on adding NetBird to additional VPS marketplaces. If your organization runs a hosting platform and would like to list NetBird, reach out at [community@netbird.io](mailto:community@netbird.io).

View File

@@ -0,0 +1,90 @@
import { Note, Warning } from '@/components/mdx'
# Deploy NetBird on Vultr
Launch a self-hosted NetBird control plane directly from the [Vultr Marketplace](https://www.vultr.com/marketplace/). The marketplace image is one of the fastest ways to get a production-ready NetBird instance running. You provide a domain and email in Vultr's deploy form, set two DNS records, and the install script handles the rest. No terminal required to get started.
![NetBird on the Vultr Marketplace](/docs-static/img/selfhosted/marketplaces/vultr-marketplace.png)
## What's included
The marketplace image runs a modified version of the NetBird [Quickstart script](/selfhosted/selfhosted-quickstart) with the recommended defaults baked in:
- **Traefik** for automatic TLS via Let's Encrypt, included in the Docker Compose stack.
- **NetBird Proxy** enabled by default so you can expose internal resources from the dashboard. See the [Reverse Proxy overview](/manage/reverse-proxy).
- **CrowdSec** for IP reputation and intrusion detection. See [CrowdSec IP Reputation](/selfhosted/maintenance/crowdsec).
- **Local user store** for the first admin account so you can sign in without configuring an external IdP.
## Before you start
- A [Vultr](https://www.vultr.com/) account.
- A public domain name you can point at the new instance (e.g. `netbird.example.com`).
- Access to your domain's DNS records.
## Deploy the instance
1. Sign in to the [Vultr customer portal](https://my.vultr.com/) and click **Deploy**.
2. Pick a **location** close to most of your users. For a team spread across regions, choose one that minimizes average latency.
3. Choose **Shared CPU** — NetBird is not CPU-intensive — then select a plan with at least **2 GB of memory**.
4. (Optional) Leave **Automatic Backups** enabled. Recommended but not required.
5. Click **Configure** to continue.
6. Open the **Marketplace Apps** tab and search for **NetBird**.
7. Fill in the NetBird app fields:
- **Email address** for Let's Encrypt expiration notifications.
- **Domain** the instance will be reachable at (e.g. `netbird.example.com`).
8. Under **Server settings**, set a **hostname** and optionally enable **IPv6** (supported in NetBird v0.71+).
9. Click **Deploy**.
<Note>
**Tip:** Reserve an IP in Vultr (**Products → Network → Reserved IPs**) before deploying and attach it during step 8. With the IP known in advance you can create your DNS records ahead of time so they have already propagated by first boot, letting Let's Encrypt issue certificates immediately instead of waiting on DNS. The reserved IP also stays with you across instance rebuilds.
</Note>
## Set your DNS records
After deploying, the install script waits for your domain to resolve before continuing. Open **View Console** on the instance to watch progress. Meanwhile, copy the instance's public IPv4 address from the Vultr dashboard and add the following records at your domain registrar:
| Type | Name | Content |
|-------|-------------|--------------------------|
| A | `netbird` | `YOUR.SERVER.IP.ADDRESS` |
| CNAME | `*.netbird` | `netbird.example.com` |
The wildcard CNAME is required for the [NetBird Proxy](/manage/reverse-proxy) to issue certificates for exposed resources.
<Note>
**Using Cloudflare?** Set both records to **DNS only** (uncheck the orange proxy cloud). Cloudflare's proxy interferes with Let's Encrypt's HTTP-01 challenge.
</Note>
Once DNS resolves, the script finishes setup automatically and you'll see `NetBird setup is complete` in the console.
## Sign in
Open your domain in a browser (e.g. `https://netbird.example.com`) and create your first **local admin user**. After signing in, follow the **Get started with NetBird** walkthrough to add your first peer, or skip straight to the dashboard if you've used NetBird before.
For details on managing local users, see [Local User Management](/selfhosted/identity-providers/local).
## Harden the instance
The Vultr instance ships with a root password. Before relying on the deployment, lock the server down:
- **Disable root SSH login.** Create a non-root user with `sudo` access and set `PermitRootLogin no` in `/etc/ssh/sshd_config`.
- **Use SSH keys, not passwords.** Add your public key to the new user's `~/.ssh/authorized_keys` and set `PasswordAuthentication no` in `/etc/ssh/sshd_config`.
- Restart SSH with `sudo systemctl restart ssh` once you have confirmed key-based login works in a second session.
## Maintaining your deployment
The NetBird stack lives in **`/opt/netbird`** on the instance, including the `docker-compose.yml` and environment files. If the dashboard shows an **Update available** banner, SSH in and upgrade by pulling the latest images and restarting the containers:
```bash
cd /opt/netbird
docker compose pull
docker compose up -d
```
Refresh the dashboard and the banner should clear. See the [Upgrade guide](/selfhosted/maintenance/upgrade) for the full procedure, including migration notes and rollback steps.
## Next steps
- [Configure an identity provider](/selfhosted/identity-providers)
- [Add peers to your network](/manage/peers/add-machines-to-your-network)
- [Back up your deployment](/selfhosted/maintenance/backup)
- [Upgrade NetBird](/selfhosted/maintenance/upgrade)

View File

@@ -256,5 +256,5 @@ docker compose up -d
- [Self-Hosting Quickstart](/selfhosted/selfhosted-quickstart) - fresh installation guide for new deployments
- [Enable Reverse Proxy](/selfhosted/migration/enable-reverse-proxy) - after migrating to the combined container setup with Traefik, follow this guide to add the NetBird Reverse Proxy service
- [Authentication and IdPs](/selfhosted/identity-providers) - configuring identity providers for self-hosted deployments
- [Configuration Files](/selfhosted/configuration-files) - reference for all configuration files in a self-hosted deployment
- [Configuration Files](/selfhosted/maintenance/configuration-files) - reference for all configuration files in a self-hosted deployment
- [migrate.sh source](https://github.com/netbirdio/netbird/blob/main/infrastructure_files/migrate.sh) - the migration script on GitHub

View File

@@ -656,5 +656,5 @@ docker exec -it netbird-management /go/bin/netbird-mgmt token revoke <token-id>
- [Reverse Proxy feature documentation](/manage/reverse-proxy) - full overview of services, targets, domains, and authentication
- [Custom Domains](/manage/reverse-proxy/custom-domains) - use your own domain names for reverse proxy services
- [Reverse Proxy configuration reference](/selfhosted/configuration-files#reverse-proxy-configuration) - all proxy environment variables and options
- [Reverse Proxy configuration reference](/selfhosted/maintenance/configuration-files#reverse-proxy-configuration) - all proxy environment variables and options
- [Self-Hosting Quickstart](/selfhosted/selfhosted-quickstart) - getting started with self-hosted NetBird

View File

@@ -183,7 +183,7 @@ This will export all the properties as environment variables and generate ```art
</Note>
<Note>
For detailed documentation of all configuration file options, see the [Configuration Files Reference](/selfhosted/configuration-files).
For detailed documentation of all configuration file options, see the [Configuration Files Reference](/selfhosted/maintenance/configuration-files).
</Note>
### Step 6: Run docker compose:

View File

@@ -1,7 +1,5 @@
import {Tiles} from "@/components/Tiles"
<YouTube videoId="bZAgpT6nzaQ" />
# Self-Hosting Quickstart Guide (5 min)
NetBird is open source and can be self-hosted on your servers. If you would like to learn more about the architecture please refer to the [Architecture section](/about-netbird/how-netbird-works).
@@ -21,6 +19,8 @@ This is the quickest way to try self-hosted NetBird. It should take around 5 min
- [jq](https://jqlang.github.io/jq/) - install with `sudo apt install jq` or `sudo yum install jq`
- [curl](https://curl.se/) - install with `sudo apt install curl` or `sudo yum install curl`
<YouTube videoId="bZAgpT6nzaQ" />
## Installation Script
Download and run the installation script:
@@ -30,7 +30,7 @@ curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting
```
Once finished, you can manage the resources via `docker compose`. The quick start script generates a full, production-ready NetBird installation. If you'd like to customize the install or gain a better understanding of the files
generated by the script, including the docker compose file, please refer to our [Configuration files](/selfhosted/configuration-files) guide.
generated by the script, including the docker compose file, please refer to our [Configuration files](/selfhosted/maintenance/configuration-files) guide.
### Reverse Proxy Selection
@@ -169,7 +169,7 @@ Once your NetBird instance is running, refer to these guides for ongoing mainten
description: 'Split your NetBird deployment into multiple nodes to scale your deployment.',
},
{
href: '/selfhosted/configuration-files',
href: '/selfhosted/maintenance/configuration-files',
name: 'Configuration Files Reference',
description: 'Learn more about the configuration files generated by the quick start script and how to customize them.',
},