10io — Actual Intelligence | Fractional CAIO / Chief AI Officer
Why AI Fails
What I Do
How I Do It
Actual Intel
About Me
Let's talk!
Actual Intelligence.
Home<br>Actual Intel<br>Your Own Private AI, Part 2: Secure Access from Anywhere with Tailscale Aperture
Jun 20, 2026<br>8 min read
Your Own Private AI, Part 2: Secure Access from Anywhere with Tailscale Aperture
A beginner-friendly walkthrough for securely accessing your self-hosted LLM from anywhere — over a private Tailscale network fronted by the Aperture AI gateway, never exposed to the public internet.
Sovereign AI
Local LLM
NVIDIA DGX Spark
Tailscale
Aperture
AI Infrastructure
Self-Hosting
In Part 1 we did Stages 1 and 2 to get a Qwen3.6-35B-A3B-FP8 Mixture of Experts (MoE) model serving an OpenAI-compatible API on a “SparkStation”, a GB10 NVIDIA DGX Spark-class machine. However, the model is only accessible on the machine itself via localhost:8000. Here in Part 2, we run through Stages 3 to 5 to make the model securely reachable from any other devices you choose, without ever exposing it to the public internet. These instructions should be helpful even if you have a different local AI model being served by something other than a SparkStation.
The problem, and the plan
I am constantly looking for a better way to operate and access sovereign AI solutions. I want self-hosted models running on private infrastructure that are as flexibly accessible as the solutions from OpenAI or Anthropic. But a model answering at localhost:8000 is only usable by the machine it runs on. The obvious way to make it accessible from anywhere is to forward a port through my router. However, this is also dangerous: it puts an unauthenticated AI endpoint on the open internet for anyone to find and abuse.
Instead, my current approach has two layers:
Tailscale — a private mesh network (“tailnet”) that encrypts direct connections between approved (“allowlisted”) devices, as if they were on the same LAN, no matter where they are physically. Nothing is exposed publicly; only devices that I’ve explicitly added can reach each other. Tailscale offers a very generous free tier, which I’ve been using for several months and have not yet exceeded. Your mileage may vary.
Aperture (by Tailscale) — an “AI gateway” that sits in front of one or more models on the tailnet. It authenticates every request by the caller’s Tailscale identity, so there are no API keys to distribute, and it logs all usage centrally.
If you follow this guide, your locally hosted models will be reachable only over your private network, and every request through the gateway will be identified and recorded. That’s genuinely private, secure, managed AI.
Concepts in one breath. A tailnet is your private device network. MagicDNS is Tailscale’s feature that lets you address devices by name (e.g. gateway) instead of IP. A provider in Aperture is an upstream model. A grant is a rule saying who may use which models. You’ll meet each below.
Stage 3 — Put the server on your private network
First, get the GB10 machine (or whatever machine you are using as the “AI server”) onto your tailnet.
3.1 Install and join Tailscale on the server
On the server, install Tailscale and bring it up:
curl -fsSL https://tailscale.com/install.sh | sh<br>sudo tailscale up
tailscale up prints a URL — open it in any browser and sign in (Google, GitHub, Microsoft, or email all work). That authenticates this machine and adds it to your tailnet. The account you sign in with defines your tailnet, so remember which one you use — every device must join the same account.
3.2 Note the server’s Tailscale IP
tailscale ip -4
You’ll get an address in the 100.x.x.x range — Tailscale’s private space. I’ll use 100.92.0.10 as a stand-in below; replace it with your own . This is the address Aperture will use to reach your model.
Because vLLM was launched with --network host back in Part 1, it’s already listening on this interface — no change needed. If you run a firewall like ufw, allow the port on the Tailscale interface: sudo ufw allow in on tailscale0 to any port 8000.
Stage 4 — Put Aperture in front
Now we add the gateway. Aperture runs as its own node on your tailnet with its own web dashboard.
4.1 Provision Aperture
Go to aperture.tailscale.com and request access / sign up. During the beta it’s free with any Tailscale account. Once provisioned, Aperture appears as a machine on your tailnet with a hostname, and serves a dashboard at:
http:///ui
I’ll use gateway as the stand-in hostname, so my dashboard is http://gateway/ui. Yours will have its own name — you’ll find it in the Aperture sign-up flow and in your Tailscale admin console’s list of Machines.
Two different dashboards — don’t confuse them. login.tailscale.com/admin is the Tailscale admin console (manages your network: devices, users, access rules). http:///ui is the Aperture dashboard (manages models, providers, and usage). The model configuration below lives in the...