The tl;dr is you define a private subnet in the server. All peers check in, receive an ipv4 address from that range, and the list of all other peers. All peers check in regularly to report on any changes to their local (public key, ip, etc). The server updates it’s list and when other peers check in, they get the new info. The peers use this info to create a mesh network