Server mistakes
Every item here happened on a server we ran or were responsible for in 2026. Read it in your first week, and add to it.
The pattern behind most of them
Access and building
- A build on a 2 GB server ran out of memory and killed the management agent. The box was unreachable for 25 minutes until a reboot. Build in CI.
- A server's git remote held an expired token, so
git pulldeploys broke. Ship images, not checkouts. - A password manager server went down and staff lost their TOTP codes. Critical tools need monitoring and a backup path.
- Server passwords and private keys were kept in text files in a shared folder.
- Wrong builds were deployed by hand to a demo server, and one service ran a build about three months old.
Backups
- An empty 20-byte dump passed every check for weeks.
- A dev box had no backups at all.
- Dumps went to
/tmpon the same server. - A client's backups sat on the compromised database server.
- Manual production snapshots never expired.
Upgrades and patching
- A retired download URL broke deploys for three weeks, silently.
- A full OS update ran out of memory on a tiny instance.
- Web apps ran a Node version past end of life.
- Terraform defaulted to a database version AWS no longer creates.
Disks and logs
- Compose services had no log limits.
- Log groups kept data forever.
- A client's app log grew 1.5 GB a day and recorded neither paths nor client addresses.
Cost and clean-up
- Stacks ran for weeks with nothing pointing at them.
- Load-test clones kept costing after the test.
- A retired stack left an admin IAM group and hand-made parameters behind.
- A dev box ran past its delete-after date.
Monitoring
- No uptime check on any self-hosted box. Each outage was found by a person.
- Alarm noise led people to ignore alerts, until alarms were split into notify and silent tiers.