Summary

This PR improves Debian 13 compatibility in the additional-server validation + Docker installation path.

Root cause

In some Debian 13 environments, OS detection can rely on ID_LIKE rather than only ID, and Docker repository setup may fail when VERSION_CODENAME is numeric (13) instead of trixie.

What changed

  • app/Models/Server.php

    • Refactored /etc/os-release parsing into testable helpers.
    • OS family resolution now checks ID first, then falls back to ID_LIKE.
    • Unsupported distributions are still rejected explicitly (no silent fallback).
  • app/Actions/Server/InstallDocker.php

    • Debian APT fallback now normalizes codename:
      • DOCKER_VERSION_CODENAME=${VERSION_CODENAME:-${VERSION_ID}}
      • if codename is 13, map to trixie
    • Docker apt source uses normalized codename.
  • Tests

    • tests/Unit/ServerOsDetectionTest.php
    • tests/Unit/Actions/Server/InstallDockerCommandTest.php

Repro / verification steps

Unit tests

php artisan test --compact tests/Unit/ServerOsDetectionTest.php
php artisan test --compact tests/Unit/Actions/Server/InstallDockerCommandTest.php

Expected:

  • Debian 13 (ID=debian, VERSION_CODENAME=trixie) resolves to Debian family.
  • Debian-like distro (ID_LIKE=debian) resolves to Debian family.
  • Numeric codename path (VERSION_CODENAME=13) is accepted and covered.
  • Unsupported distro still returns false.
  • Debian Docker command contains 13 -> trixie normalization.

Manual flow (UI)

  1. Add an additional server running Debian 13.
  2. Run server validation + prerequisites + Docker installation.

Expected:

  • Validation no longer fails due to Debian-family detection edge cases.
  • Docker APT fallback uses normalized codename (trixie) when codename is numeric.

Demo checklist

  • Attach short demo video (Debian 13 server validation + install flow)

/claim #8154

Claim

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

Contributors

EM

Emins25

@Emins25

100%

Sponsors

BU

buildingvibes

@buildingvibes

$6,900
CO

Coolify

@coollabsio

$6,900