Cloudflare Tunnel · Costs & setup
Cloudflare Tunnel: what is free, what costs extra?
Share a local app for a demo or give your home server a fixed address. Start with the costs, then choose the setup that fits.
The short answer
The tunnel can be free. Running the website is a separate cost.
Cloudflare offers free tunnels. A temporary Quick Tunnel needs no account or domain. For a fixed public hostname, plan for a Cloudflare account, a domain and a computer that stays online.
- Tunnel
- Free optionsQuick Tunnels for tests; named tunnels are also available on the free plan.
- Domain
- For your own addressPay the registrar's registration and renewal fees. A temporary preview needs no domain.
- Computer & electricity
- While the site is onlineYour app and the connector keep running. Include power, maintenance and backups in the budget.
- Optional extras
- Only when neededA VPN, paid Access features or a VPS are separate choices, not prerequisites for every tunnel.
Checked September 24, 2026. Cloudflare plans · Quick Tunnel limits
Choose your route
Start with a click or set it up yourself?
Your tunnel. One click.
Want a tunnel without typing commands or editing configuration files? GhostlyShare automatically detects running local web apps. Click Go Public and share the HTTPS link.
Start with GhostlyShare ↓Configure your own tunnel.
Prefer to manage cloudflared yourself? The Windows guide walks you through a named tunnel with your own domain, console commands and a background service.
Follow the Windows setup ↓GhostlyShare · Windows & Linux
A Cloudflare Tunnel without the console.
GhostlyShare is the easiest way to get started in this guide. The desktop app handles the tunnel setup for you. For a temporary link, you need no console commands, configuration files or Cloudflare account.
- Start your appRun your website or API locally. GhostlyShare detects reachable web apps automatically.
- Click Go PublicChoose the app you want to share. Add a password or a link expiry when needed.
- Send the linkCopy the HTTPS URL or scan the QR code on your phone. Keep your computer and app running.
Free temporary links. No account, email or subscription required.

