Skip to content

fix(server): require Docker for remote setup - #768

Open
luckycrm wants to merge 1 commit into
oblien:mainfrom
luckycrm:fix/server-docker-prerequisite
Open

luckycrm wants to merge 1 commit into
oblien:mainfrom
luckycrm:fix/server-docker-prerequisite

Conversation

@luckycrm

@luckycrm luckycrm commented Aug 30, 2026

Copy link
Copy Markdown

Summary

Makes Docker an explicit required prerequisite for every managed remote deployment server, including when the OpenShip control plane itself runs in bare mode.

Motivation

The server health-check endpoint derived remote requirements from the control plane's DEPLOY_MODE. A bare control plane therefore required only Git and omitted Docker from the new-server setup results, even though remote application deployments and the managed Edge container depend on Docker. This allowed setup to appear ready and Edge installation to fail later.

Related issue

Closes #767

Changes

  • Removed the control-plane deployment-mode dependency from remote server requirements.
  • Always require Docker and Git on managed remote deployment targets.
  • Extracted the requirement policy into a small pure module.
  • Added regression coverage proving Docker remains required for a bare-mode control plane.
  • Reused the existing Docker check, installer, UI row, and automatic installation order.

Verification

bun run test -- src/modules/system/server-check.requirements.test.ts
# 1 passed, 0 failed

bun run build
# API build passed

bun run test
# 5,155 passed; two environment-restricted tests failed inside the sandbox:
# - ssh-key-path fixture could not write beneath the user home directory
# - safe-fetch could not bind 127.0.0.1

bun run test -- test/lib/ssh-key-path.test.ts test/lib/safe-fetch.test.ts src/modules/system/server-check.requirements.test.ts
# Rerun with normal filesystem/socket access: 34 passed, 0 failed

bunx prettier --check src/modules/system/server-check.requirements.ts src/modules/system/server-check.requirements.test.ts
# passed

The existing controller file does not pass a whole-file Prettier check on upstream. It was not reformatted to avoid unrelated formatting changes.

Screenshots

Not included. The existing Docker component row is now returned by the backend when missing; this change does not introduce a new UI component.

Checklist

  • This PR contains one change (no grab-bag).
  • The diff is scoped and contains no unrelated formatting or refactors.
  • I added a regression test that fails before and passes after the fix.
  • Relevant tests, build, and formatting checks pass locally; sandbox-only failures were rerun successfully with the required access.
  • I understand every line in the diff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(server setup): require Docker before installing Edge

1 participant