What Happens When Your VPS Goes Down at 3am
It is going to happen. At some point, something running on your server is going to crash, fill up the disk, run out of memory, or just stop responding for a reason that makes no sense at 3am. I have been there. Most people who run their own servers have. What separates the people who handle it calmly from the ones who spiral is preparation.
⚡ VPS with monitoring included from $5/mo — Use code LAUNCH2026 for 50% offThe 3am Scenario
Your phone buzzes. It is an alert from your uptime monitor. Your site is down. You are half asleep, your heart rate immediately goes up, and your first instinct is to panic. Do not panic. Take a breath. Follow the process.
The good news is that most outages have simple causes. The bad news is that figuring out which simple cause it is while sleep-deprived is harder than it sounds. This is why you set up monitoring before something goes wrong, not after.
Step 1: Find Out What Is Actually Wrong
SSH in if you can. If you cannot SSH in, that tells you something is seriously wrong at the OS or network level and you may need to use your host's out-of-band console access.
systemctl status your-app # Is the app running?
df -h # Is the disk full?
free -h # Are you out of RAM?
top # Is something pegging the CPU?
journalctl -u your-app -n 50 # What do the logs say?
The Most Common Causes
Disk Full
This is the most common cause of mysterious server failures. Log files grow silently for weeks until they fill the disk and suddenly nothing works. Fix it:
du -sh /var/log/* | sort -rh | head -10
sudo truncate -s 0 /var/log/nginx/access.log
sudo rm /var/log/*.gz
Out of Memory
The Linux OOM killer starts terminating processes when RAM runs out. Check if your app was killed:
journalctl -k | grep -i "oom\|killed process"
Restart the app and consider adding a swap file if you are consistently near the RAM limit.
App Crashed
The process just died. Check the logs, find the error, restart it:
systemctl restart your-app
journalctl -u your-app -n 100
Nginx Misconfiguration
A bad config file after an edit:
sudo nginx -t
sudo systemctl restart nginx
How to Make Sure You Know About It Before Your Users Do
The worst version of a 3am outage is finding out at 9am when a customer emails you. Set up monitoring so you find out first.
Uptime Kuma is free, self-hosted, and takes 10 minutes to set up. It checks your site every 60 seconds and sends you a notification the moment it goes down. Discord, email, Telegram — however you want to be woken up.
Galaxy Cloud Solutions runs an availability monitor on every customer VM that automatically tries to restart it if it goes down, and sends an alert via email and Discord if the restart attempt fails. You should not have to be the one discovering the problem.
How to Make It Less Likely to Happen Again
- Set up log rotation —
logrotateis installed on most systems, make sure it is configured - Set up a swap file — gives you a buffer when RAM spikes unexpectedly
- Use systemd to restart your app automatically —
Restart=alwaysin your service file means a crash is a blip, not an outage - Monitor disk usage — alert yourself when disk hits 80%, not 100%
- Keep backups — the worst outages are the ones where you also lost data
The Part Nobody Talks About
The first time your server goes down in the middle of the night it feels like a crisis. The tenth time it feels like maintenance. The difference is experience and preparation. Every outage teaches you something. Write down what caused it and what you did to fix it. After a few of them you will have a runbook that covers most scenarios and the 3am panic starts to feel more like a routine.
Running your own server is not for everyone, but if you are the kind of person who wants to understand what is happening under the hood, the outages are part of the education.
Automatic VM monitoring and restart included
Galaxy Cloud Solutions monitors every customer VM every 5 minutes and automatically attempts a restart if it goes down. You get an alert either way. Plans from $5/mo — use code LAUNCH2026 for 50% off.
Get Started