news 2026/9/9 1:20:18

Orca Headless Linux 服务器部署:orca serve 完整实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Orca Headless Linux 服务器部署:orca serve 完整实战指南

Orca Headless Linux 服务器部署:orca serve 完整实战指南

【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS.项目地址: https://gitcode.com/GitHub_Trending/orca48/orca

Orca 是一款可运行并行编码 Agent 集群的 AI 编排平台(ADE),支持用你自己的订阅驱动任意 CLI 编码 Agent。通过内置的orca serve命令,你可以在没有图形界面的 Headless Linux 服务器(如 Ubuntu VPS)上直接启动 Orca 运行时,让 Agent 24/7 持续工作,并在桌面端或手机上随时查看、接管任务。本文带你从零完成一次完整的生产部署。

orca serve 是什么?为什么要无头部署 🖥️

日常使用中,Orca 是一个桌面应用;而orca serve会让 Orca 只启动运行时服务、不打开桌面窗口,并通过 WebSocket 监听端口对外提供服务。

无头部署的典型收益:

  • 持续运行:VPS 常驻,Agent 任务不必依赖你的电脑开机;
  • 移动管理:手机 App 或网页端配对后,即可远程查看进度、追加指令;
  • 多客户端共享:桌面、手机、Web 同时连接同一个运行时。

📖 本文依据官方无头部署指南编写,完整文档见仓库中的docs/reference/headless-linux-server.md,系统兼容性说明见docs/reference/linux-glibc-compatibility.md

部署前系统要求(一分钟核对)

