<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on The Home Lab</title><link>https://adamazl.github.io/homelab/posts/</link><description>Recent content in Posts on The Home Lab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 15 Mar 2026 00:37:20 +1300</lastBuildDate><atom:link href="https://adamazl.github.io/homelab/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Immich: Your Self-Hosted Google Photos Replacement</title><link>https://adamazl.github.io/homelab/posts/immich-self-hosted-google-photos/</link><pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/immich-self-hosted-google-photos/</guid><description>&lt;h2 id="why-you-need-this"&gt;Why You Need This&lt;/h2&gt;
&lt;p&gt;Let me paint you a picture. You&amp;rsquo;ve got 80,000 photos scattered across your phone, your partner&amp;rsquo;s phone, and three old laptops. They&amp;rsquo;re on Google Photos — until Google changes their storage policy again, or you get locked out of your account, or you just get tired of feeding a trillion-dollar company your entire family&amp;rsquo;s memories.&lt;/p&gt;
&lt;p&gt;Or maybe you&amp;rsquo;re already off Google and your photos are just&amp;hellip; sitting in a folder on your NAS. Perfectly preserved, completely unsearchable, impossible to share.&lt;/p&gt;</description></item><item><title>Homelab Monitoring with Prometheus and Grafana</title><link>https://adamazl.github.io/homelab/posts/grafana-prometheus-monitoring/</link><pubDate>Sat, 07 Mar 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/grafana-prometheus-monitoring/</guid><description>&lt;h2 id="why-monitor-your-homelab"&gt;Why Monitor Your Homelab?&lt;/h2&gt;
&lt;p&gt;Without monitoring, you find out about problems when something stops working. With it, you see a disk filling up days before it causes an outage, catch a VM chewing CPU in the middle of the night, or notice your UPS battery health declining. It turns reactive firefighting into proactive maintenance.&lt;/p&gt;
&lt;p&gt;The Prometheus + Grafana stack is the industry standard for this and runs comfortably on modest hardware. My monitoring stack runs in Docker on a dedicated LXC container and uses less than 1 GB RAM.&lt;/p&gt;</description></item><item><title>Getting Started with Home Assistant</title><link>https://adamazl.github.io/homelab/posts/home-assistant-setup/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/home-assistant-setup/</guid><description>&lt;h2 id="why-home-assistant"&gt;Why Home Assistant?&lt;/h2&gt;
&lt;p&gt;Most smart home ecosystems (Google Home, Amazon Alexa, Apple HomeKit) are cloud-dependent. Your lights, locks, and sensors phone home to a server. If the company shuts down, changes their API, or has an outage, your devices stop working.&lt;/p&gt;
&lt;p&gt;Home Assistant is a local, open-source smart home platform. It runs on your network, integrates with over 3,000 services and devices, and keeps all automations local. Your automations run even when the internet is down.&lt;/p&gt;</description></item><item><title>Self-Hosted Media Streaming with Jellyfin</title><link>https://adamazl.github.io/homelab/posts/jellyfin-media-server/</link><pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/jellyfin-media-server/</guid><description>&lt;h2 id="why-jellyfin"&gt;Why Jellyfin?&lt;/h2&gt;
&lt;p&gt;Jellyfin is a free, open-source media server — the community fork of Emby after Emby went partially closed-source. It lets you stream your personal media library (films, TV shows, music, photos) to any device through a browser or app.&lt;/p&gt;
&lt;p&gt;Compared to Plex, Jellyfin is fully free with no premium tier. Transcoding, sync, and apps are all free. There&amp;rsquo;s no phoning home to Plex servers — all metadata and authentication is local.&lt;/p&gt;</description></item><item><title>Automated Backups with Proxmox Backup Server</title><link>https://adamazl.github.io/homelab/posts/proxmox-backup-server/</link><pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/proxmox-backup-server/</guid><description>&lt;h2 id="the-problem-with-ad-hoc-backups"&gt;The Problem with Ad-hoc Backups&lt;/h2&gt;
&lt;p&gt;Proxmox VE has built-in backup functionality — you can snapshot a VM to a directory or NFS share on a schedule. But it stores full backups each time, space grows fast, and restoring requires the whole archive. Proxmox Backup Server (PBS) solves all three problems.&lt;/p&gt;
&lt;p&gt;PBS is a dedicated backup server that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stores backups with &lt;strong&gt;client-side deduplication and compression&lt;/strong&gt; (typically 50–80% space savings)&lt;/li&gt;
&lt;li&gt;Does &lt;strong&gt;incremental backups&lt;/strong&gt; — only changed chunks are uploaded&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;instant verification&lt;/strong&gt; by recalculating checksums&lt;/li&gt;
&lt;li&gt;Has &lt;strong&gt;pruning policies&lt;/strong&gt; — keep 7 daily, 4 weekly, 12 monthly backups automatically&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;PBS is a separate Debian-based appliance. It does not run inside Proxmox VE. You have a few options:&lt;/p&gt;</description></item><item><title>ZFS for Homelabbers: Pools, Datasets, and Snapshots</title><link>https://adamazl.github.io/homelab/posts/zfs-storage-pools/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/zfs-storage-pools/</guid><description>&lt;h2 id="what-makes-zfs-different"&gt;What Makes ZFS Different?&lt;/h2&gt;
&lt;p&gt;ZFS is not just a filesystem — it&amp;rsquo;s a combined volume manager and filesystem. Everything from disk management to RAID to snapshots to checksumming is handled in one stack. This matters because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Every block is checksummed.&lt;/strong&gt; Silent data corruption (bit rot) is detected and, with redundancy, automatically corrected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snapshots are instant and cheap.&lt;/strong&gt; A snapshot is just a pointer — it consumes no space until you delete data that the snapshot still references.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy-on-write semantics.&lt;/strong&gt; Writes never overwrite existing data. Torn writes (partial writes during power failure) cannot corrupt the filesystem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compression is transparent.&lt;/strong&gt; Enable it on a dataset and the CPU handles compression/decompression invisibly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ZFS does not protect against drive failure any better than hardware RAID — it has the same RAIDZ fault tolerance. What it protects against is &lt;em&gt;silent&lt;/em&gt; corruption, which hardware RAID controllers can silently propagate.&lt;/p&gt;</description></item><item><title>Building a Home NAS with TrueNAS Scale</title><link>https://adamazl.github.io/homelab/posts/truenas-scale-setup/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/truenas-scale-setup/</guid><description>&lt;h2 id="why-truenas-scale"&gt;Why TrueNAS Scale?&lt;/h2&gt;
&lt;p&gt;TrueNAS Scale is a Debian-based NAS operating system built around ZFS. The &amp;ldquo;Scale&amp;rdquo; version adds Linux containers (Docker/Kubernetes) on top of the traditional NAS features, so your storage box can also run apps like Jellyfin or Nextcloud alongside your shares.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s free, open-source, and the ZFS integration is first-class. Data integrity checks, snapshots, and replication are all built in and accessible through the web UI.&lt;/p&gt;
&lt;h2 id="hardware-recommendations"&gt;Hardware Recommendations&lt;/h2&gt;
&lt;p&gt;ZFS is memory-hungry and loves ECC RAM. For a home NAS:&lt;/p&gt;</description></item><item><title>Docker vs LXC Containers in Proxmox: When to Use Each</title><link>https://adamazl.github.io/homelab/posts/docker-vs-lxc-proxmox/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/docker-vs-lxc-proxmox/</guid><description>&lt;h2 id="the-confusion"&gt;The Confusion&lt;/h2&gt;
&lt;p&gt;New Proxmox users often ask: should I run Docker inside a VM, Docker inside an LXC container, or use Proxmox&amp;rsquo;s native LXC containers directly? The answer depends on what you&amp;rsquo;re running and what you value. This post breaks down the trade-offs.&lt;/p&gt;
&lt;h2 id="what-is-lxc"&gt;What Is LXC?&lt;/h2&gt;
&lt;p&gt;LXC (Linux Containers) is an OS-level virtualisation technology. LXC containers share the host kernel but have their own filesystem, process tree, network stack, and user namespace. They boot like lightweight VMs — you run &lt;code&gt;pct start 101&lt;/code&gt; and get a full Linux environment in under a second.&lt;/p&gt;</description></item><item><title>Installing Proxmox VE</title><link>https://adamazl.github.io/homelab/posts/installing-proxmox/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/installing-proxmox/</guid><description>&lt;h2 id="what-is-proxmox-ve"&gt;What is Proxmox VE?&lt;/h2&gt;
&lt;p&gt;Proxmox Virtual Environment (VE) is a free, open-source hypervisor built on Debian. It supports both
KVM-based virtual machines and LXC containers, and comes with a decent web UI out of the box — no
need to pay for a VMware licence.&lt;/p&gt;
&lt;h2 id="hardware"&gt;Hardware&lt;/h2&gt;
&lt;p&gt;For this build I&amp;rsquo;m running Proxmox on two nodes:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Node&lt;/th&gt;
 &lt;th&gt;CPU&lt;/th&gt;
 &lt;th&gt;RAM&lt;/th&gt;
 &lt;th&gt;Storage&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;pve-01&lt;/td&gt;
 &lt;td&gt;Intel Core i5-12400&lt;/td&gt;
 &lt;td&gt;32 GB DDR4&lt;/td&gt;
 &lt;td&gt;500 GB NVMe (OS) + 2 TB SSD (VMs)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;pve-02&lt;/td&gt;
 &lt;td&gt;Intel Core i5-10400&lt;/td&gt;
 &lt;td&gt;16 GB DDR4&lt;/td&gt;
 &lt;td&gt;256 GB NVMe (OS) + 1 TB SSD (VMs)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="downloading-the-iso"&gt;Downloading the ISO&lt;/h2&gt;
