frp

Developer Tools

A fast reverse proxy that exposes a local server behind NAT or a firewall to the internet.

Latest v0.70.1 · by fatedierWebsitefatedier/frp

Release activity

Release activity — 10 releases across 10 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 20261 release on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 20261 release on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 20261 release on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 20261 release on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

10 releases in the last year

Changelog

v0.70.1

Fixed 3
  • HTTP vhost servers no longer support HTTP/1.1 Upgrade: h2c requests
  • Fixed control-session replacement leaks when frpc reconnects through a half-open TCP multiplexed connection
  • Fixed an SSH tunnel gateway panic when handling malformed exec requests
Fixes
  • HTTP vhost servers no longer support HTTP/1.1 Upgrade: h2c requests. Cleartext HTTP/2 prior-knowledge remains supported.
  • Fixed control-session replacement leaks when frpc reconnects through a half-open TCP multiplexed connection.
  • Fixed an SSH tunnel gateway panic when handling malformed exec requests.
View originalPermalink
How v0.70.1 went

v0.70.0

Added 1
  • Expand frps dashboard API v2 migration across Clients, Proxies, Server Overview, Client Detail, and Proxy Detail with paginated users/clients/proxies, detail data, proxy traffic history, server system info, offline proxy statistics pruning, server-side pagination, search, and proxy type filtering
Fixed 3
  • WebSocket and WSS tunnel payloads are now sent as binary frames to avoid disconnects through RFC-compliant intermediaries that validate text frames as UTF-8
  • The tls2raw client plugin now writes the proxy protocol header to the local raw connection when proxy protocol is enabled
  • frpc now rejects duplicate proxy and visitor names in config files instead of silently overwriting earlier entries
Features
  • Expanded the frps dashboard API v2 migration across Clients, Proxies, Server Overview, Client Detail, and Proxy Detail, covering paginated users/clients/proxies, detail data, proxy traffic history, server system info, offline proxy statistics pruning, server-side pagination, search, and proxy type filtering.
Fixes
  • WebSocket and WSS tunnel payloads are now sent as binary frames, avoiding disconnects through RFC-compliant intermediaries that validate text frames as UTF-8.
  • The tls2raw client plugin now writes the proxy protocol header to the local raw connection when proxy protocol is enabled.
  • frpc now rejects duplicate proxy and visitor names in config files instead of silently overwriting earlier entries.
View originalPermalink
How v0.70.0 went

v0.69.1

Changed 3
  • transport.wireProtocol = "v2" now applies to UDP-based proxy payloads including ordinary UDP and SUDP for consistent payload framing
  • Improved SUDP compatibility during mixed transport.wireProtocol deployments to allow frps to bridge payloads between v1/default and v2 SUDP clients
  • XTCP work connection NatHoleSid messages now follow the selected transport.wireProtocol
Features
  • transport.wireProtocol = "v2" now also applies to UDP-based proxy payloads, including ordinary UDP and SUDP, so their payload framing is consistent with the selected wire protocol.
  • Improved SUDP compatibility during mixed transport.wireProtocol deployments, allowing frps to bridge payloads between v1/default and v2 SUDP clients.
  • XTCP work connection NatHoleSid messages now follow the selected transport.wireProtocol.
Compatibility Notes
  • When enabling transport.wireProtocol = "v2" for SUDP, upgrade both the proxy and visitor frpc instances first, or keep them on v1 until both sides are upgraded.
View originalPermalink
How v0.69.1 went

v0.69.0

Added 3
  • Added `transport.wireProtocol` configuration option for frpc to select between wire protocol v1 and v2
  • Added client protocol visibility in frps dashboard and `/api/clients` API showing negotiated protocol version
  • Wire protocol v2 negotiates AEAD control-channel encryption with support for xchacha20-poly1305 and aes-256-gcm algorithms
Deprecated 1
  • Wire protocol v1 is deprecated and will be removed in v0.78.0 or later when v2 becomes the default
Compatibility Policy

Starting with v0.69.0, each minor release is supported until there are nine newer minor releases. For example, v0.69.0 will be supported until v0.78.0 is released. Within this window, frpc v0.69.0 is guaranteed to work with any frps from v0.61.0 to v0.77.0, and vice versa. Patch releases within the same minor are always compatible. Versions outside the support window may continue to work on a best-effort basis, but compatibility is no longer guaranteed.

