Zum Hauptinhalt springen
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:
/bin/bash -c "$(curl -fsSL get.simplecloud.app)"

Serverhost zum Netzwerk hinzufügen

Verwende die CLI, um einen neuen Serverhost zu deinem bestehenden Netzwerk hinzuzufügen:
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
Jeder Serverhost benötigt eine eindeutige Identität. Die CLI generiert automatisch Anmeldedaten und speichert sie im Verzeichnis secrets/.

Verbindung überprüfen

Überprüfe nach dem Hinzufügen, ob der Serverhost verbunden ist:
sc serverhost list
Du solltest alle Serverhosts in deinem Netzwerk mit ihrem Status sehen.

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

VerzeichnisZweckSync?
templates/Server-Templates, Plugins, ConfigsJa
workflows/Workflow-DefinitionenJa
options/Konfigurator-EinstellungenJa
secrets/Netzwerk-AnmeldedatenNein - eindeutig pro Host
running/Aktive Server-InstanzenNein - nur lokal
logs/Serverhost-LogsNein - nur lokal
Synchronisiere niemals das Verzeichnis secrets/. Jeder Serverhost benötigt seine eigenen eindeutigen Identitäts-Anmeldedaten.

Dein SimpleCloud-Verzeichnis finden

Der Installationspfad ist benutzerkonfigurierbar. Dein Serverhost-Verzeichnis enthält:
simplecloud
templates
Dies synchronisieren
workflows
Dies synchronisieren
running

Syncthing installieren

Auf jeder Serverhost-Maschine:
sudo apt update
sudo apt install syncthing jq
Aktiviere den Syncthing-Dienst:
systemctl --user enable --now syncthing.service
Wenn du als root arbeitest, verwende stattdessen systemctl enable --now syncthing@root.service.

Geräte-IDs abrufen

Jede Syncthing-Instanz hat eine eindeutige Geräte-ID:
DEVICE_ID=$(syncthing cli show system | jq -r .myID)
echo "$DEVICE_ID"
Speichere diese ID - du wirst sie beim Konfigurieren anderer Serverhosts benötigen. Beispielausgabe:
U6NJVMO-CC3K7WZ-TDLCCF6-SAGNJC4-S2CFP4J-QIF6Z7Z-WI7VO32-4QAA4AP

Ordner-IDs generieren

Erstelle eindeutige Ordner-IDs für deine Sync-Ordner. Diese müssen auf allen Serverhosts identisch sein:
# Eindeutige IDs generieren (einmal ausführen, auf allen Hosts verwenden)
TEMPLATES_ID=$(dd if=/dev/random bs=1 count=1024 2>/dev/null | sha1sum | cut -d' ' -f1)
WORKFLOWS_ID=$(dd if=/dev/random bs=1 count=1024 2>/dev/null | sha1sum | cut -d' ' -f1)

echo "Templates-Ordner-ID: $TEMPLATES_ID"
echo "Workflows-Ordner-ID: $WORKFLOWS_ID"
Speichere diese Ordner-IDs. Du wirst dieselben IDs auf jedem Serverhost verwenden.

Syncthing konfigurieren

Führe diese Schritte auf jedem Serverhost aus. Ersetze die Platzhalterwerte durch deine tatsächlichen Geräte-IDs und Pfade. Schritt 1: Remote-Geräte hinzufügen Auf Serverhost 1, füge Serverhost 2 hinzu:
syncthing cli config devices add \
    --device-id "DEVICE-ID-OF-SERVERHOST-2" \
    --name "serverhost-2"
Auf Serverhost 2, füge Serverhost 1 hinzu:
syncthing cli config devices add \
    --device-id "DEVICE-ID-OF-SERVERHOST-1" \
    --name "serverhost-1"
Schritt 2: SimpleCloud-Verzeichnis festlegen
CLOUD_DIR="/pfad/zu/deinem/simplecloud"
Schritt 3: Templates-Ordner hinzufügen
syncthing cli config folders add \
    --id "$TEMPLATES_ID" \
    --label "templates" \
    --path "$CLOUD_DIR/templates"

syncthing cli config folders "$TEMPLATES_ID" devices add \
    --device-id "DEVICE-ID-OF-OTHER-SERVERHOST"
Schritt 4: Workflows-Ordner hinzufügen
syncthing cli config folders add \
    --id "$WORKFLOWS_ID" \
    --label "workflows" \
    --path "$CLOUD_DIR/workflows"

syncthing cli config folders "$WORKFLOWS_ID" devices add \
    --device-id "DEVICE-ID-OF-OTHER-SERVERHOST"
Schritt 5: Für zusätzliche Serverhosts wiederholen Für jeden neuen Serverhost:
  • Installiere Syncthing
  • Rufe seine Geräte-ID ab
  • Füge ihn zu allen bestehenden Serverhosts hinzu
  • Füge alle bestehenden Geräte zu ihm hinzu
  • Konfiguriere Ordner mit denselben Ordner-IDs

Synchronisierung überprüfen

Teste, ob die Synchronisierung funktioniert:
# 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:
StrategieAnwendungsfall
Beliebiger HostLastverteilung über alle Maschinen
Spezifische HostsDedizierte Hardware für ressourcenintensive Server
GeografischSpieler verbinden sich mit dem nächstgelegenen Serverhost

Dateisynchronisierungs-Einstellungen

EinstellungEmpfohlenGrund
OrdnertypSenden & EmpfangenErlaubt Änderungen von jedem Serverhost
DateiversionierungEinfachBehält Backup-Kopien
Berechtigungen ignorierenAktiviertVermeidet 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

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
Symptom: Geräte werden als “Getrennt” angezeigt.Lösungen:
  1. Stelle sicher, dass die Firewall Port 22000 TCP und UDP erlaubt
  2. Überprüfe, ob beide Geräte gegenseitig hinzugefügt wurden
  3. Überprüfe, ob die Geräte-IDs korrekt sind
  4. Bestätige, dass Syncthing läuft: systemctl --user status syncthing
Symptom: Template-Änderungen erscheinen nicht auf anderen Serverhosts.Lösungen:
  1. Überprüfe, ob die Ordner-IDs auf allen Hosts übereinstimmen
  2. Überprüfe, ob der Ordner mit den richtigen Geräten geteilt wird
  3. Zeige den Sync-Status an: syncthing cli show folders
  4. Überprüfe auf Sync-Fehler: syncthing cli show system
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 in sc serverhost list
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

Verwandte Themen