Hosting your own ZeroTier infrastructure is easy. There are 2 types of ZeroTier infrastructure and each serves a different role:
Controllers handle Virtual Layer 2. No traffic is handled by controllers. ZeroTier Inc runs controllers with a web UI and API at ZeroTier Central. You can self-host controllers, but we don't currently offer the web UI for self-hosting. You'll have to use the json api.
The controller is open-source. Please check the license. It's built in to the zerotier-one binary.
Roots handle Virtual Layer 1. ZeroTier, Inc hosts the roots. Setup for peer to peer connections happen via the roots. If p2p connections can't be made, traffic is "relayed" through these roots.
All traffic is end-to-end encrypted. The roots can't read anything that passes through them.
You can host your own roots (previously called "moons") in addition to ZeroTier's, but we can't provide support for removing ZeroTier's roots (unless you are a large enterprise customer). The mobile apps don't currently support custom roots.
If you are using a custom root setup, your nodes won't be able to find standard nodes. If you want to add additional roots and still talk to standard nodes, see moons.