admin

admin

Running Multiple VPN Regions in Docker

In an earlier post, we covered split-tunnel VPN proxying: keeping your main application on its normal, direct connection, and routing only specific requests through a VPN container acting as an HTTP proxy. This post extends that pattern to multiple VPN…

Let’s Encrypt on Cloud Key Gen2

The UniFi Cloud Key Gen2 (and Gen2 Plus) ships with a self-signed certificate, so every browser throws a warning when you open its admin UI. Here’s how to get a real, free Let’s Encrypt certificate on it automatically, and keep…

Deploying WUD (What’s Up Docker) in Production

Keeping container images up to date across a homelab or small production environment is tedious to do by hand. WUD (What’s Up Docker) solves this by watching your running containers, checking registries for newer images, and optionally triggering updates automatically — all…

ESPHome Motion-Triggered Air Freshener

Not every ESPHome project needs to be an 8-zone irrigation controller with a queue system and current-sensing fault detection. This one is much smaller — an ESP32-C3 with a PIR motion sensor and a small DC gear motor, driven by…

ESPHome 8-Zone Smart Irrigation Controller

ESPHome is deceptively simple to get started with — a YAML file, a few sensors, done. It’s much less simple once a project grows into something that has to run unattended for months, survive power blips mid-cycle, and not silently…

Moodle Install and Upgrade Scripts (Ubuntu/Debian)

Moodle 5.x changed enough about how a server needs to be set up that a lot of older install guides are now actively wrong: the web root moved into a /public subdirectory, the minimum PHP version climbed to 8.3, and Composer became…

Securing a WordPress Server with UFW

UFW (“Uncomplicated Firewall”) is the easiest way to lock down a WordPress server on Ubuntu or Debian. This guide covers installing UFW, setting sane defaults, opening only the ports WordPress actually needs, and checking status. 1. Install UFW Most Ubuntu…