TopGit
GitHub Repo Review

frp reverse proxy

FTopGit review image for fatedier/frp
Review by Topgit.dev for fatedier/frp, with GitHub repository stats and README context.
Quick verdict

frp: Securely Expose Local Services frp earns its reputation as a workhorse for NAT traversal. The split between frps and frpc gives you a controlled public endpoint while keeping your actual service on a private network. Security-conscious teams will appreciate TLS by default since v0.50.0 and the OIDC authentication option for enterprise environments. The secret TCP (STCP) mode is particularly useful when you want to expose a service to specific clients only, using a preshared key rather than opening ports to the world. Reach for frp if you need reliable, configurable tunneling without a SaaS subscription. Skip it if you want zero-configuration hosting โ€” ngrok handles that tradeoff with less flexibility but faster setup.

Stars
โ˜… 109.9k
Forks
โ‘‚ 15.2k
Contributors
๐Ÿ‘ฅ 143
Language
Go
License
Apache-2.0
Topic
Mobile
Updated
Oct 2026
Homepage
โ€”

Understanding frp's Core Functionality

Understanding frp's Core Functionality frp is a reverse proxy written in Go that tunnels traffic from a public server (frps) to a client (frpc) running on a private network behind NAT or a firewall. Unlike SSH tunnels that require shell access, frp maintains persistent tunnels you configure declaratively, supporting TCP, UDP, HTTP, HTTPS, and P2P modes. It handles the NAT traversal by keeping the frpc-to-frps connection alive so external traffic can reach your local services.

Key Capabilities of frp

  • โœ“Multi-protocol support: TCP, UDP, HTTP, HTTPS, plus P2P modes (XTCP for direct client-to-client transfer, STCP for preshared-key access)
  • โœ“TLS encryption enabled by default since v0.50.0, with custom certificate support for the dashboard
  • โœ“Authentication via shared token or OIDC (OpenID Connect Client Credentials flow) for enterprise identity providers
  • โœ“Built-in dashboard on frps showing proxy status and statistics, with Prometheus metrics export
  • โœ“Dynamic proxy management through the web UI or API without restarting frpc
  • โœ“Client admin UI at localhost for inspecting and updating running configuration
  • โœ“Environment variable substitution in config files, plus file includes for modular proxy definitions
  • โœ“Plugin system for exposing Unix domain sockets, static files, and HTTPS-to-HTTP translation
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history โ†—

Practical frp Configuration Examples

The basic flow involves writing TOML configs (YAML and JSON are also supported), starting frps on the public server, then frpc on your LAN. For example, to expose SSH: set bindPort = 7000 on frps, and on frpc configure serverAddr, serverPort, plus a TCP proxy mapping localPort 22 to remotePort 6000. Once running, SSH to the public IP on port 6000 reaches your LAN machine. For HTTP services, configure vhostHTTPPort on frps and use customDomains in the proxy definition. Visit http://{serverAddr}:7500 to view the dashboard (default credentials admin/admin).

Strengths

  • โœ“Over 108k GitHub stars โ€” battle-tested with a large community and active maintenance
  • โœ“Protocol flexibility: TCP, UDP, HTTP, HTTPS, plus P2P modes for bandwidth-sensitive transfers
  • โœ“TLS and OIDC authentication support for environments with strict security requirements
  • โœ“No dependency on cloud infrastructure โ€” you control the server, data never touches a third-party SaaS
  • โœ“Lightweight single-binary deployment with straightforward configuration format

Current Development Status and V2 Vision

  • โ–ณV2 has been in development with no ETA โ€” the author cites fragmented time and constant interruptions, and it will not be backwards compatible with v1
  • โ–ณXTCP P2P mode relies on STUN and may fail with symmetric NAT or certain enterprise firewalls, requiring fallback to STCP
  • โ–ณConfiguration depth can be steep for simple use cases compared to SaaS tunneling tools
  • โ–ณNo built-in high availability or load balancing between multiple frps instances
  • โ–ณAntivirus false positives on frpc require manual whitelisting on some systems

Exploring Other Reverse Proxy Solutions

[ngrok](https://topgit.com/ngrok) โ€” zero-config SaaS option, faster setup but less control and requires a paid plan for custom domains and persistent tunnels[Cloudflare Tunnel](https://topgit.com/cloudflare-tunnel) โ€” free tier available, integrates with Cloudflare's network and Zero Trust platform[localtunnel](https://topgit.com/localtunnel) โ€” open source but unstable for production useSSH reverse tunnels โ€” no additional software needed but harder to manage at scale and less feature-rich

Who Benefits Most from Using frp?

Devs with a VPS or public server who need reliable, persistent access to local services without configuring router port forwarding. Security teams appreciate the OIDC integration for tying tunnel access to their identity provider. Homelab enthusiasts exposing self-hosted services benefit from avoiding dynamic DNS and port forwarding complexity. Teams doing webhook integration testing avoid cloud redeployment cycles. If you need zero-config or don't have a public server available, a SaaS option like ngrok is faster.

Frequently Asked Questions about frp

What protocols does frp support for tunneling?

frp supports TCP, UDP, HTTP, and HTTPS for standard proxying. It also offers STCP (Secret TCP) for preshared-key access and XTCP for P2P client-to-client connections bypassing the frps server.

Is frp safe to use, and how does it handle security?

TLS encryption is enabled by default since v0.50.0. frp supports token authentication and OIDC for enterprise identity integration. STCP mode requires a preshared key, and traffic between frpc and frps can be encrypted independently of transport TLS.

Can frp be used for production environments?

frp is production-capable for stable deployments where you control the server infrastructure. The community includes companies using it in production, but high availability across multiple frps instances requires manual configuration.

What configuration file formats does frp support?

Since v0.52.0, frp supports TOML, YAML, and JSON. INI format is deprecated and will be removed. New features only target the three supported formats.

How does frp handle client and server authentication?

frp supports token-based authentication where both frps and frpc share the same secret, and OIDC (OpenID Connect Client Credentials) for integration with enterprise identity providers.

Does frp support P2P connections for direct data transfer?

Yes, XTCP mode establishes direct connections between frpc clients using STUN for NAT traversal. It requires a frps server for signaling but data bypasses it. XTCP may fail on symmetric NATs, falling back to STCP.

The problem it solves

The problem it solves

Best use cases

  • โ€ขExposing local development webhooks to external services during integration testing
  • โ€ขAccessing home lab services (like NAS, smart home dashboards) from outside your LAN
  • โ€ขSharing a local demo environment with clients or stakeholders without deploying to the cloud
  • โ€ขRemote debugging of mobile apps that communicate with a local backend
  • โ€ขP2P file transfer between machines behind separate NATs using XTCP mode
  • โ€ขRunning multiple SSH services on the same port via tcpmux HTTP Connect multiplexing

How to install / try

Download precompiled binaries for your OS and architecture from the GitHub releases page. You need two machines: one with a public IP running frps, and one on your LAN running frpc. On the server, place the frps binary and configuration file. On the client, place the frpc binary and its configuration pointing to the server's public address. Note that some antivirus software flags frpc as malware because it creates reverse proxies โ€” you may need to whitelist it to prevent quarantine.

Related repositories

Source & attribution

Repository: fatedier/frp | Stars: 108,546 | Language: Go | License: Apache-2.0 | Source: https://github.com/fatedier/frp

GitHub data ยท last synced Aug 6, 2026Reviewed by Henry
โ† Back to TopGit

Curious whether frp is right for you?

Let ChatGPT, Claude, or Perplexity look into it โ€” click below and see what AI actually says about frp.

GitHub