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

# CLI-Referenz

> Führen Sie ipmideck von der Kommandozeile aus: Unterbefehle, Bind-Flags, die Voreinstellung 0.0.0.0:3000, selbstsigniertes HTTPS, Demo-Modus und Exit-Codes.

ipmideck liefert einen einzigen Konsolenbefehl, `ipmideck`, der den Server startet, das Admin-Passwort
zurücksetzt oder ein selbstsigniertes Zertifikat erzeugt. `ipmilink` ist ein rückwärtskompatibler
Alias für denselben Befehl, jeder Unterbefehl und jedes Flag unten funktioniert unter beiden
Namen identisch.

<Note>
  Das CLI gilt nur, wenn Sie ipmideck direkt ausführen (pip-Installation oder ein Source-Checkout). Das
  Docker-Image startet `uvicorn backend.main:app` direkt und ruft das CLI nie auf, sodass keines
  dieser Flags, die Bind-Priorität oder der Single-Instance-Schutz für den Container gelten. Der Bind des Containers wird durch seinen eigenen Startbefehl gesetzt. Siehe [Installation](/de/installation).
</Note>

## Den Server starten

`start` ist der primäre Serve-Befehl. Ein bloßer Aufruf ohne Unterbefehl verhält sich identisch,
diese sind also gleichwertig:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start
  # or, with no subcommand:
  ipmideck
  ```

  ```cmd cmd theme={null}
  ipmideck start
  :: or, with no subcommand:
  ipmideck
  ```

  ```bash bash theme={null}
  ipmideck start
  # or, with no subcommand:
  ipmideck
  ```
</CodeGroup>

Ohne Flags bindet ipmideck standardmäßig an **`0.0.0.0:3000`**, erreichbar auf jeder Schnittstelle,
auf Port `3000`. Öffnen Sie `http://<your-ip>:3000`, sobald er läuft.

Überschreiben Sie den Bind mit `--host` und `--port`:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```

  ```cmd cmd theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```

  ```bash bash theme={null}
  ipmideck start --host 127.0.0.1 --port 8080
  ```
</CodeGroup>

## Unterbefehle

| Unterbefehl      | Was er tut                                                                                                        |
| ---------------- | ----------------------------------------------------------------------------------------------------------------- |
| `start`          | Startet den Server (Standard). Ein bloßes `ipmideck` ohne Unterbefehl bedient ebenfalls.                          |
| `serve`          | Veralteter Alias von `start`. Verhält sich identisch; beibehalten, damit bestehende Skripte weiter funktionieren. |
| `reset-password` | Erstellt oder aktualisiert interaktiv die Admin-Anmeldung und beendet sich dann, ohne zu bedienen.                |

<Note>
  `serve` ist ein veralteter Alias von `start`, bevorzugen Sie `start` (oder ein bloßes `ipmideck`) in
  neuen Skripten.
</Note>

## Flags

Diese Top-Level-Flags gelten für den Serve-Pfad. `--demo` und `--config` werden vor jeder
Unterbefehl-Verzweigung gelesen, sodass sie auch `reset-password` und `--gen-cert` betreffen.

| Flag              | Wirkung                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `--host <host>`   | Bind-Host. Standard kommt aus `config.yaml` oder `0.0.0.0`. Ein explizites Flag gewinnt über die Konfiguration.                |
| `--port <port>`   | Bind-Port. Standard kommt aus `config.yaml` oder `3000`. Ein explizites Flag gewinnt über die Konfiguration.                   |
| `--demo`          | Im Demo-Modus mit simulierten Daten ausführen.                                                                                 |
| `--config <path>` | Pfad zu einer zu ladenden `config.yaml`.                                                                                       |
| `--reload`        | Auto-Reload für die Entwicklung aktivieren.                                                                                    |
| `--gen-cert`      | Erzeugt ein selbstsigniertes Zertifikat + Schlüssel unter `data/certs/`, schreibt die Pfade in `config.yaml` und beendet sich. |

## Bind-Priorität

Der Host und Port, an den ipmideck tatsächlich bindet, werden in dieser Reihenfolge aufgelöst, höchste Priorität zuerst:

1. Ein explizites `--host`- / `--port`-Flag auf der Kommandozeile.
2. Die Konfiguration, die selbst die Umgebungsvariable (`IPMIDECK_SERVER_HOST` / `IPMIDECK_SERVER_PORT`)
   über `config.yaml` über die eingebaute Voreinstellung auflöst.
3. Die fest codierte Rückfallebene **`0.0.0.0:3000`**, verwendet, falls das frühe Laden der Konfiguration fehlschlägt.

Mit anderen Worten: Ein Wert, den Sie in `config.yaml` persistieren, wird **von einer `IPMIDECK_`-
Umgebungsvariablen oder einem `--host`- / `--port`-Flag** beim nächsten Start überschrieben, Umgebung und
CLI gewinnen immer. Wenn `config.yaml` fehlerhaft ist, gibt ipmideck eine Warnung an stderr aus und fällt
auf `0.0.0.0:3000` zurück.

<Note>
  Die Umgebungsvariablen `IPMIDECK_SERVER_HOST` und `IPMIDECK_SERVER_PORT` verwenden das
  Präfix `IPMIDECK_`. Siehe [Konfiguration](/de/configuration) für die vollständige Liste der Überschreibungen.
</Note>

## HTTPS mit --gen-cert

`--gen-cert` erzeugt ein selbstsigniertes Zertifikat und einen Schlüssel und beendet sich dann. Es
startet den Server **nicht** und schaltet HTTPS **nicht** von selbst ein:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck --gen-cert
  ```

  ```cmd cmd theme={null}
  ipmideck --gen-cert
  ```

  ```bash bash theme={null}
  ipmideck --gen-cert
  ```