&lt;p&gt;Head to the &lt;a href="https://www.proxmox.com/en/downloads"&gt;Proxmox downloads page&lt;/a&gt; and grab the latest
&lt;strong&gt;Proxmox VE ISO Installer&lt;/strong&gt;. At the time of writing that was 8.x.&lt;/p&gt;</description></item><item><title>Zero-Config Remote Access with Tailscale</title><link>https://adamazl.github.io/homelab/posts/tailscale-remote-access/</link><pubDate>Sat, 29 Nov 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/tailscale-remote-access/</guid><description>&lt;h2 id="the-problem-with-traditional-remote-access"&gt;The Problem with Traditional Remote Access&lt;/h2&gt;
&lt;p&gt;Setting up WireGuard or OpenVPN yourself works, but it has requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A public IP (harder to get on CGNAT/IPv6-only connections)&lt;/li&gt;
&lt;li&gt;Port forwarding on your router&lt;/li&gt;
&lt;li&gt;Dynamic DNS if your IP changes&lt;/li&gt;
&lt;li&gt;Key management for each client&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tailscale removes all of these requirements. It creates an encrypted peer-to-peer mesh network between your devices without any port forwarding, and works through CGNAT, firewalls, and double-NAT.&lt;/p&gt;
&lt;h2 id="how-tailscale-works"&gt;How Tailscale Works&lt;/h2&gt;
&lt;p&gt;Tailscale is built on WireGuard. Each device gets a WireGuard key pair. Tailscale&amp;rsquo;s coordination server (not a relay server) shares public keys between devices so they can establish direct encrypted connections.&lt;/p&gt;</description></item><item><title>Reverse Proxy and SSL with Nginx Proxy Manager</title><link>https://adamazl.github.io/homelab/posts/nginx-proxy-manager-ssl/</link><pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/nginx-proxy-manager-ssl/</guid><description>&lt;h2 id="the-problem-nginx-proxy-manager-solves"&gt;The Problem Nginx Proxy Manager Solves&lt;/h2&gt;
&lt;p&gt;As your homelab grows, you accumulate services running on various IPs and ports: Proxmox on &lt;code&gt;:8006&lt;/code&gt;, Jellyfin on &lt;code&gt;:8096&lt;/code&gt;, Nextcloud on &lt;code&gt;:443&lt;/code&gt;, Home Assistant on &lt;code&gt;:8123&lt;/code&gt;. Remembering port numbers is tedious, but the bigger issue is HTTPS — browsers complain about self-signed certificates, and accessing services over plain HTTP on your LAN is a security risk.&lt;/p&gt;
&lt;p&gt;Nginx Proxy Manager (NPM) solves both problems. It&amp;rsquo;s a Docker container with a web UI that lets you:&lt;/p&gt;</description></item><item><title>Self-Hosted VPN with WireGuard</title><link>https://adamazl.github.io/homelab/posts/wireguard-vpn-server/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/wireguard-vpn-server/</guid><description>&lt;h2 id="why-self-host-a-vpn"&gt;Why Self-Host a VPN?&lt;/h2&gt;
&lt;p&gt;A self-hosted VPN gives you a secure tunnel back into your home network when you&amp;rsquo;re away. Unlike commercial VPN services (which are for hiding traffic from your ISP), this is about remote access — connecting to your NAS, home automation, internal dashboards, or development environment from a coffee shop or hotel.&lt;/p&gt;
&lt;p&gt;WireGuard is the right choice today. It&amp;rsquo;s built into the Linux kernel, uses modern cryptography (ChaCha20, Curve25519), and has a drastically smaller codebase than OpenVPN (~4,000 lines vs ~400,000). Handshakes complete in milliseconds. Battery drain on mobile is noticeably lower.&lt;/p&gt;</description></item><item><title>Network-Wide Ad Blocking with Pi-hole</title><link>https://adamazl.github.io/homelab/posts/pihole-dns-ad-blocking/</link><pubDate>Sat, 18 Oct 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/pihole-dns-ad-blocking/</guid><description>&lt;h2 id="why-pi-hole"&gt;Why Pi-hole&lt;/h2&gt;
&lt;p&gt;Most ad blockers work at the browser level. Pi-hole works at the DNS level, which means it blocks ads for every device on your network — smart TVs, phones, game consoles, IoT devices — without installing anything on them. It works by acting as the DNS resolver for your LAN and returning &lt;code&gt;0.0.0.0&lt;/code&gt; for known ad and tracking domains instead of the real IP.&lt;/p&gt;
&lt;p&gt;The side effect is that you also get a full picture of every DNS query every device makes, which is genuinely eye-opening. You will quickly discover that your smart TV is phoning home every few minutes.&lt;/p&gt;</description></item><item><title>VLAN Segmentation: Isolating Your IoT Devices</title><link>https://adamazl.github.io/homelab/posts/vlan-segmentation-basics/</link><pubDate>Sat, 04 Oct 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/vlan-segmentation-basics/</guid><description>&lt;h2 id="why-segment-your-network"&gt;Why Segment Your Network?&lt;/h2&gt;
&lt;p&gt;The average home today has dozens of connected devices — smart bulbs, cameras, thermostats,
TVs. Most of these devices have poor security track records: default credentials, infrequent
firmware updates, and sometimes outright malicious firmware from vendors.&lt;/p&gt;
&lt;p&gt;Putting them on the same flat network as your laptop and NAS is an unnecessary risk. VLANs fix
this.&lt;/p&gt;
&lt;h2 id="what-is-a-vlan"&gt;What Is a VLAN?&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;Virtual LAN (VLAN)&lt;/strong&gt; is a logical partition of a physical network. Devices on different VLANs
cannot communicate with each other unless you explicitly allow it through firewall rules — even if
they share the same physical switch.&lt;/p&gt;</description></item><item><title>Setting Up OPNsense as Your Home Firewall</title><link>https://adamazl.github.io/homelab/posts/opnsense-firewall-setup/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/opnsense-firewall-setup/</guid><description>&lt;h2 id="why-replace-your-isp-router"&gt;Why Replace Your ISP Router?&lt;/h2&gt;
&lt;p&gt;ISP-provided routers are designed to be cheap and manageable by support staff, not to give you control. They have opaque firmware, rarely get security updates, and have none of the features a proper firewall offers: VLAN support, traffic shaping, IDS/IPS, meaningful logs, VPN server, DNS over TLS.&lt;/p&gt;
&lt;p&gt;OPNsense is a FreeBSD-based firewall/router that runs on commodity x86 hardware. It&amp;rsquo;s fully open-source (forked from pfSense in 2015), actively maintained, and has a polished web UI.&lt;/p&gt;</description></item><item><title>Hello, Homelab</title><link>https://adamazl.github.io/homelab/posts/hello-world/</link><pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate><guid>https://adamazl.github.io/homelab/posts/hello-world/</guid><description>&lt;h2 id="why-a-homelab"&gt;Why a Homelab?&lt;/h2&gt;
&lt;p&gt;Every homelab starts somewhere. Mine started with the frustration of paying for cloud services I
could run myself, and curiosity about what actually happens when packets travel across a network.&lt;/p&gt;
&lt;h2 id="current-goals"&gt;Current Goals&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Full network segmentation&lt;/strong&gt; — IoT devices on their own VLAN, completely isolated from the
trusted network&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosted DNS&lt;/strong&gt; with ad-blocking (Pi-hole / AdGuard Home)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A proper NAS&lt;/strong&gt; for media, backups, and general storage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring stack&lt;/strong&gt; — Prometheus + Grafana so nothing breaks silently&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="hardware-on-the-bench"&gt;Hardware on the Bench&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Device&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;TP-Link ER605&lt;/td&gt;
 &lt;td&gt;Router / gateway&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TP-Link SG2008P&lt;/td&gt;
 &lt;td&gt;Managed PoE switch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TP-Link OC200&lt;/td&gt;
 &lt;td&gt;Omada hardware controller&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TP-Link EAP245&lt;/td&gt;
 &lt;td&gt;Wi-Fi access point&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Proxmox VE × 2&lt;/td&gt;
 &lt;td&gt;Compute nodes (virtualisation)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Proxmox PBS&lt;/td&gt;
 &lt;td&gt;Backup server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="whats-coming-next"&gt;What&amp;rsquo;s Coming Next&lt;/h2&gt;
&lt;p&gt;The first series of posts will cover setting up a flat-to-segmented network from scratch —
starting with the router/firewall choice all the way through VLAN tagging and inter-VLAN routing
rules.&lt;/p&gt;</description></item></channel></rss>