Connection timed out
A timeout means nothing answered at all. That is different from an error page: a 404, a 502 or a 500 means something answered, so those point at another cause
Updated Sep 24, 2026
A timeout means nothing answered at all. That is different from an error page: a 404, a 502 or a 500 means something answered, so those point at another cause. Use the section that matches where you see the timeout.
1. Your app's URL times out in the browser
Check the deployment is running. Open the deployment and look at the state and the console. A deployment that is installing, crashed or stopped has nothing listening.
Check what your app listens on. This is by far the most common cause. Your app must:
- listen on the port given by the
SERVER_PORTenvironment variable, never a hard coded port - bind
0.0.0.0, not127.0.0.1
// Node
app.listen(process.env.SERVER_PORT, "0.0.0.0")
# Python
uvicorn main:app --host 0.0.0.0 --port $SERVER_PORT
An app bound to 127.0.0.1 works inside the container and is unreachable from outside, which looks exactly like a timeout or a 502.
If you use a custom domain. Go to the Domains tab of the deployment and check that:
- the DNS record matches exactly what the panel shows
- the domain shows as verified
A record that points somewhere else, or a proxy sitting in front that is not configured, produces a timeout. DNS changes can take a few minutes to propagate, and longer if the old record had a long TTL.
A Vite dev server returns "Blocked request". That is not a routing problem. Either add server: { allowedHosts: ['.bot-hosting.cloud'] } to your Vite config, or, better, serve the production build, which has no host check.
2. Your app cannot reach an external service
Errors like connect ETIMEDOUT, ETIMEDOUT or connection timed out in your own console mean your code tried to reach something and got no answer.
Check, in this order:
- The address and the port. A typo in a hostname, or the wrong port, times out instead of failing cleanly.
- The remote service accepts outside connections. A database on another host usually has to be told to listen publicly and to allow the connecting user from any host.
- An IP allowlist. Many database and API providers only accept connections from addresses you registered. Add your node's address, shown in the Network tab of the deployment.
- The service is simply down or rate limiting you.
You can test straight from the deployment, using the console or Studio:
curl -v https://example.com
If curl from inside the container also times out, the problem is on the remote side or in the address, not in your code.
3. SFTP or a database client times out
- Use exactly the host, port, username and password shown in the panel. SFTP uses port 2022, not 22.
- A database only answers while its deployment is running.
- Some company and school networks, and some home routers, block outgoing connections on unusual ports. Trying from another network, or from a phone hotspot, tells you in seconds whether that is the cause.
- Check your own firewall or antivirus before anything else. They are the most frequent cause of a client that never connects.
Still timing out
Open a ticket with:
- the deployment ID (it is in the URL of the deployment page)
- what you connect from and what you connect to
- the exact error message, copied, not described
- what you already tried from the list above