DevOps

For me, DevOps is not a separate role but a collection of practices that make software delivery more reliable and enjoyable. In this category, I share practical observations about automation, CI/CD, deployments, infrastructure, and the tools I use while building personal and commercial projects.

how-automatic-ssh-tunnels-can-lock-you-out-of-your-own-server.png
DevOps

How Automatic SSH Tunnels Can Lock You Out of Your Own Server

SSH can stop accepting new connections even while the server is reachable, the website works, and sshd is active. One less obvious cause is an automatic SSH tunnel that reconnects too aggressively and hits an UFW LIMIT rule.

13
upgrading-php-for-one-dockerized-project-without-breaking-another.png
DevOps

Upgrading PHP for One Dockerized Project Without Breaking Another

When several Dockerized projects share one machine, a PHP upgrade should remain a local change to one environment. Isolated runtimes, separate workspace containers, clear service naming, and Composer compatibility checks help prevent one project upgrade from silently breaking another.

26
run-deployment-preflight-before-maintenance-mode-not-after.png
DevOps

Run Deployment Preflight Before Maintenance Mode, Not After

If the build, dependencies, configuration, or basic checks can fail before production state changes, there is no reason to make the site unavailable first. Maintenance mode should begin only after preflight passes and only for steps that truly require a short downtime window.

24
one-off-import-scripts-are-production-code-too.png
DevOps

One-Off Import Scripts Are Production Code Too

A script that runs only once can still create duplicates, assign the wrong category, publish internal identifiers, or break bilingual content structure. If it changes production data, it deserves the same defensive thinking as regular application code.

34
740-requests-in-three-minutes-hardening-nginx-without-blocking-real-readers.png
Nginx

740 Requests in Three Minutes: Hardening Nginx Without Blocking Real Readers

After another traffic spike, I did not immediately block a country, User-Agent, or IP. I first correlated Laravel Analytics with Nginx logs, separated several independent traffic sources, verified Fail2ban behavior, and only then added Nginx rate limiting in dry-run mode.

49
a-backup-file-existing-does-not-mean-your-backup-strategy-works.png
DevOps

A Backup File Existing Does Not Mean Your Backup Strategy Works

A backup file on a server proves very little by itself. You need to know when it was created, whether the job runs regularly, whether the size looks plausible, whether recent runs succeeded, and most importantly, whether the data can actually be restored.

25