frp
A fast reverse proxy that makes services on a machine behind a NAT or firewall reachable from the internet over TCP, UDP, HTTP and HTTPS.
- GitHub stars
- 110k
- Last commit
- 18 days ago
- Latest release
- v0.71.0
- Licence
- Apache-2.0
- Self-hosted
- Yes
frp is an open-source reverse proxy that makes a server sitting behind a NAT or firewall reachable from the internet. It supports TCP and UDP traffic as well as HTTP and HTTPS, so requests can be forwarded to internal services using a domain name. It also offers a peer-to-peer connect mode. The project is written in Go and licensed under Apache-2.0.
Typical setups include reaching a computer on a home or office LAN over SSH, sharing one port between several SSH services, serving internal web apps on custom domains, forwarding DNS queries and Unix domain sockets, exposing a simple HTTP file server, enabling HTTPS for a local service, and exposing a service privately. Configuration is handled through files, with support for environment variables and splitting settings across several files.
Operations features include a server dashboard, a client admin UI, dynamic proxy management, Prometheus monitoring and client authentication. A server component runs on a machine with a public address, and a client runs beside your internal service. It suits developers, homelab users and small teams who want to host their own tunnel instead of using a commercial tunneling service.
Key features
- Reverse proxy for TCP, UDP, HTTP and HTTPS
- Peer-to-peer connect mode
- Custom domain routing for internal web services
- Server dashboard and client admin UI
- Prometheus monitoring support
- Authentication for connecting clients
Pricing: Free and open source under the Apache-2.0 license.


