Skip to content

Document headless Linux server setup - #6802

Merged
Jinwoo-H merged 2 commits into
stablyai:mainfrom
sdhilip200:codex/headless-linux-server-docs
Jun 30, 2026
Merged

Jinwoo-H merged 2 commits into
stablyai:mainfrom
sdhilip200:codex/headless-linux-server-docs

Conversation

@sdhilip200

@sdhilip200 sdhilip200 commented Jun 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds docs/reference/headless-linux-server.md, a headless Linux setup guide for running the Linux AppImage with orca serve.

The new guide documents:

  • Ubuntu prerequisites: curl, libfuse2, and xvfb
  • how to download and run the AppImage directly on a server
  • foreground orca serve commands with --port and --pairing-address
  • a systemd orca-serve.service example
  • an optional separate orca-xvfb.service when the operator wants systemd to own the virtual display
  • troubleshooting for FUSE, Xvfb, software rendering, sandbox, and reachable pairing addresses

The PR also adds a README link beside the Linux AppImage install link and indexes the guide from docs/reference/README.md.

Fixes #6790

Screenshots

No visual change.

Testing

  • git diff --check
  • pnpm lint
  • pnpm typecheck
  • pnpm test
  • pnpm build
  • Tests not added: markdown-only documentation change.

pnpm test was attempted locally, but the run was not usable in this sandboxed environment. It failed broadly in unrelated socket/runtime/daemon suites, including listen EPERM ... relay.sock from src/relay/relay-handshake-roundtrip.test.ts and multiple WebSocket/daemon/relay 30s timeouts.

pnpm build was not run because this PR only changes markdown documentation and README links.

Environment note: local pnpm reported the repo engine warning node 24 wanted; local node was v26.0.0.

AI Review Report

Review checked the guide against:

No product code changed. The examples use documented orca serve flags and keep the Linux-only guidance out of macOS/Windows install paths.
Cross-platform compatibility was checked for macOS, Linux, and Windows: the diff only adds Linux-specific markdown and links, so no shortcuts, shell behavior, Electron platform handling, or runtime paths change on macOS or Windows.

Security Audit

Docs-only change; no runtime code, dependencies, IPC, auth, or secret handling changed.

The service examples run Orca as a dedicated non-root orca user, avoid recommending sandbox disablement as the default path, and use a private Tailscale-range pairing address placeholder that readers must replace with their own reachable address.

Notes

  • The guide documents the current AppImage-based server path. If a future server package removes the Electron/X display requirement, the Xvfb sections should be simplified.
  • X handle: not provided.

@coderabbitai

coderabbitai Bot commented Jun 29, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 6a9abe9d-497b-4c69-ab87-dddbfad8508b

📥 Commits

Reviewing files that changed from the base of the PR and between 2db45ce and c36e4d5.

📒 Files selected for processing (1)
  • docs/reference/headless-linux-server.md

📝 Walkthrough

Walkthrough

A new reference page, docs/reference/headless-linux-server.md, is added for running orca serve on a headless Linux server. It documents prerequisites, AppImage setup, foreground execution with LIBGL_ALWAYS_SOFTWARE=1, two systemd deployment patterns, a CLI install note, and troubleshooting steps. README.md and docs/reference/README.md each gain a cross-reference to the new guide.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the main change.
Linked Issues check ✅ Passed The docs address the headless Linux AppImage path, prerequisites, systemd setup, GUI workaround, and remote pairing guidance from #6790.
Out of Scope Changes check ✅ Passed All changes stay within documentation and reference updates for the headless Linux guide.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The PR description follows the required template and includes summary, screenshots, testing, AI review, security audit, and notes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
docs/reference/headless-linux-server.md (1)

168-181: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider adding --disable-gpu as a fallback for persistent GPU/DRI warnings.

LIBGL_ALWAYS_SOFTWARE=1 usually resolves GPU-less VPS rendering, but some providers still emit DRI warnings that can confuse operators. Adding an optional note that --disable-gpu can be appended to ExecStart when software rendering alone is insufficient would close the loop on the GPU-less setup path described in the PR objectives.

ExecStart=/opt/orca/orca-linux.AppImage serve --port 6768 --pairing-address 100.64.1.20 --disable-gpu

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 6d91b4e8-494f-411c-9b6d-8dfd4debd345

📥 Commits

Reviewing files that changed from the base of the PR and between a27278d and 2db45ce.

📒 Files selected for processing (3)
  • README.md
  • docs/reference/README.md
  • docs/reference/headless-linux-server.md

@sdhilip200

Copy link
Copy Markdown
Contributor Author

Updated the PR description to match the markdown-only diff and testing evidence more tightly. @coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026 •

Copy link
Copy Markdown
Contributor

@sdhilip200: I’ll review the updated PR, including the tightened description against the markdown-only diff and testing evidence.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@sdhilip200

Copy link
Copy Markdown
Contributor Author

Updated the PR description with the explicit macOS/Linux/Windows compatibility review statement requested by the description check. @coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026 •

Copy link
Copy Markdown
Contributor

@sdhilip200 Got it — I’ll review the updated PR description, including the explicit macOS/Linux/Windows compatibility statement added for the description check.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Salvaged from stablyai#6817 before closing it as a duplicate.

Co-authored-by: Orca <help@stably.ai>
@Jinwoo-H

Copy link
Copy Markdown
Contributor

Thanks for this — merging. This is the accurate, comprehensive answer to #6790: it matches the current behavior where orca serve auto-starts Xvfb on :99 when no DISPLAY is set (src/main/startup/ensure-virtual-display.ts, wired in before whenReady), and the prerequisites + systemd templates are correct.

I folded in one debugging tip (--appimage-extract + ldd) salvaged from #6817, which I'm closing as a duplicate in favor of this guide.

@Jinwoo-H
Jinwoo-H merged commit 9694830 into stablyai:main Jun 30, 2026
@croakingtoad

Copy link
Copy Markdown
Contributor

Thanks everyone for this PR, much appreciated!!

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

Labels

orca-remote-server Remote Orca Server / orca serve / paired remote runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AppImage fails to run on headless Ubuntu 22.04 — missing deps and no documented server install path

4 participants