From ea988304775effe4e61594a58df84bdf5517e8a7 Mon Sep 17 00:00:00 2001 From: Alexandre Blause Date: Sat, 19 Sep 2026 20:32:39 +0200 Subject: [PATCH] feat(blueprint): add orca server template Run the headless Orca runtime (orca serve) on Dokploy. Orca publishes no container image, so the compose builds one from the pinned upstream release AppImage (amd64 or arm64) on Ubuntu 24.04, following the official headless Linux server guide. The runtime is served on one domain for both the WebSocket endpoint and the web client. ORCA_PAIRING_ADDRESS sets the address advertised in pairing links, and ORCA_SERVE_ARGS passes extra serve flags such as --mobile-pairing for the Orca mobile app. --- blueprints/orca-server/docker-compose.yml | 55 +++++++++++++++++++ blueprints/orca-server/instructions.md | 63 ++++++++++++++++++++++ blueprints/orca-server/meta.json | 18 +++++++ blueprints/orca-server/orca-server.png | Bin 0 -> 29625 bytes blueprints/orca-server/template.toml | 14 +++++ 5 files changed, 150 insertions(+) create mode 100644 blueprints/orca-server/docker-compose.yml create mode 100644 blueprints/orca-server/instructions.md create mode 100644 blueprints/orca-server/meta.json create mode 100644 blueprints/orca-server/orca-server.png create mode 100644 blueprints/orca-server/template.toml diff --git a/blueprints/orca-server/docker-compose.yml b/blueprints/orca-server/docker-compose.yml new file mode 100644 index 00000000..a78afabb --- /dev/null +++ b/blueprints/orca-server/docker-compose.yml @@ -0,0 +1,55 @@ +version: "3.8" +services: + orca-server: + # Orca publishes no container image, so this builds one from the + # pinned upstream release AppImage, following the official headless + # Linux server guide (docs/reference/headless-linux-server.md). + build: + args: + ORCA_VERSION: v1.4.205 + dockerfile_inline: | + FROM ubuntu:24.04 + ARG ORCA_VERSION + ARG TARGETARCH + ENV DEBIAN_FRONTEND=noninteractive + RUN apt-get update && apt-get install -y --no-install-recommends \ + bash ca-certificates curl file git jq openssh-client procps \ + xvfb zlib1g-dev libgtk-3-0t64 libpango-1.0-0 libcairo2 \ + libnss3 libgbm1 libdrm2 libasound2t64 libcups2t64 libxkbcommon0 \ + libatk1.0-0t64 libatk-bridge2.0-0t64 libatspi2.0-0t64 \ + libx11-xcb1 libxcb-dri3-0 libxcomposite1 libxdamage1 libxfixes3 \ + libxrandr2 libxrender1 libxss1 libxtst6 \ + && rm -rf /var/lib/apt/lists/* + RUN if [ "$$TARGETARCH" = arm64 ]; then asset=orca-linux-arm64.AppImage; else asset=orca-linux.AppImage; fi \ + && curl -fL --retry 3 -o /tmp/orca.AppImage \ + "https://github.com/stablyai/orca/releases/download/$$ORCA_VERSION/$$asset" \ + && chmod +x /tmp/orca.AppImage \ + && cd /opt && /tmp/orca.AppImage --appimage-extract >/dev/null \ + && mv /opt/squashfs-root /opt/orca \ + && chmod -R a+rX /opt/orca \ + && rm /tmp/orca.AppImage + RUN useradd --create-home --shell /bin/bash orca + USER orca + WORKDIR /home/orca + ENV PATH=/home/orca/.local/bin:/opt/orca/resources/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + LIBGL_ALWAYS_SOFTWARE=1 + # Chromium cannot create its sandbox namespaces in an unprivileged + # container; the container is the isolation boundary instead. + ENTRYPOINT ["/opt/orca/AppRun", "--no-sandbox"] + restart: unless-stopped + init: true + shm_size: "1gb" + command: serve --port 6768 --pairing-address ${ORCA_PAIRING_ADDRESS} ${ORCA_SERVE_ARGS:-} + expose: + - 6768 + volumes: + - orca-home:/home/orca + healthcheck: + test: ["CMD", "bash", "-c", ": > /dev/tcp/127.0.0.1/6768"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 60s + +volumes: + orca-home: {} diff --git a/blueprints/orca-server/instructions.md b/blueprints/orca-server/instructions.md new file mode 100644 index 00000000..04f3fdd4 --- /dev/null +++ b/blueprints/orca-server/instructions.md @@ -0,0 +1,63 @@ +# Orca Server + +Runs `orca serve`, the headless Orca runtime, following the official +[headless Linux server guide](https://github.com/stablyai/orca/blob/main/docs/reference/headless-linux-server.md). +Orca publishes no container image, so the service is built from the pinned +upstream release AppImage (`v1.4.205`, amd64 or arm64) on the first deploy. +The first deployment therefore takes a few extra minutes. + +The domain serves the runtime WebSocket and its web client. Every client, +browser included, connects with a pairing link printed in the logs. + +## Pair a client + +1. Open the `orca-server` service logs in Dokploy. +2. Copy the `Pairing URL: orca://pair?code=...` line printed after + `Orca server ready`. The `Web client URL` line next to it opens the same + runtime in a browser, already paired. +3. In the Orca desktop app, open **Settings > Remote Orca Servers** and paste + the link. From a CLI: + `orca environment add --name my-server --pairing-code 'orca://pair?code=...'`. + +The pairing link is a credential: share it only with the client you are +pairing. Paired devices are stored in the persistent volume, so clients +reconnect after a redeploy or an upgrade without pairing again. + +## Pair the Orca mobile app + +The mobile app needs a mobile-scoped link, which the default link is not. +Set `ORCA_SERVE_ARGS=--mobile-pairing` in the environment and redeploy: the +logs then print a mobile pairing QR code and link instead of the desktop one. +Scan it from the app, then clear `ORCA_SERVE_ARGS` and redeploy. Devices +already paired stay paired either way. On a phone, the `Web client URL` also +works in the browser without this step. + +## HTTPS + +`ORCA_PAIRING_ADDRESS` is the address advertised to clients. It defaults to +`http://` (plain WebSocket through Traefik; the pairing channel +itself is end-to-end encrypted). Once HTTPS is enabled on the domain, set it to +`https://` in the environment and redeploy so clients dial +`wss://`. + +## Coding agents + +The image ships Orca, git and the Linux libraries it needs, but no coding +agent. Install the agents you use from an Orca terminal on this server; they +land in `/home/orca/.local/bin`, which is on `PATH` and persisted in the +`orca-home` volume together with their credentials, your repositories and +Orca's state (`/home/orca/.config`). + +Example for Claude Code: `curl -fsSL https://claude.ai/install.sh | bash`. + +## Upgrade + +`orca serve` never updates itself. To upgrade, change the `ORCA_VERSION` +build argument in the compose file and redeploy. State lives in the +volume, not in the image, and newer releases migrate it on load. + +## Logs and secrets + +D-Bus and OS keyring errors at startup are expected in a container and +harmless. Without a keyring, Orca stores its secrets unencrypted in the +`orca-home` volume: treat that volume as sensitive. diff --git a/blueprints/orca-server/meta.json b/blueprints/orca-server/meta.json new file mode 100644 index 00000000..82ba12c7 --- /dev/null +++ b/blueprints/orca-server/meta.json @@ -0,0 +1,18 @@ +{ + "id": "orca-server", + "name": "Orca Server", + "version": "v1.4.205", + "description": "Headless Orca runtime: run a fleet of parallel coding agents in isolated git worktrees on your server and drive them from the Orca desktop, web or mobile app.", + "logo": "orca-server.png", + "links": { + "github": "https://github.com/stablyai/orca", + "website": "https://www.onorca.dev", + "docs": "https://github.com/stablyai/orca/blob/main/docs/reference/headless-linux-server.md" + }, + "tags": [ + "ai", + "developer-tools", + "agents", + "self-hosted" + ] +} diff --git a/blueprints/orca-server/orca-server.png b/blueprints/orca-server/orca-server.png new file mode 100644 index 0000000000000000000000000000000000000000..a70d317f59574119510dcf68252e9167d80a411c GIT binary patch literal 29625 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