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

# Multi Root Setup

> SimpleCloud über mehrere Maschinen mit verteilten Serverhosts betreiben

Eine Multi-Root-Einrichtung ermöglicht es dir, Minecraft-Server über mehrere physische oder virtuelle Maschinen zu betreiben, die alle von einem einzigen SimpleCloud-Controller verwaltet werden. Diese Anleitung behandelt das Hinzufügen von Serverhosts und die Synchronisierung von Dateien zwischen ihnen.

## Voraussetzungen

* Ein bestehendes SimpleCloud-Netzwerk mit mindestens einem Serverhost
* Zusätzliche Maschinen, auf denen Serverhosts ausgeführt werden sollen
* Root- oder sudo-Zugriff auf jeder Maschine

## Teil 1: Serverhosts hinzufügen

### SimpleCloud auf jeder Maschine installieren

Installiere auf jeder Maschine, die einen Serverhost ausführen soll, die SimpleCloud CLI:

```bash theme={null}
/bin/bash -c "$(curl -fsSL https://get.simplecloud.app)"
```

### Serverhost zum Netzwerk hinzufügen

Verwende die CLI, um einen neuen Serverhost zu deinem bestehenden Netzwerk hinzuzufügen:

```bash theme={null}
sc serverhost add
```

Die CLI wird dich auffordern:

1. **Wähle dein Netzwerk** - Wähle das Netzwerk, das dein Controller verwaltet
2. **Authentifizierung** - Melde dich mit deinem SimpleCloud-Konto an
3. **Konfiguriere den Serverhost** - Lege Portbereiche und andere Optionen fest

<Tip>
  Jeder Serverhost benötigt eine eindeutige Identität. Die CLI generiert automatisch
  Anmeldedaten und speichert sie im Verzeichnis `secrets/`.
</Tip>

### Verbindung überprüfen

Überprüfe nach dem Hinzufügen, ob die lokale Serverhost-Komponente läuft:

```bash theme={null}
sc status serverhost
```

Der neue Serverhost sollte außerdem im Dashboard erscheinen, sobald er mit dem Controller verbunden ist.

## Teil 2: Dateien synchronisieren

Bei mehreren Serverhosts musst du Templates und Workflows synchron halten. Wir empfehlen die Verwendung von Syncthing für die automatische Dateisynchronisierung.

### Was synchronisiert werden soll

| Verzeichnis  | Zweck                              | Sync?                     |
| ------------ | ---------------------------------- | ------------------------- |
| `templates/` | Server-Templates, Plugins, Configs | Ja                        |
| `workflows/` | Workflow-Definitionen              | Ja                        |
| `options/`   | Konfigurator-Einstellungen         | Ja                        |
| `secrets/`   | Netzwerk-Anmeldedaten              | Nein - eindeutig pro Host |
| `running/`   | Aktive Server-Instanzen            | Nein - nur lokal          |
| `logs/`      | Serverhost-Logs                    | Nein - nur lokal          |

<Warning>
  Synchronisiere niemals das Verzeichnis `secrets/`. Jeder Serverhost benötigt seine
  eigenen eindeutigen Identitäts-Anmeldedaten.
</Warning>

### Dein SimpleCloud-Verzeichnis finden

Der Installationspfad ist benutzerkonfigurierbar. Dein Serverhost-Verzeichnis enthält:

<Tree>
  <Tree.Folder name="simplecloud" defaultOpen>
    <Tree.Folder name="templates" defaultOpen>
      <Tree.File name="Dies synchronisieren" />
    </Tree.Folder>

    <Tree.Folder name="workflows" defaultOpen>
      <Tree.File name="Dies synchronisieren" />
    </Tree.Folder>

    <Tree.Folder name="options">
      <Tree.File name="Dies synchronisieren" />
    </Tree.Folder>

    <Tree.Folder name="secrets">
      <Tree.File name="NICHT synchronisieren" />
    </Tree.Folder>

    <Tree.Folder name="running" />
  </Tree.Folder>
</Tree>

### Sync auf dem primären Serverhost initialisieren

Führe dies auf dem Serverhost aus, der als primärer Sync-Host dienen soll:

```bash theme={null}
sc sync init --name serverhost-1
```

Die CLI bereitet die verwalteten Verzeichnisse vor, ignoriert `templates/cache/`, konfiguriert Syncthing für `templates/`, `workflows/` und `options/`, speichert die Ordner-IDs in `.simplecloud-sync.json` und gibt einen `sc sync join ...`-Befehl für den nächsten Serverhost aus.

<Note>
  Wenn du SimpleCloud als root ausführst, füge `--as-root` hinzu, damit die CLI
  `syncthing@root.service` verwendet.
</Note>

### Von einem weiteren Serverhost beitreten

Führe auf dem neuen Serverhost den `sc sync join ...`-Befehl aus, den `sc sync init` oder `sc sync add` ausgegeben hat.

```bash theme={null}
sc sync join \
  --primary-device-id PRIMARY_DEVICE_ID \
  --primary-name serverhost-1 \
  --templates-id TEMPLATES_FOLDER_ID \
  --workflows-id WORKFLOWS_FOLDER_ID \
  --options-id OPTIONS_FOLDER_ID \
  --name serverhost-2
```

Nach Abschluss gibt der Join-Befehl einen `sc sync approve ...`-Befehl aus.

