Server Operations: 47 Sites on Three Servers
Running what this portfolio is made of: three servers, 47 websites, databases, certificates, backups and protection. Not as a side task but as work in its own right — everything else is only reachable because of it.
What was done
- One Nginx as the shared entrance in front of every site; each site in containers of its own
- Nightly backup of databases, files and configuration to Google Drive, verified by size rather than trusted blindly
- Let’s Encrypt certificates renewed and deployed to Nginx automatically
- All configuration lives in Git: every change is traceable and reversible
- Checks every five minutes: if a site goes down, a message reaches Telegram immediately
Result
- Attack on the WordPress login: 4,178 attempts from 539 addresses in one day
- After four layers — Cloudflare rules, refusal of requests that bypass Cloudflare, an automatic block list, a hardened login — what arrives is single requests per hour
- An out-of-memory outage used to take hours to notice; now it announces itself in five minutes
Stack: Docker Compose, Nginx, Traefik, Caddy, MariaDB, PostgreSQL, Redis, Cloudflare, certbot, rclone, Git