> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Déployer votre première app avec la CLI

> Installez la CLI Square Cloud, connectez-vous, déployez un projet avec squarecloud upload, lisez ses logs et publiez vos modifications avec commit.

Ce guide emmène un projet de votre machine jusqu'à une application en ligne sur Square Cloud, puis montre comment publier une modification. Comptez quelques minutes.

<Steps>
  <Step title="Installer la CLI">
    <CodeGroup>
      ```bash macOS, Linux et WSL theme={"system"}
      curl -fsSL https://cli.squarecloud.app/install | bash
      ```

      ```bash Windows (nécessite Node.js) theme={"system"}
      npm install -g @squarecloud/cli
      ```
    </CodeGroup>

    Vérifiez qu'elle fonctionne avec `squarecloud --version`. Si la commande est introuvable, consultez [Installation](/fr/cli-reference/installation#vérifier-linstallation).
  </Step>

  <Step title="Se connecter">
    ```bash theme={"system"}
    squarecloud auth login
    ```

    La CLI affiche un code court et ouvre la page d'autorisation dans votre navigateur. Saisissez-y le code et approuvez. La page [Authentification](/fr/cli-reference/authentication) couvre les clés API et la CI.
  </Step>

  <Step title="Ajouter un fichier de configuration">
    À la racine de votre projet, créez un fichier `squarecloud.app`. Il indique à Square Cloud quel fichier exécuter, combien de mémoire réserver et quelle version du runtime utiliser :

    ```systemd squarecloud.app theme={"system"}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My first app
    ```

    Pour un site web, ajoutez `SUBDOMAIN=<name>` pour le publier sur `<name>.squareweb.app`. Chaque clé est expliquée dans le [guide du fichier de configuration](/fr/getting-started/config-file).
  </Step>

  <Step title="Téléverser le projet">
    Depuis le dossier du projet, exécutez :

    ```bash theme={"system"}
    squarecloud upload
    ```

    La CLI compresse le dossier, en laissant de côté ce que liste [`squarecloud.ignore`](/fr/getting-started/squarecloud-ignore) (ainsi que `node_modules`, `.git` et les fichiers de verrouillage par défaut), et crée une nouvelle application :

    ```bash Sortie theme={"system"}
    Compressing the current directory.
    Uploading the zip file to Square Cloud.

    ✓ Application uploaded to Square Cloud!
      Open it at https://squarecloud.app/dashboard/applications/<appID>
    ```

    Elle écrit aussi l'ID de la nouvelle application dans votre fichier de configuration, pour que les commandes suivantes sachent de quelle app il s'agit :

    ```systemd squarecloud.app theme={"system"}
    MAIN=index.js
    MEMORY=512
    VERSION=recommended
    DISPLAY_NAME=My first app
    ID=<appID>
    ```
  </Step>

  <Step title="Vérifier qu'elle tourne">
    ```bash theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    Aucun ID nécessaire : les deux commandes lisent la ligne `ID=`. Pour suivre la sortie en direct, exécutez `squarecloud app realtime` et appuyez sur `Ctrl+C` pour arrêter.
  </Step>

  <Step title="Publier une modification">
    Modifiez votre code, puis envoyez le dossier à la même application et redémarrez-la :

    ```bash theme={"system"}
    squarecloud commit --restart
    ```

    `upload` crée une nouvelle application à chaque fois ; `commit` met à jour celle que vous avez déjà et conserve son ID, son domaine et ses paramètres.
  </Step>
</Steps>

## Comment la CLI trouve votre application

Les commandes qui agissent sur une application affichent `[appID]` dans leur utilisation : l'ID est facultatif. La CLI choisit l'application dans cet ordre :

1. **L'ID que vous passez.** C'est le premier argument, ou `--app <appID>` pour les commandes dont les arguments sont autre chose : `app env set`, `remove` et `replace`, toutes les commandes `app file`, `app deploy webhook`, `app deploy github link` et `unlink`, et `app network domain`.
2. **La ligne `ID=`** du fichier `squarecloud.app` du dossier courant (ou `squarecloud.config` ; si les deux existent, `squarecloud.app` l'emporte).
3. **Un sélecteur** listant vos applications, lorsque la CLI s'exécute dans un terminal. Utilisez les flèches et `Entrée` ; `Échap` annule.

Quelques commandes fonctionnent différemment :

* `commit` n'ouvre jamais le sélecteur. Sans argument ni ligne `ID=`, elle s'arrête avec le code de sortie 1 et en demande un.
* `app snapshot restore` prend toujours l'ID de l'application comme premier argument.
* Les bases de données n'ont pas de fichier de configuration : les commandes `db` prennent l'ID de la base de données ou ouvrent un sélecteur de vos bases.
* Les commandes `workspace` qui agissent sur un workspace prennent toujours son ID.

Pour trouver un ID, exécutez [`squarecloud app list`](/fr/cli-reference/apps#squarecloud-app-list). Dans les scripts et la CI, passez toujours l'ID ou conservez la ligne `ID=` : le sélecteur a besoin d'un terminal interactif.

### Où l'ID est enregistré

`upload` n'écrit `ID=<appID>` que lorsque le dossier contient déjà un fichier de configuration, dont le téléversement a de toute façon besoin. Elle modifie cette seule ligne et conserve vos autres clés et commentaires tels quels. Square Cloud ignore cette ligne à la lecture du fichier, elle peut donc rester dans le zip.

Relancer `upload` depuis le même dossier crée une autre application et fait pointer la ligne `ID=` vers elle. Pour mettre à jour l'application existante, utilisez `commit`. Pour travailler avec une autre application depuis ce dossier, modifiez ou supprimez la ligne.

## Prochaines étapes

<CardGroup cols={2}>
  <Card title="Upload et commit" icon="upload" href="/fr/cli-reference/deploy">
    Toutes les options de upload, commit et zip, et ce qui entre dans le zip.
  </Card>

  <Card title="Variables d'environnement" icon="key" href="/fr/cli-reference/environment-variables">
    Définissez des variables depuis le terminal ou chargez-les depuis un fichier .env.
  </Card>

  <Card title="Déploiements GitHub" icon="github" href="/fr/cli-reference/github-deploys">
    Déployez à chaque push grâce à la GitHub App de Square Cloud.
  </Card>

  <Card title="Options globales et CI" icon="terminal" href="/fr/cli-reference/global-flags-and-ci">
    Sortie JSON, codes de sortie et exécution de la CLI dans des pipelines.
  </Card>
</CardGroup>