### Beitretenden Serverhost genehmigen

Führe den ausgegebenen Approve-Befehl auf dem primären Serverhost aus:

```bash theme={null}
sc sync approve --device-id JOINING_DEVICE_ID --name serverhost-2
```

Für weitere Serverhosts erzeugst du später auf dem primären Serverhost einen neuen Join-Befehl:

```bash theme={null}
sc sync add --join-name serverhost-3
```

Prüfe den Synchronisierungsstatus auf einem beliebigen Host:

```bash theme={null}
sc sync status
```

### Synchronisierung überprüfen

Teste, ob die Synchronisierung funktioniert:

```bash theme={null}
# Auf Serverhost 1
echo "sync test" > $CLOUD_DIR/templates/sync-test.txt

# Warte ein paar Sekunden, dann prüfe auf Serverhost 2
cat $CLOUD_DIR/templates/sync-test.txt

# Aufräumen
rm $CLOUD_DIR/templates/sync-test.txt
```

## Best Practices

### Server-Verteilung

Konfiguriere Gruppen, um festzulegen, welche Serverhosts sie ausführen können:

| Strategie         | Anwendungsfall                                            |
| ----------------- | --------------------------------------------------------- |
| Beliebiger Host   | Lastverteilung über alle Maschinen                        |
| Spezifische Hosts | Dedizierte Hardware für ressourcenintensive Server        |
| Geografisch       | Spieler verbinden sich mit dem nächstgelegenen Serverhost |

### Dateisynchronisierungs-Einstellungen

| Einstellung               | Empfohlen          | Grund                                   |
| ------------------------- | ------------------ | --------------------------------------- |
| Ordnertyp                 | Senden & Empfangen | Erlaubt Änderungen von jedem Serverhost |
| Dateiversionierung        | Einfach            | Behält Backup-Kopien                    |
| Berechtigungen ignorieren | Aktiviert          | Vermeidet Berechtigungskonflikte        |

### Cache von der Synchronisierung ausschließen

Der Ordner `templates/cache/` enthält lokal generierte Dateien. Erwäge, ihn von der Synchronisierung auszuschließen, um unnötige Übertragungen zu vermeiden.

## Fehlerbehebung

<AccordionGroup>
  <Accordion title="Serverhost erscheint nicht in der Liste">
    **Symptom:** Nach `sc serverhost add` wird der Host nicht angezeigt.

    **Lösungen:**

    1. Überprüfe, ob der Serverhost läuft: `sc status serverhost`
    2. Überprüfe die Netzwerkverbindung zum Controller
    3. Überprüfe, ob Anmeldedaten im Verzeichnis `secrets/` vorhanden sind
    4. Überprüfe die Serverhost-Logs: `sc logs serverhost`
  </Accordion>

  <Accordion title="Syncthing-Geräte verbinden sich nicht">
    **Symptom:** Geräte werden als "Getrennt" angezeigt.

    **Lösungen:**

    1. Stelle sicher, dass die Firewall Port 22000 TCP und UDP erlaubt
    2. Führe `sc sync status` auf jedem Host aus
    3. Prüfe, ob der `sc sync approve ...`-Befehl auf dem primären Host ausgeführt wurde
    4. Wenn du als root arbeitest, verwende `--as-root` bei jedem `sc sync`-Befehl
  </Accordion>

  <Accordion title="Dateien werden nicht zwischen Hosts synchronisiert">
    **Symptom:** Template-Änderungen erscheinen nicht auf anderen Serverhosts.

    **Lösungen:**

    1. Führe `sc sync status` aus und prüfe, ob `templates`, `workflows` und `options` konfiguriert sind
    2. Prüfe, ob die Ordner-IDs in `.simplecloud-sync.json` auf allen Hosts übereinstimmen
    3. Bestätige, dass der beitretende Host mit `sc sync approve` genehmigt wurde
    4. Prüfe die von `sc sync status` gemeldeten Syncthing-Verbindungsfehler
  </Accordion>

  <Accordion title="Server starten auf dem falschen Host">
    **Symptom:** Server starten auf unerwarteten Serverhosts.

    **Lösungen:**

    1. Überprüfe die Gruppenkonfiguration für Host-Beschränkungen
    2. Überprüfe, ob alle Serverhosts die erforderlichen Templates synchronisiert haben
    3. Überprüfe die Serverhost-Verfügbarkeit im Dashboard
  </Accordion>

  <Accordion title="Konfliktdateien erscheinen">
    **Symptom:** Dateien mit `.sync-conflict` im Namen erscheinen.

    **Ursache:** Dieselbe Datei wurde gleichzeitig auf mehreren Hosts geändert.

    **Lösungen:**

    1. Überprüfe Konfliktdateien und wähle die richtige Version
    2. Vermeide es, dieselbe Datei gleichzeitig auf mehreren Hosts zu bearbeiten
    3. Bestimme einen Host als "primär" für die Template-Bearbeitung
  </Accordion>
</AccordionGroup>

## Verwandte Themen

* [Templates](/de/manual/setup/templates) - Template-Hierarchie und -Verwaltung
* [Workflows](/de/manual/configuration/workflows) - Workflow-Konfiguration
* [Serverhost](/de/manual/introduction/architecture/serverhost) - Serverhost-Architektur
