Skip to content

Archives

All the articles I've archived.

2026 306
June 72
  • Argo Workflows vs Tekton

    Two Kubernetes-native pipeline engines from CNCF — Argo Workflows and Tekton. Different philosophies, same goal: stop using Jenkins. Honest comparison.

  • DIY NAS Build: Compute, Drives, Power Walkthrough

    Build a proper DIY NAS in 2026: case selection, CPU choice, drives, HBA card, ZFS pool layout, UPS sizing, and a real power budget that will not fail you.

  • k3sup vs kubeadm for Homelab Clusters

    kubeadm is the official Kubernetes bootstrapper. k3sup is a one-shot SSH installer for k3s. Here's which one to use for your homelab cluster.

  • Dead Container Took Down Prod

    A real postmortem: how a forgotten survey-tool container, an uncapped Docker log driver, and rootless networking combined to kill prod for a Monday morning.

  • Mikrotik RouterOS for Home Lab

    Mikrotik routers cost $50, run a real OS, and humiliate prosumer gear. RouterOS basics, VLANs, firewalling, and why your homelab probably needs one of these.

  • Dell R720 vs HP DL380 G9: Used Server Knife Fight

    Dell R720 or HP DL380 G9 for your home lab? We compare CPU generation, power draw, fan noise levels, iDRAC vs iLO, and which used pizza box wins the fight.

  • etcd vs Consul vs ZooKeeper Coordination

    etcd powers Kubernetes. Consul is the service-discovery Swiss army knife. ZooKeeper is the grizzled veteran. Here's how to pick a coordination store.

  • pfSense vs OPNsense in 2026

    Two FreeBSD firewall distros, one bitter fork. pfSense vs OPNsense in 2026 — which one to pick for your home lab, and why the licensing drama still matters.

  • FastAPI vs Flask vs Django Picked Right

    FastAPI is async and type-driven. Flask is the micro-framework. Django is batteries-included. Here's how to pick for homelab apps and small SaaS.

  • NVMe Heatsinks That Actually Cool

    NVMe drives throttle hard at 70-85C. Here is how to monitor temps, intentionally trigger throttling to confirm it, and pick a heatsink that fixes the issue.

  • Zeek for Home Lab Forensics

    Zeek (formerly Bro) turns network traffic into structured logs you can actually query. The IDS that doesn't shout — it documents. Setup and use in a home lab.

  • Neo4j vs ArangoDB: Graph DB Showdown

    Neo4j is the household graph DB with Cypher. ArangoDB is multi-model with AQL and free clustering. Here's which one fits your homelab graph use case.

  • SAS vs SATA in 2026: When SAS Still Wins

    SAS drives are not dead — they are cheap on eBay right now. Here is exactly when used SAS3 hardware beats SATA for home lab storage builds on a budget.

  • ModSecurity vs Coraza WAF

    ModSecurity 3 is end-of-life and Coraza is the open-source successor — Go-native, faster, and friendlier. Here's the migration story and what actually changes.

  • Photon vs ESPHome: ESP Firmware Compared

    Particle Photon 2 vs ESPHome for ESP32 projects: cloud lock-in, OTA updates, Home Assistant integration, and which firmware wins for self-hosters long-term.

  • Postgres vs SQLite for Home Lab Apps

    SQLite is brilliant until you need concurrent writes, replication, or online migrations. Here's the actual line where Postgres earns its keep.

  • SOPS + age: Secrets in Git

    Stop the .env-in-1Password dance. SOPS encrypts secrets per-key, age provides modern crypto, and git stores them safely. Here's how to ship it without footguns.

  • Self-Host a Local AI Coding Workhorse

    Run Gemma 4 or Qwen3-Coder locally via Ollama or llama.cpp in Docker, then delegate mechanical coding tasks to it while Claude handles the thinking. Free tokens, zero leakage.

  • ddrescue vs TestDisk vs PhotoRec

    Drive is dying. Which tool do you reach for? ddrescue clones, TestDisk repairs partitions, PhotoRec carves files. They're a workflow, not rivals.

  • Zigbee Coordinator Showdown: Sonoff vs ConBee vs SkyConnect

    Sonoff Zigbee Dongle Plus-E vs ConBee III vs SkyConnect — pick the right Zigbee USB coordinator for your Home Assistant home lab or apartment setup in 2026.

  • WebAuthn & Passkeys for Sysadmins

    Passkeys finally killed passwords for real users. Here's what WebAuthn actually is under the hood, and how to roll passkeys out on your self-hosted services.

  • Give Your AI Agent a Cheap Intern

    Stop burning expensive AI tokens on boring grunt work. The overseer/workhorse pattern routes mechanical tasks to a cheap model and saves more than you'd think.

  • Borg vs Duplicacy: Dedup Backup Wars

    Borg is open-source classic with SSH targets. Duplicacy has lock-free multi-source magic but commercial GUI. Here's which backup tool to pick.

  • Owntracks + Home Assistant: Private Location Tracking

    Stop feeding Google your daily commute. OwnTracks + MQTT broker + Home Assistant gives you real presence detection without the surveillance capitalism overhead.

  • KVM/QEMU/libvirt: CLI Workflows

    virt-manager is fine, but real homelab automation lives on the command line. virt-install, virsh, cloud-init — provision VMs in seconds, not click-by-click.

  • BirdNET-Pi for Self-Hosted Bird Identification

    Turn a Raspberry Pi and a cheap USB mic into a self-hosted bird ID station using BirdNET-Pi and Cornell ML audio models running entirely locally offline.

  • Claude Code + SearXNG: Private Web Search

    Wire a self-hosted SearXNG instance into Claude Code via a Bash wrapper for private, scriptable web search — and when to use it vs the built-in tool.

  • fd vs find: Rust Speed vs POSIX Power

    fd has sane defaults, parallel walking, and respects .gitignore. find is gnarly but ships everywhere. Here's when each one wins.

  • Linux Namespaces from Scratch

    Containers are just namespaces and cgroups in a trench coat. Build one yourself with unshare and nsenter — no Docker required. Demystifies what actually happens.

  • rclone vs Restic: Sync vs Backup

    rclone copies and syncs files to cloud storage. Restic does deduplicated encrypted snapshots. Confusing them costs you restores at 2 AM.

  • Scrypted vs Frigate for Self-Hosted Cameras

    Scrypted bridges your IP cameras to HomeKit and Google Home. Frigate adds AI object detection on your own hardware. Here's how to pick — or run both at once.

  • mtr vs traceroute: Packet Loss

    traceroute lies. mtr tells the truth. Here's how to read packet-loss reports like an oncall engineer and stop blaming your ISP for the wrong hop.

  • ESPresense: Room-Level Bluetooth Presence in Home Assistant

    Track which room you're in using cheap ESP32 nodes and BLE signal distance — real room-level presence for Home Assistant automations that don't annoy you daily.

  • Hetzner vs DigitalOcean vs Vultr

    Picking a cheap VPS for home-lab overflow — off-site backups, public endpoints, CGNAT escape. Real tradeoffs, honest picks per scenario.

  • ZFS Encryption vs LUKS

    Native ZFS dataset encryption vs LUKS under your pool — which layer to encrypt at, performance trade-offs, key management, and raw send/recv.

  • iperf3 + nload: Network Diagnosis

    Your gigabit link drops to 200 Mbps and you don't know why. iperf3 measures throughput honestly, nload visualizes traffic — together they find the bottleneck fast.

  • Plex Meta Manager: Posters, Collections, Sanity

    Stop staring at a Plex library that looks like a clearance bin. Kometa (formerly Plex Meta Manager) automates collections, posters, overlays, and bulk ratings.

  • Syncthing vs Resilio vs Seafile

    Dropbox got expensive and your data left the building. Syncthing, Resilio Sync, and Seafile compared — pick the one that fits your threat model.

  • SMART Disk Monitoring with smartmontools

    Disks fail. SMART tells you when. Here's how smartctl and smartd actually predict failure, and the attributes that matter (most don't).

  • Jellyseerr Tagging Workflows for Real Libraries

    Stop guessing whose request is clogging your 4K library. Jellyseerr tags + Sonarr/Radarr + Maintainerr = real per-user quota control that actually holds up.

  • OpenConnect vs AnyConnect

    OpenConnect replaces the bloated AnyConnect client on Linux. Run ocserv for a self-hosted Cisco-compatible VPN server — no 200MB installer required.

  • fio: Real Disk Benchmarking

    Stop trusting marketing IOPS numbers. fio measures what your disk actually does on your workload — sequential, random, mixed. Here's how to read the output honestly.

  • Boundary vs Teleport

    Zero-trust access for SSH, k8s, and databases — HashiCorp Boundary vs Teleport compared on identity, session recording, and self-host fit.

  • Whisparr & Mylar3: Specialty *arr Apps Explained

    Sonarr handles TV. Radarr handles movies. But who handles comics and adult content? Meet Mylar3 and Whisparr — the *arr apps nobody talks about, until now.

  • Dify: Visual Agent Workflows

    Dify is an open-source LLM-app builder you can self-host. Visual workflow editor, RAG, agents, tool use — without writing 500 lines of LangChain glue.

  • LazyLibrarian + Readarr: Automating Your Book Library

    LazyLibrarian vs Readarr for ebook and audiobook automation — honest comparison of features, maturity, and community support, with real Docker Compose configs.

  • stunnel vs spiped

    TLS tunneling for legacy plaintext services — stunnel's X.509 cert model vs spiped's pre-shared key simplicity, and when each one actually wins.

  • OpenRouter vs LiteLLM

    Two ways to route LLM traffic across providers — OpenRouter as a hosted gateway, LiteLLM as a self-hosted proxy. Which one fits your home lab in 2026?

  • Immich vs PhotoPrism vs Ente: Self-Hosted Photo Libraries

    Google Photos went paid and the alternatives matured fast. Immich, PhotoPrism, and Ente: which self-hosted photo library actually fits your life in 2026?

  • Unbound vs Technitium vs BIND

    Picking a recursive DNS resolver for your home lab — Unbound, Technitium, and BIND9 compared on speed, GUI, DNSSEC, and split-horizon.

  • Function Calling in Local LLMs

    Local LLMs can call tools, query APIs, and run code if you set them up right. Function calling on Ollama and llama.cpp explained — patterns that actually work.

  • HACS: When Custom Integrations Bite You

    HACS custom integrations can brick your Home Assistant setup overnight. Here's how to use them safely, recover when they don't, and know when to skip them.

  • ntopng vs darkstat

    ntopng vs darkstat: full DPI flow analysis vs a tiny always-on stats page. Pick the right tool for home-lab network visibility without losing your mind.

  • Gemma 4 vs Qwen3.6

    Gemma 4 vs Qwen3.6: sizes, reasoning, coding benchmarks, and which model you should actually pull for your home lab rig.

  • AnythingLLM as Knowledge Base

    AnythingLLM is the closest thing to a real private NotebookLM you can self-host. Workspaces, RAG, agents, document chat — running locally on Ollama in 20 minutes.

  • FRR vs BIRD

    FRR vs BIRD: two open-source routing daemons compared for BGP, OSPF, and home-lab dynamic routing. Which one belongs in your stack?

  • Home Assistant Add-Ons vs Docker Containers

    HAOS Add-Ons vs bare Docker Compose for Mosquitto, ESPHome, Frigate — when the Supervisor magic is genuinely worth it and when it just gets in your way.

  • Local Vision LLMs Worth Running in 2026

    · Updated:

    Pixtral, Qwen3-VL, and Gemma 4 compared for local multimodal use in 2026. LLaVA is dead; here's what to run in Ollama for OCR, screenshots, and vision tasks.

  • HAProxy vs Envoy

    HAProxy vs Envoy for L4/L7 load balancing — config style, performance, observability, service mesh fit, and which one belongs in your home lab.

  • Home Assistant Voice: Wyoming vs Rhasspy

    Wyoming protocol vs Rhasspy for local Home Assistant voice — which offline stack actually works in 2026, hardware requirements, and when to choose each one.

  • MCP Servers: Tools for LLMs

    Model Context Protocol turns your LLM into a tool-using agent — file access, APIs, your home lab. Build your first MCP server in under 50 lines of Python.

  • Caddy vs Traefik

    Caddyfile zen vs Traefik labels-everywhere — picking a reverse proxy for self-hosted services in 2026. Real configs, real gotchas.

  • Promtail to Alloy Migration: A Practical Diff

    Promtail is deprecated. Here's how to migrate your scrape configs, pipeline stages, and Docker log setups to Grafana Alloy without losing your mind or data.

  • RAG Evaluation with Ragas

    Most RAG demos look great until you ship them. Ragas measures faithfulness, context precision, answer relevancy — the metrics that actually predict user trust.

  • Bun vs Deno vs Node in 2026

    Picking a JavaScript runtime in 2026 — Bun, Deno, and Node compared on speed, ecosystem, TS support, and self-hosted use cases.

  • LibreNMS for SNMP-Heavy Home Networks

    LibreNMS auto-discovers your switches, APs, and UPS over SNMP with zero MIB hunting. Here's how to deploy it and stop abusing Prometheus for this job.

  • LLM Distillation Explained

    How tiny 7B and 8B models keep punching above their weight — knowledge distillation, the teacher-student trick that makes local AI actually usable on home hardware.

  • Rancher vs Podman vs Docker Desktop

    Rancher Desktop, Podman Desktop, and Docker Desktop go head-to-head on cost, k8s, resource use, and real-world friction for local dev.

  • SmokePing for Internet Connection Sanity

    SmokePing turns your ISP no-issue-detected excuse into a documented lie. Set it up in Docker and get clear visual proof of latency spikes and packet loss.

  • Garden vs Tilt vs Skaffold

    Three inner-loop dev tools for Kubernetes — Garden, Tilt, and Skaffold. Which one actually makes K8s development bearable? Honest comparison, no fluff.

  • Lima vs Multipass

    VM-backed Linux dev environments on macOS/Linux — Lima vs Multipass compared on speed, container support, and resource use.

  • Riemann: The Forgotten Event-Stream Monitor for Home Labs

    Riemann processes events as streams, not time-series. Here is why that distinction matters and when Clojure-based stream alerting still beats Prometheus rules.

