rathole is a self-hosted reverse proxy for reaching services on devices behind NAT. A client connects to a publicly reachable server, which forwards traffic to configured local services. Each service uses its own authentication token.
The client and server are implemented in Rust with Tokio. Configuration supports TLS or Noise encryption and hot-reloading service definitions. Running it requires both a reachable server and a client on the private network.