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

  1. Write down the symptom

    Note what fails, the exact error message and what changed just before it started.

  2. Check the files

    Run the Compose file through the Analyzer to rule out configuration mistakes first.

  3. Confirm on the server

    Read the logs and the state of each container on the server itself before you change anything.

Tools and pages

Tools and pages
PageTypeAbout
Docker Compose AnalyzerToolStatic checks for a docker-compose.yml, in your browser. Nothing leaves this page.
cloud-init validatorToolPaste 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 diffToolPaste 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 linterToolPaste 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 checkerToolBefore 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 checkerToolEnter 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 checklistToolBefore 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 codeReadingA 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

Next step

Docker Compose Analyzer