May 67
April 95
March 30
February 17
January 25
2025 142
December 11
November 19
October 14
September 16
August 19
July 14
June 5
May 8
April 11
March 10
February 8
January 7
2024 66
September 3
August 1
July 26
June 23
May 1
April 3
March 2
February 7
2023 20
September 2
  • Linux Bash Tips and Tricks pt1

    · Updated:

    Bash tricks that save keystrokes — history expansion, brace expansion, process substitution, and the shortcuts your fingers will thank you for.

  • Set the Timezone in Ubuntu with timedatectl

    · Updated:

    Set, verify, and sync your timezone in Ubuntu using timedatectl — one command to fix the clock on a newly provisioned server.

July 2
April 2
March 7
  • NocoDB DB Management System

    · Updated:

    NocoDB wraps any SQL database in a spreadsheet UI — self-host an Airtable alternative on top of MySQL, PostgreSQL, or SQLite with Docker.

  • Appwrite Backend-as-a-service (BaaS)

    · Updated:

    Appwrite is an open-source Firebase alternative you can self-host — databases, auth, storage, and functions without vendor lock-in.

  • Wireguard VPN Server in Docker

    · Updated:

    Run a WireGuard VPN server inside Docker — wg-easy setup, peer config generation, and getting road warrior access to your home network.

  • Install & use Doxygen via Docker

    · Updated:

    Generate code documentation with Doxygen without installing it — run it from a Docker container and get HTML docs from any codebase.

  • Automatic Backup of Docker MySQL or MariaDB Containers

    Automate MySQL/MariaDB backups from a running Docker container using cron and mysqldump — no downtime, no excuses for losing your data.

  • WordPress on PHP-FPM & Caddy in Docker

    · Updated:

    Run WordPress on PHP-FPM with Caddy as the web server — all in Docker Compose with automatic HTTPS and proper PHP config.

  • Docker Compose useful commands

    · Updated:

    The docker compose commands you actually use daily — up, down, logs, exec, pull, and the flags that make them way more useful.