Temporary Quick Tunnels are for development and testing, with no uptime guarantee. Cloudflare currently limits them to 200 concurrent requests and does not support Server-Sent Events (SSE). Read the limits
What a tunnel protects
Visitors connect to Cloudflare instead of your router. With the tunnel configured correctly, your home IP stays out of public DNS records.
Your domain points to Cloudflare, so a DNS lookup does not reveal your home IP.
Your computer opens the connection to Cloudflare. You do not need to forward a router port for the website.
Your app can listen on localhost while Cloudflare makes it reachable through the tunnel.
The tunnel hides your home IP from visitors. Cloudflare and any VPN provider you use still have information about the connection.
Who can see what?
A tunnel does not make your project anonymous. Here is what visitors and service providers can still learn.
Visitors
- Visitors see your public address and the content, headers and cookies your website sends.
- When DNS points only to the tunnel, visitors normally see Cloudflare IP addresses rather than your home IP.
- Details you publish on the site, such as a name or contact address, can still identify you.
Cloudflare
- For a named tunnel, Cloudflare knows your account, domain, tunnel ID, configured addresses and connection status.
- Cloudflare sees the IP used by cloudflared: your home IP, or the VPN server IP if the connection runs through a VPN.
- A VPN changes that IP address. Your Cloudflare account remains associated with the named tunnel.
VPN provider
- Your VPN provider can see that your device connects to Cloudflare.
- Email and payment details in your VPN account can still link the account to you.
- You also need to trust the VPN provider with information about your connection.
Accounts and personal details
- Domain registration, payments and reused usernames can link the project to you.
- Shared accounts and browser profiles can connect your admin activity with other services you use.
- Check which personal details you share across the services you use. A tunnel does not remove them.
How a request reaches your website
Cloudflare receives the public request and forwards it through cloudflared to your local web server.
Opens your website address and connects to Cloudflare.
Handles HTTPS and forwards the request through the tunnel.
Keeps the connection from your Windows computer to Cloudflare open.
Answers the request locally, without an open router port.
The same connection, with a VPN in between
The VPN sits between cloudflared on your computer and Cloudflare.
- Visitor
Opens your website.
- Cloudflare
Sees the VPN server IP.
- VPN server
Forwards the tunnel connection.
Your home IP stays behind the VPN. - cloudflared.exe
Runs on your computer.
- Local website
Answers the request.
What is cloudflared.exe on Windows?
cloudflared.exe connects your Windows computer to Cloudflare and forwards requests to your local app. It manages the tunnel; it does not replace a VPN.
Sign in to Cloudflare, create a named tunnel and assign your own address.
The connector maintains several connections so a single connection failure does not necessarily interrupt the tunnel.
Use the configuration file to forward app.example.com to http://localhost:3000.
Test in PowerShell first. Set up a Windows service when the tunnel should keep running after you sign out.
Cloudflare Tunnel also supports services such as SSH and RDP. This guide covers websites.
Official instructions: Cloudflare local tunnel guide and the Windows service guide.
Windows setup: cloudflared.exe step by step
This path assumes a website already works locally and your domain is already using Cloudflare DNS. The example below uses app.example.com and a local service on port 3000.
Use PowerShell 7 for every command below. Replace the sample hostname, tunnel name, and local service before you copy anything.
Step 1: define the values you will reuse
Start in PowerShell 7 and replace the sample hostname, tunnel name, and local service with your own values before you continue.
$TunnelName = "ghostly-home-site"
$PublicHostname = "app.example.com"
$LocalService = "http://localhost:3000"
$CloudflaredHome = "C:\Cloudflared\bin"
$ConfigPath = "$env:USERPROFILE\.cloudflared\config.yml"
Step 2: prepare cloudflared.exe
Rename the downloaded binary, create a dedicated folder for it, and copy the executable into that folder.
Rename-Item "$env:USERPROFILE\Downloads\cloudflared-windows-amd64.exe" "cloudflared.exe"
New-Item -ItemType Directory -Force $CloudflaredHome
Copy-Item "$env:USERPROFILE\Downloads\cloudflared.exe" "$CloudflaredHome\cloudflared.exe"
Step 3: check the installation
Move into the folder and confirm that cloudflared.exe starts cleanly before you authenticate anything.
Set-Location $CloudflaredHome
.\cloudflared.exe --version
Step 4: sign in and select your domain
This opens the browser so you can approve the zone. The account certificate is written into your default .cloudflared directory.
.\cloudflared.exe tunnel login
Step 5: create the tunnel
Create the tunnel, then paste the UUID from the command output into the variable below so the next commands can reuse it.
.\cloudflared.exe tunnel create $TunnelName
$TunnelId = "<paste-the-tunnel-uuid-from-the-create-output>"
Step 6: write the configuration
These commands build the local config.yml in your Windows profile so the tunnel knows which public hostname should forward to which local service.
Set-Content $ConfigPath "tunnel: $TunnelId"
Add-Content $ConfigPath "credentials-file: $env:USERPROFILE\.cloudflared\$TunnelId.json"
Add-Content $ConfigPath ""
Add-Content $ConfigPath "ingress:"
Add-Content $ConfigPath " - hostname: $PublicHostname"
Add-Content $ConfigPath " service: $LocalService"
Add-Content $ConfigPath " - service: http_status:404"
Step 7: validate the configuration
Print the file once so you can check it, then let cloudflared validate the ingress rules before you publish DNS.
Get-Content $ConfigPath
.\cloudflared.exe tunnel ingress validate
Step 8: connect your domain
This tells Cloudflare which hostname should target the named tunnel before you start serving live traffic.
.\cloudflared.exe tunnel route dns $TunnelName $PublicHostname
.\cloudflared.exe tunnel info $TunnelName
Step 9: start and test the tunnel
Keep this PowerShell 7 window open while you test the site from another network. Stop it with Ctrl+C when you are done.
.\cloudflared.exe tunnel run $TunnelName
First check that the tunnel works in PowerShell. Then open PowerShell 7 as administrator to install and configure the service.
Service step 1: install the Windows service
Open PowerShell 7 as administrator and install the Cloudflared service.
Set-Location $CloudflaredHome
.\cloudflared.exe service install
Service step 2: copy credentials and configuration
The Windows service runs under the system profile, so it needs its own .cloudflared folder with the certificate, tunnel credentials, and config.yml.
$SystemCloudflaredHome = "C:\Windows\System32\config\systemprofile\.cloudflared"
New-Item -ItemType Directory -Force $SystemCloudflaredHome
Copy-Item "$env:USERPROFILE\.cloudflared\cert.pem" "$SystemCloudflaredHome\cert.pem"
Copy-Item "$env:USERPROFILE\.cloudflared\$TunnelId.json" "$SystemCloudflaredHome\$TunnelId.json"
Set-Content "$SystemCloudflaredHome\config.yml" "tunnel: $TunnelId"
Add-Content "$SystemCloudflaredHome\config.yml" "credentials-file: $SystemCloudflaredHome\$TunnelId.json"
Add-Content "$SystemCloudflaredHome\config.yml" ""
Add-Content "$SystemCloudflaredHome\config.yml" "ingress:"
Add-Content "$SystemCloudflaredHome\config.yml" " - hostname: $PublicHostname"
Add-Content "$SystemCloudflaredHome\config.yml" " service: $LocalService"
Add-Content "$SystemCloudflaredHome\config.yml" " - service: http_status:404"
Service step 3: set the configuration path and start
Set ImagePath to use the configuration in the Windows system profile, then start the service.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Cloudflared" -Name ImagePath -Value "C:\Cloudflared\bin\cloudflared.exe --config=C:\Windows\System32\config\systemprofile\.cloudflared\config.yml tunnel run"
sc.exe start cloudflared
The Windows service needs its own certificate, tunnel credentials and config.yml in the system profile. ImagePath tells it which configuration to load.
Use a VPN with your tunnel
A VPN is optional. To hide your home IP from Cloudflare, connect cloudflared through the VPN and check what happens if the VPN disconnects.
Check the computer's public IP before starting the tunnel. It should be the VPN server IP.
Enable and test the VPN kill switch. Without it, cloudflared may reconnect directly through your internet provider.
Bind the app to localhost where possible. Avoid opening an additional public route to the web server.
Debug logs can contain URLs and request headers. Use them only for troubleshooting and check them before sharing.
Choose a VPN
Find a VPN that fits your setup
Compare supported devices, connection stability and kill-switch features. The direct link below is an affiliate link; the directory lists more providers.
Featured provider: Proton VPN
If the tunnel stops, visitors normally see a Cloudflare error. Do not replace the tunnel DNS record with your home IP to work around the outage.
Check your setup
Test access from outside your network and check that the connection behaves as intended during an outage.
Look up the public DNS records. They should point to Cloudflare, not your home IP.
Check the machine's public IP first so you know what Cloudflare will see on the connector side.
Test from mobile data or another external network so you are not fooled by a local routing shortcut.
Disconnect the VPN during a test. The kill switch should prevent cloudflared from connecting through your home IP.
FAQ
Is Cloudflare Tunnel free for home hosting?
Yes, free tunnel options are available. For a fixed hostname, budget separately for your domain, electricity and host maintenance. Paid Access features or a VPN are optional.
Do I need an account to share a preview?
Temporary GhostlyShare links require no account, email or subscription. Using your own domain is a separate setup that requires a Cloudflare account and a domain managed there.
Does a preview link stay online when I close my computer?
No. Your computer, local app and GhostlyShare must keep running. Use a named tunnel on an always-on host for an ongoing service with a fixed address.
Can visitors see my home IP?
Normally they should not if your DNS only points to Cloudflare and you have not exposed the origin in another way. Visitors reach the Cloudflare edge and the public hostname, not the residential IP behind the tunnel.
Do I need to forward a router port?
No. Your computer initiates the connection to Cloudflare. The website does not need an incoming router port.
What does Cloudflare know about me?
For a named tunnel, Cloudflare knows your account, domain and connection IP. A VPN can replace your home IP with the VPN server IP, but the account remains associated with the tunnel. Account-free Quick Tunnels still expose the connection IP to Cloudflare.
Related guides
Understand what Cloudflare Tunnel hides, what Cloudflare and a VPN provider can still see, and why Tunnel plus VPN is not automatic anonymity.
GuideCloudflare Tunnel Raspberry Pi Home Server SetupSet up Cloudflare Tunnel on a Raspberry Pi for an always-on home server. Install cloudflared, publish a hostname, run systemd, and know when GhostlyShare is simpler.
GuideWhat is a VPN? privacy, security, and anonymity explainedRead the network layer basics before you depend on a VPN to hide the source IP that Cloudflare sees.
GuideCheck your online fingerprint and tracking exposureUse the fingerprint page to reduce browser-side clues that can still correlate your admin sessions.
ToolGhostlyShare: share localhost on Windows and LinuxUse the simpler desktop route when you want a public preview link without manually building the full Cloudflare workflow.
ToolGhostlyDDns: keep Cloudflare DNS records in syncUse dynamic DNS when you choose a DNS-based self-hosting path instead of a tunnel-only setup.
ToolGhostlyHosting: deploy Blazor on an Ubuntu VPSUse the VPS route when you prefer a public server over always-on hardware at home.
ToolGhostlyBridge: manage servers and tunnel workflowsUse the desktop server workflow when a VPS, SSH, uploads, or tunnel management fits better than home hosting.
DirectoryVPN providers worldwide: compare audits, privacy, and fitUse the full VPN directory if you want to compare many providers before choosing one for the tunnel route.
