452f8cef79
* Allow partial reads from a GorillaConn; add SetDeadline (from net.Conn) The current implementation of GorillaConn will drop data if the websocket frame isn't read 100%. For example, if a websocket frame is size=3, and Read() is called with a []byte of len=1, the 2 other bytes in the frame are lost forever. This is currently masked by the fact that this is used primarily in io.Copy to another socket (in ingress.Stream) - as long as the read buffer used by io.Copy is big enough (it is 32*1024, so in theory we could see this today?) then data is copied over to the other socket. The client then can do partial reads just fine as the kernel will take care of the buffer from here on out. I hit this by trying to create my own tunnel and avoiding ingress.Stream, but this could be a real bug today I think if a websocket frame bigger than 32*1024 was received, although it is also possible that we are lucky and the upstream size which I haven't checked uses a smaller buffer than that always. The test I added hangs before my change, succeeds after. Also add SetDeadline so that GorillaConn fully implements net.Conn * Comment formatting; fast path * Avoid intermediate buffer for first len(p) bytes; import order |
||
---|---|---|
.mac_resources | ||
.teamcity | ||
carrier | ||
certutil | ||
cmd/cloudflared | ||
component-tests | ||
config | ||
connection | ||
edgediscovery | ||
fips | ||
h2mux | ||
hello | ||
ingress | ||
logger | ||
metrics | ||
origin | ||
overwatch | ||
signal | ||
socks | ||
ssh_server_tests | ||
sshgen | ||
teamnet | ||
tlsconfig | ||
token | ||
tunneldns | ||
tunnelrpc | ||
tunnelstore | ||
validation | ||
vendor | ||
watcher | ||
websocket | ||
.docker-images | ||
.dockerignore | ||
.gitignore | ||
CHANGES.md | ||
Dockerfile | ||
LICENSE | ||
Makefile | ||
README.md | ||
RELEASE_NOTES | ||
cfsetup.yaml | ||
cloudflared_man_template | ||
dev.Dockerfile | ||
github_message.py | ||
github_release.py | ||
go.mod | ||
go.sum | ||
jet.yaml | ||
postinst.sh | ||
postrm.sh | ||
wix.json |
README.md
Argo Tunnel client
Contains the command-line client for Argo Tunnel, a tunneling daemon that proxies any local webserver through the Cloudflare network. Extensive documentation can be found in the Argo Tunnel section of the Cloudflare Docs.
Before you get started
Before you use Argo Tunnel, you'll need to complete a few steps in the Cloudflare dashboard. The website you add to Cloudflare will be used to route traffic to your Tunnel.
Installing cloudflared
Downloads are available as standalone binaries, a Docker image, and Debian, RPM, and Homebrew packages. You can also find releases here on the cloudflared
GitHub repository.
- You can install on macOS via Homebrew or by downloading the latest Darwin amd64 release
- Binaries, Debian, and RPM packages for Linux can be found here
- A Docker image of
cloudflared
is available on DockerHub - You can install on Windows machines with the steps here
User documentation for Argo Tunnel can be found at https://developers.cloudflare.com/cloudflare-one/connections/connect-apps
Creating Tunnels and routing traffic
Once installed, you can authenticate cloudflared
into your Cloudflare account and begin creating Tunnels that serve traffic for hostnames in your account.
- Create a Tunnel with these instructions
- Route traffic to that Tunnel with DNS records in Cloudflare or with a Cloudflare Load Balancer
TryCloudflare
Want to test Argo Tunnel before adding a website to Cloudflare? You can do so with TryCloudflare using the documentation available here.
Deprecated versions
Cloudflare currently supports all versions of cloudflared
. Starting on March 20, 2021, Cloudflare will no longer support versions released prior to 2020.5.1.
All features available in versions released prior to 2020.5.1 are available in current versions. Breaking changes unrelated to feature availability may be introduced that will impact versions released prior to 2020.5.1. You can read more about upgrading cloudflared
in our developer documentation.
Version(s) | Deprecation status |
---|---|
2020.5.1 and later | Supported |
Versions prior to 2020.5.1 | Will no longer be supported starting March 20, 2021 |