1. Put WireGuard on a Pi. Create a server config.
2. Open the WireGuard port to the Internet (don't worry, it's invisible)
3. Install WireGuard elsewhere, and generate a client config.
All devices can now talk to each other. Tailscale has a "magic DNS" feature, which is nice, but WireGuard also supports custom DNS in the config.