diff --git a/package.json b/package.json index bdf75426..ee18f89a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "gen": "swagger-codegen generate -i generator/openapi.yml -l openapi -o generator/api.json && npx ts-node generator/index.ts gen --input generator/api.json/openapi.json --output src/pages/ipa", + "gen": "swagger-codegen generate -i generator/openapi.yml -l openapi -o generator/api.json && npx ts-node generator/index.ts gen --input generator/api.json/openapi.json --output src/pages/ipa/resources", "start": "next start", "lint": "next lint" }, diff --git a/src/components/NavigationDocs.jsx b/src/components/NavigationDocs.jsx index 961db251..cb6e921e 100644 --- a/src/components/NavigationDocs.jsx +++ b/src/components/NavigationDocs.jsx @@ -18,14 +18,13 @@ export const docsNavigation = [ title: 'How-to', links: [ { title: 'Getting Started', href: '/docs/how-to/getting-started' }, - { title: 'Peers', href: '/docs/how-to/peers' }, { title: 'Setup Keys', href: '/docs/how-to/setup-keys' }, { title: 'Access Control', href: '/docs/how-to/access-control' }, - { title: 'Network Routes', href: '/docs/how-to/network-routes' }, - { title: 'DNS', href: '/docs/how-to/dns' }, { title: 'Users', href: '/docs/how-to/users' }, - { title: 'Activity', href: '/docs/how-to/activity' }, - { title: 'Settings', href: '/docs/how-to/settings' }, + { title: 'Add users to your network', href: '/docs/how-to/add-users-to-you-network' }, + { title: 'Configure periodic user authentication', href: '/docs/how-to/configure-periodic-user-authentication' }, + { title: 'Monitor system and network activity', href: '/docs/how-to/monitor-system-and-network-activity' }, + { title: 'Routing traffic to private networks', href: '/docs/how-to/routing-traffic-to-private-networks' }, { title: 'Examples', href: '/docs/how-to/examples' }, { title: 'CLI', href: '/docs/how-to/cli' }, ], diff --git a/src/pages/docs/how-to/add-users-to-you-network.mdx b/src/pages/docs/how-to/add-users-to-you-network.mdx new file mode 100644 index 00000000..3b70cc22 --- /dev/null +++ b/src/pages/docs/how-to/add-users-to-you-network.mdx @@ -0,0 +1,53 @@ + +# Add Users to your network + +Whether you have a network for personal use or manage your company's corporate network, you'd probably want to invite +people to your account and join your NetBird network. + +There are two ways of adding users to a NetBird account - indirect and direct. + +## Indirect user invites +This way of adding users is managed by the NetBird system and doesn't require administrator input. +It works only for organizations with private domains. + +Whenever a new user signs up with a private domain (e.g., @netbird.io), +NetBird creates a new account and associates it with the netbird.io organization (domain) automatically. Every consequent user signup with the same @netbird.io domain in their email address will end up under the same organization. + +How does it work? Every time a previously unknown user registers at [app.netbird.io](https://app.netbird.io/), +the system classifies the domain part of the email. +The domain can fall into one of the following categories - `public`, `private`, or `unclassified`. +The domains of the private category are the ones that are automatically grouped under the same account. +Public domains are the ones of the public email providers like Gmail. + + + It might happen (unlikely) that the domain classification system didn't classify your company's domain as private. + Our system was unsure about your domain and assigned an unclassified or public category to be on the safe side. + Just email us at [hello@netbird.io](mailto:hello@netbird.io) or ping us on [Slack](https://join.slack.com/t/netbirdio/shared_invite/zt-vrahf41g-ik1v7fV8du6t0RwxSrJ96A) to fix this. + + +## Direct user invites +As the name stands, this way of inviting users is straightforward and works through the web UI. +To invite a new user, proceed to the `Users` tab and click the button. +A user window will pop up where you can specify the name and email address of the invited user. Optionally, you could select a set of groups with which you want this user to be associated. + +The invited users will receive an email invitation that they have to confirm. +After logging in to the system, they will join your network automatically. + +

+ high-level-dia +

+ + + If a user already has a NetBird account, you can't invite them. + This is a limitation that is likely to be removed in future versions. + + +## Get started +

+ +

+ +- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird) +- Follow us [on Twitter](https://twitter.com/netbird) +- Join our [Slack Channel](https://join.slack.com/t/netbirdio/shared_invite/zt-vrahf41g-ik1v7fV8du6t0RwxSrJ96A) +- NetBird [latest release](https://github.com/netbirdio/netbird/releases) on GitHub diff --git a/src/pages/docs/how-to/cli.mdx b/src/pages/docs/how-to/cli.mdx index 7543661e..051a2dd1 100644 --- a/src/pages/docs/how-to/cli.mdx +++ b/src/pages/docs/how-to/cli.mdx @@ -5,7 +5,7 @@ The NetBird client installation adds a binary called `netbird` to your system. T your computer or server to the NetBirt network as a peer. But it can also be used as a client to control the daemon service. This section will explore the commands available in `netbird`. -### Syntax +## Syntax Use the following syntax to run `netbird` commands from your terminal window: ```shell netbird [command] [subcommand] [flags] @@ -18,7 +18,7 @@ netbird [command] [subcommand] [flags] To see detailed command information, use the flag `--help` after each command -### Global flags +## Global flags `netbird` has a set of global flags that are available in every command. They specify settings that are core or shared between two or more commands, e.g. `--setup-key` is used by `login` and `up` to authenticate the client against a management service. Below is the list of global flags: @@ -47,19 +47,19 @@ netbird up ``` The `up` command would process the variables, read the configuration file on `/opt/netbird/config.json` and attempt to connect to the management service running at `https://api.self-hosted.com:33073`. -### Commands -#### up +## Commands +### up Single command to log in and start the NetBird client. It can send a signal to the daemon service or run in the foreground with the flag `--foreground-mode`. The command will check if the peer is logged in and connect to the management service. If the peer is not logged in, by default, it will attempt to initiate an SSO login flow. -##### Flags +#### Flags ```shell --dns-resolver-address string Sets a custom address for NetBird's local DNS resolver. If set, the agent won't attempt to discover the best ip and port to listen on. An empty string "" clears the previous configuration. E.g. --dns-resolver-address 127.0.0.1:5053 or --dns-resolver-address "" --external-ip-map strings Sets external IPs maps between local addresses and interfaces.You can specify a comma-separated list with a single IP and IP/IP or IP/Interface Name. An empty string "" clears the previous configuration. E.g. --external-ip-map 12.34.56.78/10.0.0.1 or --external-ip-map 12.34.56.200,12.34.56.78/10.0.0.1,12.34.56.80/eth1 or --external-ip-map "" -F, --foreground-mode start service in foreground ``` -##### Usage +#### Usage The minimal form of running the command is: ```shell netbird up @@ -80,9 +80,9 @@ In case you need to use a setup key, use the `--setup-key` flag : netbird up --setup-key AAAA-BBB-CCC-DDDDDD ``` -#### login +### login Command to authenticate the NetBird client to a management service. If the peer is not logged in, by default, it will attempt to initiate an SSO login flow. -##### Usage +#### Usage The minimal form of running the command is: ```shell netbird login @@ -100,23 +100,23 @@ Passing a management url and a setup key: netbird login --setup-key AAAA-BBB-CCC-DDDDDD --management-url https://api.self-hosted.com:33073 ``` -#### down +### down Command to stop a connection with the management service and other peers in a NetBird network. After running this command, the daemon service will enter an `Idle` state. -##### Usage +#### Usage The minimal form of running the command is: ```shell netbird down ``` -#### status +### status Retrieves the peer status from the daemon service. -##### Flags +#### Flags ```shell -d, --detail display detailed status information --filter-by-ips strings filters the detailed output by a list of one or more IPs, e.g. --filter-by-ips 100.64.0.100,100.64.0.200 --filter-by-status string filters the detailed output by connection status(connected|disconnected), e.g. --filter-by-status connected ``` -##### Usage +#### Usage The minimal form of running the command is: ```shell netbird status @@ -262,19 +262,19 @@ Peers count: 2/3 Connected The peer with IP `100.119.85.4` wasn't returned because it was not connected -#### ssh +### ssh Command to connect using ssh to a remote peer in your NetBird network. You should run the ssh command with elevated permissions. -##### Flags +#### Flags ```shell -p, --port int Sets remote SSH port. Defaults to 44338 (default 44338) ``` -##### Arguments +#### Arguments The ssh command accepts one argument, `user@host`; this argument indicates the remote host to connect: * `user`: indicates the remote user to login * `host`: indicates the remote peer host IP address -##### Usage +#### Usage The minimal form of running the command is: ```shell sudo netbird ssh user@100.119.230.104 @@ -284,9 +284,9 @@ If you the remote peer agent is running the ssh service on a different port, you sudo netbird ssh -p 3434 user@100.119.230.104 ``` -#### version +### version Outputs the `netbird` command version. -##### Usage +#### Usage The minimal form of running the command is: ```shell netbird version @@ -296,14 +296,14 @@ This will output: 0.8.2 ``` -#### service +### service The service command is a top-level command with subcommands to perform operations related to the daemon service. You should run the service command with elevated permissions. -#### service install +### service install The install installs the daemon service on the system. -##### Usage +#### Usage The minimal form of running the command is: ```shell sudo netbird service install @@ -317,25 +317,25 @@ You can set a custom configuration path with the flag `--config` sudo netbird service install --config /opt/netbird/config.json ``` -#### service uninstall +### service uninstall The uninstall uninstalls the daemon service from the system. -##### Usage +#### Usage The minimal form of running the command is: ```shell sudo netbird service uninstall ``` -#### service start +### service start Starts the daemon service -##### Usage +#### Usage The minimal form of running the command is: ```shell sudo netbird service start ``` -#### service stop +### service stop Stops the daemon service -##### Usage +#### Usage The minimal form of running the command is: ```shell sudo netbird service stop diff --git a/src/pages/docs/how-to/settings.mdx b/src/pages/docs/how-to/configure-periodic-user-authentication.mdx similarity index 94% rename from src/pages/docs/how-to/settings.mdx rename to src/pages/docs/how-to/configure-periodic-user-authentication.mdx index ee62f67d..23e0ae20 100644 --- a/src/pages/docs/how-to/settings.mdx +++ b/src/pages/docs/how-to/configure-periodic-user-authentication.mdx @@ -1,7 +1,5 @@ -# Settings - -## Configure periodic user authentication +# Configure periodic user authentication To ensure a high level of security, NetBird offers a peer login expiration feature that requires users to periodically reauthenticate their devices. Every new network has this feature enabled, and the expiration period is set to 24 hours by default. You can disable this feature and configure the expiration period in the account settings in the web UI https://app.netbird.io/settings. @@ -16,7 +14,7 @@ Expired peers will appear in the peers' view with the status `needs login`. peer-needs-login.png

-### Configure and disable expiration +## Configure and disable expiration The expiration period can be set to anything between one hour and 180 days. Go to the Web UI Settings tab and set the desired period in the Authentication section. You can also disable the expiration for the whole network in the same section. @@ -31,7 +29,7 @@ You can also disable the expiration for the whole network in the same section. and re-authentication will be required. -### Disable expiration individually per peer +## Disable expiration individually per peer Sometimes, you might want to disable peer expiration for some peers. With NetBird you can disable login expiration per peer without disabling expiration globally. In the Peers tab of the web UI click on the peer you want to disable expiration for and use the Login Expiration switch. @@ -41,7 +39,7 @@ Peers with `expiration disabled` will be marked with a corresponding label in th peer-login-expiration

-### Get started +## Get started

diff --git a/src/pages/docs/how-to/dns.mdx b/src/pages/docs/how-to/dns.mdx index 2b2a73a2..c187461c 100644 --- a/src/pages/docs/how-to/dns.mdx +++ b/src/pages/docs/how-to/dns.mdx @@ -1,7 +1,5 @@ -# DNS - -## Manage DNS in your network +# Manage DNS in your network
@@ -26,8 +24,8 @@ control what nameservers a specific [peer group](/docs/how-to/access-control#con Nameservers is available for NetBird [v0.11.0](https://github.com/netbirdio/netbird/releases) or later. -### Concepts -#### Local resolver +## Concepts +### Local resolver To minimize the number of changes in your system, NetBird will spin up a local DNS resolver. This local resolver will be responsible for queries to the domain names of peers registered in your network and forwarding queries to upstream nameservers you configure in the system. @@ -53,10 +51,10 @@ Distribution defines that peers that belong to groups set in this field will rec When using private nameservers, you may use these groups to link routing peers and clients of the private servers. -### Managing nameserver groups +## Managing nameserver groups A nameserver group defines up to 2 nameservers to resolve DNS to a set of peers in distribution groups. -#### Creating a nameserver group +### Creating a nameserver group Access the `DNS` tab and click the `Add Nameserver` button to create a new nameserver.

high-level-dia @@ -64,7 +62,7 @@ Access the `DNS` tab and click the `Add Nameserver` button to create a new names That will open a nameserver selection configuration screen where you can choose between using three predefined public nameservers or using a custom setup. -##### Selecting predefined nameservers +#### Selecting predefined nameservers If you choose a predefined public nameserver option, you can select the following nameservers: - [Google DNS servers](https://developers.google.com/speed/public-dns/docs/using) - [Cloudflare DNS servers](https://one.one.one.one/dns/) @@ -79,7 +77,7 @@ In the example below, we chose the "All" group: high-level-dia

-##### Creating custom nameservers +#### Creating custom nameservers You can also configure a custom nameserver by clicking the `Add custom` button. Now you can enter the details of your nameserver. In the example below, we are creating a nameserver with the following information: @@ -93,7 +91,7 @@ In the example below, we are creating a nameserver with the following informatio high-level-dia

-#### Creating a nameserver for specific domains +### Creating a nameserver for specific domains Sometimes we want to forward DNS queries to specific nameservers but only for particular domains that match a setting. Taking the example of custom nameservers above, you could select a match mode for only domains listed there. Below you can see the same nameserver setup but only for the `berlinoffice.com` domain: @@ -105,9 +103,9 @@ Below you can see the same nameserver setup but only for the `berlinoffice.com` Currently, only MacOS, Windows 10+, and Linux running systemd-resolved support nameservers without an all domains resolver. For a better experience, we recommend setting at least one all domain resolver to be applied to all groups. -#### Distributing the settings with groups +### Distributing the settings with groups You can select as many distribution groups as you want for your nameserver setup. Keep in mind to link them to peers and, if required, to add access control rules when using private nameservers. -#### Adding remote private DNS servers +### Adding remote private DNS servers To add a private DNS server that is running behind routing peers, you need to create resources to ensure communication between your nameserver clients can communicate. In the Berlin office example from previous steps, we have a peer from the `Office network` that can route traffic to the `192.168.0.32` IP, so we need to ensure that a similar network route exists:

high-level-dia @@ -118,22 +116,22 @@ Then we need to confirm that an access rule exists to connect `Remote developers high-level-dia

-### Testing configuration -#### Querying records +## Testing configuration +### Querying records DNS configuration has evolved in the last few years, and each operating system might expose its nameserver configuration differently. Unfortunately, tools like `nslookup` or `dig` didn't get updated to match these OS configurations, and in many cases, they won't use the same servers as your browser to query domain names. For these cases, we listed some tools to support your checks: -##### MacOS +#### MacOS You can use `dscacheutil`: ```shell dscacheutil -q host -a name peer-a.netbird.cloud ``` -##### Windows +#### Windows You can use `Resolve-DnsName` on `Powershell`: ```shell Resolve-DnsName -Name peer-a.netbird.cloud ``` -##### Linux +#### Linux In most cases, you will be fine with traditional tools because most DNS managers on Linux tend to update the /etc/resolv.conf. ```shell dig peer-a.netbird.cloud @@ -144,7 +142,7 @@ If your system is running systemd-resolved, you can also use ```resolvectl```: ```shell resolvectl query peer-a.netbird.cloud ``` -### Get started +## Get started

diff --git a/src/pages/docs/how-to/activity.mdx b/src/pages/docs/how-to/monitor-system-and-network-activity.mdx similarity index 95% rename from src/pages/docs/how-to/activity.mdx rename to src/pages/docs/how-to/monitor-system-and-network-activity.mdx index 65e26193..1251f4e8 100644 --- a/src/pages/docs/how-to/activity.mdx +++ b/src/pages/docs/how-to/monitor-system-and-network-activity.mdx @@ -1,7 +1,5 @@ -# Activity - -## Monitor system and network activity +# Monitor system and network activity The activity monitoring feature lets you quickly see what's happening with your network. Whether a new machine or user joined your network or the access control policy has been modified, the activity log allows you to track the changes to your network. @@ -18,7 +16,7 @@ You can also use the search bar to filter events by activity type. The future versions will support connection events that occur in NetBird agents (e.g., peer A connected to peer B). -### Get started +## Get started

diff --git a/src/pages/docs/how-to/peers.mdx b/src/pages/docs/how-to/peers.mdx deleted file mode 100644 index c697415c..00000000 --- a/src/pages/docs/how-to/peers.mdx +++ /dev/null @@ -1,4 +0,0 @@ - -# Peers - -tba \ No newline at end of file diff --git a/src/pages/docs/how-to/network-routes.mdx b/src/pages/docs/how-to/routing-traffic-to-private-networks.mdx similarity index 70% rename from src/pages/docs/how-to/network-routes.mdx rename to src/pages/docs/how-to/routing-traffic-to-private-networks.mdx index a5830c33..66b5b200 100644 --- a/src/pages/docs/how-to/network-routes.mdx +++ b/src/pages/docs/how-to/routing-traffic-to-private-networks.mdx @@ -1,7 +1,5 @@ -# Network Routes - -## Routing traffic to private networks +# Routing traffic to private networks
@@ -26,8 +24,8 @@ In these cases, you can configure network routes assigning routing peers to conn It's free and simple! :) -### Concepts -#### Network routes +## Concepts +### Network routes A network route describes the network you want to connect with your NetBird peers. It has an identifier, a network range, a routing peer, and some parameters available for managing priority and masquerading. Network routes is available for NetBird [v0.9.0](https://github.com/netbirdio/netbird/releases) or later. @@ -46,19 +44,19 @@ Nodes connected to routing peers will choose one of them to route packets to ext Masquerade hides other NetBird network IPs behind the routing peer local address when accessing the target Network range. This option allows access to your private networks without configuring routes on your local routers or other devices. If you don't enable this option, you must configure a route to your NetBird network in your external network infrastructure. -#### Metric and priority +### Metric and priority Metric defines prioritization when choosing the main routing peer in a high availability network. Lower metrics have higher priority. -#### Distribution groups +### Distribution groups Distribution groups define that peers that belong to groups set in this field will receive the network route. It doesn't remove the need for the routing peer to be connected to these peers -### Managing network routes +## Managing network routes A network route describes a network you want to connect with your NetBird peers. It has an identifier, a network range, a routing peer, and some parameters available for managing priority and masquerading. -#### Creating a network route +### Creating a network route Access the `Network Routes` tab and click the `Add Route` button to create a new route. That will open a route configuration screen where you can add the information about the network you want to route:

@@ -84,7 +82,7 @@ Once you fill in the route information, you can click on the `Save` button to sa

Done! Now every peer connected to your routing peer will be able to send traffic to your external network. -#### Creating highly available routes +### Creating highly available routes To avoid a single point of failure when managing your network, we recommend installing NetBird on every resource. However, you still want to ensure a reliable connection to your private network when running NetBird on every machine is not feasible. NetBird Network Routes feature has a High Availability (HA) mode, @@ -108,9 +106,9 @@ This way, nodes connected to both peer `aws-nb-europe-router-az-a` and peer `aws Currently, there is no limitation in the number of routes that form a highly available route. Each connected peer will pick one routing peer to use as the router for a network; this decision is based on metric prioritization and connection attributes like direct or relayed connections.
-#### Filtering routes distribution with groups +### Filtering routes distribution with groups You can select as many distribution groups as you want for your network route. You can update them at the routing peer or high-availability group level. Keep in mind to link them to peers and, if required, to add access control rules ensuring connectivity between these peers and the routing peers of your route -#### Routes without masquerading +### Routes without masquerading If you want more transparency and would like to manage your external network routers, you may choose to disable masquerade for your network routes. In this case, the routing peer won't hide any NetBird peer IP and will forward the packets to the target network transparently. @@ -121,61 +119,7 @@ This way, devices that don't have the agent installed can communicate with your high-level-dia

-### Get started -

- -

- -- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird) -- Follow us [on Twitter](https://twitter.com/netbird) -- Join our [Slack Channel](https://join.slack.com/t/netbirdio/shared_invite/zt-vrahf41g-ik1v7fV8du6t0RwxSrJ96A) -- NetBird [latest release](https://github.com/netbirdio/netbird/releases) on GitHub - - -## Add Users to your network - -Whether you have a network for personal use or manage your company's corporate network, you'd probably want to invite -people to your account and join your NetBird network. - -There are two ways of adding users to a NetBird account - indirect and direct. - -### Indirect user invites -This way of adding users is managed by the NetBird system and doesn't require administrator input. -It works only for organizations with private domains. - -Whenever a new user signs up with a private domain (e.g., @netbird.io), -NetBird creates a new account and associates it with the netbird.io organization (domain) automatically. Every consequent user signup with the same @netbird.io domain in their email address will end up under the same organization. - -How does it work? Every time a previously unknown user registers at [app.netbird.io](https://app.netbird.io/), -the system classifies the domain part of the email. -The domain can fall into one of the following categories - `public`, `private`, or `unclassified`. -The domains of the private category are the ones that are automatically grouped under the same account. -Public domains are the ones of the public email providers like Gmail. - - - It might happen (unlikely) that the domain classification system didn't classify your company's domain as private. - Our system was unsure about your domain and assigned an unclassified or public category to be on the safe side. - Just email us at [hello@netbird.io](mailto:hello@netbird.io) or ping us on [Slack](https://join.slack.com/t/netbirdio/shared_invite/zt-vrahf41g-ik1v7fV8du6t0RwxSrJ96A) to fix this. - - -### Direct user invites -As the name stands, this way of inviting users is straightforward and works through the web UI. -To invite a new user, proceed to the `Users` tab and click the button. -A user window will pop up where you can specify the name and email address of the invited user. Optionally, you could select a set of groups with which you want this user to be associated. - -The invited users will receive an email invitation that they have to confirm. -After logging in to the system, they will join your network automatically. - -

- high-level-dia -

- - - If a user already has a NetBird account, you can't invite them. - This is a limitation that is likely to be removed in future versions. - - -### Get started +## Get started