🚚
Migration
PHP 5.6 → 8.2 platform migration
Led the move of a high-traffic AWS-hosted client onto Ubuntu 24.04, Apache 2.4 and MariaDB 10.11 with a ~176 GB database. Header-based ALB routing let the new stack serve real traffic for testing before anyone was cut over, backed by a full dump/restore sync and a Gitolite auto-deploy pipeline.
AWS ALBUbuntu 24.04MariaDB 10.11GitolitePHP 8.2
→ Seconds-level target-group rollback path
⚡
Performance
High-load triage on production nodes
Resolved sustained load events of 45–80 on 8–24 core production servers by attributing I/O and CPU with pidstat, iostat and sar rather than guessing. Causes traced to scanner bursts running under PHP-CGI without LVE caps, oversized IMAP maildirs holding Dovecot index locks, and EXT4 metadata corruption.
pidstatiostatsarCloudLinux LVEDovecot
→ Root-caused, not restarted
💾
Data recovery
WooCommerce recovery after InnoDB corruption
A disk-full event corrupted InnoDB and forced a MariaDB rebuild on a DirectAdmin server. Recovered order, tax, attribute and shipping data across multiple stores by working from pre-rebuild data-directory snapshots.
InnoDBMariaDBDirectAdminWooCommerce
→ Live commerce data recovered, not written off
🚨
Incident
Rootkit-level compromise containment
Investigated and contained active compromises involving rogue systemd services, /etc/ld.so.preload hooks, hidden payload fetchers, webshells and crypto-mining processes. Forensic log analysis, cleanup and post-incident hardening across WordPress and Joomla environments.
Forensicsld.so.preloadsystemdWordPressJoomla
→ Contained, cleaned, hardened against repeat
🛡️
Hardening
Repeat-incident reduction programme
Deployed ModSecurity vendor rulesets (OWASP and Comodo) wired to CSF auto-ban triggers, Fail2Ban watching non-standard SSH ports under firewalld, and KernelCare live patching — plus a firewall rule optimisation pass.
ModSecurityCSFFail2BanfirewalldKernelCare
→ Fewer repeat incidents across the estate
📦
Migration
DigitalOcean → AWS EC2 moves
Executed cPanel-to-cPanel and cross-provider migrations onto AWS EC2, with post-migration validation sweeps — curl status checks across every domain, then path and permission fixes — before the old host was released.
AWS EC2cPanelDigitalOceancurl sweeps
→ Validated before handover, not after complaints
✉️
Mail & DNS
Delivery and authentication repair
Troubleshot delivery and authentication failures across Exim, Postfix and Dovecot — SPF, DKIM and DMARC records, spam filtering and blacklist delisting — alongside DNS record fixes, certificate renewal and manual AutoSSL recovery via acme.sh.
EximPostfixSPF / DKIM / DMARCRBL delistingacme.sh
→ Inbox placement and SSL restored
📊
Monitoring
Multi-server monitoring coverage
Maintained Zabbix, Grafana and Nagios coverage across multi-server fleets, tuning alert thresholds so pages meant something, and running proactive health sweeps to catch disk and load problems before customers did.
ZabbixGrafanaNagiosAlert tuning
→ Problems caught before the ticket arrives
🌱
Academic
IoT plant-watering automation
Internship project at Exposys Data Labs: an Arduino-based irrigation system using soil-moisture sensors to regulate water levels automatically.
ArduinoIoTSensors
→ Built end to end during a one-month internship
No projects match that filter.