Fixes

  • #8154

Summary

Adds Debian 13 (trixie) support and fixes the Alpine Linux gap in the server validation pipeline.

Root Cause

Debian 13 has ID=debian in /etc/os-release, which already passes validateOS(). The failure occurs in InstallDocker.php‘s APT fallback when the Docker repository doesn’t have a trixie distribution yet.

Additionally, Alpine Linux was listed in SUPPORTED_OS but had no handler in InstallPrerequisites.php, causing servers running Alpine to fail with “Unsupported OS type” despite passing OS validation.

Changes

app/Actions/Server/InstallDocker.php

  • Dynamic Docker repo codename fallback: Before using ${VERSION_CODENAME} in the APT repo URL, checks if Docker’s repository actually has that distribution. Falls back to bookworm if unavailable. This is future-proof — when Docker adds trixie support, the fallback automatically stops being used.
  • Alpine Docker installation: Added getAlpineDockerInstallCommand() using apk add docker docker-cli-compose.
  • OpenRC support: Alpine uses OpenRC instead of systemd, so Docker is enabled/restarted with rc-update/service commands instead of systemctl.

app/Actions/Server/InstallPrerequisites.php

  • Alpine handler: Added apk add handler for installing curl, wget, git, jq on Alpine.
  • Better error message: Include the detected OS type in the exception message for easier debugging.

tests/Unit/Debian13AndAlpineSupportTest.php

  • 10 unit tests verifying: SUPPORTED_OS entries, Alpine handlers in both InstallPrerequisites and InstallDocker, OpenRC usage, Docker codename fallback mechanism, and repo availability check.

Why dynamic fallback over hardcoded mapping

Other approaches hardcode if VERSION_CODENAME == "trixie" then bookworm. This works today but breaks if:

  • Docker adds trixie support (the hardcoded check prevents using it)
  • Future Debian releases (14+) have the same problem

The dynamic check (curl the Docker repo to verify the distribution exists) handles all cases automatically.

Verification

# On a Debian 13 server, verify the full pipeline:
cat /etc/os-release # Should show ID=debian, VERSION_CODENAME=trixie
# The fix ensures:
# 1. validateOS() returns the debian family match (already works)
# 2. InstallPrerequisites uses apt-get (debian handler)
# 3. InstallDocker tries rancher → get.docker.com → APT with codename fallback

/claim #8154

Claim

Total prize pool $13,800
Total paid $0
Status Pending
Submitted February 09, 2026
Last updated February 09, 2026

Contributors

BU

buildingvibes

@buildingvibes

100%

Sponsors

BU

buildingvibes

@buildingvibes

$6,900
CO

Coolify

@coollabsio

$6,900