Connect every computer you own into one private network
My computers, phone, iPad and a little Linux server at home all sit on one private network. From anywhere, on cell data or hotel Wi-Fi, I can reach files on them, pull up a screen, or get to the server that runs my automation. I never opened a port on my router, and none of it has to pass through a cloud storage service. The tool is Tailscale, and the basic version takes about 20 minutes. This guide covers that, then how to add an always-on computer as a home server, including every place I got stuck. Read it, or grab the AI playbook and have Claude or ChatGPT walk you through it.
Two parts. Most people only need the first.
Nothing for Tailscale for personal use. Its free Personal plan covers up to 6 users with unlimited personal devices, for non-commercial use. Part 2 adds a little electricity, and a battery backup is the one purchase worth making early.
About 20 minutes for Part 1. An afternoon for a home server. Each service after that is an evening.
Tailscale gives each of your devices a private address on your own network (a "tailnet"). They find each other wherever they are, at home, on cell data, in a hotel. Traffic goes device to device, encrypted, and nothing is opened to the internet.
sudo apt install -y curl
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Open the link it prints and approve the machine.I planned to put Tailscale on a 2014 Mac mini and found out weeks later it couldn't run it: the app needs a newer macOS than that machine can install. Check that each device's OS can run the current Tailscale app before you plan around it. For an old computer that can't, Linux fixes it (step 7).
Typing tailscale status in the Mac Terminal says "command not found" even when Tailscale is working fine, because the Mac app keeps its command-line tool inside the app. It looks broken and isn't. Use the menu bar app, or add an alias to the full path.
Turn on MagicDNS in the Tailscale admin console (DNS tab). Then you reach machines by name, like studio or nas, instead of memorizing addresses.
100.x.y.z address works, it's a naming problem, not a network problem. That one test saves an hour.nas.your-tailnet.ts.net), not the short one.Once every device is on the tailnet, the normal file sharing built into your computers works from anywhere, as if you were at home.
smb://studio (use the machine's name).\\studio in File Explorer's address bar.smb://studio.A NAS is always on, so your files are there even when your computer is asleep. If you have a Synology:
admin, and turn on two-factor login.Just moving one file? Tailscale's Taildrop sends files straight between your own devices, like AirDrop that works across platforms and distances.
Reaching files over the internet is great for grabbing and saving. It is not a replacement for a local drive when you're editing. Editing 4K video straight off a network share feels broken, and it isn't the NAS's fault. Edit on a fast local SSD, archive to the NAS. And a Synology can't act as a plug-in drive for one computer: its USB ports are for drives going into it. For near-local speed at home, run a second Ethernet cable straight from your computer to the NAS.
vnc://studio.Because it all runs over your tailnet, none of these are reachable by anyone outside it.
That's Part 1. Everything you own is connected. Keep going if you want a computer that's always on doing work for you.
Any computer you can leave on works: a desktop that's already always on, a spare laptop (a dead screen doesn't matter), an old Mac mini, or a cheap mini PC. What matters is that it's quiet, sips power, and has a wired Ethernet port.
For a dedicated server, or an old computer whose OS can't run Tailscale anymore, Ubuntu's current long-term support (LTS) release is the easy default. It gets security updates for years and every tutorial covers it.
Option. Pick EFI Boot. On a PC, use the boot menu key (often F12).server.After picking EFI Boot, the screen stayed black for a minute or two. That's normal on old Macs. I almost restarted in the middle of it. And if no EFI Boot option shows up at all, the stick didn't write as bootable: rewrite it rather than troubleshooting the computer.
The installer gave my login account a different name than the computer's hostname. SSH needs the account name, not the computer name, so ssh server@server failed and looked exactly like a network problem. Write down both the username and the hostname the moment the install finishes.
Minimal Ubuntu doesn't include curl. The Tailscale install line failed with "curl not found" and then "tailscale: command not found", which reads like two problems but is one. Install curl from apt first. Not from snap, which sandboxes it.
On disk encryption: full disk encryption makes the machine stop at a passphrase prompt after every power cut, with nobody home to type it. If the server stores nothing sensitive itself (your files live on a NAS or are backed up elsewhere), skipping it can be the right trade. Decide on purpose.
A computer that sleeps is a computer you can't reach.
sudo systemctl mask sleep.target suspend.target \
hibernate.target hybrid-sleep.target
Then in Settings → Power, set Screen Blank to Never and Automatic Suspend to Off. If it has a lid, set closing it to do nothing.On a Linux server:
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo ufw allow ssh
sudo ufw enable
From your laptop: ssh yourusername@server. On a Mac server, turn on Remote Login in Sharing settings instead.
I pasted a whole block of commands into an SSH login at once. The extra lines got eaten as password attempts, the server hung up, and the rest of the commands ran on my own Mac instead. Paste one line at a time and wait for the server's prompt.
Use Docker, with one docker-compose.yml per service in a single folder (I use /opt/stack/) that's tracked in git. Then the whole server is a set of files, and rebuilding it from scratch is: install Docker, clone the folder, start everything. An afternoon instead of a weekend of remembering what you installed.
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER # then log out and back in
Install Docker from the official script or apt, not snap. Snap's sandbox fights the folder mounts Docker depends on.
Home Assistant in Docker is the "Container" version, which has no add-on store. Every tutorial that says "just install the add-on" stops applying, and you wire each piece up yourself. Docker makes it easier to start, not easier to run.
sudo apt install -y unattended-upgrades
cat /etc/apt/apt.conf.d/20auto-upgrades
Both lines should end in "1".On a fresh Ubuntu install, automatic updates were already installed, so the setup dialog never appeared and I almost assumed it was on. Check that file instead of assuming. A server runs untouched for months, so this one matters.
Tailscale needs the internet to set up new connections. If your internet goes out, your devices at home can still reach each other, but only by their local addresses.
A text file that turns an AI assistant into a patient tech helper for this exact setup. Paste it into Claude, ChatGPT or another assistant. It asks what devices you have and what you want to reach, then walks you through each step one command at a time, explains what each command does, and checks the output with you before moving on.
You can build all of this with a computer you already own. These are the pieces that made mine reliable. Each slot has a budget, a pick and an upgrade, with what each is best for. "I use this" marks gear I own. Links open on Amazon.
Disclosure: As an Amazon Associate I earn from qualifying purchases. Product links on this page are affiliate links. Items marked "I use this" are gear I own; the rest are options I researched. The price you pay is the same. Tailscale, Ubuntu, Docker, Synology and Backblaze are named because I use them, not because they pay me.