For mixed-version deployments, upgrade frps first, then upgrade frpc. This keeps the server side ready for newer client-side protocol behavior before clients start using it.

Notes

This release introduces wire protocol v2 as a transition path for future frpc/frps protocol changes. The existing wire protocol is difficult to extend without compatibility risk, and upcoming changes, including replacing deprecated stream encryption methods, require a versioned protocol.

The default value of transport.wireProtocol remains v1 in this release. Users can keep the default for now. To test v2 early, upgrade both frpc and frps to versions that support it, then set transport.wireProtocol = "v2" in frpc. A v2-enabled frpc cannot connect to an older frps.

When transport.wireProtocol = "v2" is enabled, the control channel uses negotiated AEAD encryption after the login handshake. Both frpc and frps must be upgraded to this release to use v2.

v1 will be deprecated when v2 becomes the default in a future release. It will continue to be supported until v0.78.0 is released, and may be removed in v0.78.0 or later.

Features
  • Added transport.wireProtocol for frpc to select the internal message protocol used between frpc and frps. Supported values are v1 and v2.
  • Added client protocol visibility in the frps dashboard and /api/clients API. Online clients now report their negotiated protocol as v1 or v2.
  • Wire protocol v2 now negotiates AEAD control-channel encryption. Supported algorithms are xchacha20-poly1305 and aes-256-gcm; frpc advertises its preferred order based on local AES-GCM hardware support, and frps selects the first supported algorithm from that list.
View originalPermalink
How v0.69.0 went

v0.68.1

Changed 1
  • Proxy-style authentication failures now return 407 Proxy Authentication Required
Security 1
  • Fixed a configuration-dependent authentication bypass in HTTP proxies when routeByHTTPUser is used together with httpUser and httpPassword for proxy-style requests
Fixes
  • Fixed a configuration-dependent authentication bypass in type = "http" proxies when routeByHTTPUser is used together with httpUser / httpPassword. This affected proxy-style requests. Proxy-style authentication failures now return 407 Proxy Authentication Required.
View originalPermalink
How v0.68.1 went

v0.68.0

Added 2
  • Added a built-in store capability for frpc, including persisted store source, Store CRUD admin APIs with runtime reload, and Store management pages in the frpc web dashboard
  • Added noweb build tag to allow compiling without frontend assets
Changed 7
  • Kept proxy and visitor names as raw config names during completion, moving user-prefix handling to explicit wire-level naming logic
  • Build system now auto-detects missing web asset directories and skips embedding, allowing a fresh clone to build without running make web first
  • Dashboard gracefully returns 404 when assets are not embedded
  • Improved TOML config parsing errors to return immediately with parser position details including line and column numbers instead of falling through to YAML/JSON parsing
  • TOML type mismatches now report field-level errors without misleading line numbers
  • OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat
  • OIDC auth falls back to per-request token fetch when the provider omits expires_in
Features
  • Added a built-in store capability for frpc, including persisted store source ([store] path = "..."), Store CRUD admin APIs (/api/store/proxies*, /api/store/visitors*) with runtime reload, and Store management pages in the frpc web dashboard.
