Cloudflare Docs
Cloudflare Zero Trust
Edit this page on GitHub
Set theme to dark (⇧+D)

Set up a tunnel locally

Follow this step-by-step guide to get your first tunnel up and running using the CLI.

​​ Prerequisites

Before you start, make sure you:

​​ 1. Download and install cloudflared

  1. Download cloudflared on your machine. Visit the downloads page to find the right package for your OS.

  2. Rename the executable to cloudflared.exe

  3. In PowerShell, change directory to your Downloads folder and run .\cloudflared.exe --version. It should output the version of cloudflared. Note that cloudflared.exe could be cloudflared-windows-amd64.exe or cloudflared-windows-386.exe if you have not renamed it.

PS C:\Users\Administrator\Downloads\cloudflared-stable-windows-amd64> .\cloudflared.exe --version

To download and install cloudflared:

$ brew install cloudflared

Alternatively, you can download the latest Darwin amd64 release directly.

Debian and Ubuntu APT

Use the apt package manager to install cloudflared on compatible machines.

  1. Add Cloudflare’s package signing key:
$ sudo mkdir -p --mode=0755 /usr/share/keyrings
$ curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
  1. Add Cloudflare’s apt repo to your apt repositories:
$ echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
  1. Update repositories and install cloudflared:
$ sudo apt-get update && sudo apt-get install cloudflared

RHEL RPM

Use the rpm package manager to install cloudflared on compatible machines.

  1. Add Cloudflare’s repository:
$ curl -fsSL https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
  1. Update repositories and install cloudflared:
$ sudo yum update && sudo yum install cloudflared

Arch Linux

cloudflared is in the Arch Linux community repository. Use pacman to install cloudflared on compatible machines.

$ pacman -Syu cloudflared

Other

Alternatively you can download the cloudflared binary or the linux packages to your machine and install manually. Visit the downloads page to find the right package for your OS.

To build the latest version of cloudflared from source:

$ git clone https://github.com/cloudflare/cloudflared.git
$ cd cloudflared
$ make cloudflared
$ go install github.com/cloudflare/cloudflared/cmd/cloudflared

Depending on where you installed cloudflared, you can move it to a known path as well.

$ mv /root/cloudflared/cloudflared /usr/bin/cloudflared

​​ 2. Authenticate cloudflared

$ cloudflared tunnel login

Running this command will:

  • Open a browser window and prompt you to log in to your Cloudflare account. After logging in to your account, select your hostname.
  • Generate an account certificate, the cert.pem file, in the default cloudflared directory.

​​ 3. Create a tunnel and give it a name

$ cloudflared tunnel create <NAME>

Running this command will:

From the output of the command, take note of the tunnel’s UUID and the path to your tunnel’s credentials file.

Confirm that the tunnel has been successfully created by running:

$ cloudflared tunnel list

​​ 4. Create a configuration file

  1. In your .cloudflared directory, create a config.yml file using any text editor. This file will configure the tunnel to route traffic from a given origin to the hostname of your choice.

  2. Add the following fields to the file:

If you are connecting an application:

config.yml
url: http://localhost:8000
tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json

If you are connecting a private network:

config.yml
tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json
warp-routing:
enabled: true
  1. Confirm that the configuration file has been successfully created by running:

    $ cat config.yml

​​ 5. Start routing traffic

  1. Now assign a CNAME record that points traffic to your tunnel subdomain:

    • If you are connecting an application, route the service to a public hostname:
    $ cloudflared tunnel route dns <UUID or NAME> <hostname>
    • If you are connecting a private network, route an IP address or CIDR through the tunnel:
    $ cloudflared tunnel route ip add <IP/CIDR> <UUID or NAME>
  2. Confirm that the route has been successfully established:

    $ cloudflared tunnel route ip show

​​ 6. Run the tunnel

Run the tunnel to proxy incoming traffic from the tunnel to any number of services running locally on your origin.

$ cloudflared tunnel run <UUID or NAME>

If your configuration file has a custom name or is not in the .cloudflared directory, add the --config flag and specify the path.

$ cloudflared tunnel --config /path/your-config-file.yml run <UUID or NAME>

​​ 7. Check the tunnel

Your tunnel configuration is complete! If you want to get information on the tunnel you just created, you can run:

$ cloudflared tunnel info <UUID or NAME>

You can now route traffic to your tunnel using Cloudflare DNS or determine who can reach your tunnel with Cloudflare Access.