February 7
  • How to install NextCloud via Docker

    · Updated:

    Self-host Nextcloud in Docker with persistent storage and a reverse proxy — your own Google Drive without the Google.

  • Ed25519 ssh keys

    Ed25519 is faster and more secure than RSA for SSH keys — generate a key pair, add it to authorized_keys, and ditch the old RSA habits.

  • Install a php script in PHP-FPM & Caddy via Docker

    Run PHP apps with PHP-FPM and Caddy in Docker — FastCGI configuration, volume mounts, and the Caddyfile that wires it all together.

  • Install Caddy reverse proxy via Docker

    · Updated:

    Get Caddy running as a reverse proxy in Docker — automatic HTTPS, Caddyfile config, and Docker Compose setup in under 10 minutes.

  • Access Docker socket via TCP

    · Updated:

    Expose Docker's Unix socket over TCP so remote tools and dashboards can connect — daemon.json config for Linux and Windows.

  • Install docker on Ubuntu/Debian

    · Updated:

    The official, no-nonsense way to install Docker Engine on Ubuntu and Debian — repository setup, key import, and one command to verify it works.

  • Linux su with custom shell

    · Updated:

    Use su with a specific shell to switch users without the default login shell — useful when /etc/passwd points to something unexpected.

2019 2
September 1
  • When systemd swallows your service logs

    · Updated:

    Service restart not showing logs? systemd hides stdout. Learn journalctl, systemctl status, and debugging workflows for silent systemd failures.