</CodeGroup>

Es schreibt ein Zertifikat-/Schlüssel-Paar unter `data/certs/`, trägt deren Pfade in den `server`-Block von
`config.yaml` ein und gibt drei Zeilen aus:

```text theme={null}
Generated: <path-to-cert>
Generated: <path-to-key>
Wrote cert_file/key_file to config.yaml. Set server.https=true and restart to serve over HTTPS.
```

Um tatsächlich über HTTPS zu bedienen, setzen Sie `server.https: true` in `config.yaml` und starten ipmideck neu. HTTPS wird nie automatisch aktiviert.

## Demo-Modus

`--demo` führt ipmideck gegen simulierte Hardware statt echter BMCs aus, nützlich, um das Dashboard
ohne verbundene Server zu testen:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --demo
  ```

  ```cmd cmd theme={null}
  ipmideck start --demo
  ```

  ```bash bash theme={null}
  ipmideck start --demo
  ```
</CodeGroup>

Der Demo-Modus wird sehr früh gesetzt, vor jeder Unterbefehl-Verzweigung, sodass die gesamte App (Konfiguration und der laufende Server) ihn sieht.

## Das Admin-Passwort zurücksetzen

`reset-password` erstellt oder aktualisiert interaktiv die Admin-Anmeldung und beendet sich dann, ohne
jemals den Server zu starten:

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck reset-password
  ```

  ```cmd cmd theme={null}
  ipmideck reset-password
  ```

  ```bash bash theme={null}
  ipmideck reset-password
  ```
</CodeGroup>

Es fragt nach `Username:` und dann `New password:` (verdeckte Eingabe). Wenn ein Konto bereits
existiert, aktualisiert es das Passwort dieses Benutzers und gibt `Password updated for <username>` aus; andernfalls
erstellt es den Benutzer und gibt `User <username> created` aus.

## Auto-Reload für die Entwicklung

`--reload` ist ein schneller Pfad nur für die Entwicklung: Es übergibt an uvicorns eigenen
auto-neuladenden Supervisor und kehrt zurück. Es **überspringt absichtlich den Single-Instance-Port-Schutz**, der unten
beschrieben ist, weil der Reloader seinen eigenen Supervisor-Prozess ausführt.

<CodeGroup>
  ```powershell PowerShell theme={null}
  ipmideck start --reload
  ```

  ```cmd cmd theme={null}
  ipmideck start --reload
  ```

  ```bash bash theme={null}
  ipmideck start --reload
  ```
</CodeGroup>

<Warning>
  `--reload` ist nur für die Entwicklung. Da es den Single-Instance-Schutz umgeht, führen Sie es auf einem
  Host aus, auf dem keine andere ipmideck-Instanz bereits an denselben Port gebunden ist.
</Warning>

## Exit-Codes

| Exit-Code | Wann                                                                                                                                                                                                                                                                          |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0`       | Sauberes Herunterfahren bei `Ctrl+C` / SIGTERM, der Server stoppt geordnet, kein Traceback.                                                                                                                                                                                   |
| `1`       | Der Port ist auf dem Ziel-Host bereits in Verwendung (eine andere Instanz läuft möglicherweise), **oder** der Bind schlägt fehl, weil die Adresse nicht verfügbar oder nicht erlaubt ist (zum Beispiel ein privilegierter Port oder eine Schnittstelle, die nicht existiert). |

Auf dem Serve-Pfad (nicht `--reload`) führt ipmideck vor dem Binden einen Single-Instance-Schutz aus. Wenn der
Port bereits in Verwendung ist, gibt es einen Fehler an stderr aus und beendet sich mit `1`. Wenn der Bind fehlschlägt, weil die
Adresse nicht verfügbar oder nicht erlaubt ist, gibt es einen eigenen Fehler aus und beendet sich ebenfalls mit `1`.

## Nächste Schritte

* [Konfiguration](/de/configuration): `config.yaml`-Schlüssel und die `IPMIDECK_`-Umgebungs-Überschreibungen.
* [Installation](/de/installation): ipmideck mit Docker oder pip installieren.
* [Fehlerbehebung](/de/troubleshooting): Verbindungs-, Port- und IPMI-Fehler.