Improvements
  • Kept proxy/visitor names as raw config names during completion; moved user-prefix handling to explicit wire-level naming logic.
  • Added noweb build tag to allow compiling without frontend assets. make build now auto-detects missing web/*/dist directories and skips embedding, so a fresh clone can build without running make web first. The dashboard gracefully returns 404 when assets are not embedded.
  • Improved config parsing errors: for .toml files, syntax errors now return immediately with parser position details (line/column when available) instead of falling through to YAML/JSON parsing, and TOML type mismatches report field-level errors without misleading line numbers.
  • OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat. Falls back to per-request fetch when the provider omits expires_in.
View originalPermalink
How v0.68.0 went

v0.67.0

Added 2
  • frpc now supports a clientID option to uniquely identify client instances
  • Server dashboard displays all connected clients with their online/offline status, connection history, and metadata
Changed 1
  • Redesigned the frp web dashboard with a modern UI, dark mode support, and improved navigation
Fixed 1
  • Fixed UDP proxy protocol sending header on every packet instead of only the first packet of each session
Features
  • frpc now supports a clientID option to uniquely identify client instances. The server dashboard displays all connected clients with their online/offline status, connection history, and metadata, making it easier to monitor and manage multiple frpc deployments.
  • Redesigned the frp web dashboard with a modern UI, dark mode support, and improved navigation.
Fixes
  • Fixed UDP proxy protocol sending header on every packet instead of only the first packet of each session.
View originalPermalink
How v0.67.0 went

v0.66.0

Added 3
  • HTTPS proxies now support load balancing groups with loadBalancer.group and loadBalancer.groupKey to share the same custom domain and distribute traffic across multiple backend services
  • Individual frpc proxies and visitors now accept an enabled flag (defaults to true) to disable specific entries without relying on the global start list
  • OIDC authentication now supports a tokenSource field with type = "file" to read a token from a file or type = "exec" to run an external command and capture its stdout as the token, requiring the --allow-unsafe=TokenSourceExec CLI flag
Changed 1
  • VirtualNet implemented intelligent reconnection with exponential backoff, increasing reconnect interval from 60s to 300s max when connection errors occur repeatedly, while normal disconnections reconnect at 10s intervals
Fixed 1
  • Fix deadlock issue when TCP connection is closed that previously caused sending messages to block forever if the connection handler had already stopped
Features
  • HTTPS proxies now support load balancing groups. Multiple HTTPS proxies can be configured with the same loadBalancer.group and loadBalancer.groupKey to share the same custom domain and distribute traffic across multiple backend services, similar to the existing TCP and HTTP load balancing capabilities.
  • Individual frpc proxies and visitors now accept an enabled flag (defaults to true), letting you disable specific entries without relying on the global start list—disabled blocks are skipped when client configs load.
  • OIDC authentication now supports a tokenSource field to dynamically obtain tokens from external sources. You can use type = "file" to read a token from a file, or type = "exec" to run an external command (e.g., a cloud CLI or secrets manager) and capture its stdout as the token. The exec type requires the --allow-unsafe=TokenSourceExec CLI flag for security reasons.
Improvements
  • VirtualNet: Implemented intelligent reconnection with exponential backoff. When connection errors occur repeatedly, the reconnect interval increases from 60s to 300s (max), reducing unnecessary reconnection attempts. Normal disconnections still reconnect quickly at 10s intervals.
Fixes
  • Fix deadlock issue when TCP connection is closed. Previously, sending messages could block forever if the connection handler had already stopped.
View originalPermalink
How v0.66.0 went

v0.65.0

Added 3
  • Add NAT traversal configuration options for XTCP proxies and visitors to support disabling assisted addresses and avoid using slow VPN connections during NAT hole punching
  • Add OIDC client configuration options for custom TLS certificate verification and proxy settings, including trustedCaFile, insecureSkipVerify, and proxyURL for OIDC token endpoint connections
  • Add proxy_counts_detailed Prometheus metric that includes proxy type and proxy name labels for monitoring individual proxy connections
Features
  • Add NAT traversal configuration options for XTCP proxies and visitors. Support disabling assisted addresses to avoid using slow VPN connections during NAT hole punching.
  • Enhanced OIDC client configuration with support for custom TLS certificate verification and proxy settings. Added trustedCaFile, insecureSkipVerify, and proxyURL options for OIDC token endpoint connections.
  • Added detailed Prometheus metrics with proxy_counts_detailed metric that includes both proxy type and proxy name labels, enabling monitoring of individual proxy connections instead of just aggregate counts.
View originalPermalink
How v0.65.0 went

v0.64.0

Added 1
  • Support tokenSource for loading authentication tokens from files
Fixed 1
  • Fix SSH tunnel gateway incorrectly binding to proxyBindAddr instead of bindAddr, which caused external connections to fail when proxyBindAddr was set to 127.0.0.1
Features
  • Support tokenSource for loading authentication tokens from files.
Fixes
  • Fix SSH tunnel gateway incorrectly binding to proxyBindAddr instead of bindAddr, which caused external connections to fail when proxyBindAddr was set to 127.0.0.1.
View originalPermalink
How v0.64.0 went
View all

Discussion