Developer Guides & Tutorials

Long-form, no-fluff engineering guides on getting an application into production and keeping it there — real commands, real config files, and the failure modes that only show up on a live server.

Sep 202612 min read
Hardening an Ubuntu EC2 Server: SSH, UFW, fail2ban and Automatic Updates

The security baseline for a public-facing Ubuntu instance — key-only SSH, a default-deny firewall, intrusion banning, unattended security upgrades, and the Docker iptables gap that silently bypasses your firewall rules.

Sep 202612 min read
Zero-Downtime Deploys to EC2 with GitHub Actions

Build a pipeline that tests, builds a tagged image, and deploys to an EC2 instance without dropping requests — using OIDC instead of long-lived AWS keys, SSM instead of SSH, and a health-gated release step that rolls itself back.

Sep 202613 min read
Deploying FastAPI, PostgreSQL and Nginx with Docker Compose

A production-shaped Docker Compose stack: multi-stage builds that keep images small, healthchecks that make dependency ordering real, named volumes that survive a rebuild, and the security defaults the tutorials leave out.

Sep 202614 min read
Running PostgreSQL in Production on EC2: Tuning, PgBouncer and Backups

What to change from the PostgreSQL defaults on a real server, why connection pooling stops being optional around 100 clients, and how to build a restore process you have actually tested rather than a backup you merely have.

Sep 202613 min read
Nginx as a Production Reverse Proxy: TLS, HTTP/2, Compression and Rate Limiting

The Nginx configuration that sits between the internet and your application server — modern TLS, HTTP/2, Brotli and gzip, request rate limiting, security headers, and the proxy buffering settings that decide how your app behaves under load.

Sep 202614 min read
Deploy a FastAPI App on AWS EC2 with Nginx, Gunicorn and systemd

A complete walkthrough of putting a FastAPI application on a bare Ubuntu EC2 instance: Uvicorn workers under Gunicorn, a systemd unit that survives reboots, and Nginx terminating TLS in front. Includes the failure modes nobody warns you about.