Analysis updated 2026-06-20
Access your home computer over SSH from anywhere on the internet without opening router ports or changing firewall rules.
Expose a local web app or development environment through a public domain name with custom HTTP headers and HTTPS.
Share a single public port across multiple internal SSH services using TCP multiplexing and load balancing.
Route traffic privately in peer-to-peer mode without relaying it through a public relay server.
| fatedier/frp | kubernetes/kubernetes | gin-gonic/gin | |
|---|---|---|---|
| Stars | 106,277 | 122,088 | 88,430 |
| Language | Go | Go | Go |
| Setup difficulty | moderate | hard | easy |
| Complexity | 3/5 | 5/5 | 2/5 |
| Audience | ops devops | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires a public-facing server to run the frps server component, the frpc client runs on the machine you want to expose.
frp is a fast reverse proxy written in Go. The README opens with a short definition: it lets you expose a local server that sits behind a NAT or firewall to the internet. It supports TCP and UDP traffic, as well as HTTP and HTTPS, so requests can be forwarded to internal services through a domain name. The project also offers a peer-to-peer connect mode for users who would rather not route all traffic through a public server. A Chinese translation of the README is provided as README_zh.md. The Development Status section explains where the project sits. The master branch holds the latest release, the dev branch holds work in progress, and a planned version 2 will not be compatible with version 1. The author notes that v2 turned out harder than expected, so v1 will continue to be optimized while v2 is worked on during fragmented time. The eventual v2 design is described as a modernized layer-4 and layer-7 proxy in the style of Envoy, intended as a general extensible proxy platform rather than only an intranet-penetration tool. The Features section in the table of contents is long. It lists configuration files, environment variable support, splitting configuration into multiple files, a server dashboard, a client admin UI with dynamic proxy management through a store, a Prometheus-based monitor, token and OIDC authentication, TLS encryption and compression, hot reloading of the client config, query of proxy status, a way to restrict which server ports can be used, port reuse, bandwidth limits, TCP stream multiplexing, KCP and QUIC protocol support, connection pooling, load balancing, service health checks, HTTP host header rewriting, custom HTTP headers, real client IP through X-Forwarded-For or Proxy Protocol, HTTP basic auth, custom subdomains, URL routing, TCP port multiplexing, an outbound proxy for the client, port range mapping, client and server-manage plugins, an SSH tunnel gateway, and a VirtualNet virtual network mode. Example Usage in the table of contents shows the typical use cases the README walks through. They include reaching a LAN computer over SSH, sharing one port across multiple SSH services, exposing internal web services through custom domains, forwarding DNS queries, forwarding Unix domain sockets, exposing a simple HTTP file server, adding HTTPS in front of a local HTTP service, exposing a service privately, and running in P2P mode. Later sections cover feature gates, related projects, contributing, and donations through GitHub Sponsors or PayPal.
frp is a fast reverse proxy written in Go that lets you expose a server running on your home or office network to the internet, bypassing firewalls and NAT, for TCP, UDP, HTTP, and HTTPS traffic.
Mainly Go. The stack also includes Go.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Verify against the repo before relying on details.