frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports TCP and UDP, as well as HTTP and HTTPS protocols, enabling requests to be forwarded to internal services via domain name.
Links:
The following is an example of making a WebDAV server hosted on the client's hardware in a home network with dynamic IP available to the world through HTTP via an frp proxy running on the server.
One can also add a TLS termination proxy in the mix to secure the connection.
Server configuration:
# /etc/frp/frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000
vhostHTTPPort = 80
auth.token = "TOKEN"
subDomainHost = "frp.example.com"Client configuration:
# /etc/frp/frpc.toml
user = "laptop"
serverAddr = "frp.example.com"
serverPort = 7000
loginFailExit = false
auth.method = "token"
auth.token = "TOKEN"
[[proxies]]
name = "webdav"
type = "http"
localPort = 4918
subdomain = "webdav"