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

  1. Re-run validation with the installation endpoint enabled so InstallPrerequisites installs the missing tools.
  2. Or install them manually (apt install -y curl wget git jq / dnf / zypper / pacman -Syu) and re-validate.
  3. 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

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


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