<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Scrapbook for my thoughts</title>
    <subtitle>A personal scrapbook of thoughts, notes, and ideas.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.perch-iguana.ts.net/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.perch-iguana.ts.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-09-13T00:00:00+00:00</updated>
    <id>https://blog.perch-iguana.ts.net/atom.xml</id>
    <entry xml:lang="en">
        <title>Building a Private Home Server Network with Tailscale</title>
        <published>2026-09-13T00:00:00+00:00</published>
        <updated>2026-09-13T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.perch-iguana.ts.net/blog/building-a-private-home-server-network-with-tailscale/"/>
        <id>https://blog.perch-iguana.ts.net/blog/building-a-private-home-server-network-with-tailscale/</id>
        
        <content type="html" xml:base="https://blog.perch-iguana.ts.net/blog/building-a-private-home-server-network-with-tailscale/">&lt;p&gt;When I tried setting up a homelab with a bunch of self-hosted services using Docker containers or otherwise, network access started becoming one of my biggest operational challenge. I needed to be able to manage these services from anywhere — whether that’s from another room in your house, a coffee shop, or halfway across the world — without exposing everything to the public internet.&lt;/p&gt;
&lt;p&gt;That’s when I understood why every &lt;code&gt;r/selfhosted&lt;/code&gt; or &lt;code&gt;r/homelab&lt;/code&gt; subreddit I visited consider Tailscale to be one of the most GOAT-ed software service.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h3 id=&quot;the-problem-network-access-without-compromise&quot;&gt;The Problem: Network Access Without Compromise&lt;/h3&gt;
&lt;p&gt;Before Tailscale, I had a few options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open ports on my router (terrible for security)&lt;/li&gt;
&lt;li&gt;Use a traditional VPN (more setup overhead, performance trade-offs)&lt;/li&gt;
&lt;li&gt;Only access services locally (too limiting)&lt;/li&gt;
&lt;li&gt;Use individual reverse proxies for each service (complexity explosion)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these felt right for a personal infrastructure project. I wanted:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Easy remote access without managing firewall rules for every service&lt;/li&gt;
&lt;li&gt;Point-to-point connections that didn’t require a centralized VPN server running 24/7&lt;/li&gt;
&lt;li&gt;Seamless access to all my services under one cohesive network&lt;/li&gt;
&lt;li&gt;A privacy-first approach where my traffic isn’t being routed through someone else’s servers unnecessarily&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-tailscale-fits-my-stack&quot;&gt;How Tailscale Fits My Stack&lt;/h3&gt;
&lt;p&gt;My homelab runs on Ubuntu with Docker, Home Assistant, and various other services. Tailscale sits at the network layer, creating a secure tunnel that lets me access everything as if I’m on the same local network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The real win&lt;/strong&gt;: every machine in my homelab — the main server, GPU machines, my development box — can be on the same private network without any of the traditional VPN complexity. When I connect from my laptop or phone, I’m part of that network too.&lt;/p&gt;
&lt;h4 id=&quot;a-day-in-the-life&quot;&gt;A Day in the Life&lt;/h4&gt;
&lt;p&gt;Here’s what this looks like in practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I’m away from home and want to check on a running service. I open my browser, connect to my Tailscale network, and access my internal dashboards exactly as if I were sitting at my desk at home.&lt;/li&gt;
&lt;li&gt;I’m developing a feature that needs to talk to my self-hosted Ollama instance for testing. Through Tailscale’s MagicDNS, I just reference it by name, no IP juggling needed.&lt;/li&gt;
&lt;li&gt;A new service needs debugging. I SSH into the machine using its Tailscale address, bypassing the need to configure port forwarding or expose SSH to the world.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;key-benefits-i-ve-experienced&quot;&gt;Key Benefits I’ve Experienced&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Privacy and Security&lt;/strong&gt;: Tailscale uses WireGuard under the hood, which is modern, audited, and performant. My infrastructure doesn’t need to be exposed to the public internet at all. Everything stays private.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplicity&lt;/strong&gt;: No complex firewall rules. No port forwarding nightmares. I define access once in Tailscale’s control plane, and it works consistently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Point-to-Point Connections&lt;/strong&gt;: Where possible, Tailscale establishes direct connections between devices. This means less latency and no central server bottleneck for the traffic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MagicDNS&lt;/strong&gt;: Instead of remembering IPs or managing &lt;code&gt;/etc/hosts&lt;/code&gt; files, I can address machines by name. This especially helps when IPs might change or when I’m adding new devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;: Whether I’m on my home WiFi, at a coffee shop on public WiFi, or on a mobile hotspot, the experience is identical. My network is always available.&lt;/p&gt;
&lt;h3 id=&quot;what-i-don-t-expose&quot;&gt;What I Don’t Expose&lt;/h3&gt;
&lt;p&gt;This setup has let me be more thoughtful about what actually needs public access:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internal dashboards and monitoring tools stay private&lt;/li&gt;
&lt;li&gt;SSH access is restricted to the Tailscale network&lt;/li&gt;
&lt;li&gt;Development services don’t need reverse proxy configurations&lt;/li&gt;
&lt;li&gt;No open ports for service access (only things like a public-facing web service if I choose to run one)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is genuinely quieter from a security perspective. There’s no constant background noise of scanning attempts and exploitation probes aimed at random ports.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h3 id=&quot;is-there-a-cost-the-free-tier-reality&quot;&gt;Is There a Cost? The Free Tier Reality&lt;/h3&gt;
&lt;p&gt;One of the best parts about Tailscale is that the &lt;a rel=&quot;external&quot; href=&quot;https://tailscale.com/docs/account/manage-plans/free-plans-discounts&quot;&gt;free Personal plan&lt;/a&gt; is available indefinitely with no time limit. For my homelab use case, it covers everything I need.&lt;/p&gt;
&lt;p&gt;The free tier includes up to 6 users, unlimited user devices, and 50 tagged resources. Let me break down what that actually means for a homelab:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User Devices (Unlimited)&lt;/strong&gt;: These are machines you personally own—your laptop, desktop, phone, tablet, etc. You can connect as many of these as you want to your Tailscale network at no cost. This is perfect for accessing your homelab from any of your devices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tagged Resources (50 included)&lt;/strong&gt;: These are servers, containers, and shared infrastructure pieces—the actual services in your homelab. With 50 tagged resources on the free tier, you have plenty of room. Even with Docker containers, a Kubernetes cluster, Home Assistant, Ollama, and various other services, I’m nowhere close to hitting that limit for a personal setup.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Users (6 included)&lt;/strong&gt;: The free tier lets you add up to 6 people to your network. For a solo homelab, this isn’t a constraint at all. If you want to grant a friend or family member access to something, you’ve got room for that too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Additional Features&lt;/strong&gt;: The free plan also includes access to nearly all Tailscale features, including SSH, Kubernetes features, MagicDNS, subnet routing, and exit nodes. You’re not missing out on core functionality.&lt;/p&gt;
&lt;p&gt;When you might consider upgrading to a paid plan depends on your specific needs: more users on your network, more tagged resources, or advanced features like just-in-time access controls. But for a personal homelab, the free tier is genuinely generous.&lt;/p&gt;
&lt;h3 id=&quot;the-tailscale-philosophy&quot;&gt;The Tailscale Philosophy&lt;/h3&gt;
&lt;p&gt;What appeals to me about Tailscale is its approach: a private, personal network that you control, built on solid cryptographic foundations. It’s not trying to be everything—it’s laser-focused on being a reliable, performant way to connect your devices securely.&lt;/p&gt;
&lt;p&gt;For a homelab, that focus is exactly what you want. Your infrastructure becomes a genuine private network, not a collection of exposed services behind ad-hoc security measures.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h3 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h3&gt;
&lt;p&gt;If you’re running a homelab and haven’t explored Tailscale yet, I’d suggest trying it out. Start with just accessing one service, get comfortable with the workflow, then expand from there.&lt;/p&gt;
&lt;p&gt;The best part? Once it’s set up, it kind of disappears into the background and just works—which is exactly what you want from infrastructure.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Have you integrated Tailscale into your homelab setup? I’d be curious to hear how others are using it.&lt;/em&gt; &lt;a rel=&quot;external&quot; href=&quot;https://asifiqbal.xyz&quot;&gt;&lt;em&gt;Reach out&lt;/em&gt;&lt;/a&gt; &lt;em&gt;if you’ve got questions or a different approach that’s worked well for you.&lt;/em&gt;&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello, scrapbook</title>
        <published>2026-08-27T00:00:00+00:00</published>
        <updated>2026-08-27T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.perch-iguana.ts.net/blog/hello/"/>
        <id>https://blog.perch-iguana.ts.net/blog/hello/</id>
        
        <content type="html" xml:base="https://blog.perch-iguana.ts.net/blog/hello/">&lt;p&gt;This is the first entry. If you’re reading this on a public website, the whole chain worked: Zola built this from Markdown, and an nginx container is serving the static output.&lt;/p&gt;
&lt;p&gt;I plan to document life experiences, things I’ve learned, and whatever I think others might find useful. Some content may be highly opinionated, both technically and socially — so be aware of that…&lt;/p&gt;
&lt;p&gt;More to come….&lt;/p&gt;
</content>
        
    </entry>
</feed>
