zerotier 🔹
Configures Zerotier VPN secure and efficient networking within a Clan..
Categories
Overview
This guide explains how to set up and manage a ZeroTier VPN for a clan network. Each VPN requires a single controller and can support multiple peers and optional moons for better connectivity.
Roles
1. Controller
The Controller manages network membership and is responsible for admitting new peers. When a new node is added to the clan, the controller must be updated to ensure it has the latest member list.
- Key Points:
- Must be online to admit new machines to the VPN.
- Existing nodes can continue to communicate even when the controller is offline.
2. Moons
Moons act as relay nodes, providing direct connectivity to peers via their public IP addresses. They enable devices that are not publicly reachable to join the VPN by routing through these nodes.
- Configuration Notes:
- Each moon must define its public IP address.
- Ensures connectivity for devices behind NAT or restrictive firewalls.
3. Peers
Peers are standard nodes in the VPN. They connect to other peers, moons, and the controller as needed.
- Purpose:
- General role for all machines that are neither controllers nor moons.
- Ideal for most clan members' devices.
Usage via Inventory
Roles
This module can be used via predefined roles
- `peer`
- `controller`
- `moon`
Every role has its own configuration options. Which are each listed below.
For more information, see the inventory guide.
Example
For example the admin
module adds the following options globally to all machines where it is used.
clan.admin.allowedkeys
This means there are two equivalent ways to set the allowedkeys
option. Either via a nixos module or via the inventory interface.
But it is recommended to keep together imports
and config
to preserve locality of the module configuration.
Options of peer
role
The following options are available when using the peer
role.
clan.zerotier.excludeHosts
Hosts that should be excluded
Type: list of string
Default:
clan.zerotier.networkIds
Extra zerotier network Ids that should be accepted
Type: list of string
Default:
clan.zerotier.networkIps
Extra zerotier network Ips that should be accepted
Type: list of string
Default:
Options of controller
role
The following options are available when using the controller
role.
clan.zerotier.excludeHosts
Hosts that should be excluded
Type: list of string
Default:
clan.zerotier.networkIds
Extra zerotier network Ids that should be accepted
Type: list of string
Default:
clan.zerotier.networkIps
Extra zerotier network Ips that should be accepted
Type: list of string
Default:
Options of moon
role
The following options are available when using the moon
role.
clan.zerotier.excludeHosts
Hosts that should be excluded
Type: list of string
Default:
clan.zerotier.moon.stableEndpoints
Make this machine a moon. Other machines can join this moon by adding this moon in their config. It will be reachable under the given stable endpoints.
Type: list of string
clan.zerotier.networkIds
Extra zerotier network Ids that should be accepted
Type: list of string
Default:
clan.zerotier.networkIps
Extra zerotier network Ips that should be accepted
Type: list of string
Default:
Usage via Nix
This module cannot be imported directly in your nixos configuration.