Blog
Technical articles on web development, DevOps, deployment, servers and email infrastructure.
Nginx Rate Limiting for Public API Endpoints
limit_req zones, burst settings, and returning 429 without starving legitimate Next.js traffic.
Read articleNext.js Standalone Output for Docker Deployment
Smaller container images with standalone builds, runtime env vars, and health checks in production.
Read articleDNS Records Every Web Deployment Needs
Apex, www, MX, TXT for verification, and CAA records explained for launch checklists.
Read articleFail2ban SSH Hardening on Ubuntu Servers
Reduce brute-force noise with Fail2ban jails, whitelist IPs, and sensible ban durations.
Read articleLog Rotation for Nginx and Journald on Ubuntu
Keep disk usage stable with logrotate, journald limits, and centralized shipping options.
Read articleBlue-Green Deployments on Single Linux Hosts
Swap symlinked releases and dual PM2 apps for low-risk deploys without Kubernetes complexity.
Read articleRunning Prisma Migrations Safely in Production
Expand-contract patterns, backups, and deploy ordering when applying Prisma schema changes live.
Read articleCore Web Vitals Optimization for Next.js Sites
LCP, INP, and CLS improvements for Next.js apps deployed on Linux with Nginx caching at the edge.
Read articleBounce Handling and List Hygiene for Deliverability
Hard vs soft bounces, suppression lists, and feedback loops that keep sender reputation healthy.
Read articlePostfix and Dovecot Mail Server Basics on Ubuntu
When self-hosting mail makes sense, and baseline Postfix and Dovecot setup considerations on Ubuntu.
Read articleTransactional Email SMTP Relay Architecture
How to route password resets and receipts through reliable SMTP relays with bounce handling.
Read articleHow to Deploy a Next.js Application with Nginx on Ubuntu
Step-by-step production deployment for Next.js on Ubuntu with Nginx, PM2, and Let's Encrypt SSL.
Read articleEmail Warmup for a New Sending Domain
Volume ramp, engagement signals, and authentication when you start mail from a fresh domain or IP.
Read articleNginx Reverse Proxy for WebSocket Applications
Upgrade headers, timeouts, and load balancing for realtime features behind Nginx on Linux.
Read articleDocker Compose for Production: What You Need to Configure
Restart policies, health checks, secrets, and volumes you need before running Compose in production.
Read articleSSL and TLS Hardening for Nginx in 2024
Modern cipher suites, HSTS, OCSP stapling, and certificate chain completeness for public sites.
Read articleSPF, DKIM and DMARC: What They Do and How to Configure Them
Practical DNS authentication for outbound mail: SPF, DKIM signing, and DMARC policies explained for real sending stacks.
Read articleFinding Node.js Memory Leaks in Production
Signals, heap snapshots, and PM2 restarts when Node.js memory grows on long-running Linux servers.
Read articleGitHub Actions Deployment to Ubuntu VPS
SSH-based deploy pipelines that build Next.js apps and reload PM2 without exposing secrets in logs.
Read articleTroubleshooting 502 Bad Gateway Errors in Nginx
Systematic causes of Nginx 502 errors—upstream crashes, ports, timeouts—and how to fix them quickly.
Read articleRedis Caching Patterns for Next.js Production
Session storage, rate limiting, and data cache layers with Redis behind a Next.js app on Linux.
Read articlePostgreSQL Backup Strategy on Linux VPS Hosts
Logical dumps, retention, off-site copies, and restore drills for PostgreSQL on single-server deployments.
Read articleCertbot Auto-Renewal with Nginx on Linux
How Let's Encrypt renewal works on Nginx hosts, dry-run testing, and alerts before certificates expire.
Read articleUFW Firewall Rules for Ubuntu Web Servers
A minimal UFW ruleset for public web servers: SSH, HTTP, HTTPS, and when to restrict admin ports.
Read articlePM2 Cluster Mode for Next.js in Production
When to use PM2 cluster mode with Next.js, how many instances to run, and pitfalls with in-memory state.
Read article