July 1
  • Three ways to upload ISOs to Proxmox

    · Updated:

    Three ways to upload an ISO to Proxmox — web UI, wget direct download, or SCP from the CLI. When each one wins, plus storage paths and checksum verification.

2016 6
August 2
  • Enable WebGL on Chrome or Firefox

    · Updated:

    WebGL disabled or hardware acceleration broken? Force-enable it in Chrome and Firefox with the right flags and about:config tweaks.

  • Ubuntu & Bash tutorial & basic utilities

    Essential bash utilities for Ubuntu newcomers — file management, text processing, process control, and the commands you'll type every day.

May 2
  • Why You Should Switch to ZShell (zsh)

    · Updated:

    Switch your default shell to zsh on Linux — why zsh beats bash, installation, Oh My Zsh setup, essential plugins, and the gotcha that still catches everyone.

  • Alsa CLI Volume control

    · Updated:

    Control Linux audio volume and mic boost from the terminal with ALSA's amixer — no GUI needed, no remembering cryptic card numbers.

April 1
  • Linux distribution info & kernel info

    · Updated:

    Find your Linux distro version, kernel version, and architecture with uname, lsb_release, /etc/os-release, and hostnamectl.

February 1
  • Bulk rename files in bash

    · Updated:

    Remove spaces and special characters from filenames using bash loops, rename, find, and parameter expansion tricks.

