Coolify logoCoolify

No Available Server (503) Error

If your deployed application or service shows a "No Available Server" error, this indicates that Traefik (the reverse proxy) cannot find any (healthy) containers to route traffic to under the provided secured URL (https).

What Causes This Error?

The "No Available Server" error occurs when:

  1. Failed Health Checks - Traefik considers your container unhealthy
  2. Domain Configuration Issues - Incorrect domain setup or missing www/non-www variants
  3. Port Mismatches - Exposed ports don't match your application's actual listening port
  4. Deployment Downtime - Brief downtime during container updates
  5. Underlying Traefik Issues - Problems with Traefik itself (e.g., Docker API version mismatch)

Quick Diagnosis Steps

1. Check Container Health Status

First, verify if your containers are running healthy:

# SSH into your server and check container status
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

Look for containers showing (unhealthy) status - this indicates a health check problem.

2. Check Domain Configuration

Verify that you entered the domain correctly into your Application / Service configurations and your DNS records are pointing to the correct IP address. See the Domains documentation for the full formatting rules.

3. Check Traefik Proxy Logs

Check the Traefik logs for underlying issues:

Through Coolify UI:

  • Go to Servers[Your Server]ProxyLogs

Or via SSH:

# Check proxy logs for errors
docker logs coolify-proxy --tail 50

Look for error messages like client version 1.24 is too old which indicates a Docker API version mismatch.

Common Solutions

Fix Failed Health Checks (Most Common)

Symptoms:

  • Container shows as (unhealthy) in Docker
  • Health check path returns errors
  • Missing dependencies (e.g. curl/wget) in container

Steps:

  1. Disable Health Check Temporarily:

    • Go to your application configuration
    • Disable the health check
    • Restart your application

    If this fixes the issue, then the problem is in your health check.

  2. Fix Health Check Issues:

These are some common solutions to fix a health check. Adjust based on your specific application and health check command. Read more about configuring Health Checks.

Missing dependencies in container:

Ensure that all necessary tools are installed in your Docker image for the health check to work. Applications will need either curl or wget installed.

# Add curl to your Dockerfile
RUN apt-get update && apt-get install -y curl
# OR for Alpine images
RUN apk add --no-cache curl

Wrong health check path / hostname:

Make sure that your app is actually serving the health check endpoint and does not return an error. In most cases, the hostname will be localhost or 127.0.0.1.

Port mismatch:

  • Ensure health check port matches your app's listening port
  • If the app runs on port 3000, health check should use port 3000
  1. Test Health Check Manually:

    If the above hasn't resolved the issue, manually test the health check command inside the container and evaluate the output.

    You can do this by either navigating to your container's Terminal tab in Coolify or by SSHing into your server and running:

    # SSH into your server and test a health check which uses curl
    docker exec -it <container-name> curl -f http://localhost:3000/health

Fix Domain Configuration

Incorrect Domain Setup

Symptoms:

  • Works with auto-generated domain (e.g. sslip.io) but not custom domain

Steps: Verify that your domain is correctly set up in both Coolify and your DNS provider as per the Domains documentation.

Redirect Issues

Symptoms:

  • Redirect is set to either Redirect to www or Redirect to non-www
  • Works for root domain but not www (or vice versa)

Steps:

  1. Add Both www and non-www Domains:

    Make sure both, the www and non-www versions of your domain are added in the Domains field like so: https://example.com,https://www.example.com

  2. Configure Domain Redirection:

    • Set the Direction to Allow www & non-www if you want both to work
  3. Restart Application:

    • Always restart after domain changes

HTTPS Issues

If your site is only accessible via HTTP but not HTTPS, check your domain configuration:

  • For HTTPS with SSL: Use https:// prefix in the domain field: https://example.com
  • For HTTP only: Use http:// prefix in the domain field: http://example.com (no SSL certificate will be generated)

Make sure the protocol in your domain configuration matches how you want to access your site, then restart your application.

Fix Port Configuration

Symptoms:

  • Application / Service works via http://IP:port but not via domain (manual port mapping required)
  • Traefik can't reach the application

Steps:

  1. Check exposed Port:

    The proxy needs to know which port your application is listening on. Check that the port is configured correctly.

    Screenshot showing No Available Server

    In Applications, this is defined in the Ports Exposes field.

    Screenshot showing No Available Server

    In Service Stacks, this is defined by either adding the port at the end of the URL in the Domains field (e.g. https://example.com:3000) or by defining the EXPOSE directive in your Dockerfile.

  2. Verify Application Listening Address:

    Screenshot showing No Available Server

    Your Application / Service might be binding to only localhost or 127.0.0.1, which makes it unreachable from outside the container. Ensure your app listens on all interfaces (0.0.0.0).

Handle Deployment Downtime

Symptoms:

  • Brief "No Available Server" during deployments
  • Happens only during container updates

Solution: Configure Rolling Updates

Ensure that Rolling Updates are correctly configured. See Rolling Updates documentation

Update Traefik to Fix Docker API Version Issue

Symptoms:

  • "No Available Server" error appears
  • Coolify proxy logs shows the following error message:
    Error response from daemon: client version 1.24 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version
  • Application container is running healthy but visiting the domain shows "No Available Server"

Root Cause: The problem happened because Traefik was hard-coding Docker API versions.

The Traefik team has released a fix in v2.11.31 and v3.6.1. Starting from v2.11.31 and v3.6.1, Traefik will now auto-negotiate the Docker API version, so this issue shouldn't happen again.

Solution:

If you're already using Coolify, you'll need to update Traefik manually by follow these steps:

  1. Navigate to Proxy Configuration:

    • Go to your Coolify dashboard (https://app.coolify.io/ for cloud users) → Servers → [Your Server] → Proxy → Configuration
  2. Change Traefik Version:

    • Change the version to: v3.6.1 (or v2.11.31 if staying on v2)
  3. Restart Proxy:

    • Click Restart Proxy
coolify proxy traefik version update

Notes:

  • You need to do this on every server connected to your Coolify instance
  • This applies to both self-hosted and Coolify Cloud users
    • (Cloud users: Traefik runs on your own server not Coolify’s so you’ll need to update it yourself by following the guide above)
  • If you have changed Docker daemon configs to set Minimum supported API version, then we recommend to revert it as it could potentially cause problems in the future.

Why Coolify don't auto-update for existing servers

Some users have custom configurations (like DNS challenges) that could break when updating to a newer Traefik version. Please check the Traefik changelog before updating.

  • If you're using the default Coolify Traefik configurations, you're safe to update to v3.6.1 without any issues.
  • If you're currently on Traefik v2 and don't want to upgrade to v3, you can update to the patched v2.11.31 instead.

Advanced Debugging

Check Traefik Configuration

# View Traefik dynamic configuration
cat /data/coolify/proxy/dynamic/*.yml

# Check Traefik logs
docker logs coolify-proxy -f

# Inspect container labels to verify Traefik routing configuration
docker inspect <your-container-name> --format='{{json .Config.Labels}}' | jq

Check Application Logs

# Check your application's logs for errors
docker logs <your-container-name> -f

Test Health Check from Inside Container

# Execute health check command manually
docker exec -it <container-name> /bin/sh
curl -f http://localhost:3000/health

Prevention Tips

  1. Always Use Health Checks:

    • Implement a /health endpoint in your application
    • Ensure all dependencies (e.g. curl/wget) are available in your container
  2. Test Locally First:

    • Test your health check endpoint before deploying
    • Verify port configuration matches your app
  3. Monitor Container Status:

    • Regularly check docker ps for unhealthy containers
    • Set up monitoring for health check failures
  4. Use Staging Environment:

    • Test domain configurations in staging first

When to Seek Help

If none of these solutions work, join our Discord community and provide:

  • Application logs
  • Coolify proxy logs
  • Container health status (docker ps)
  • Domain configuration screenshots
  • Health check configuration
  • Steps you've already tried

This will help the community diagnose more complex issues specific to your setup.

On this page