1000% agree on overall need for "non-reference manual" presentation in docs, whether "user guide"/"by examples"/KBs, whatever... just there is a void between the "per command" view today and how to setup & use the router.
On ZT controller docs...
The ZT servers are still in use. The docs mention this:
@anav, works same, so no public IP should be "required".
The big difference between WG config is that instead of the various keys and network needing to match like in WG... With ZeroTier (including your own controller) all the "client"/peers needs to know is the ONE /zerotier/controller's network= value. Unlike WG, authorization happens via RouterOS CLI — once the client tries to connect — you use /zerotier/controller/member commands above/docs to set "authorized=yes" on the "member" (of controller's managed network). There are really only two numbers, address of peer & [controller] network id. The client's address is provided when client tried to connect to a network, so client "zt-address" gets populated automatically by RouterOS, so you likely don't need to care as much about that one.
Still the docs should mention that you can "pre-authorize" a peer to use the Mikrotik controller, if the user provides their client's network address shown the ZeroTier client app. On Mac, if you select the "My Address" from the taskbar menu for ZeroTeirOne client, it will copy to clipboard. Then to use the client's address to create a peer - before it connects, so it be authorized when it does, you can use the following:
:global clientztaddress "1fcfake1b8"
/zerotier/controller/member/add zt-address=$clientztaddress authorized=yes name=mymaczerotier disabled=no network=[../find disabled=no]
:put "In ZeroTier client, use 'Join' with network of: $[[/zerotier/controller/get [/zerotier/controller/find disabled=no] network]]"
In ZeroTier client, use 'Join' with network of: 847fake01fakecad
And the on Mac (or PC), to connect to that network, you need the "network id" for it. That in /zerotier/controller/print, but you can use above :put to display.
The other detail docs could mention is the name to use in the /zerotier/controller's name= is what is displayed to in all client apps as the "friendly name" of the network.
And also, that controller will automatically assign IP address to peers within the ip-range= (and on any "member"/peer you can set an ip-address= to make a particular peer act like "static DHCP"). You kinda have to infer that a bit too much from list of attributes.
The ZT site is easy to use but for more control and customization, using the controller in the Mikrotik router is way better for multiple reasons...
Control, yes. But I don't know about more customization. i.e. There are flow rules on their controller. And the CLI does take some time to get used if you normally use winbox (aka @anav) - since the controller does not have webfig/winbox UI.
Just highlight, once again, an grip of mine is the Mikrotik's ZT
client does not support low-bandwidth, bonding, etc. as a "full" ZT client on PC/Mac does. And these restrictions still come in when using the controller, as traffic will go via the interface, not controller.