Files
light-heart-labs--dreamserver/ods/docs/LINUX-PORTABILITY.md
T
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00

2.0 KiB

Linux portability

How to run ODS reliably across different Linux machines (with or without a GPU), recover from a bad reinstall, and work with extensions.

Installer

  • Entry: install.shinstall-core.sh — see INSTALLER-ARCHITECTURE.md.
  • CPU-only systems: With a capability profile, set CAP_LLM_BACKEND=cpu so the installer keeps CPU inference (see 02-detection.sh).
  • Re-running the installer: If a previous run left directories owned by container users, the installer checks that config/* and data/* are writable before copying files, uses rsync without preserving foreign ownership, and tells you to chown if something is still blocked (06-directories.sh).
  • Fedora/RHEL SELinux: Compose bind mounts use shared :z labels so enforcing SELinux can relabel ODS repo/data paths for containers. If you add custom bind mounts on SELinux systems, include :z as well.

Extensions and integrations

Services are declared under extensions/services/<name>/manifest.yaml for dashboard health and feature metadata. Schema: extensions/schema/service-manifest.v1.json. To add or change a service, follow EXTENSIONS.md.

Checklist on a new Linux machine

  1. Docker and Compose v2 work; your user can run containers (e.g. member of the docker group).
  2. ./install.sh --dry-run finishes without errors.
  3. Before or after install, run ./scripts/linux-install-preflight.sh (or ./ods-preflight.sh --install-env) for a structured environment report with stable check IDs and optional --json output.
  4. After a real install, run ./ods-preflight.sh (service health) and scripts/ods-doctor.sh if you use them.

More context: LINUX-TROUBLESHOOTING-GUIDE.md (ID-indexed fixes), FIELD-INSTALL-REPORT-LINUX.md (bug report template), SUPPORT-MATRIX.md, TROUBLESHOOTING.md.

Extension PRs that touch catalog vs core: EXTENSION-PR-BRANCHING.md.