Skip to content

Windows

You can install cloudflared as a system service on Windows.

Configure cloudflared as a service

By default, Cloudflare Tunnel expects all of the configuration to exist in the %USERPROFILE%\.cloudflared\config.yml configuration file. At a minimum you must specify the following arguments to run as a service:

ArgumentDescription
tunnelThe UUID of your tunnel
credentials-fileThe location of the credentials file for your tunnel

Run cloudflared as a service

  1. Download the latest cloudflared version.

  2. Create a new directory:

    Terminal window
    C:\Cloudflared\bin
  3. Copy the .exe file you downloaded in step 1 to the new directory and rename it to cloudflared.exe.

  4. Open CMD as an administrator and go to C:\Cloudflared\bin.

  5. Run this command to install cloudflared:

    Terminal window
    cloudflared.exe service install
  6. Next, run this command to create another directory:

    Terminal window
    mkdir C:\Windows\System32\config\systemprofile\.cloudflared
  7. Log in and authenticate cloudflared:

    Terminal window
    cloudflared.exe login
  8. The login command will generate a cert.pem file and save it to your user profile by default. Copy the file to the .cloudflared folder created in step 5 using this command:

    Terminal window
    copy C:\Users\%USERNAME%\.cloudflared\cert.pem C:\Windows\System32\config\systemprofile\.cloudflared\cert.pem
  9. Next, create a tunnel:

    Terminal window
    cloudflared.exe tunnel create <Tunnel Name>

    This will generate a credentials file in .json format.

  10. Create a configuration file with the following content:

    tunnel: <Tunnel ID>
    credentials-file: C:\Windows\System32\config\systemprofile\.cloudflared\<Tunnel-ID>.json
    # Uncomment the following two lines if you are using self-signed certificates in your origin server
    # originRequest:
    # noTLSVerify: true
    ingress:
    - hostname: app.mydomain.com
    service: https://internal.mydomain.com
    - service: http_status:404
    logfile: C:\Cloudflared\cloudflared.log
  11. Copy the credentials file to the folder created in step 6:

    Terminal window
    copy C:\Users\%USERNAME%\.cloudflared\<Tunnel-ID>.json C:\Windows\System32\config\systemprofile\.cloudflared\<Tunnel-ID>.json
  12. Validate the ingress rule entries in your configuration file using the command:

    Terminal window
    cloudflared.exe tunnel ingress validate
  13. In the Registry Editor, go to Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cloudflared.

  14. In the Cloudflared registry entry, modify ImagePath to point to the cloudflared.exe and config.yml files. Make sure that there are no extra spaces or characters while you modify the registry entry, as this could cause problems with starting the service.

    Terminal window
    C:\Cloudflared\bin\cloudflared.exe --config=C:\Users\%USERNAME%\.cloudflared\config.yml tunnel run
  15. If the service does not start, run the following command from C:\Cloudflared\bin:

    Terminal window
    sc start cloudflared

    You will see the output below:

    SERVICE_NAME: cloudflared
    TYPE : 10 WIN32_OWN_PROCESS
    STATE : 2 START_PENDING
    (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE : 0 (0x0)
    SERVICE_EXIT_CODE : 0 (0x0)
    CHECKPOINT : 0x0
    WAIT_HINT : 0x7d0
    PID : 3548
    FLAGS :

Next steps

You can now route traffic through your tunnel. If you add IP routes or otherwise change the configuration, restart the service to load the new configuration:

Terminal window
sc stop cloudflared
sc start cloudflared