Teitunnel

Concepts

Choose how to share

Quick Share, a share on your domain, a route, a Snapshot, a local domain or a private network: what each one is, when to use it, what it needs and what it costs, side by side.

Teitunnel has several ways to make something on your computer reachable. They differ in how long the address lasts, who can open it, whether your computer has to be on, and what they need from Cloudflare. This page helps you pick one; each links to its full guide.

The short answer

  • Someone should look at it now, and the link can die afterwards: Quick Share.
  • The same address every time, for a session (webhooks, a demo you give often): a share on your domain.
  • It should stay up, on this computer or a server: a route.
  • It's a set of files and must stay online while your computer is off: a Snapshot.
  • Only you, on this computer, but over real HTTPS: a local domain.
  • Only your team, and it isn't a website (a NAS, a database, a whole home network): a private network, or an SSH or TCP route.

Side by side

Quick ShareShare on your domainRouteSnapshot
Addressquiet-river-lamp-orbit.trycloudflare.com, new each timedemo.yourhost.com, yoursapp.yourhost.com, yourspreview.yourhost.com or a workers.dev address
LastsUntil you stop it, its time is up, or Teitunnel quitsThe sameUntil you remove itUntil you delete it, or its Delete after date
Your computer must be onYesYesYes, or run it on a serverNo
What it servesA live service or a folderA live service or a folderA live service: HTTP, SSH, RDP, SMB, TCPStatic files
Cloudflare accountNot neededNeeded, with a domainNeeded, with a domainNeeded
Login in frontPassword page or secret link, on this computerCloudflare AccessCloudflare AccessPassword or Cloudflare Access
Keeps running after you quitNoNoWith Keep running when Teitunnel quitsAlways
CostFreeFreeFreeFree on the Workers free plan
In a terminalteitunnel share 3000teitunnel share 3000 --on demo.yourhost.comteitunnel route add app.yourhost.com 3000teitunnel snapshot publish ./dist

Every one of them goes through a reviewed plan when it changes your Cloudflare account, and none leaves a DNS record behind when it ends (how changes work).

Quick Share

A random trycloudflare.com address through one of Cloudflare's free Quick Tunnels.

  • Choose it when you need a link in seconds, you have no Cloudflare account yet, or the address doesn't matter: showing a colleague a branch, opening your site on a phone, a one-off webhook test.
  • Not when the address has to stay the same (you'd reconfigure every webhook), the service uses server-sent events (Quick Tunnels don't carry them), or more than a couple hundred requests arrive at once.

Share a local service · limits

Share on your domain

A temporary route at a name you choose, removed with its DNS record when the share ends. Names can come from your project and branch ({branch}.dev.yourhost.com).

  • Choose it when you'd use a Quick Share, but the address should be the same next time: webhook endpoints you register once, a demo link you send before each meeting, a preview per branch. It can require a login and run on a schedule.
  • Not when it should keep running without you: make it a route.

Sharing

Route

A hostname on your domain, permanently routed to a service on this computer's tunnel. It stays until you remove it and can keep running as a background service after you quit the app, or on a server with the teitunnel command.

  • Choose it when people rely on it: a self-hosted app, Home Assistant, a staging site, SSH or Remote Desktop to a machine, an API a mobile app calls.
  • Add to it a login, edge protection (bots, rate limits, headers, cache), an offline page for when the computer is off, a webhook inbox that keeps webhooks until it's back, or load balancing across machines.

Put a service on your domain · routes and tunnels · run modes

Snapshot

A static copy of a folder, a build or a running site, hosted as a Worker on your Cloudflare account. It keeps working with your computer off, and you can update it, roll back to an earlier version, protect it and let reviewers comment on it.

  • Choose it when what you show is files (a built site, a prototype, docs, a landing page) and it has to stay up without you: a client review over several days, a pull request preview.
  • Not when people need the live app: its API, its database, logging in to it.

Snapshots · previews from CI

Local domain

An HTTPS address such as https://shop.test for a service on this computer, with a trusted certificate. It never touches Cloudflare and isn't reachable from the internet; .local names can be opened by phones on the same Wi-Fi.

  • Choose it when you develop something that needs HTTPS or a proper hostname: secure cookies, OAuth redirects, service workers, several services on subdomains.
  • Not when anyone outside your network should open it.

Local domains

Private network or private hostname

People signed in to your Cloudflare Zero Trust organization with the WARP client reach addresses on this computer's network (192.168.1.0/24) or a private name (wiki.internal), as if they were there. Nothing gets a public address.

  • Choose it when your team needs many things on a network, or things that aren't web pages, and you don't want any of them public: a NAS, printers, a database, internal tools.
  • Not when the people who need it can't install WARP: use a route with a login instead.

Private networks and SSH · SSH to a home machine

Where it runs

Any of the live options (Quick Share, share on your domain, route) is served by a connector on the machine where the service runs:

WhereUse
The app on your computerEverything, while the app is open (window closed is fine).
The app, with Keep running when Teitunnel quitsRoutes that should outlive the app, and start at login.
teitunnel up or teitunnel serve on a server, in Docker or in CIRoutes that stay up when your laptop is closed.

See run modes and servers and containers.

Edit on GitHub

Last updated on

On this page