{"record":{"id":"82407da2f3195480","repo":"coollabsio/coolify","slug":"docker-not-found-or-old-version-is-installed","errorCode":null,"errorMessage":"Docker not found or old version is installed.","messagePattern":"Docker not found or old version is installed\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"app/Livewire/Boarding/Index.php","lineNumber":421,"sourceCode":"\n                return;\n            }\n\n            // Prerequisites validated successfully - continue with Docker validation\n            $this->continueValidation();\n        } catch (\\Throwable $e) {\n            return handleError(error: $e, livewire: $this);\n        }\n    }\n\n    private function continueValidation()\n    {\n        try {\n            $dockerVersion = instant_remote_process([\"docker version|head -2|grep -i version| awk '{print $2}'\"], $this->createdServer, true);\n            $dockerVersion = checkMinimumDockerEngineVersion($dockerVersion);\n            if (is_null($dockerVersion)) {\n                $this->currentState = 'validate-server';\n                throw new \\Exception('Docker not found or old version is installed.');\n            }\n            $this->createdServer->settings()->update([\n                'is_usable' => true,\n            ]);\n            $this->getProxyType();\n        } catch (\\Throwable $e) {\n            $this->createdServer->settings()->update([\n                'is_usable' => false,\n            ]);\n\n            return handleError(error: $e, livewire: $this);\n        }\n    }\n\n    public function selectProxy(?string $proxyType = null)\n    {\n        if (! $proxyType) {\n            return $this->getProjects();","sourceCodeStart":403,"sourceCodeEnd":439,"githubUrl":"https://github.com/coollabsio/coolify/blob/70b9acc42467278373e00de77abb40684e25b395/app/Livewire/Boarding/Index.php#L403-L439","documentation":"In the boarding flow, Coolify reads the Docker Engine version over SSH (`docker version | head -2 | grep -i version | awk '{print $2}'`) and passes it to checkMinimumDockerEngineVersion(), which nulls the value when the major version is below config('constants.docker.minimum_required_version'). A null result - Docker missing, the command erroring, or a parse failure - triggers this exception; the server is flagged is_usable = false and the flow returns to the validate-server step.","triggerScenarios":"`docker` is not on PATH for the SSH user; the user cannot access /var/run/docker.sock so `docker version` prints an error instead of a version line; the installed Engine major is below Coolify's minimum; the parsed output is empty so the version string is garbage.","commonSituations":"Fresh server where the Docker auto-install failed or was skipped; distro docker.io packages several majors behind; SSH user not in the docker group; onboarding as a non-root user without sudo.","solutions":["Install or upgrade Docker Engine from Docker's official repository (e.g. `curl -fsSL https://get.docker.com | sh`) so the major version meets Coolify's minimum","Ensure the SSH user can run `docker version` without errors (root, or member of the docker group)","Re-run validation in the boarding UI afterwards"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"# confirm before onboarding what Coolify will see:\nssh user@server 'docker version | head -2 | grep -i version | awk \"{print \\$2}\"'\n# a permission error or empty output here reproduces the failure","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Provision servers with current docker-ce from Docker's official repo, not stale distro packages","Test `docker version` as the Coolify SSH user (root or docker group) before onboarding","After install/upgrade, re-run the boarding validation - is_usable is reset to true on success"],"tags":["onboarding","docker","version-check","ssh","server-setup"],"backgroundTag":"unsupported-docker-version","analyzedSha":"70b9acc42467278373e00de77abb40684e25b395","analyzedAt":"2026-08-17T01:41:01.313Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}