Daytona
在 Daytona 云沙箱中运行一个持久的 OpenClaw Gateway:这是一个隔离的 Linux 环境,支持 SSH 访问,并内置预览 URL,无需管理 VPS。OpenClaw 已预装在 daytona-medium 快照中,因此通过 SSH 连接后即可立即开始配置。
将 Gateway 保持在 loopback 上,并通过 Daytona 的签名预览 URL 访问仪表盘。不要将 Gateway 端口直接暴露到公共互联网。
准备工作¶
- Daytona 账户(提供免费套餐)
- 来自 Daytona 仪表盘 的 Daytona API 密钥
- 你的模型提供商的 API 密钥(Anthropic、OpenAI 等)
安装 Daytona CLI¶
验证安装:
较旧的 CLI 版本缺少新的沙箱命令;请保持其为最新版本(例如 brew upgrade daytonaio/cli/daytona)。
身份验证¶
创建沙箱¶
| 标志 | 原因 |
|---|---|
--snapshot daytona-medium |
提供足够的内存余量来运行 Gateway |
--auto-stop 0 |
保持沙箱持续运行,直到手动停止 |
通过 SSH 连接¶
运行 onboarding¶
在沙箱内,通过一条命令配置 OpenClaw:
openclaw onboard --non-interactive --accept-risk \
--anthropic-api-key YOUR_ANTHROPIC_KEY \
--skip-daemon --skip-channels --skip-skills --skip-hooks --skip-health
--skip-daemon 很重要:Daytona 沙箱不运行服务管理器,因此你需要在下面手动启动 Gateway。将密钥标志替换为你所用提供商的对应标志(--openai-api-key、--openrouter-api-key 等);openclaw onboard --help 会列出全部标志。此处会跳过 channels、skills 和 hooks,留待之后配置。
不带标志运行 openclaw onboard 会启动一个对话式设置助手,并且需要交互式终端;openclaw onboard --classic 则运行旧版的逐步向导。
Onboarding 会配置一个 gateway 身份验证令牌。随时在沙箱的交互式终端中打印它:
当 stdout 不是交互式终端时,该命令会拒绝打印令牌,因此无法通过管道或命令替换来捕获它。
openclaw config get gateway.auth.token 返回的是 __OPENCLAW_REDACTED__ 而不是实际值,因为 CLI 会在输出中屏蔽机密信息。
允许预览 URL 来源¶
Gateway 只接受来自允许来源的浏览器连接,而 Daytona 的预览代理位于其前面。在启动 Gateway 之前,请将两者都配置好。
在本地终端(而非沙箱 SSH 会话)中,为 Gateway 端口生成一个签名预览 URL:
复制它打印出的 URL。回到沙箱 SSH 会话,允许该来源并信任沙箱内的预览代理,将示例 URL 替换为你自己的:
openclaw config set gateway.controlUi.allowedOrigins '["PASTE_YOUR_PREVIEW_URL"]'
openclaw config set gateway.trustedProxies '["127.0.0.1"]'
请严格按照打印结果粘贴 URL:仅包含协议和主机,不带末尾斜杠,也不带路径。Gateway 会逐字比较浏览器来源,而浏览器发送的是 https://host,没有末尾斜杠,因此 https://host/ 无法匹配,连接会被拒绝。浏览器地址栏通常会显示末尾斜杠,所以请从终端复制。
启动 Gateway¶
Gateway 在后台运行,并且不会因 SSH 断开而终止。验证它是否已启动:
该命令会报告 Gateway 的状态,因此 OK 表示你可以继续。
稍后(在配置更改或更新之后)需要重启 Gateway 时:
打开仪表盘¶
在浏览器中打开之前生成的预览 URL。Control UI 会在首次连接时要求输入 gateway 令牌;粘贴你在 onboarding 后打印出的值。
批准你的设备¶
首次浏览器连接会进入一个设备配对请求队列。回到你的沙箱 SSH 会话:
# List pending requests and copy the request id
openclaw devices list
# Approve it
openclaw devices approve REQUEST_ID
安全性¶
Gateway 的访问受三层保护:
| 层 | 描述 |
|---|---|
| 预览 URL | 限时签名 URL(1 小时后过期) |
| Gateway 令牌 | 通过 Control UI 连接时所必需 |
| 设备批准 | 每个新浏览器或客户端都必须获得明确批准 |
请将你的 gateway 令牌和预览 URL 保密。Gateway 始终保持绑定到 loopback;由 Daytona 的预览代理处理外部访问。
渠道设置¶
默认情况下,未知发送者需要经过配对批准;参见 配对。
Telegram¶
使用 @BotFather(/newbot)创建一个机器人,复制令牌,然后在沙箱 SSH 会话中配置 OpenClaw:
还要将 TELEGRAM_BOT_TOKEN=<bot-token> 存储到 ~/.openclaw/.env 中,这样后台 Gateway 会在重启后读取到它。--use-env 会验证令牌,而不会将其复制到 openclaw.json 中。
重启 Gateway(见上文),给你的机器人发送一条私信,然后批准它报告的配对代码:
配对码一小时后过期。完整参考:Telegram。
WhatsApp¶
WhatsApp 作为独立插件提供,因此请先安装并启用它:
安装并不会启用插件,因此 enable 步骤是必需的;否则 Gateway 会将该渠道报告为已配置但不受信任。如果在未安装的情况下运行下面的登录命令,系统会提示你改为从 ClawHub 或 npm 下载插件。
然后通过沙箱 SSH 会话扫描二维码来关联账户:
在手机上:设置 → 已链接设备 → 链接设备,然后扫描终端中显示的二维码。关联后重启 Gateway,然后在 WhatsApp 上给自己发一条消息,OpenClaw 会在该聊天中回复。
无需配对审批:未配置允许列表时,默认允许已关联账户自己的号码。配对适用于未知发送者,这就是为什么 Telegram 需要配对而自我聊天不需要。允许列表、个人号码模式以及自我聊天的详细信息:WhatsApp。
更新¶
快照的全局 npm 树归 root 所有,因此直接运行 openclaw update 无法写入。请在沙箱 SSH 会话中使用以下命令更新:
下面的命令适用于 npm 12 或 npm 11.16+。在 npm 11.15 及更早版本上,请省略 --allow-scripts=openclaw。
openclaw doctor 会在更新后迁移任何旧配置。之后请重启 Gateway(见上文)。
停止和恢复沙箱¶
沙箱状态在停止/启动周期中会持久保留,但 Gateway 进程不会自动启动。恢复后,请重新连接并再次启动:
故障排除¶
沙箱重启后 Gateway 未运行¶
Gateway 进程无法在沙箱重启后继续运行。请使用 daytona ssh openclaw 重新连接,并用上面的 nohup 命令再次启动。
预览 URL 已过期¶
预览 URL 有时间限制(默认 3600 秒)。请从本地终端重新生成,可选择更长的过期时间:
每个生成的 URL 都有不同的主机,因此它是一个新的源。重新生成后,用新的 URL 更新 gateway.controlUi.allowedOrigins 并重启 Gateway,否则控制 UI 会被拒绝并提示 origin not allowed。
沙箱自动停止¶
如果沙箱创建时没有使用 --auto-stop 0,它会在空闲时自动停止。使用 daytona sandbox start openclaw 恢复它。
无法访问 Gateway 端口¶
请确认 Gateway 正在运行并监听端口:
如果你更改了 Gateway 端口,请将相同的端口传递给 daytona preview-url。
备注¶
- 有关以编程方式配置沙箱的信息,请参阅 Daytona OpenClaw SDK 指南
相关文档¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw