When a website goes down, working through checks in the right order saves critical time. This checklist moves from the fastest, most common causes to deeper investigation.
Step 1 — Confirm It's Actually Down (Not Just for You)
Use a third-party "down for everyone or just me" checking tool, or ask someone on a different network to test. If it's only down for you, the problem may be local DNS caching or your own ISP — not the server.
Step 2 — Can You Still SSH/RDP into the Server?
ssh deploy@YOUR_SERVER_IP
If you can't connect at all, see VPS Unreachable/Can't Connect via SSH: Troubleshooting Guide — the issue is likely at the network or server level, not the application.
Step 3 — Check If the Web Server Is Running
sudo systemctl status nginx
sudo systemctl status apache2
If stopped, start it and check why it stopped:
sudo systemctl start nginx
sudo journalctl -u nginx -n 50
Step 4 — Check Disk Space
df -h
A full disk is one of the most common causes of a site suddenly going down — databases and web servers often fail silently when they can't write. See How to Fix "No Space Left on Device" Errors.
Step 5 — Check System Resources
free -h
uptime
top
High load or exhausted RAM can make a server unresponsive without technically being "down."
Step 6 — Check the Application/Backend
docker ps
sudo systemctl status your-app-service
If using a reverse proxy (Nginx in front of an app), confirm the backend process is actually running:
curl http://127.0.0.1:3000
Step 7 — Check the Database
sudo systemctl status mysql
sudo systemctl status postgresql
A crashed or unreachable database is a very common root cause of a site that "was working fine."
Step 8 — Check the Error Logs
sudo tail -100 /var/log/nginx/error.log
sudo tail -100 /var/log/apache2/error.log
This almost always identifies the exact failure — the fastest path to a real answer, not guesswork.
Step 9 — Check DNS
dig +short yourdomain.com
Confirm it resolves to the correct IP address; DNS misconfiguration or an expired domain can look identical to a "server down" scenario.
Step 10 — Check SSL Certificate Expiry
sudo certbot certificates
An expired certificate can cause browsers to block the site entirely, appearing as "down" to visitors even though the server is fine.
Step 11 — Check the Firewall
sudo ufw status
Confirm ports 80/443 haven't been accidentally blocked by a recent change.
Quick Reference Diagnostic Table
| Symptom | Most Likely Cause |
|---|---|
| "Connection refused" | Web server not running, or firewall blocking |
| "502 Bad Gateway" | Backend app crashed or unreachable |
| Site loads but very slow | High CPU/RAM usage, or database bottleneck |
| SSL/certificate warning | Expired or misconfigured certificate |
| "This site can't be reached" (DNS error) | DNS misconfiguration or domain expiry |
After the Incident: Prevent It Next Time
- Set up basic uptime monitoring so you're alerted before customers report it
- Enable automatic security updates — see How to Enable Automatic Security Updates on Ubuntu & Debian
- Monitor disk space proactively — see How to Check and Manage Disk Usage on a Linux VPS
Related Articles
- VPS Unreachable/Can't Connect via SSH: Troubleshooting Guide
- How to Fix Common Nginx Errors (502/504/403)
- How to Diagnose a Slow VPS: Complete Performance Checklist
