Backup and Disaster Recovery

Automate backups, test restores, and build a disaster recovery runbook for your VPS.

March 29, 2026 · 4 min · Russell

Generate Open Graph images with Playwright and an HTML template

Build a script that generates consistent OG social card images from an HTML template using Playwright screenshots, with smart caching and series-aware gradients.

March 29, 2026 · 5 min · Russell

Deploying Mercure alongside Caddy on a shared VPS

How to run Mercure for real-time SSE alongside Caddy as your web server, with solutions for port conflicts, gzip interference, and JWT configuration.

March 28, 2026 · 4 min · Russell

Monitoring, Alerting, and Incident Response

Set up lightweight monitoring and alerting for a solo-developer VPS, plus a post-incident checklist.

March 28, 2026 · 6 min · Russell

Automated Patching and Server Maintenance

Configure automatic security patches, detect stale services with needrestart, and keep logs and Docker images from filling your disk.

March 27, 2026 · 3 min · Russell

Secrets, Certificates, and Credential Rotation

Manage .env files, encrypt secrets with Ansible Vault, and rotate credentials without downtime.

March 26, 2026 · 4 min · Russell

Kernel and Systemd Service Hardening

Tune kernel parameters with sysctl and sandbox services with systemd to reduce your VPS attack surface.

March 25, 2026 · 4 min · Russell

Caddy Hardening: Security Headers and Rate Limiting

Add security headers, rate limiting, and server identity removal to your Caddy configuration.

March 24, 2026 · 4 min · Russell

Docker Security on a Shared VPS

Why Docker bypasses your UFW rules, how to fix it, and container hardening practices that matter on a shared VPS.

March 23, 2026 · 5 min · Russell

UFW, fail2ban, and Banning Repeat Offenders

Configure UFW rules, build a fail2ban jail for Caddy access logs, and escalate bans for repeat offenders with the recidive jail.

March 22, 2026 · 5 min · Russell