diff --git a/public/docs-static/img/selfhosted/maintenance/update-available.png b/public/docs-static/img/selfhosted/maintenance/update-available.png
new file mode 100644
index 00000000..69bbb3b1
Binary files /dev/null and b/public/docs-static/img/selfhosted/maintenance/update-available.png differ
diff --git a/src/components/NavigationDocs.jsx b/src/components/NavigationDocs.jsx
index 15cab78c..fe673068 100644
--- a/src/components/NavigationDocs.jsx
+++ b/src/components/NavigationDocs.jsx
@@ -281,20 +281,27 @@ export const docsNavigation = [
},
],
},
- {
- title: 'CLIENT',
- links: [
- { title: 'Profiles', href: '/client/profiles' },
- ],
- },
{
title: 'SELF-HOST NETBIRD',
links: [
{ title: 'Quickstart Guide', href: '/selfhosted/selfhosted-quickstart' },
- { title: 'Configuration Files', href: '/selfhosted/configuration-files' },
+ {
+ title: 'Maintenance',
+ isOpen: false,
+ links: [
+ { title: 'Configuration Files', href: '/selfhosted/configuration-files' },
+ { title: 'Backup', href: '/selfhosted/maintenance/backup' },
+ { title: 'Upgrade', href: '/selfhosted/maintenance/upgrade' },
+ { title: 'Remove', href: '/selfhosted/maintenance/remove' },
+ { title: 'Reverse Proxy', href: '/selfhosted/reverse-proxy' },
+ { title: 'Management SQLite Store', href: '/selfhosted/sqlite-store' },
+ { title: 'Management Postgres Store', href: '/selfhosted/postgres-store' },
+ { title: 'Activity Events Postgres Store', href: '/selfhosted/activity-postgres-store' },
+ ]
+ },
{
title: 'Authentication',
- isOpen: true,
+ isOpen: false,
links: [
{ title: 'Authentication and IdPs', href: '/selfhosted/identity-providers' },
{ title: 'Local User Management', href: '/selfhosted/identity-providers/local' },
@@ -323,11 +330,7 @@ export const docsNavigation = [
},
]
},
- { title: 'Reverse Proxy', href: '/selfhosted/reverse-proxy' },
{ title: 'Advanced Guide', href: '/selfhosted/selfhosted-guide' },
- { title: 'Management SQLite Store', href: '/selfhosted/sqlite-store' },
- { title: 'Management Postgres Store', href: '/selfhosted/postgres-store' },
- { title: 'Activity Events Postgres Store', href: '/selfhosted/activity-postgres-store' },
{ title: 'Management geolocation', href: '/selfhosted/geo-support' },
{ title: 'Troubleshooting', href: '/selfhosted/troubleshooting' },
{
@@ -340,6 +343,12 @@ export const docsNavigation = [
},
],
},
+ {
+ title: 'CLIENT',
+ links: [
+ { title: 'Profiles', href: '/client/profiles' },
+ ],
+ },
{
title: 'USE CASES',
links: [
diff --git a/src/pages/selfhosted/maintenance/backup.mdx b/src/pages/selfhosted/maintenance/backup.mdx
new file mode 100644
index 00000000..537c9c1f
--- /dev/null
+++ b/src/pages/selfhosted/maintenance/backup.mdx
@@ -0,0 +1,27 @@
+## Back Up Your Self-Hosted NetBird Installation
+
+To back up your NetBird installation, you need to copy the configuration files and the Management service databases.
+
+The configuration files are located in the folder where you ran [the installation script](/selfhosted/selfhosted-quickstart#installation-script). To back up, copy the files to a backup location:
+```bash
+mkdir backup
+cp docker-compose.yml Caddyfile dashboard.env management.json relay.env backup/
+```
+
+
+For detailed information about each configuration file and its options, see the [Configuration Files Reference](/selfhosted/configuration-files).
+
+To save the Management service databases, stop the Management service and copy the files from the store directory:
+```bash
+docker compose stop management
+docker compose cp -a management:/var/lib/netbird/ backup/
+docker compose start management
+```
+
+## Get In Touch
+
+Feel free to ping us on [Slack](/slack-url) if you have any questions.
+
+- NetBird managed version: [https://app.netbird.io](https://app.netbird.io)
+- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird)
+- Follow us [on X](https://x.com/netbird)
diff --git a/src/pages/selfhosted/maintenance/remove.mdx b/src/pages/selfhosted/maintenance/remove.mdx
new file mode 100644
index 00000000..66b1dacf
--- /dev/null
+++ b/src/pages/selfhosted/maintenance/remove.mdx
@@ -0,0 +1,17 @@
+## Remove Your Self-Hosted NetBird Installation
+
+To remove the NetBird installation and all related data from your server, run these commands from the folder where you installed NetBird:
+```bash
+# remove all NetBird-related containers and volumes (data)
+docker compose down --volumes
+# remove downloaded and generated config files
+rm -f docker-compose.yml Caddyfile dashboard.env management.json relay.env
+```
+
+## Get In Touch
+
+Feel free to ping us on [Slack](/slack-url) if you have any questions.
+
+- NetBird managed version: [https://app.netbird.io](https://app.netbird.io)
+- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird)
+- Follow us [on X](https://x.com/netbird)
diff --git a/src/pages/selfhosted/maintenance/upgrade.mdx b/src/pages/selfhosted/maintenance/upgrade.mdx
new file mode 100644
index 00000000..1e8d57f3
--- /dev/null
+++ b/src/pages/selfhosted/maintenance/upgrade.mdx
@@ -0,0 +1,66 @@
+## Upgrade Your Self-Hosted NetBird Installation
+
+### Check for Updates
+
+The NetBird Dashboard displays an update indicator at the bottom of the left navigation menu when a new version is available:
+
+
+
+
+
+You can also check the current version programmatically via the API (requires authentication):
+
+```bash
+curl 'https://your-netbird-domain/api/instance/version' \
+ -H 'accept: application/json' \
+ -H 'authorization: Bearer '
+```
+
+Example response:
+
+```json
+{
+ "dashboard_available_version": "2.28.0",
+ "management_available_version": "0.64.1",
+ "management_current_version": "0.64.0",
+ "management_update_available": true
+}
+```
+
+### Check Release Notes
+
+Before upgrading, review the release notes for any breaking changes or migration steps:
+
+- **Dashboard**: [https://github.com/netbirdio/dashboard/releases](https://github.com/netbirdio/dashboard/releases)
+- **Management, Signal, and Relay**: [https://github.com/netbirdio/netbird/releases](https://github.com/netbirdio/netbird/releases)
+
+
+Management, Signal, and Relay are all part of the same repository and share the same version numbers.
+
+
+### Upgrade Steps
+
+To upgrade NetBird to the latest version:
+
+1. Run the backup steps described in the [backup](#backup) section.
+2. Review the release notes (see above) for any breaking changes.
+3. Pull the latest NetBird docker images:
+ ```bash
+ docker compose pull management dashboard signal relay
+ ```
+4. Restart the NetBird containers with the new images:
+ ```bash
+ docker compose up -d --force-recreate management dashboard signal relay
+ ```
+
+
+For upgrades from older versions (pre-v0.26.0), see the [Legacy upgrade notes](#legacy-self-hosting-with-zitadel-idp).
+
+
+## Get In Touch
+
+Feel free to ping us on [Slack](/slack-url) if you have any questions.
+
+- NetBird managed version: [https://app.netbird.io](https://app.netbird.io)
+- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird)
+- Follow us [on X](https://x.com/netbird)
diff --git a/src/pages/selfhosted/selfhosted-quickstart.mdx b/src/pages/selfhosted/selfhosted-quickstart.mdx
index 649e99b3..a6c85b40 100644
--- a/src/pages/selfhosted/selfhosted-quickstart.mdx
+++ b/src/pages/selfhosted/selfhosted-quickstart.mdx
@@ -128,57 +128,27 @@ NetBird includes built-in local user management powered by an embedded
-### Remove
-To remove the NetBird installation and all related data from your server, run these commands from the folder where you installed NetBird:
-```bash
-# remove all NetBird-related containers and volumes (data)
-docker compose down --volumes
-# remove downloaded and generated config files
-rm -f docker-compose.yml Caddyfile dashboard.env management.json relay.env
-```
+---
## Troubleshoot
@@ -198,7 +168,7 @@ For more troubleshooting help, see the [Troubleshooting guide](/selfhosted/troub
---
-## Get in touch
+## Get In Touch
Feel free to ping us on [Slack](/slack-url) if you have any questions.
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
index b5ec025b..0fd50963 100644
--- a/src/styles/tailwind.css
+++ b/src/styles/tailwind.css
@@ -68,6 +68,13 @@
width: 70%;
}
+.imagewrapper-small {
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+ border-radius: 4px;
+ overflow:hidden;
+ width: 30%;
+}
+
.imagewrapper-medium {
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
border-radius: 4px;