Self-hosted tool that automatically creates Cloudflare Tunnel routes, DNS records and Access policies from Docker container labels.
cloudflare/cloudflared
Command-line client for Cloudflare Tunnel that connects your origin servers to the Cloudflare network without opening inbound firewall ports.
Open-source alternative to:ngrok
- Stars
- 16,233
- Forks
- 1,496
- Open issues
- 568
- Last commit
- yesterday
What is it?
cloudflared is the daemon behind Cloudflare Tunnel. It runs next to your origin, such as a web server, and makes outbound connections to the Cloudflare network. Cloudflare then sends client requests back through that connection, so the origin can stay closed to inbound traffic.
Beyond HTTP and WebSocket proxying, cloudflared can also reach tunneled origins for Layer 4 TCP traffic such as SSH or RDP through its access subcommands. Tunnels can be routed through public DNS records, a Cloudflare Load Balancer, or WARP client private network traffic. A TryCloudflare mode is available for testing without a Cloudflare-managed domain.
The client is written in Go and ships as standalone binaries, Docker images, and Debian, RPM, and Homebrew packages, with Windows and macOS builds also provided.
Key features
- 01Creates outbound-only connections so origins need no inbound firewall holes.
- 02Proxies HTTP and WebSocket traffic from Cloudflare to local origins.
- 03Provides Layer 4 TCP access for SSH, RDP and similar protocols via the access command.
- 04Routes traffic through DNS records, Cloudflare Load Balancers, or WARP private networks.
- 05Offers TryCloudflare for temporary testing without a managed domain.
- 06Distributed as binaries, Docker images, and Debian, RPM, and Homebrew packages.
Use cases
- Exposing a self-hosted web app or API without opening ports on the home or office firewall.
- Giving remote staff SSH or RDP access to internal servers through Cloudflare Zero Trust.
- Quickly sharing a local development server with a public URL for testing.
Quick start
- 1
Install the required Go version listed in the README
- 2
Build cloudflared from source
make cloudflared - 3
Or download a prebuilt binary, Docker image, or package from the releases page
Things to know
- You must add a website to your Cloudflare account and point its nameservers to Cloudflare before using Tunnel, though TryCloudflare offers a test path without one.
- Cloudflare only supports versions released within the past year, and older versions may break.
Topics
FAQ
- What is cloudflared?
- Command-line client for Cloudflare Tunnel that connects your origin servers to the Cloudflare network without opening inbound firewall ports. cloudflared is the daemon behind Cloudflare Tunnel. It runs next to your origin, such as a web server, and makes outbound connections to the Cloudflare network. Cloudflare then sends client requests back through that connection, so the origin can stay closed to inbound traffic.
- Is cloudflared free to use? What license does it have?
- cloudflared is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is cloudflared still maintained?
- Actively maintained. The last commit to cloudflared was on Oct 23, 2026.
- What can I use cloudflared for?
- Exposing a self-hosted web app or API without opening ports on the home or office firewall. Giving remote staff SSH or RDP access to internal servers through Cloudflare Zero Trust. Quickly sharing a local development server with a public URL for testing.
- How do I install cloudflared?
- Install the required Go version listed in the README Build cloudflared from source: make cloudflared Or download a prebuilt binary, Docker image, or package from the releases page
- Where can I get cloudflared?
- The source code and installation instructions are on GitHub: https://github.com/cloudflare/cloudflared
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A fast reverse proxy that exposes local servers behind NAT or firewalls to the internet over TCP, UDP, HTTP and HTTPS.
Open-source ngrok alternative that exposes a local HTTP server at a public HTTPS URL with one command.
A self-hosted tunnel written in Go that exposes localhost services to the internet through your own domain and server.
Secure sharing of local web services, files and TCP/UDP resources over zero-trust networking, with no firewall or port-forwarding setup.
A netcat-like CLI and Go library that connects two machines over Tailscale's WireGuard data plane without needing a Tailscale account or control plane.