github.com/fatedier/frp
Community Reviews
Powerful reverse proxy but requires careful security hardening in production
From a security perspective, frp requires significant hardening work. Authentication defaults to a simple token-based system that's easy to misconfigure. TLS is optional rather than enforced by default, meaning you must explicitly configure encryption or risk exposing tunneled traffic. The authentication token is transmitted in plaintext without TLS enabled. Error messages can be verbose and expose internal network topology details if not carefully managed.
Input validation on proxy configurations exists but I've encountered edge cases where malformed subdomain requests weren't properly sanitized. The project has had CVEs related to authentication bypass and path traversal that were patched, but response time varies. You'll need to implement your own rate limiting and connection tracking if you're exposing this to untrusted networks.
Best for: Internal development environments or controlled networks where you need quick reverse proxy setup and can implement additional security layers.
Avoid if: You need a production-grade, secure-by-default tunnel solution for untrusted networks without extensive hardening effort.
Powerful reverse proxy but operationally challenging at scale
Timeout configuration exists but defaults are aggressive and not well-documented. Reconnection logic works but lacks exponential backoff customization, leading to thundering herd problems when backends recover. Memory usage can spike unpredictably with many concurrent tunnels, and there's no graceful degradation - it's either working or it's not. Breaking changes between minor versions have bitten us twice, particularly around plugin APIs and authentication mechanisms.
For production use, expect to wrap this with your own health checks, metrics exporters (Prometheus integration is basic), and connection lifecycle management. The codebase is actively maintained but documentation focuses on features rather than operational concerns like proper timeout tuning or load characteristics.
Best for: Development environments or small-scale deployments needing quick reverse proxy/tunneling without heavy operational requirements.
Avoid if: You need production-grade observability, precise resource control, or are running high-throughput services requiring predictable performance under load.
Solid reverse proxy with simple config but limited programmatic flexibility
However, using FRP as a Go library rather than a standalone binary reveals some friction. The package isn't designed with programmatic usage as a priority; most examples assume you're running the binaries. When embedding FRP in your application, you'll spend time reading source code to understand the internal APIs since library usage documentation is sparse. Error messages are generally clear for configuration issues but can be vague when dealing with network problems or authentication failures.
Community support is decent—GitHub issues get responses, though sometimes with delays. The maintainers are responsive to bugs but feature requests move slowly. Common pitfalls like port conflicts or firewall issues aren't always well-documented, requiring some trial and error.
Best for: Teams needing a reliable reverse proxy solution to expose services behind NAT, especially when using the provided binaries rather than embedding as a library.
Avoid if: You need extensive programmatic control or customization beyond standard configuration options, or require detailed API documentation for library integration.
Sign in to write a review
Sign In