Skip to content
Faizul Karim Fahim

~/blog

Blog: Linux servers, hosting & DevOps

Notes on Linux servers, hosting, DevOps, web development and the tools I use.

Latest posts

Diagram illustrating Nginx acting as a reverse proxy in front of an Apache server.
Security 4 min read

Configuring Nginx as a Reverse Proxy for Apache

I've been using Nginx as a reverse proxy in front of Apache for years, and it's significantly improved my server's performance and security. Here's how I set it up, and some of the common pitfalls I've learned to avoid.

Illustration of an email envelope being accepted into an inbox, with icons representing SPF, DKIM, and DMARC.
Security 5 min read

Email Deliverability: SPF, DKIM, and DMARC with Postfix

Getting your emails into the inbox instead of the spam folder can be tricky. I'll walk you through setting up SPF, DKIM, and DMARC with Postfix, the basics I use on my servers to improve email deliverability.

Illustration of a padlock icon overlaying an Nginx logo on an Ubuntu server terminal.
Security 3 min read

Setting up Let's Encrypt with Nginx on Ubuntu

Getting HTTPS right can feel like a pain, but it doesn't have to be. I'll walk through setting up Let's Encrypt with Nginx on Ubuntu, so your sites are secure and you don't have to wrestle with certificate renewals.

Illustration of a server with a shield and padlock, representing server security.
Security 4 min read

Server Hardening: SSH, Firewalls, and Fail2ban

Keeping my servers secure is always a priority, and a good starting point is tightening up SSH, configuring a basic firewall, and using Fail2ban to block brute-force attempts. It's not about perfect security, but about making things harder for attackers.

A stylized illustration of shipping containers layered on top of a server rack, symbolizing Docker containers for web applications.
DevOps 4 min read

Docker for Web Apps: A Practical Guide

Setting up Docker can feel overwhelming, but it’s really worth it for keeping my web apps consistent across environments. I’ll walk through the basics, from your first Dockerfile to running a simple PHP app.

Illustration of a Laravel logo being deployed to an Ubuntu server via GitHub Actions workflow.
DevOps 2 min read

Automating Laravel Deployments with GitHub Actions

Setting up automated deployments for my Laravel projects used to be a headache, but GitHub Actions has made it significantly easier. Here's how I automate deployments to Ubuntu servers using GitHub Actions, and some common gotchas I've run into along the way.

A stylized image of a database server with a magnifying glass over a log file, representing performance analysis.
Web Development 2 min read

MySQL Slow Query Log Analysis for Performance

Finding bottlenecks in your database can be tough, but the MySQL slow query log is a goldmine. I'll walk through how I use it to pinpoint the queries slowing down my servers.

A stylized image of a gear icon overlaid on a PHP code snippet, representing performance optimization.
Web Development 4 min read

PHP Performance Tuning for Small VPSes

Getting slow PHP performance on a small VPS? I'll walk you through the common bottlenecks and the practical steps I take to speed things up: from PHP-FPM configuration to opcode caching, with a focus on what works best for limited resources.

Terminal screen showing successful deployment output on an Ubuntu server
Web Development 4 min read

Zero-Downtime Laravel Deployment on Ubuntu

I configure zero-downtime Laravel deployments on Ubuntu servers using Git, PHP 8.3, and basic shell scripts without complex CI/CD tools.