Troubleshooting self-hosted servers
Finding out why a self-hosted app doesn't start, can't be reached or keeps failing.
Most failures on a self-hosted server fall into a few families: a container that never becomes healthy, a port that isn't where the proxy expects it, a disk that fills up, or a setting that one component reads differently from another.
This topic collects tools that check files before they run and pages that follow a symptom to its cause, with the commands that confirm each step on your own server.
A recommended path
- Write down the symptom
Note what fails, the exact error message and what changed just before it started.
- Check the files
Run the Compose file through the Analyzer to rule out configuration mistakes first.
- Confirm on the server
Read the logs and the state of each container on the server itself before you change anything.
Tools and pages
| Page | Type | About |
|---|---|---|
| Docker Compose Analyzer | Tool | Static checks for a docker-compose.yml, in your browser. Nothing leaves this page. |
| cloud-init validator | Tool | Paste the user-data you are about to give a new server and get findings that say what to change and why, each tied to the cloud-init documentation. The file stays in this browser; a private key in it is masked at once. |
| Docker Compose diff | Tool | Paste two versions of a Compose file and see what really changed, and which changes make it riskier. Key order and short or long syntax do not count. Both files stay in this browser. |
| Dockerfile linter | Tool | Paste a Dockerfile and get findings that say what to change and why, each tied to Docker's own documentation. The file stays in this browser, and secrets in it are masked. |
| DNS go-live checker | Tool | Before you point visitors at a new server, check what DNS really answers: whether the name resolves to your server's address, whether the resolvers already agree, and whether anything will stop the certificate. Your browser asks two public resolvers directly; nothing goes through or stays with ANAROQ. |
| Docker subnet conflict checker | Tool | Enter your LAN and VPN ranges, or paste ip route output, and see which Docker networks would collide with them, and a pool that avoids them for daemon.json. Nothing you enter or paste leaves this page. |
| Production readiness checklist | Tool | Before a self-hosted server goes live, go through what usually breaks first. Each item says what to check, gives a read-only command to run on the server, explains why it matters and links to the tool on this site that helps. Your marks are kept in the link, never sent. |
| Container keeps restarting: find the cause from its exit code | Reading | A step-by-step check for a Docker container stuck in a restart loop: read its status and exit code, follow the branch that matches, and fix the cause with commands you run on your own server. |
See also: Check and troubleshoot · Methodology · Free tools