Services and SSH

Choose Serve, sharing, or Funnel

Publish a loopback service inside the tailnet with Serve and distinguish it from device sharing and public Internet exposure.

8 minute lesson

~~~

tailscale serve exposes local content or a local server to permitted tailnet users over a tailnet HTTPS name.

You built a loopback service in a previous lesson. Serve is the piece that publishes it, privately, with a real HTTPS certificate for the device’s ts.net name.

Serve: private to the tailnet

tailscale serve --bg localhost:3000
tailscale serve status
https://lab-server.tail4a5b6.ts.net/
|-- proxy http://localhost:3000

Serve stays private to the tailnet. Only devices in your tailnet, subject to your policy, can reach that URL. The --bg flag keeps the proxy running in the background instead of holding your terminal.

Open the reported HTTPS URL from your laptop. TLS works out of the box because Tailscale provisions a certificate for the device name.

Sharing: one device, one invited user

Sharing gives a specific external Tailscale user access to a device. You send an invite, they accept from their own tailnet, and your policies still control what they can do on it. Good for “my collaborator needs the staging box” without merging two networks.

Funnel: the public Internet

Funnel is different: it publishes a local service to the public Internet. Anyone with the URL can reach it. No tailnet membership, no identity, nothing. Treat enabling Funnel with the same seriousness as opening a port on your router, because that is what it means. If the app behind it has weak or missing authentication, you just published that weakness to the world.

Choose the smallest audience and remember that application authentication may still be required. Private network does not mean logged in.

Practice the full cycle

Enable Serve, open the reported HTTPS URL from your laptop, test a denied user if available, then turn Serve off and confirm the route closes:

tailscale serve off
tailscale serve status
# No serve config

Publishing should be reversible, and you should know where the off switch is before you need it.

Lesson completed

Take this course offline

Get every free book and course as PDF and EPUB files.

Get the download library →