Latest Tutorials

Self-hosted IT tutorials from my own homelab: infrastructure, high availability, and self-hosting guides, cleaned up enough to be useful to someone else running into the same problem. Browse by category below, or head over to Search Articles for the full, searchable list. Want to know more about me? Visit the About page.

iRedMail

How to Deploy Two iRedMail Instances in HA Using a Galera MariaDB Cluster

September 1, 2026

Building a second, independent iRedMail node at a separate site so mail keeps flowing even if one location goes down entirely, backed by a Galera-replicated mail database.

iredmailgalerahigh-availability
Backup & Storage

Backup Notion DB to Gitea using Python

August 30, 2026

A dependency-free Python script that backs up Notion databases to a self-hosted Gitea repo on a schedule, converting every page to Markdown with full version history.

notiongiteapythonbackup
Vaultwarden

Automating Vaultwarden Docker Updates Across Multiple Nodes

August 28, 2026

A bash script that checks GitHub daily for new Vaultwarden releases and applies them safely with a health check and automatic rollback, no manual watching required.

vaultwardendockerautomation
Obsidian & Grav

Self-host Obsidian and publish tutorials via an automated pipeline to Grav CMS

August 23, 2026

The three-part series behind this very site: self-hosting Obsidian with CouchDB sync, standing up Grav CMS, and the pipeline that turns Obsidian notes into published pages automatically.

obsidiangrav-cmsgiteacouchdbpipeline
3-part series
Automation

Automate Patching with Semaphore UI + Patchmon + n8n

August 9, 2026

A four-part series building a full patch-management pipeline: Semaphore for the actual patching, Patchmon for update visibility, Uptime Kuma for maintenance windows, and n8n tying it all together into one automated, notified workflow.

semaphorepatchmonn8npatchingautomation
4-part series
Automation

How to programmatically create home folders for new users on Box with Azure Functions

August 4, 2026

An Azure Function that automatically creates and correctly hands off a personal home folder in Box the moment a new employee account is provisioned, no manual IT ticket required.

boxazure-functionsautomation
Proxmox

Backup your Proxmox hosts with ProxSave

July 25, 2026

Setting up ProxSave to automate Proxmox host backups with retention and off-site copy support, so a bad update or hardware failure doesn't mean starting from scratch.

proxmoxbackupproxsave
Web Hosting & Apps

Enforce geo-blocking on apache (PHP app)

May 15, 2026

Blocking visitors from specific countries on a Bitnami Apache stack using MaxMind's GeoLite2 database and mod_maxminddb, redirecting unwanted traffic before it ever reaches your PHP app.

apachesecuritygeo-blockingphp
MariaDB & Galera

Debian - install MariaDB server from scratch

February 14, 2026

A from-scratch walkthrough for provisioning a Debian VM, hardening SSH and the firewall, then installing and securing a standalone MariaDB server on Proxmox.

mariadbdebiandatabase
Self-Hosted Tools

Self-host Shlink on your Nginx Classic Web Server Behind HAProxy on OPNSense

February 14, 2026

Self-hosting Shlink, an open-source URL shortener, on a classic Nginx web server behind HAProxy on OPNSense, instead of relying on a third-party shortening service.

shlinknginxhaproxyopnsense
Proxmox

How to Rename a Proxmox node

February 14, 2026

The actual steps, and the gotchas, for renaming a Proxmox node after the fact, including moving VM and container files that still reference the old hostname.

proxmox
Proxmox

How to join two Proxmox nodes into a cluster (PVE 8.x)

February 14, 2026

Joining two standalone Proxmox VE 8.x hosts into a proper cluster, so VMs and containers can be managed, migrated, and monitored from a single pane of glass.

proxmoxclustering
Proxmox

Create an LXC container in Proxmox outside of pre-packaged templates

February 14, 2026

Building a Proxmox LXC container from a LinuxContainers.org image instead of Proxmox's limited built-in template list, for distros that aren't officially templated.

proxmoxlxccontainers
OPNSense

How to set up UptimeKuma with OPNSense API for CARP monitoring

February 14, 2026

Using Monit on OPNSense to watch CARP status locally and push a notification to Uptime Kuma the moment a firewall pair actually fails over, instead of polling and hoping you notice.

opnsenseuptimekumacarpmonitoring
Web Hosting & Apps

Deploy Gitea on Proxmox and use git to track WordPress core, plugins and themes for a HA website

February 14, 2026

Self-hosting Gitea on Proxmox and using it to track every change to a WordPress site's core, plugins, and themes, so a bad update is one git revert away from fixed.

