A 504 on a self-hosted Coolify application means the reverse proxy waited for your application and did not receive a response within its configured limit. In the standard Coolify path, Traefik runs in the coolify-proxy container and forwards the request to your application over Docker networking. The fastest fix is to determine whether the proxy cannot reach the container at all, the container is listening on the wrong port, or the application genuinely needs more time for a request.
Antihost offers VPS plans with one-click Coolify, NVMe storage and a 14-day free trial.
Start with timing: an immediate failure points to routing or network configuration; a failure after roughly a minute is a timeout heuristic; intermittent failures often warrant checking Docker-network isolation. Then verify DNS, firewall access, the generated route, the application’s internal port, both log streams, and an in-container health request before changing timeout values.
As an Amazon Associate I earn from qualifying purchases.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWhat a 504 means in Coolify
Coolify’s documentation defines a gateway timeout as a case where the Coolify proxy cannot get a response from the application within the configured timeout period. The proxy is not necessarily down: it may be waiting on an application that is slow, blocked on a dependency, or unreachable on Docker’s network.
A 504 is different from a 502. A 502 means the proxy could not connect to the upstream application at all. A 504 means the request path reached the proxy, but a usable response did not arrive before the proxy gave up. The distinction is useful, but it is not absolute: a broken route can sometimes produce delayed errors, so confirm the diagnosis with logs and an internal test.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
The normal request path
Coolify uses Traefik as its default integrated reverse proxy. A public request normally travels through DNS to your server, passes the firewall, reaches Traefik in coolify-proxy, and is forwarded over Docker networking to the application container and its configured internal port. A failure at any link can appear as a browser-facing 504.
Use the timing to choose your first check
| Observed behavior | Most useful first hypothesis | First action |
|---|---|---|
| 504 appears immediately | Network reachability, generated route, wrong target port, or proxy configuration | Inspect Docker networks, the generated route, and the port on which the process is listening. |
| 504 arrives after about 60 seconds | The request is waiting until a proxy timeout; this is a diagnostic heuristic, not a universal published limit | Read proxy and application logs together, then decide whether the work is legitimately slow. |
| Requests fail only sometimes | Intermittent network isolation, application saturation, dependency failures, or uneven container readiness | Compare successful and failed requests in both log streams and check container health and resource pressure. |
| 504 follows a large upload or download | The transfer or processing time exceeds the configured proxy limit | Measure the operation and set a workload-appropriate timeout only after reachability is proven. |
Do not treat “about 60 seconds” as a guaranteed Coolify or Traefik setting. Coolify does not publish one universal timeout value; the effective limit depends on the proxy configuration and infrastructure.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Follow this diagnostic sequence
1. Confirm DNS and the public entry point
Check that the domain in the browser or client resolves to the server running Coolify. A record pointing to an old host, an unexpected IPv4 or IPv6 address, or a proxying DNS service aimed at the wrong origin can send requests somewhere that cannot reach your container.
- Resolve the hostname from a network outside the server and compare the returned address with the server’s public address.
- Confirm that the firewall and cloud security group allow the expected web traffic to the server.
- Make sure the request is using the same hostname configured in the Coolify resource; route generation is normally tied to that domain.
- If you recently changed DNS, test the authoritative result and allow for resolver caching before concluding that Coolify is at fault.
These checks establish that a request can arrive at the correct proxy. They do not prove that the proxy can reach the application, which is the next part of the chain.
2. Verify that the proxy container is running
On the server, inspect the proxy container and its recent output. A stopped or repeatedly restarting proxy cannot serve routes reliably.
docker ps --filter name=coolify-proxy
docker logs coolify-proxy --tail 200
Look for route-loading errors, upstream connection messages, repeated restarts, certificate problems, and timeout lines that include the affected host. Keep the timestamp of a failing request so you can match it to the application log later.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
3. Inspect Docker-network membership
Custom Docker-network isolation is one of the primary 504 scenarios identified in Coolify’s documentation. Compose applications receive resource-specific networks by default and do not automatically join the shared coolify network. If the proxy and application do not share a reachable network, the generated route cannot deliver the request even when both containers are healthy.
docker network ls
docker ps --format "table {{.Names}}t{{.Networks}}"
Find the application container and coolify-proxy in the output. The names do not have to be identical to your resource name, but the proxy must have a network path to the application’s service. A container attached only to an isolated, resource-specific network is a strong indication of the problem.
4. Read both log streams at the same time
Read the proxy and application logs for the same failure window:
docker logs coolify-proxy --tail 200
docker logs <your-container-name> --tail 200
Replace <your-container-name> with the actual running container name. Proxy messages such as an upstream timeout, connection refusal, or missing route should be compared with application messages showing startup, dependency, database, or resource errors.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problems- If the application log shows no request at the time of the 504, investigate DNS, the generated route, Docker networks, and the target port.
- If the request arrives and then stalls, inspect the handler, database calls, external APIs, queues, and file processing that occur after receipt.
- If the container restarts during the request, fix the crash or resource exhaustion first; increasing a timeout only makes the client wait longer for a process that is not staying alive.
5. Test the endpoint from inside the application container
A health check, when enabled, runs inside the application container. Use the application’s Terminal in Coolify or an equivalent shell and send the same kind of request to the internal listener, for example:
curl --fail http://localhost:3000/health
Use the port your process actually binds to; 3000 is only an example. The final image must contain curl or wget for this test. A successful localhost request proves that the process is responding inside the container, but it does not prove that the proxy can reach the container across Docker networking. A failed request narrows the issue to the application process, its bind address, its internal port, or a missing HTTP client.
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
6. Check the bind address and internal port
The application must listen on the internal port configured in the Coolify resource, and it must bind to an address reachable from the container network. A process bound only to an unexpected port, or configured to listen only on a different interface, can leave the proxy waiting or refusing connections.
- Compare the application’s runtime port setting with Coolify’s configured internal port.
- Check startup output for the actual listening address and port.
- Ensure the route points to the service that owns the listener, not a database, worker, or unrelated Compose service.
- After changing the port, redeploy so the generated proxy configuration and container metadata are recreated together.
Repair a network-isolation problem
When the application and coolify-proxy cannot communicate, enable the predefined or shared network option for the resource that must be reached through Coolify. The exact control is resource-dependent, but the goal is the same: attach the application service to a network that the Coolify proxy can access.
- Open the affected application or Compose resource in Coolify.
- Find its networking or advanced configuration and enable the predefined/shared
coolifynetwork when the stack is intended to be publicly routed by Coolify. - Save the resource configuration.
- Redeploy, or restart in a way that recreates the proxy connection and container network attachments.
- Run
docker ps --format "table {{.Names}}t{{.Networks}}"again and confirm the expected shared network is present for both sides. - Request the domain again while watching
docker logs coolify-proxyand the application log.
Do not attach every container to every network by habit. Databases and internal services should remain isolated unless they need that connectivity. Add the shared network to the service that must receive public traffic, and keep private dependencies on their intended networks.
Decide whether a timeout change is appropriate
Increase a proxy timeout only when the route is correct, the proxy can reach the container, and the application is making real progress on a request that is expected to be slow. Typical examples include a large upload, a large download, server-side media processing, or a report that legitimately takes longer than a normal web request.
When not to increase it
- The application never sees the request.
- The container listens on a different port than the route uses.
- The proxy logs show a missing route or network connection failure.
- The process is crashing, deadlocked, or waiting forever on a failed dependency.
- A health check is failing because the application is not ready.
A longer timeout cannot repair a missing Docker network or a crashed process. It can also consume proxy workers and client connections while a broken backend remains stuck.
How to tune it safely
- Measure the slow operation under normal and peak conditions rather than choosing a value from the “about 60 seconds” symptom.
- Set a limit with headroom for the intended workload, while retaining an upper bound that prevents indefinite requests.
- Apply the setting to the relevant proxy route or application, not globally, unless every public service has the same requirement.
- Redeploy or reload the proxy configuration as required by your setup.
- Repeat the upload, download, or slow request and verify the result in proxy logs.
- Keep the application’s own request, worker, database, and upstream API timeouts consistent; the shortest limit in the chain still wins.
Coolify does not document one universal timeout number. Record the value you choose and the operation it supports so a later configuration change does not silently shorten it.
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Use health checks to separate readiness from slow requests
Coolify describes a health check as a signal that tells Docker and Coolify whether an application container is ready. A good check is lightweight and local to the service. It should confirm that the process can answer promptly, not perform a full export, call a remote API, or wait for a long-running job.
Health-check requirements
- Target the internal port, not the public domain or TLS endpoint.
- Use a path that returns quickly, such as a dedicated readiness endpoint.
- Ensure the image contains the HTTP client used by the check, commonly
curlorwget. - Make the endpoint report dependencies accurately: if the application cannot serve traffic until a database migration finishes, readiness should remain false until that condition is met.
- Review the check’s interval, timeout, and retry behavior so a brief startup delay does not create needless restarts.
A passing health check means the process is ready from inside the container. Continue to verify proxy-to-container reachability and the public route separately.
Check the generated route and target service
Coolify generates proxy routing from the resource’s domain and service settings. A typo in the domain, an incorrect service selection, or a stale deployment can point Traefik at the wrong destination. Verify that the configured domain exactly matches the hostname being requested and that the target port belongs to the web service.
- Inspect the resource’s domain and port fields in Coolify.
- For a Compose stack, identify which service is the HTTP server; do not route the public hostname to a worker or database service.
- Confirm that the latest deployment completed and that the running container reflects the current configuration.
- After changing route, network, or port settings, redeploy so labels and proxy configuration are regenerated.
If the proxy log reports that it cannot find a route for the host, fix the domain configuration before investigating application code. If it reports an upstream timeout for the correct host, continue with network and application checks.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Traefik, Caddy, or a custom proxy: what changes?
Traefik is Coolify’s default integrated proxy. Coolify also documents Caddy and a custom or no-proxy mode as alternatives. Changing the proxy changes who owns route generation, TLS, timeout controls, and health behavior; it is not a narrow fix for one 504 unless the current proxy itself is demonstrably the fault.
| Decision area | Traefik (Coolify default) | Caddy alternative | Custom or no integrated proxy |
|---|---|---|---|
| Network reachability | Must reach the target container through Docker networks. | Must reach the target container through the networks and configuration you provide. | You own the complete path between the external proxy and application. |
| Route generation | Coolify’s integrated configuration and labels are used. | Coolify’s documented integration and your Caddy configuration determine routes. | You must create and maintain routes yourself. |
| TLS handling | Handled by the integrated Coolify/Traefik setup when configured. | Handled by Caddy and its integration settings. | Handled by the external proxy or load balancer you operate. |
| Timeout controls | Set in the applicable Traefik or Coolify route configuration. | Set in the applicable Caddy configuration. | Set in every proxy layer that can terminate the request. |
| Health-check behavior | Container readiness and proxy routing must both be correct. | Container readiness and Caddy upstream configuration must both be correct. | You must configure upstream checks and failure handling. |
| Operational ownership | Coolify and the server operator share responsibility for configuration and runtime. | The operator assumes responsibility for the Caddy integration and configuration. | The operator owns the full proxy, TLS, routing, and monitoring stack. |
| Blast radius of a change | Proxy changes can affect every public route served by the instance. | Proxy changes can affect every route handled by Caddy. | Changes can affect every application behind the external proxy. |
Do not switch proxies as a first response to an application-specific timeout. Prove the failure at the current layer, schedule a maintenance window if a proxy migration is required, and test every public route afterward.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Common 504 scenarios and targeted fixes
The page fails immediately after deployment
Check the internal port, bind address, generated route, and network membership. A newly deployed service often changes its listening port or Compose network. Redeploy after correcting those values so the proxy sees the new container metadata.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →The first request after startup times out
Inspect startup and readiness logs. The application may be running migrations, waiting for a database, or marked ready before it can serve requests. Use a lightweight readiness endpoint and configure startup retries rather than masking the delay with a large global timeout.
Only file uploads or downloads fail
Confirm that small requests succeed, then measure the transfer and processing duration. Check request-body and response limits as well as the proxy timeout. Increase the relevant limit only for the route or workload that needs it, and verify the completed transfer in proxy logs.
The application log shows a request but it never finishes
Trace the handler’s dependencies: database queries, external APIs, storage, locks, worker queues, and CPU or memory pressure. The proxy is reporting the symptom; the application or one of its dependencies is consuming the wait. Fix the stalled operation or add an asynchronous job flow when the work does not belong in a single HTTP request.
One Compose service works, another does not
Compare service-specific networks, ports, and route targets. Compose applications can have multiple isolated networks, and only the HTTP service may need to join the shared Coolify network. Keep internal service links private while attaching the publicly routed service to the network reachable by coolify-proxy.
Free tools Windows power users keep installed
One-click scans. No signup required.
Re-test and monitor after the repair
- Request the configured domain and confirm the expected HTTP response, not merely that the TCP connection opens.
- Repeat the request from a second network when DNS or firewall behavior is in doubt.
- Watch
docker logs coolify-proxy --tail 200during a successful request and confirm that recurring timeout or upstream errors have stopped. - Check the application log for normal request completion and absence of restart loops.
- Run the in-container health request again and make sure it remains fast during ordinary load.
- Monitor proxy and application logs for recurrence rather than declaring success after one request.
Keep health checks focused on readiness and monitor proxy logs for patterns. Repeated 504s after a temporary fix usually indicate an unresolved dependency, resource limit, network attachment, or route mismatch.
Quick Recap
Prevent future gateway timeouts
- Document each public service’s internal port, expected network, domain, and readiness endpoint.
- Keep the publicly routed service on the shared network required by Coolify while leaving databases and other private services isolated.
- Include a lightweight health check in the final image and verify that its HTTP client is installed.
- Set application, proxy, database, and upstream timeouts deliberately; avoid unrelated global increases.
- Review DNS records and firewall rules whenever a server is moved or its public address changes.
- Capture proxy and application logs around failures with synchronized timestamps.
- Use asynchronous processing for work that routinely exceeds a normal request lifetime.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




