coollabsio/coolify · error · Exception
Prerequisites ({$missingCommands}) are not installed. Please
Error message
Prerequisites ({$missingCommands}) are not installed. Please install them before continuing or use the validation with installation endpoint. What it means
Server::validatePrerequisites() (delegating to ValidatePrerequisites action) SSH-probes for required CLI tools on the host; on missing binaries it returns success=false with a 'missing' list, and ValidateServer throws with the comma-joined command names, suggesting either installing them or re-running via the validation-with-installation endpoint (which dispatches InstallPrerequisites: apt/dnf/zypper/pacman).
Source
Thrown at app/Actions/Server/ValidateServer.php:91
throw new \Exception($this->error);
}
$this->supported_os_type = $server->validateOS();
if (! $this->supported_os_type) {
$this->error = 'Server OS type is not supported. 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);
}
$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([View on GitHub (pinned to 70b9acc424)
Solutions
- Re-run validation with the installation endpoint enabled so InstallPrerequisites installs the missing tools.
- Or install them manually (apt install -y curl wget git jq / dnf / zypper / pacman -Syu) and re-validate.
- On Alpine there is no automated branch — use: apk add --no-cache curl wget git jq.
Example fix
// from a shell on the target server (Debian/Ubuntu example) // before: validation fails with 'Prerequisites (jq, curl) are not installed...' sudo apt-get update -y && sudo apt-get install -y curl wget git jq // after: re-run server validation in Coolify — prerequisite check passes
Defensive patterns
Strategy: validation
Validate before calling
$result = $server->validatePrerequisites(); // ['success' => bool, 'missing' => [...]]
if (! $result['success']) {
return 'Missing prerequisites: '.implode(', ', $result['missing'])
.'. Use the validation-with-installation endpoint or install them manually.';
}
ValidateServer::run($server); Type guard
function prerequisitesSatisfied(\App\Models\Server $server): bool
{
return $server->validatePrerequisites()['success'] === true;
} Try / catch
try {
ValidateServer::run($server);
} catch (\Exception $e) {
if (str_contains($e->getMessage(), 'Prerequisites (')) {
// parse the command list from the message or re-run validatePrerequisites(),
// install them (or dispatch InstallPrerequisites), then retry validation
} else {
throw $e;
}
} Prevention
- Include curl, wget, git and jq in server base images/cloud-init.
- Use the validation endpoint with installation enabled for fresh hosts.
- Remember Alpine has no automated install branch — install via apk manually.
When it happens
Trigger: Validating a bare-minimal OS install or slim container/host missing any of curl, wget, git or jq (the probes used by Coolify's remote commands), when prerequisites were not auto-installed.
Common situations: Hand-rolled VMs, hardened images, or skipping the install step during onboarding; Alpine where no automated install branch exists.
Related errors
- Private key not found. Please add a private key to the appli
- Failed to read Git source. Please verify repository access a
- Docker Compose file not found at: $workdir$composeFile (bran
- Your deploy key does not have access to the repository. Plea
- Repository does not exist. Please check your repository URL
AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17).
Data as JSON: /api/errors/2469e7e7358356e3.
Report an issue: GitHub.