> ## 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.

# Erste Anwendung mit der CLI deployen

> Installiere die Square Cloud CLI, melde dich an, deploye ein Projekt mit squarecloud upload und sende Änderungen mit squarecloud commit.

Diese Anleitung bringt ein Projekt von deinem Rechner zu einer laufenden Anwendung auf Square Cloud und zeigt anschließend, wie du eine Änderung auslieferst. Das dauert nur wenige Minuten.

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

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

    Prüfe mit `squarecloud --version`, ob sie funktioniert. Wird der Befehl nicht gefunden, lies [Installation](/de/cli-reference/installation#installation-überprüfen).
  </Step>

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

    Die CLI zeigt einen kurzen Code an und öffnet die Autorisierungsseite in deinem Browser. Gib den Code dort ein und bestätige. Die Seite [Authentifizierung](/de/cli-reference/authentication) behandelt API-Schlüssel und CI.
  </Step>

  <Step title="Konfigurationsdatei anlegen">
    Lege im Stammverzeichnis deines Projekts eine Datei `squarecloud.app` an. Sie teilt Square Cloud mit, welche Datei ausgeführt wird, wie viel Arbeitsspeicher reserviert wird und welche Runtime-Version zum Einsatz kommt:

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

    Für eine Website ergänzt du `SUBDOMAIN=<name>`, um sie unter `<name>.squareweb.app` zu veröffentlichen. Jeder Schlüssel wird im [Leitfaden zur Konfigurationsdatei](/de/getting-started/config-file) erklärt.
  </Step>

  <Step title="Projekt hochladen">
    Führe im Projektordner Folgendes aus:

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

    Die CLI zippt den Ordner, lässt dabei weg, was in [`squarecloud.ignore`](/de/getting-started/squarecloud-ignore) aufgeführt ist (sowie standardmäßig `node_modules`, `.git` und Lock-Dateien), und erstellt eine neue Anwendung:

    ```bash Ausgabe 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>
    ```

    Außerdem schreibt sie die ID der neuen Anwendung in deine Konfigurationsdatei, damit die folgenden Befehle wissen, welche Anwendung gemeint ist:

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

  <Step title="Prüfen, ob sie läuft">
    ```bash theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    Eine ID ist nicht nötig: Beide Befehle lesen die Zeile `ID=`. Um die Ausgabe live zu verfolgen, führe `squarecloud app realtime` aus und beende mit `Ctrl+C`.
  </Step>

  <Step title="Eine Änderung ausliefern">
    Bearbeite deinen Code, sende den Ordner dann an dieselbe Anwendung und starte sie neu:

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

    `upload` erstellt jedes Mal eine neue Anwendung; `commit` aktualisiert die vorhandene und behält ihre ID, Domain und Einstellungen bei.
  </Step>
</Steps>

## Wie die CLI deine Anwendung findet

Befehle, die auf eine einzelne Anwendung wirken, zeigen in ihrer Verwendung `[appID]`: Die ID ist optional. Die CLI wählt die Anwendung in dieser Reihenfolge:

1. **Die ID, die du übergibst.** Sie ist das erste Argument oder `--app <appID>` bei Befehlen, deren Argumente etwas anderes sind: `app env set`, `remove` und `replace`, alle `app file`-Befehle, `app deploy webhook`, `app deploy github link` und `unlink` sowie `app network domain`.
2. **Die Zeile `ID=`** der Datei `squarecloud.app` im aktuellen Ordner (oder `squarecloud.config`; existieren beide, hat `squarecloud.app` Vorrang).
3. **Eine Auswahlliste** deiner Anwendungen, wenn die CLI in einem Terminal läuft. Navigiere mit den Pfeiltasten und `Enter`; `Esc` bricht ab.

Einige Befehle verhalten sich anders:

* `commit` öffnet nie die Auswahlliste. Ohne Argument und ohne `ID=`-Zeile bricht der Befehl mit Exit-Code 1 ab und fordert eine ID an.
* `app snapshot restore` erwartet die Anwendungs-ID immer als erstes Argument.
* Datenbanken haben keine Konfigurationsdatei: `db`-Befehle nehmen die Datenbank-ID entgegen oder öffnen eine Auswahlliste deiner Datenbanken.
* `workspace`-Befehle, die auf einen Workspace wirken, erwarten immer dessen ID.

Eine ID findest du mit [`squarecloud app list`](/de/cli-reference/apps#squarecloud-app-list). Übergib in Skripten und in der CI immer die ID oder behalte die Zeile `ID=` bei: Die Auswahlliste benötigt ein interaktives Terminal.

### Wo die Anwendungs-ID gespeichert wird

`upload` schreibt `ID=<appID>` nur, wenn der Ordner bereits eine Konfigurationsdatei hat, die der Upload ohnehin benötigt. Dabei ändert der Befehl nur diese eine Zeile und lässt deine übrigen Schlüssel und Kommentare unverändert. Square Cloud ignoriert die Zeile beim Lesen der Datei, sodass sie im Zip bleiben kann.

Wenn du `upload` im selben Ordner erneut ausführst, entsteht eine weitere Anwendung, und die Zeile `ID=` zeigt danach auf diese. Um deine bestehende Anwendung zu aktualisieren, verwende `commit`. Um aus diesem Ordner mit einer anderen Anwendung zu arbeiten, bearbeite oder lösche die Zeile.

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Upload und Commit" icon="upload" href="/de/cli-reference/deploy">
    Alle Flags von upload, commit und zip und was im Zip landet.
  </Card>

  <Card title="Umgebungsvariablen" icon="key" href="/de/cli-reference/environment-variables">
    Variablen im Terminal setzen oder aus einer .env-Datei laden.
  </Card>

  <Card title="GitHub-Deploys" icon="github" href="/de/cli-reference/github-deploys">
    Bei jedem Push über die Square Cloud GitHub App deployen.
  </Card>

  <Card title="Globale Flags und CI" icon="terminal" href="/de/cli-reference/global-flags-and-ci">
    JSON-Ausgabe, Exit-Codes und die CLI in Pipelines.
  </Card>
</CardGroup>