项目要求
操作系统Ubuntu 20.04 / 22.04 / 24.04,或当前 Debian stable
C 库glibc ≥ 2.31(对应 libstdc++GLIBCXX_3.4.28
架构x86_64 或 arm64
必装依赖xvfb(虚拟显示)、curlfilejqzlib1g-dev
可选依赖libfuse2(Ubuntu 22.04;24.04 / Debian 为libfuse2t64

两点提醒:

  • Orca 在无DISPLAY会自动启动 Xvfb:99显示),无需单独搭建 D-Bus 会话,但xvfb包必须预装;
  • FUSE 并非必需。Docker 容器通常没有 FUSE 设备,可用--appimage-extract一次性解包后直接运行squashfs-root/AppRun

一键安装步骤:准备依赖与下载 AppImage

在服务器终端执行:

sudo apt-get update sudo apt-get install -y curl file jq xvfb zlib1g-dev # Ubuntu 22.04 额外安装:libfuse2 sudo mkdir -p /opt/orca # 从项目发布页(Releases)下载最新版 orca-linux.AppImage 到 /opt/orca sudo chmod +x /opt/orca/orca-linux.AppImage

如果Xvfb不在/usr/bin下,用command -v Xvfb确认其绝对路径,systemd 单元里要用到它。

最快启动命令:先前台运行验证

创建服务之前,务必先在前台跑通一次:

LIBGL_ALWAYS_SOFTWARE=1 /opt/orca/orca-linux.AppImage serve --port 6768

如果客户端在别的机器上,追加--pairing-address告知客户端应当连接的地址(私有服务器推荐 Tailscale 地址):

LIBGL_ALWAYS_SOFTWARE=1 /opt/orca/orca-linux.AppImage serve \ --port 6768 \ --pairing-address 100.64.1.20

启动成功后,标准输出会打印一段就绪信息:

Orca server ready Bound endpoint: ws://0.0.0.0:6768 Advertised endpoint: ws://100.64.1.20:6768 Pairing URL: orca://pair?code=...

理解这两个端点的关键区别:

  • boundEndpoint:进程实际监听的位置;
  • advertisedEndpoint:客户端实际拨号的位置(由--pairing-address决定)。

--pairing-address只是"广告"地址,不会改变监听绑定。省略端口时会自动使用真实绑定端口;*0.0.0.0::这类通配地址不能作为广告地址。

面向自动化/进程管理器,可加--json获得单行 JSON 就绪契约(type: orca_server_ready),配合jq解析即可做健康检查。前台进程按Ctrl+C停止。

systemd 后台常驻部署配置

1️⃣ 创建专用服务用户

以服务用户(而非 root)运行,可以保留 Chromium 沙箱的安全边界:

sudo useradd --system --create-home --shell /usr/sbin/nologin orca sudo chown root:root /opt/orca /opt/orca/orca-linux.AppImage sudo chmod 755 /opt/orca /opt/orca/orca-linux.AppImage

安装目录保持 root 属主:服务只需读取和执行 AppImage,不能替换它。

2️⃣ 编写 orca-serve 服务单元

创建/etc/systemd/system/orca-serve.service(把示例中的地址换成你的局域网 / Tailscale / 隧道地址):

[Unit] Description=Orca runtime server After=network-online.target Wants=network-online.target StartLimitIntervalSec=300 StartLimitBurst=5 [Service] Type=simple User=orca WorkingDirectory=/home/orca Environment=LIBGL_ALWAYS_SOFTWARE=1 ExecStart=/opt/orca/orca-linux.AppImage serve --port 6768 --pairing-address 100.64.1.20 StandardOutput=journal StandardError=journal KillMode=mixed Restart=on-failure RestartPreventExitStatus=3 RestartSec=5 [Install] WantedBy=multi-user.target

这段配置的三个设计细节值得注意:

  • KillMode=mixed:优雅停止信号只发给 Orca 主进程,让它可以"带走"自启的 Xvfb 直到 Electron 干净断开;
  • RestartPreventExitStatus=3:退出码 3 表示别的进程已占用该数据目录(userData profile),此时应停止服务而不是重试;
  • StartLimitBurst=5+StartLimitIntervalSec=300:把 5 分钟内启动次数限制在 5 次,防止坏启动进入"无限重启"风暴。

3️⃣ 启用并做就绪健康检查

sudo systemctl daemon-reload sudo systemctl enable --now orca-serve.service sudo journalctl -u orca-serve.service -f

自动化脚本里可以用一行命令过滤出就绪 JSON:

sudo journalctl -u orca-serve.service -o cat \ | jq -Rrc 'fromjson? | select(.type == "orca_server_ready" and .schemaVersion == 1)'

💡 如果希望虚拟显示的生命周期完全由 systemd 托管,可以单独建一个orca-xvfb.service运行Xvfb :99 -screen 0 1280x1024x24 -nolisten tcp,再给 Orca 单元加上Environment=DISPLAY=:99。默认情况下这一步可省略——orca serve会自动起 Xvfb。

客户端配对:桌面、手机、Web 三种接入方式

服务就绪后,Orca 会生成一个形如orca://pair?code=...的配对 URL。把它交给目标客户端(桌面端、手机 App 或 Web 端)即可完成端到端加密配对。

配对排错时记住四条规则:

  1. 配对凭据是敏感信息:只分享给目标客户端,不要让它进入反向代理的访问日志;
  2. 网络要真正可达:DNS、防火墙、Docker 端口发布、Tailscale 策略、反向代理,任何一环不通,"看起来有效"的配对也连不上;
  3. 反向代理必须支持 WebSocket upgrade:TLS 在代理侧终结时,广告地址要用wss://https://,不要透过 HTTPS 端点广告ws://
  4. 端口不匹配 = 外部路由配错:Orca 不会篡改你显式指定的代理端口。

无头安装 Agent Skills:不用打开设置界面 🧩

桌面端通常从"设置"里一键安装技能(Agent Skills);无头主机没有设置界面,改用 CLI:

orca skills install # 列出可安装技能 orca skills install --skill orca-cli --skill orchestration orca skills install --all --dry-run # 只打印将执行的命令

该命令要求主机装有node/npx,但不需要 Orca 运行时在跑。它会自动根据主机上检测到的编码 Agent 确定安装目标;检测不到时会停下来要求你显式传--agent(如--agent claude-code,codex),避免盲目装进所有 Agent。

升级与回滚要点(比安装更重要 ⚠️)

  • orca serve永不自动更新:无头模式不接线任何自动更新器,升级永远是"替换 AppImage + 重启服务"这一刻意动作;
  • 数据与二进制分离:持久化状态全部位于/home/orca/.config/,与/opt/orca/orca-linux.AppImage无关。替换二进制绝不触碰项目、worktree 元数据、终端历史和已配对设备密钥——升级后手机和 Web 客户端无需重新配对即可重连;
  • 严禁原地覆盖:AppImage 是 FUSE 挂载,运行中直接覆盖可能让进程崩溃。正确做法是下载到.new临时名 → 用file校验架构 → 原子mv换入;
  • 记录版本:Orca 无头模式没有--version命令,建议显式指定 Release 标签下载,并把版本号写入/opt/orca/VERSION以便审计;
  • 回滚必须"备份 + 换二进制"双管齐下:新版本一旦启动,可能把orca-data.json迁移到新 schema;只换回旧二进制、不恢复旧数据,旧版本可能丢弃它不认识的状态字段。官方升级/回滚脚本(见docs/reference/headless-linux-server.md的 Upgrade 章节)会自动生成带时间戳的.ready回滚包,包含旧二进制、版本记录与 profile 备份,三者必须成对使用。

常见报错排错清单

报错现象原因与解法
dlopen(): error loading libfuse.so.2安装libfuse2
Missing X server or $DISPLAY安装xvfb,或启用独立 Xvfb 服务并设DISPLAY=:99
Xvfb not foundcommand -v Xvfb查绝对路径,填进 systemd 单元
VPS 上出现 GPU / DRI 警告保持LIBGL_ALWAYS_SOFTWARE=1环境变量
Chromium 沙箱报错确认服务以非 root 的orca用户运行,/opt/orca对其可读
客户端连不上检查--pairing-address对客户端可达,防火墙放行--port
日志提示Another Orca instance is already running,单元退出码 3别的进程占用了数据目录。用systemctl status orca-serve+pgrep -af orca找到占用者;若无人占用则是陈旧锁,删掉 userData 里的SingletonLock/SingletonSocket后执行systemctl reset-failed orca-serve && systemctl start orca-serve
升级后服务崩溃循环直接用回滚包的.ready目录回滚;手动systemctl start前记得systemctl reset-failed
怀疑缺共享库./orca-linux.AppImage --appimage-extract解包后ldd squashfs-root/orca列出缺失项

总结

一次标准的 Orca 无头部署可以概括为四步:装依赖(xvfb等)→ 前台跑通orca serve→ systemd 常驻 + 就绪 JSON 健康检查 → 客户端配对。只要数据存放在服务用户主目录、二进制通过原子替换升级、回滚包成对保留,你的 VPS 上就能稳定跑起一支 24/7 的并行 Agent 集群,并从口袋里随时接管。

【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS.项目地址: https://gitcode.com/GitHub_Trending/orca48/orca

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 22:46:43

数学建模竞赛必备:回归分析核心思路、模型选型与全流程实战

1. 项目概述:回归分析在数学建模中的核心地位如果你参加过数学建模竞赛,或者看过那些获奖论文,你会发现一个高频出现的词:“回归分析”。这几乎是每个建模者工具箱里必备的“瑞士军刀”。为什么?因为它解决的是一个最朴…

作者头像 李华
网站建设 2026/9/9 1:19:39

Hermes Agent 技能系统:装技能、写技能、管安全

Hermes Agent 技能系统:装技能、写技能、管安全 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent 上周我让 Hermes Agent 帮我部署一套 K8s 环境,它只会敲最基础的命…

作者头像 李华
网站建设 2026/9/9 1:19:32

ArcGIS入门实战:从地图制作到空间分析的全流程指南

1. 项目概述:从零开始认识ArcGIS 如果你刚接触地理信息系统,或者在工作中突然被要求处理一张地图、分析一批带有位置信息的数据,那么ArcGIS这个名字你大概率绕不过去。它不是一个简单的画图软件,而是一个庞大、精密且功能强大的地…

作者头像 李华
网站建设 2026/8/31 3:35:30

模拟退火算法在R语言中实现特征筛选的工程实践

1. 项目概述:当特征筛选遇上模拟退火在数据科学和机器学习的实战中,特征筛选(Feature Selection)是绕不开的关键一步。尤其是在处理高维数据时,比如基因表达谱、金融指标或者用户行为日志,动辄成百上千个特…

作者头像 李华
网站建设 2026/8/31 1:47:19

线性回归标准型全解析:从数学原理到建模实战

1. 项目概述:从“黑箱”到“白盒”,理解线性回归的标准型在数学建模竞赛和数据分析的实战中,线性回归模型就像一把瑞士军刀,看似基础,却往往是解决复杂问题的第一把钥匙,也是检验建模者基本功的试金石。很多…

作者头像 李华
网站建设 2026/8/30 23:39:46

【CanMV K210】系统环境 USB 串口驱动与 CH9102 设备识别

CanMV K210 开发板通过 Type-C 连接电脑后,并不是直接被 CanMV IDE 控制,而是先通过 USB 串口芯片建立通信通道。CH9102 设备识别正常,是后续固件烧录、代码运行和串口调试的前提。 很多 K210 入门问题并不是代码错误,而是电脑没有…

作者头像 李华