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
- Install Docker Engine + compose plugin manually per the linked docs (or use Coolify's install action), then re-validate.
- Verify as the SSH user: command -v docker && docker version && docker compose version.
- Ensure the docker compose plugin package is installed (docker-compose-plugin on Debian/RHEL).
- 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
- Use Coolify's automated Docker install or bake Docker (engine + compose plugin) into images.
- Verify as the SSH user: command -v docker && docker compose version.
- Install docker-compose-plugin explicitly on manual Docker installs.
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
- Server OS type is not supported for automated installation.
- Server OS type is not supported. Please install Docker manua
- Docker Swarm is not initiated. Please join the server to a s
- Pre-deployment command: Could not find a valid container. Is
- Post-deployment command: Could not find a valid container. I
AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17).
Data as JSON: /api/errors/ce70655b9e17f65d.
Report an issue: GitHub.