In this guide 6 sections
Each month, patch and reboot the servers, restore one backup to a scratch machine, check disk space and log rotation, and list certificate expiry dates. Then review user accounts and SSH keys, and test that alerts reach a person. Record the date and any surprise.
Patch and reboot on a fixed night
Pick the same evening each month and announce it. Staff stop asking whether a restart is planned once it always falls on the second Tuesday. The habit holds. Run apt or yum for the operating system updates first. Then update the packages your applications depend on, such as Nginx, PostgreSQL or MySQL, and the PHP or Node runtime.
Reboot afterwards. Always. Many kernel and library fixes only take effect after a restart, and a server that has run for two hundred days is an unknown. Open the application once it returns and check the login page, one report and one write.
Take a snapshot or an image just before you start. If an update breaks something, you roll back in minutes instead of rebuilding the machine over a weekend.
- Kernel and security updates applied
- Web server, database and runtime versions noted
- Reboot completed and uptime reset
- Login, one read and one write tested
- Snapshot taken beforehand and kept for a week
Restore a backup, do not just count them
A green backup job proves that files were written. It does not prove that they open, or that they are complete. Once a month, restore the latest mysqldump or pg_dump file and one folder of customer uploads onto a spare machine.
Then run a query. A real one. Count the orders from yesterday and compare the figure with production. Time the whole exercise with a stopwatch, because that duration is your honest recovery estimate.
Check that the backup copy sits somewhere else, in another account or another region. A copy on the same disk dies with the disk.
- Latest dump restored to a scratch server
- Row count compared with production
- Restore time written down
- Offsite copy confirmed present and readable
Watch disks, logs and certificates
Full disks cause more small-business outages than attackers do. Check them with df and du. Look at free space on every volume and at the biggest directories under /var. Confirm that logrotate runs for the application logs, the Nginx access log and the database log, and that old archives are deleted.
Certificates expire on a date you can read. List every domain and its expiry from the server itself with openssl, then check that the certbot renewal job ran. A certificate lapsing on a Saturday is a classic avoidable call-out.
Add the domain registration renewal to the same list. It is forgotten just as often.
Review who can get in
List the Linux users, the sudo group and every public key in authorized_keys, then match each one to a name. Remove the contractor who finished in spring and the developer who left last year.
Check the database roles and the hosting control panel logins too. Shared accounts hide who did what, so give each person their own. Turn off password login over SSH wherever keys are in use.
Look at the failed login count in the auth log. A sudden jump tells you someone is guessing.
- Every user and key matched to a person
- Leavers removed from servers and panels
- Password SSH disabled where keys exist
- Firewall rules read once, line by line
Prove the alerts still reach you
Monitoring that nobody receives is decoration. Trigger a test alert for disk, CPU and an uptime check, and confirm that the phone of the person on call buzzes. Phone numbers change. Mail rules swallow messages.
Skim the dashboards for slow drifts such as swap use creeping up, page response times lengthening or the job queue growing. Drifts are cheaper to fix in month one than in month six.
Finish by filing the sheet. Keep twelve months together so a pattern shows up, and book next month’s date before closing the file.
Monthly server run sheet
A one-page table listing each task. Columns are task, server name, date done, person, result and notes. Rows cover patching, reboot, restore test with minutes taken, free disk per volume, log rotation, certificate expiry dates, user and key review, alert test and dashboard drift. A footer holds the next scheduled date and any follow-up job.
Open a blank worksheet to printQuestions owners ask
How often should a small business patch its servers?
Monthly suits most teams, with urgent security fixes applied sooner. Fixed dates matter more than the exact interval. Staff plan around a known evening, and the work never slides.
Do I need to reboot every month?
Usually yes. Kernel and core library updates stay inactive until a restart. Reboot on a planned night and test the application afterwards.
What is the most skipped task on this list?
The restore test. Teams trust the green tick on the backup job. A scratch restore is the only way to learn that the files are complete and how long recovery takes.
Who should own this checklist?
One named person, with a backup. If it belongs to everyone, nobody runs it. Rotate the owner each quarter if you like, but keep one name beside each month.