2015 1
July 1
2013 7
October 1
September 1
  • Bash for loops sequential counting

    · Updated:

    Master bash for loops, while loops, and seq for sequential counting — iterate over files, ranges, and arrays without losing your mind.

July 3
  • Adding Extra Swap to Linux

    · Updated:

    Out of RAM and no time to reimage? Add swap via a file on any partition using mkswap, swapon, and fstab — done in under 5 minutes.

  • Repair & Optimize all Mysql Databases one liner

    · Updated:

    Repair and optimize all MySQL databases at once with mysqlcheck — a one-liner that runs on every table without logging into MySQL.

  • Remove all old installed but unused kernels

    · Updated:

    Old kernels pile up in /boot and eat disk space — safely remove unused kernels on Ubuntu and Debian with apt and dpkg.

May 2
2012 7
October 1
September 1
  • Logrotate & Compression

    · Updated:

    logrotate keeps your /var/log from eating the disk — configure rotation schedules, compression, and retention for any service log.

April 1
  • SSH keys and secure file copy

    · Updated:

    Generate SSH keys, set up passwordless auth, configure SSH, and transfer files securely with SCP — the foundation of headless Linux work.

March 2
  • Recursively delete all empty subdirectories

    · Updated:

    Clean up empty directories with find and rmdir — safely prune orphaned dirs left after file migrations.

  • Directory FileCount

    · Updated:

    Count files in a directory (recursively or not) with find, ls, and tree — quick one-liners for when du just isn't telling you enough.

February 2
  • Archive & Compression utilities

    tar, gzip, bzip2, xz, zip — demystified. When to use each compression tool, speed vs ratio trade-offs, and the flags you'll actually need.

  • Sed 101

    · Updated:

    sed is the stream editor for making text substitutions, deletions, and insertions in files — the patterns you'll use 90% of the time.