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

# Self-hosting

> Plane und betreibe ein selbst gehostetes SimpleCloud-Setup mit eigenem Controller, Serverhosts und Infrastruktur-Diensten.

<Warning>
  Self-hosting ist ein fortgeschrittenes Setup. Beginne mit der normalen [Installation](/docs/de/manual/setup/installation), wenn du nicht ausdrücklich Controller und Backend-Dienste selbst betreiben musst.
</Warning>

## Was du betreibst

| Komponente        | Erforderlich | Zweck                                                                                   |
| ----------------- | ------------ | --------------------------------------------------------------------------------------- |
| Controller        | Ja           | Speichert Netzwerkzustand, gleicht gewünschte Serveranzahl ab und stellt die API bereit |
| Serverhost        | Ja           | Führt Minecraft-Serverprozesse auf jeder Maschine aus                                   |
| PostgreSQL        | Ja           | Speichert persistenten Controller-Zustand                                               |
| NATS              | Ja           | Überträgt Controller-zu-Serverhost-Nachrichten und Events                               |
| Valkey oder Redis | Optional     | Cached Metriken und kurzlebige Daten                                                    |
| ClickHouse        | Optional     | Speichert Logs und Metriken, wenn aktiviert                                             |

Für die Architektur der Komponenten siehe die [Architektur-Übersicht](/docs/de/manual/introduction/architecture/overview).

## Vor dem Start

Stelle sicher, dass du Folgendes hast:

* Mindestens eine Maschine für den Controller und eine oder mehrere Maschinen für Serverhosts
* Stabile Netzwerkverbindung zwischen Controller, NATS, PostgreSQL und jedem Serverhost
* Einen Backup-Plan für PostgreSQL
* Monitoring für Controller, NATS, PostgreSQL, Festplattennutzung und Serverhost-Speicher
* Einen Plan zum Synchronisieren von Templates und Workflows zwischen Serverhosts

<Tip>
  Halte das erste selbst gehostete Setup klein. Teste zuerst einen Controller, eine PostgreSQL-Datenbank, eine NATS-Instanz und einen Serverhost, bevor du Hochverfügbarkeit oder weitere Hosts hinzufügst.
</Tip>

## Empfohlener Ablauf

<Steps>
  <Step title="Architektur verstehen">
    Lies die Seiten [Controller](/docs/de/manual/introduction/architecture/controller), [Serverhost](/docs/de/manual/introduction/architecture/serverhost) und [CLI](/docs/de/manual/introduction/architecture/cli), damit du weißt, welche Komponente welche Aufgabe übernimmt.
  </Step>

  <Step title="Infrastruktur-Dienste vorbereiten">
    Stelle zuerst PostgreSQL und NATS bereit. Der Controller braucht beides, bevor er Server abgleichen oder API-Anfragen beantworten kann.

    <Check>
      Der Controller-Host sollte PostgreSQL und NATS erreichen können, bevor du SimpleCloud-Komponenten startest.
    </Check>
  </Step>

  <Step title="Controller starten">
    Konfiguriere den Controller mit deinen PostgreSQL- und NATS-Endpunkten, starte ihn und prüfe die Logs.

    ```bash theme={null}
    sc status
    sc logs controller
    ```
  </Step>

  <Step title="Serverhosts verbinden">
    Installiere SimpleCloud auf jeder Maschine, die Minecraft-Server ausführen soll, und verbinde jeden Host mit deinem selbst gehosteten Controller.

    ```bash theme={null}
    sc status serverhost
    sc logs serverhost
    ```
  </Step>

  <Step title="Geteilte Dateien synchronisieren">
    Wenn du mehr als einen Serverhost betreibst, synchronisiere Templates, Workflows und Optionen. Siehe [Multi-root Setup](/docs/de/manual/setup/multi-root).
  </Step>

  <Step title="Testgruppe erstellen">
    Erstelle eine kleine Server-Gruppe mit **Minimum Servers** auf `1` und prüfe, ob der Controller sie auf einem Serverhost startet.

    <Check>
      Ein erfolgreicher Test erreicht `AVAILABLE` und erscheint im Dashboard oder in der `sc`-Ausgabe.
    </Check>
  </Step>
</Steps>

## Produktions-Checkliste

<AccordionGroup>
  <Accordion title="Backups">
    Sichere PostgreSQL regelmäßig und teste Wiederherstellungen. Die Datenbank enthält den persistenten Zustand des Controllers.
  </Accordion>

  <Accordion title="Hochverfügbarkeit">
    Wenn du mehrere Controller-Instanzen betreibst, führt nur der gewählte Leader die Reconciliation aus. Alle Instanzen müssen dieselben PostgreSQL- und NATS-Dienste erreichen können.
  </Accordion>

  <Accordion title="Netzwerk">
    Erlaube Controller-zu-Serverhost-Verkehr, NATS-Verbindungen, PostgreSQL-Verbindungen und spielerseitige Minecraft- oder Proxy-Ports. Halte interne Dienste möglichst privat.
  </Accordion>

  <Accordion title="Secrets">
    Synchronisiere das `secrets/`-Verzeichnis nicht zwischen Serverhosts. Jeder Serverhost braucht seine eigene Identität. Siehe [Multi-root Setup](/docs/de/manual/setup/multi-root).
  </Accordion>

  <Accordion title="Updates">
    Aktualisiere zuerst eine Umgebung, prüfe Serverstart und Shutdown, und rolle Änderungen danach auf weitere Hosts aus.
  </Accordion>
</AccordionGroup>

## Verwandte Seiten

* [Installation](/docs/de/manual/setup/installation) für den normalen gehosteten Setup-Ablauf
* [Multi-root Setup](/docs/de/manual/setup/multi-root) für mehrere Serverhosts und Dateisynchronisierung
* [Controller-Architektur](/docs/de/manual/introduction/architecture/controller) für Reconciliation und Hochverfügbarkeit
* [Serverhost-Architektur](/docs/de/manual/introduction/architecture/serverhost) für Server-Lifecycle und Runner