giteawordpressproxmoxgit
MariaDB & Galera

Galera Cluster multi-site deployment

February 14, 2026

Extending a single-site Galera cluster across two physical sites plus a third-site arbitrator, with segment weighting so quorum survives losing an entire location.

galeramariadbmulti-site
iRedMail

iRedMail - Upgrade Core + from Debian 12 to 13

February 14, 2026

Notes and sources for upgrading an existing iRedMail installation's underlying OS from Debian 12 to 13 without breaking mail delivery.

iredmaildebianupgrade
OPNSense

Deploy OPNSense Site-to-Site VPN

February 14, 2026

Connecting two OPNSense firewalls at different sites with a site-to-site VPN, so both locations can reach each other's internal networks as if they were one.

opnsensevpnnetworking
MariaDB & Galera

Launch Galera Cluster from Site 1 to Site 2

February 14, 2026

Extending an existing single-site Galera cluster to a second physical site, covering the actual join process, segment configuration, and what to check before calling it done.

galeramariadbmulti-site
MariaDB & Galera

Import large MySQL DB into a Galera cluster

February 14, 2026

Three different methods for importing a large existing MySQL database into a live Galera cluster without taking the cluster down or blowing out disk space mid-import.

mysqlgaleramariadb
Self-Hosted Tools

Deploy Termix for web-based SSH access

February 14, 2026

Self-hosting Termix for browser-based SSH access to your servers, no local terminal or SSH client install required.

termixsshweb-terminal
Self-Hosted Tools

Brow6l - Web browser inside the Terminal

February 14, 2026

Running a real, image-rendering web browser inside an SSH terminal session using Sixel graphics, useful for a quick check from a session with no desktop environment at all.

terminalbrowsercli
Uncategorized

Automate an AI-powered Self-Healing n8n workflow with Prometheus and Loki

February 14, 2026

2-part series
Vaultwarden

Deploy Vaultwarden in multi-site environment in HA (Docker, OPNSense, Galera cluster, Nginx)

January 16, 2026

Running Vaultwarden across multiple sites in high availability, backed by a Galera database cluster and load-balanced through OPNSense, so one server going down never means losing access to your passwords.

vaultwardendockeropnsensegalerahigh-availability
OPNSense

How to create High Availability for a Web Server using Syncthing and HAProxy (on OPNSense)

December 8, 2025

Keeping a website running through single-server failures by syncing web files across multiple nodes with Syncthing and load-balancing traffic between them with HAProxy on OPNSense.

opnsensehaproxysyncthinghigh-availability
MariaDB & Galera

Set up a Galera Witness on Hetzner using Terraform + Ansible

November 21, 2025

Deploying a low-cost Hetzner VPS as a Galera arbitrator using Terraform and Ansible from AWX, giving a multi-site cluster real third-site quorum without a full extra database node.

galeraterraformansiblehetzner
Proxmox

Automate Graceful Shutdown for Proxmox with RPi and APC UPS

November 9, 2025

Turning a Raspberry Pi and an APC UPS into a full graceful-shutdown system for multiple Proxmox hosts, with staggered shutdowns, email alerts, and automatic Wake-on-LAN power-back-on.

proxmoxraspberry-piupsapc
MariaDB & Galera

Deploy MariaDB LXC in HA with Galera / HAProxy on Proxmox with OPNSense

November 9, 2025

Turning a single MariaDB instance into a synchronous multi-master Galera cluster across Proxmox LXC containers, load-balanced with HAProxy on OPNSense and backed by a Raspberry Pi arbitrator.

mariadbgalerahaproxyopnsenseproxmox
OPNSense

How to join 2 OPNSense boxes in a cluster (pfSync) with LAN + WAN High Availability (CARP)

June 30, 2025

Clustering two OPNSense firewalls with pfSync and CARP so both LAN and WAN failover automatically if one box goes down, using a consumer router as a CARP-aware upstream example.

opnsensepfsynccarphigh-availability
iRedMail

Install iRedMail Mail Server on Proxmox behind HAProxy using OPNSense

October 31, 2024

Standing up a full iRedMail mail server on a Proxmox VM, fronted by HAProxy on OPNSense so it can sit behind the same firewall as everything else.

iredmailproxmoxhaproxyopnsense
Proxmox

Backup Proxmox VMs & Containers into S3-compatible storage

August 16, 2024

Comparing S3-compatible storage providers for off-site Proxmox backups, then wiring one up with rclone for automated, scheduled backups outside your home network.

proxmoxbackuprclonegcp