ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IronClaw Reborn Railway Sandbox 预览部署运维指南:单副本控制服务、Volume 持久状态与沙箱生命周期管理

IronClaw Reborn Railway Sandbox 预览部署运维指南:单副本控制服务、Volume 持久状态与沙箱生命周期管理 人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载本篇指南围绕仓库内 Railway 沙箱运维手册 展开面向需要将 IronClaw Reborn 控制服务以hosted-single-tenant-volume-sandboxed-railway形态部署到 Railway 的工程师。它说明如何用 Railway CLI由Dockerfile内置驱动沙箱生命周期、如何把持久状态收敛到 Railway Volume、如何在单个 Token 纪律与单副本约束下完成一次可复核的预览部署并给出可直接照做的 7 步运维检查清单。读完本文你将掌握该预览 profile 的完整部署形态、凭据边界、网络语义澄清以及控制服务重启/崩溃后的沙箱回收验证方法。一、状态与适用范围这是一份预览专属的运行手册该运行手册只面向一种部署形态hosted-single-tenant-volume-sandboxed-railway。它精确部署一个IronClaw 控制服务副本持久状态落在 Railway Volume 上沙箱生命周期由Dockerfile内置的 Railway CLI 驱动。文档明确强调这不是生产多副本拓扑。1.1 Railway Sandboxes 属 Priority Boarding 实验特性Railway Sandboxes 属于 Priority Boarding优先候补功能其程序化操作面sandbox API 与 CLI 命令仍可能变动。因此每次运维前必须用镜像中固定的 Railway CLI 版本执行railway sandbox --help核对当前命令行为复核 Railway 官方当前发布的沙箱文档与 API 行为绝不脱离Dockerfile单独升级 CLI——CLI 版本由 Dockerfile 的RAILWAY_CLI_VERSION构建参数钉死脱离镜像升级会破坏镜像即环境的可复现性。从源码结构看这种预览定位同样体现在 profile.rsHostedSingleTenantVolumeSandboxedRailway被注释为hosted single-tenant volume profile whose per-user sandbox lifecycle is provided by Railway Sandboxes and durable Railway checkpoints与本地 Docker 沙箱 profile 并列但语义独立。1.2 项目与环境的 ID 纪律本手册适用于一个指定的 Railway 项目和一个指定的环境。任何运维动作都不得依赖 CLI 当前所在目录、CLI 的当前项目或默认环境必须显式记录并传入两个 IDRAILWAY_PROJECT_IDdesignated-preview-project-id RAILWAY_ENVIRONMENT_IDdesignated-preview-environment-id这两个值必须作为 CLI 的项目/环境选择器显式传递不得从其他 Railway 项目拷贝或指向其他项目。二、镜像与凭据边界固定版本 CLI 单 Token 纪律2.1 Dockerfile 如何内置并校验 Railway CLIDockerfile 的多阶段构建中railway_cli阶段按TARGETARCH下载 Railway CLI 并校验发布 checksum之后只把可执行文件拷贝进最终镜像amd64→x86_64-unknown-linux-gnu固定 SHA-25633addd7729e99291f329ac671b02e9fe14fec8b7d9cdc11be77569739dae5c0earm64→aarch64-unknown-linux-musl固定 SHA-25611c24392e5e3551687c5e35ade2eec63e2ea7689603117de83f4f480dbb2d2a7其他架构直接报错退出unsupported Railway CLI architecture下载后经sha256sum -c -校验、解包、install -m 0755安装并在最终 runtime 阶段通过COPY --fromrailway_cli /usr/local/bin/railway /usr/local/bin/railway带入。没有任何 Railway 凭据作为 Docker 构建参数、环境指令、镜像层或文件进入镜像。2.2 两种 Token 的语义与互斥规则运行时最多只向控制服务提供一个Token且必须通过 Railway 指定的 Secret 机制注入变量作用域适用场景RAILWAY_TOKEN项目级优先使用。动作仅限本预览项目时选择它RAILWAY_API_TOKEN账户/工作区级仅当沙箱操作确实需要更广的账户/工作区权限时才使用两条硬性规则Railway CLI 会拒绝同时存在两个变量的进程——同一运行时环境中两者不能共存任一 Token 都不得放入config.toml、源代码控制、Docker 构建参数、日志输出或 sandbox-worker 环境。控制服务可以使用所选 Token 调用 Railway API但不可信的 worker 绝不能拿到它。这是凭据保持 host-side原则在凭据注入层的体现。三、必须的部署形态Required Deployment Shape在 Railway 服务上配置以下全部要素3.1 基础配置Dockerfile 路径DockerfileStart Command 留空让镜像 entrypoint 自行构造ironclaw serve命令entrypoint.sh 在无参数时执行exec ironclaw serve --host $host --port $porthost 在 Railway 环境下自动解析为0.0.0.0。ProfileIRONCLAW_REBORN_PROFILEhosted-single-tenant-volume-sandboxed-railway。该值对应 profile.rs 中的HostedSingleTenantVolumeSandboxedRailway枚举变体且local_runtime_storage_subdir()将其与本地 Docker 沙箱 profile 复用同一存储子目录hosted-single-tenant-volume-sandboxed——即执行运输层不同但 IronClaw 的持久应用状态不另存一份。持久 Volume挂载到/data。entrypoint 从RAILWAY_VOLUME_MOUNT_PATH推导IRONCLAW_REBORN_HOME默认取$RAILWAY_VOLUME_MOUNT_PATH/ironclaw-reborn并对此 profile 族在无 Volume 时 fail closed——除非显式设置一次性测试覆盖开关IRONCLAW_REBORN_ALLOW_EPHEMERAL_RAILWAYtrue。entrypoint 的 fail-closed 逻辑在 entrypoint.sh 中非常严格只要检测到 Railway 运行时标记RAILWAY_ENVIRONMENT/RAILWAY_PROJECT_ID/RAILWAY_SERVICE_ID任一存在且未显式允许临时部署就会校验IRONCLAW_REBORN_HOME与IRONCLAW_REBORN_WORKSPACE_ROOT都解析后位于RAILWAY_VOLUME_MOUNT_PATH之下用readlink -m做规范化比较防止..段或符号链接逃逸出挂载点。这保证了项目文件看似持久、实际落在临时目录这类静默失败不会发生。3.2 单副本纪律只允许一个 IronClaw 副本。不要启用水平扩展、不要部署第二个控制服务、不要针对同一份 Volume-backed 状态做并发部署叠加预览被判定健康前必须缩回一个副本从源码结构看这一约束与 ironclaw_sandbox/README.md 描述的一个 IronClaw 进程在同一时间独占一个本地 Docker workspace root并通过 transport 级 owner lock 保证互斥同源沙箱状态与工作区根目录都要求进程级单点归属多副本会破坏该前提。3.3 传输缓存容量与空闲超时预览 transport 每个进程最多跟踪4,096 条用户生命周期条目达到容量时逐出最久未使用的空闲条目绝不会逐出被活动命令持有的条目对应 tests.rs 中with_cli_and_capacity构造的容量/驱逐测试面Railway 默认空闲超时是5 分钟可通过IRONCLAW_REBORN_RAILWAY_IDLE_TIMEOUT_MINUTES调整组合层 sandbox.rs 的build_railway_user_sandbox_binding接收idle_timeout_minutes并调用with_idle_timeout_minutes落进RailwayPreviewSandboxConfig。3.4 检查点Checkpoint与资源泄漏兜底IronClaw 在每条命令完成后尝试对用户工作区做 checkpoint优雅关闭时控制服务尝试重试陈旧 checkpoint并销毁该进程拥有的活跃 Railway 沙箱托管部署中关闭时间有限而崩溃根本无法执行清理因此配置的空闲超时是资源泄漏的硬兜底崩溃后残留沙箱必须在空闲超时内过期。3.5 与 Volume 的分工Volume 是 IronClaw 持久状态的边界它跨控制服务重启保留 Reborn home、libSQL 支撑的 runtime/control-plane 状态以及进程 checkpoint。Railway Sandbox checkpoint 只是该沙箱自身文件系统的快照它不替代 IronClaw 的持久 checkpoint也不替代 Railway Volume——两者是不同层级的持久化。3.6 WebUI 与 LLM 密钥常规 WebUI 与 LLM 密钥配置遵循 Docker 部署指南包括IRONCLAW_REBORN_WEBUI_TOKEN、IRONCLAW_REBORN_WEBUI_USER_ID、NEARAI_API_KEY镜像内置 config 默认选择 NearAI 作为[llm.default]提供方以及可选的 Google SSO 变量。本手册不为这些值发明新变量或硬编码直接沿用部署指南的清单。四、Worker 网络边界Railway NAT 语义澄清4.1 每命令一个全新 inner Docker worker每条命令都在其 Railway Sandbox 内的全新 inner Docker worker 容器中运行。这是因为 Railway 不跨外层 exec 调用保留 inner mount namespaceironclaw_sandbox/README.md 明确说明 Railway 预览 transport 保持每用户沙箱与 checkpointed workspace但每条命令启动全新 inner worker且不使用本地持久 Docker 容器的生命周期机制。4.2 网络默认启用 Docker 默认网络Railway 预览部署工厂启用了该 worker 的默认 Docker 网络从而通过外层沙箱的Railway NAT提供直接出网egress。--network none只是 ad-hoc transport 的 fail-closed 构造默认在本 profile 中并不激活。Railway 控制服务自身也需要出网才能调用 Railway 的 sandbox API。4.3 ISOLATED ≠ Docker --network none不要把 Railway Sandbox 的ISOLATED模式描述成等价于 Docker--network none。Railway 将ISOLATED文档化为私有网络隔离它仍然通过 Railway NAT 拥有出站互联网访问。因此Railway Sandbox不是针对不可信代码的 deny-egress 安全边界需要 deny-by-default 保证的 worker必须把凭据留在 host-side并使用基础设施强制的 egress 边界。这条澄清直接关系到 deploy-reborn-cli-docker.md 中对该 profile 的描述一致性部署工厂启用的是 worker 的默认 Docker 网络--network none仅作为 ad-hoc 运输的 fail-closed 构造默认存在。五、运维检查清单7 步每次沙箱生命周期操作前后按下列清单逐项确认并留证确认项目与环境 ID 是指定的预览配对且所选 Token 只拥有该配对所需的权限。确认控制服务运行时只存在一个 Railway Token 变量且任一 Token 都没有传给 worker 或写入磁盘。部署前确认服务是单副本且存在/dataVolume。确认服务以 Railway 预览 profile 启动且 Volume-backed 的 Reborn home 能经受一次受控重启。沙箱生命周期操作前确认钉死版本的 CLI 的 sandbox help 与当前 Railway API 行为把显式的项目/环境 ID 与操作证据一起记录然后核验产生的沙箱状态。受控重启后确认该进程此前拥有的沙箱已被销毁或会在配置的空闲超时内过期崩溃后确认它们在超时内过期。失败时先停止创建新沙箱保留 Volume 与 checkpoint 证据把控制服务缩回单副本并在不打印 Token的前提下检查 host-side 日志。关于当前 Railway Token 语义与沙箱发布状态运维前应查阅 Railway CLI 官方认证文档与官方 Sandboxes 公告本文不替代 Railway 外部文档操作时以其为准。六、源码级佐证从配置到运输的完整链路关注点源码位置佐证内容Profile 枚举与字符串映射crates/app/ironclaw_config/src/profile.rsHostedSingleTenantVolumeSandboxedRailway变体as_str()返回hosted-single-tenant-volume-sandboxed-railway组合层绑定工厂crates/app/ironclaw_composition/src/sandbox.rsbuild_railway_user_sandbox_binding(project_id, environment_id, cli_path, idle_timeout_minutes, worker_image)构造RailwayPreviewSandboxTransport无 Volume fail-closeddocker/reborn/entrypoint.shRailway 运行时下强制 home/workspace 位于挂载点内IRONCLAW_REBORN_ALLOW_EPHEMERAL_RAILWAYtrue仅豁免一次性测试CLI 版本与校验DockerfileRAILWAY_CLI_VERSION5.30.4按架构下载并sha256sum -c校验容量/驱逐测试crates/lanes/ironclaw_sandbox/src/sandbox_process/railway/tests.rsFakeRailwayCli与with_cli_and_capacity覆盖容量上限与重启收敛行为inner worker 语义crates/lanes/ironclaw_sandbox/README.mdRailway 预览 transport 每条命令启动全新 inner worker不使用本地持久容器生命周期Seed 配置docker/reborn/config.hosted-single-tenant-volume.tomlVolume-backed profile 的持久化 seed 配置形态WebUI env 变量、NearAI 默认 LLM 等七、关键约束速查绝不同时设置两个 Railway Token把 Token 放进config.toml/源码/构建参数/日志/worker 环境脱离Dockerfile升级 CLI把ISOLATED当 deny-egress多副本并发叠放同一 Volume-backed 状态。务必显式传入并记录项目/环境 ID部署前确认单副本 /dataVolume每次操作前核对钉死 CLI 的railway sandbox --help崩溃后依赖配置的空闲超时兜底回收沙箱。记住Railway Sandbox checkpoint 只是沙箱自身文件系统快照IronClaw 持久状态与进程 checkpoint 属于 Railway Volume二者不可互相替代。这份手册对应的全部实现细节都可以在 Dockerfile、docker/reborn/entrypoint.sh 以及 ironclaw_sandbox 与 ironclaw_composition 中继续深入阅读。赞分享人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载相关推荐IronClaw 部署运维控制面解析LLM 供应商管理、Operator 日志环与 OS 服务生命周期ironclaw_operatorIronClaw 部署运维控制面解析LLM 供应商管理、Operator 日志环与 OS 服务生命周期ironclaw_operator 导读 ironc人工智能AI 应用交互助手AI AgentIronClaw 部署运维控制平面ironclaw_operator 的 LLM 供应商管理、日志环与服务生命周期架构解析IronClaw 部署运维控制平面ironclaw_operator 的 LLM 供应商管理、日志环与服务生命周期架构解析 IronClaw 的 ironcl人工智能AI 应用交互助手AI AgentCubeSandbox S3 持久卷S3 Volume实战指南跨沙箱生命周期的对象存储持久化CubeSandbox S3 持久卷S3 Volume实战指南跨沙箱生命周期的对象存储持久化 本篇技术指南围绕 CubeSandbox 的 S3 VoluAgent 沙箱虚拟化云原生人工智能后端容器运行时上一篇终极指南5分钟快速掌握OpenAI命令行聊天交互技巧下一篇TanStack FormSolidDevtools 接入指南从安装配置到源码级原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表