coollabsio/coolify · error · Exception

Docker Engine is not installed. Please install Docker manual

Error message

Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.

What it means

ValidateServer checks Docker presence: validateDockerEngine() runs `command -v docker` (and `docker version`) and validateDockerCompose() runs `docker compose version`. If either binary is missing or `docker version` fails, this error is thrown (Docker install docs link) and persisted to validation_logs; settings->is_usable is also set false on the server.

Source

Thrown at app/Actions/Server/ValidateServer.php:101

        $validationResult = $server->validatePrerequisites();
        if (! $validationResult['success']) {
            $missingCommands = implode(', ', $validationResult['missing']);
            $this->error = "Prerequisites ({$missingCommands}) are not installed. Please install them before continuing or use the validation with installation endpoint.";
            $server->update([
                'validation_logs' => $this->error,
            ]);
            throw new \Exception($this->error);
        }

        $this->docker_installed = $server->validateDockerEngine();
        $this->docker_compose_installed = $server->validateDockerCompose();
        if (! $this->docker_installed || ! $this->docker_compose_installed) {
            $this->error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.';
            $server->update([
                'validation_logs' => $this->error,
            ]);
            throw new \Exception($this->error);
        }
        $this->docker_version = $server->validateDockerEngineVersion();

        if ($this->docker_version) {
            return 'OK';
        } else {
            $this->error = 'Docker Engine is not installed. Please install Docker manually before continuing: <a target="_blank" class="text-black underline dark:text-white" href="https://docs.docker.com/engine/install/#server">documentation</a>.';
            $server->update([
                'validation_logs' => $this->error,
            ]);
            throw new \Exception($this->error);
        }
    }
}

View on GitHub (pinned to 70b9acc424)

Solutions

  1. Install Docker Engine + compose plugin manually per the linked docs (or use Coolify's install action), then re-validate.
  2. Verify as the SSH user: command -v docker && docker version && docker compose version.
  3. Ensure the docker compose plugin package is installed (docker-compose-plugin on Debian/RHEL).
  4. If PATH is the issue, log in via SSH as the same user Coolify uses and confirm the binaries resolve.
Defensive patterns

Strategy: validation

Validate before calling

if (! $server->validateDockerEngine() || ! $server->validateDockerCompose()) {
    return 'Docker Engine/Compose missing. Install Docker (engine + compose plugin), then re-validate.';
}
ValidateServer::run($server);

Type guard

function dockerInstalled(\App\Models\Server $server): bool
{
    return $server->validateDockerEngine() && $server->validateDockerCompose();
}

Try / catch

try {
    ValidateServer::run($server);
} catch (\Exception $e) {
    if (str_contains($e->getMessage(), 'Docker Engine is not installed')) {
        // permanent until remediation: install engine + compose plugin, re-validate
    } else {
        throw $e;
    }
}

Prevention

When it happens

Trigger: Validating a fresh server that passed OS checks but never had Docker installed; Docker installed via a method that doesn't put it on PATH for the SSH user; compose plugin missing from a manual Docker install.

Common situations: Skipping Coolify's automated Docker install; distro Docker packages without the compose plugin; custom PATH for the SSH user.

Related errors


AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17). Data as JSON: /api/errors/ce70655b9e17f65d. Report an issue: GitHub.