I've done this, I really wish I could recommend this.
When the NAT punching works it's great. However (AFAIK) there's no option to use the lighthouse as a backup for when NAT punching fails, and when NAT punching inevitably fails it just doesn't work, even when everything can talk to the lighthouse.
I've only used this on very conventional networks, so I haven't quite noticed this difficulty. With this in mind, it is a little harder to generally recommend.
Once the clients talk to the lighthouse to build the tunnel they communicate directly
https://github.com/slackhq/nebula