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

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

From scaffold to live site in 11 minutes

How a Waaseyaa site goes from composer create-project to production HTTPS in 11 minutes — and the deployment patterns shared across all Waaseyaa applications.

March 23, 2026 · 6 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

Manage DigitalOcean Infrastructure With Ansible for Laravel and PHP Apps

How to structure an Ansible repo to manage two DigitalOcean droplets, six Laravel apps, and a Go microservices platform without replacing the existing Deployer workflow.

March 18, 2026 · 5 min · Russell