From a6016afdaa2ebe22d23748529e92bf71fc033b00 Mon Sep 17 00:00:00 2001 From: Dennis Braun <169400960+itsDNNS@users.noreply.github.com> Date: Fri, 13 Mar 2026 18:29:44 +0100 Subject: [PATCH] fix: propagate DOCKER_API_VERSION to updater sidecar The dockhand-updater image ships Docker CLI 29.2.1 (API 1.53), which fails on hosts running older Docker daemons (e.g. Synology DSM with Docker 24.0.2 / API 1.43). Every docker command in update.sh returns "client version 1.53 is too new". Query the daemon's API version via /version and pass it as DOCKER_API_VERSION to the updater container env. If the env var is already set on the main container, forward that instead. Fixes #759 --- src/routes/api/self-update/+server.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/routes/api/self-update/+server.ts b/src/routes/api/self-update/+server.ts index 71adf1c..6cf2a24 100644 --- a/src/routes/api/self-update/+server.ts +++ b/src/routes/api/self-update/+server.ts @@ -371,6 +371,22 @@ export const POST: RequestHandler = async ({ request, cookies }) => { ...networkEnvVars ]; + // Pass Docker API version so the updater CLI speaks a compatible version. + // Without this, newer CLI versions (e.g. API 1.53) fail against older + // daemons (e.g. Synology DSM shipping API 1.43). + const dockerApiVersion = process.env.DOCKER_API_VERSION; + if (dockerApiVersion) { + updaterEnv.push(`DOCKER_API_VERSION=${dockerApiVersion}`); + } else { + const versionRes = await localDockerFetch('/version'); + if (versionRes.ok) { + const vInfo = await versionRes.json() as { ApiVersion?: string }; + if (vInfo.ApiVersion) { + updaterEnv.push(`DOCKER_API_VERSION=${vInfo.ApiVersion}`); + } + } + } + // Configure updater's Docker access based on connection type const tcpHost = getDockerTcpHost(); const updaterHostConfig: Record = { AutoRemove: true };