Skip to main content
Un runtime sur Square Cloud est l’environnement complet et isolé dans lequel votre application s’exécute : l’interpréteur du langage ou la machine virtuelle, les bibliothèques système auxquelles elle est liée, l’outillage qu’elle peut invoquer, et la frontière de sécurité qui la maintient séparée de toutes les autres applications de l’hôte. Vous ne construisez ni ne maintenez jamais cet environnement. Vous livrez votre code source et un petit fichier de configuration ; Square Cloud détecte le langage, résout vos dépendances, provisionne un conteneur isolé et l’exécute. Le même pipeline alimente les bots Discord/WhatsApp/Telegram, les sites web et les API, les workers en arrière-plan et les services de longue durée, sur la même infrastructure rapide et durcie.

Langages pris en charge

JavaScript

Bun

Deno

Python

Java

Rust

Elixir

PHP

Go

C#

Ruby

HTML/CSS

Au-delà des langages ci-dessus, la plupart des autres stacks et bibliothèques fonctionnent d’emblée. Les images de runtime sont conçues pour être permissives : si votre langage s’installe sous Linux, il fonctionne très probablement sur Square Cloud.

Versions

Chaque runtime propose deux canaux de mise à jour, sélectionnables via le champ VERSION de votre fichier de configuration :
  • recommended : la version que nous durcissons et exécutons en production pour la majorité des applications. Choisissez-la sauf si vous avez une raison spécifique de ne pas le faire.
  • latest : la version la plus récente, pour les équipes qui ont besoin d’une fonctionnalité du langage tout juste publiée.
VERSION n’accepte que ces deux valeurs : toute autre valeur, y compris un numéro de version exact, fait échouer le déploiement avec INVALID_VERSION.
Choisissez recommended, sauf si vous avez besoin d’une fonctionnalité que seul latest propose. Consultez la référence du fichier de configuration pour les champs RUNTIME et VERSION.

Comment fonctionne un déploiement

De l’envoi à un processus en cours d’exécution, chaque déploiement suit le même pipeline déterministe :

Détection du langage

Square Cloud prend le langage dans le champ RUNTIME de votre fichier de configuration ou, s’il n’est pas défini, dans l’extension du fichier MAIN : .js pour Node.js, .ts pour TypeScript, .py pour Python, .go pour Go, .jar pour Java, et ainsi de suite. Il vérifie ensuite que le fichier de dépendances du langage se trouve à la racine de votre envoi : package.json pour Node.js et TypeScript, requirements.txt ou pyproject.toml pour Python, go.mod ou go.work pour Go, Cargo.toml pour Rust, Gemfile pour Ruby et mix.exs pour Elixir. S’il est absent ou vide, le déploiement échoue avec INVALID_DEPENDENCY.

Résolution des dépendances

Les dépendances sont installées côté serveur, à l’intérieur du conteneur, avant le démarrage de votre application : npm install lorsqu’il n’y a pas de dossier node_modules (un dossier node_modules à la racine de votre envoi est écarté), pip install pour Python, bundle install pour Ruby et mix deps.get pour Elixir, tandis que Go, Rust et .NET téléchargent leurs paquets lors de la compilation de votre code. Vous n’avez pas besoin d’envoyer node_modules ni un virtualenv dans le .zip. Java fait exception : la commande par défaut exécute un JAR que vous avez compilé (java -jar MAIN), envoyez donc le .jar compilé.

Provisionnement

Un conteneur isolé est créé avec le CPU et la mémoire déclarés dans votre fichier de configuration. Les ressources sont appliquées au niveau du noyau, de sorte qu’une application ne peut jamais affamer une autre sur le même hôte.

Démarrage

Sans START, Square Cloud exécute la commande par défaut du langage, comme node MAIN, python MAIN, go run MAIN ou java -jar MAIN (Rust et Elixir compilent et exécutent tout le projet avec cargo run --release et mix run --no-halt). Besoin d’une étape de build ou d’une commande personnalisée ? Définissez START et elle s’exécute telle quelle.

À l’intérieur de chaque image de runtime

Chaque image part de l’image officielle de son langage et ajoute les outils système dont les applications ont couramment besoin :

Node.js et Python ensemble

Les applications Node.js et Python tournent sur la même image, qui fournit à la fois Node.js et Python 3.14 : un bot peut donc appeler un script écrit dans l’autre langage. L’image PHP inclut aussi Node.js 24 et npm pour compiler les assets.

ffmpeg & Chromium

ffmpeg est préinstallé dans les images Node.js, Python, Java, Go, Rust, Ruby, Elixir et .NET, et l’image Node.js et Python inclut aussi Chromium headless, prêts pour les bots multimédias, le web scraping et la génération de PDF ou de captures d’écran sans configuration supplémentaire.

Non privilégié par défaut

Les applications s’exécutent en tant qu’utilisateur non-root à l’intérieur d’un conteneur isolé. Une dépendance compromise reste confinée, sans aucun accès privilégié à l’hôte.

Sites statiques, sans runtime

Pas besoin d’interpréteur ? Définissez RUNTIME=static pour servir directement un site HTML/CSS/JS simple, avec le même CDN et le même TLS que n’importe quelle autre application.

Isolation et sécurité

Chaque application est un conteneur entièrement isolé avec des limites de CPU et de mémoire appliquées par le noyau, jamais un processus partagé. S’exécuter en mode non privilégié signifie qu’une application ne peut pas atteindre l’hôte ni ses voisines, et les plafonds de ressources garantissent qu’un pic dans un projet n’a aucun effet sur les performances d’un autre. C’est le même modèle qui permet à Square Cloud d’héberger des dizaines de milliers de charges de travail sur des clusters partagés sans qu’elles interfèrent les unes avec les autres.

Étapes suivantes

Fichier de configuration

Maîtrisez MAIN, START, RUNTIME, VERSION et MEMORY : les champs qui contrôlent votre runtime.

Guides par langage

Configuration pas à pas pour Node.js, Bun, Deno, Python, Go, Rust, Java, HTML statique et plus encore.