KeyzHub
19Keys Β· community archive

tailscale-setup

Put all your machines on one private encrypted network: install, MagicDNS, Tailscale SSH, serve your dashboards to your phone.

β—† 1 commit history main
UNLOCK THE CODE

Read the overview free. Drop your email once to unlock the clone command and source across the whole archive.

One email unlocks every project here. No spam.

main
Β· .gitignore
Β· README.md
Β· SETUP.md
README

Tailscale β€” your machines, one private network

Tailscale puts every device you own β€” laptop, Mac Mini, phone, a server anywhere β€” on one private, encrypted network (WireGuard under the hood). No port forwarding, no router configuration, no exposing anything to the public internet. Your laptop can SSH into your Mini from a coffee shop as if they were on the same desk.

This is the connective tissue of a sovereign setup: once your always-on machine (see /ai-agents-setup) is on your tailnet, every dashboard, agent, and file on it is reachable from your phone β€” privately.

Free tier: up to 3 users and 100 devices β€” more than enough for a personal empire. No card needed.


Step 1 β€” Install on every device

macOS:

brew install --cask tailscale

(or the Mac App Store / tailscale.com/download)

iPhone / Android: install the Tailscale app from your app store.

Linux (a server, a Pi):

curl -fsSL https://tailscale.com/install.sh | sh

Windows: installer at tailscale.com/download.

Step 2 β€” Log in (same account everywhere)

Open the app (or run sudo tailscale up on Linux) and log in β€” Google, GitHub, Microsoft, or passkey. Every device you log into with the same account joins the same tailnet automatically. That's the whole setup.

Check it worked:

tailscale status

Success looks like: a list of your devices, each with a 100.x.y.z address and a name. From any device, ping another:

tailscale ping your-other-machine

Step 3 β€” MagicDNS: names, not numbers

Tailscale gives every device a stable name (your-machine.tail-xxxx.ts.net, plus the short name inside your tailnet). Use names everywhere; the 100.x addresses are for scripts.

ssh you@your-mini          # works from anywhere, no IP memorized

Step 4 β€” Tailscale SSH (skip key management entirely)

On the machine you want to reach:

sudo tailscale up --ssh

Now any device on your tailnet can SSH in, authenticated by Tailscale identity β€” no key files to copy around. (Your existing SSH keys keep working too.)

Step 5 β€” tailscale serve: your dashboards on your phone

The killer feature for a builder. A dev server running on your Mac becomes an HTTPS URL reachable from every device on your tailnet:

tailscale serve 8971

That takes whatever runs at localhost:8971 and serves it at https://your-machine.tail-xxxx.ts.net β€” with a real certificate, visible ONLY to your devices. Open it on your phone from anywhere. Check with:

tailscale serve status

This is how you check your dashboards from the couch: the server never touches the public internet.

Step 6 β€” tailscale funnel: public, when you mean it

Same syntax, opposite audience β€” tailscale funnel 8971 publishes to the whole internet through Tailscale's relays. Useful for quick demos. Treat anything funneled as production: it is public. For a permanent public site, a real deploy (the way this hub runs) beats a funnel.


The pattern this unlocks

You have Add Tailscale and get
A Mac Mini running agents 24/7 SSH + dashboards from your laptop and phone, anywhere
A local AI (Ollama) on one machine Every device can hit its API privately β€” your own private AI endpoint
A dev server on your laptop A phone-viewable HTTPS URL in one command
Family/team machines A private network with access controls (ACLs) you write

Rules

  1. Serve = private, funnel = public. Know which one you typed.
  2. The tailnet is an extension of your machines β€” a device on it can reach everything you share. Only enroll devices you control.
  3. Lock down as you grow: Tailscale ACLs let you say exactly which device may reach which port. Default-open is fine for one person; write ACLs before you invite anyone else.

Part of KeyzHub β€” take the code, build your own. Pairs with /ai-agents-setup and /local-ai-setup.