Skip to main content
Square Cloud 上的运行时是应用运行所处的完整、隔离的环境:语言解释器或虚拟机、它所链接的系统库、它可以调用的工具,以及将它与主机上其他所有应用隔离开的安全边界。 你无需自行构建或维护该环境。你只需提交源代码和一个小小的配置文件;Square Cloud 会检测语言、解析依赖、置备一个隔离容器并运行它。同一条流水线为 Discord/WhatsApp/Telegram 机器人、网站和 API、后台工作进程以及长期运行的服务提供支撑,全部运行在同样快速、经过加固的基础设施之上。

支持的语言

JavaScript

Bun

Deno

Python

Java

Rust

Elixir

PHP

Go

C#

Ruby

HTML/CSS

除了上述语言之外,大多数其他技术栈和库都可以开箱即用地运行。运行时镜像被设计得十分宽松:如果你的语言能在 Linux 上安装,它几乎肯定能在 Square Cloud 上运行。

版本

每个运行时都提供两个更新通道,可通过配置文件中的 VERSION 字段进行选择:
  • recommended: 我们为绝大多数应用加固并在生产环境中运行的版本。除非有特定理由,否则请选择它。
  • latest: 最新发布的版本,适合需要某个刚刚推出的语言特性的团队。
VERSION 只接受这两个值:任何其他值(包括精确的版本号)都会导致 deploy 失败并返回 INVALID_VERSION。
除非你需要只有 latest 才提供的特性,否则请选择 recommended。关于 RUNTIME 和 VERSION 字段,请参阅配置文件参考。

deploy 的工作原理

从上传到进程上线,每一次 deploy 都会经过同一条确定性流水线:

语言检测

Square Cloud 从配置文件的 RUNTIME 字段获取语言;未设置时,则根据 MAIN 文件的扩展名判断:.js 对应 Node.js,.ts 对应 TypeScript,.py 对应 Python,.go 对应 Go,.jar 对应 Java,依此类推。随后它会检查该语言的依赖文件是否位于上传内容的根目录:Node.js 和 TypeScript 为 package.json,Python 为 requirements.txt 或 pyproject.toml,Go 为 go.mod 或 go.work,Rust 为 Cargo.toml,Ruby 为 Gemfile,Elixir 为 mix.exs。如果该文件缺失或为空,deploy 会失败并返回 INVALID_DEPENDENCY。

依赖解析

依赖会在应用启动之前于服务端、在容器内部安装:没有 node_modules 文件夹时运行 npm install(上传内容根目录中的 node_modules 文件夹会被丢弃),Python 运行 pip install,Ruby 运行 bundle install,Elixir 运行 mix deps.get,而 Go、Rust 和 .NET 会在构建代码时下载所需的包。你无需将 node_modules 或虚拟环境打包进 .zip。Java 是例外:默认命令运行你构建好的 JAR(java -jar MAIN),因此请上传已编译的 .jar。

置备

平台会按照配置文件中声明的 CPU 和内存创建一个隔离容器。资源限制在内核层面强制执行,因此一个应用绝不会在同一主机上抢占另一个应用的资源。

启动

未设置 START 时,Square Cloud 会运行该语言的默认命令,例如 node MAIN、python MAIN、go run MAIN 或 java -jar MAIN(Rust 和 Elixir 会通过 cargo run --release 和 mix run --no-halt 构建并运行整个项目)。需要构建步骤或自定义命令?设置 START,它会被原样执行。

每个运行时镜像内部

每个镜像都基于其语言的官方镜像,并添加应用通常需要的系统工具:

Node.js 与 Python 同在一个镜像

Node.js 和 Python 应用运行在同一个镜像上,该镜像同时包含 Node.js 和 Python 3.14,因此机器人可以调用用另一种语言编写的脚本。PHP 镜像还包含 Node.js 24 和 npm,用于构建前端资源。

ffmpeg 和 Chromium

Node.js、Python、Java、Go、Rust、Ruby、Elixir 和 .NET 镜像均预装了 ffmpeg,Node.js 和 Python 镜像还包含无头 Chromium,无需额外配置即可用于媒体机器人、网页抓取,以及 PDF 或截图生成。

默认非特权

应用以非 root 用户身份在隔离容器内运行。被入侵的依赖会被限制在容器内,对主机没有任何特权访问。

静态站点,无需运行时

不需要解释器?设置 RUNTIME=static 即可直接提供纯 HTML/CSS/JS 站点,并享有与其他应用相同的 CDN 和 TLS。

隔离与安全

每个应用都是一个完全隔离的容器,具有内核强制执行的 CPU 和内存限制,绝非共享进程。以非特权方式运行意味着应用无法触及主机或其邻居,而资源上限则保证某个项目的流量高峰不会影响另一个项目的性能。正是这一模型让 Square Cloud 能够在共享集群上托管数万个工作负载而彼此互不干扰。

后续步骤

配置文件

掌握 MAIN、START、RUNTIME、VERSION 和 MEMORY:这些字段控制着你的运行时。

语言指南

Node.js、Bun、Deno、Python、Go、Rust、Java、静态 HTML 等的分步设置。