Zum Hauptinhalt springen

Was ist der Serverhost?

Der Serverhost ist ein verteilter Ausführungsagent, der auf jeder Maschine in deiner SimpleCloud-Infrastruktur läuft. Er empfängt Befehle vom Controller und verwaltet den tatsächlichen Lebenszyklus von Minecraft-Servern - von der Vorbereitung über die Ausführung bis zum Cleanup.

Hauptaufgaben

Server-Lebenszyklus

Der Serverhost verwaltet den kompletten Server-Lebenszyklus:
  1. Vorbereitung - Workflows ausführen, Templates kopieren, Plugins installieren
  2. Konfiguration - Configurators anwenden für Ports, Secrets, etc.
  3. Ausführung - Server-Prozess starten (Screen/Tmux oder Docker)
  4. Monitoring - Server-Health verfolgen und Logs streamen
  5. Cleanup - Prozess stoppen und temporäre Dateien entfernen

Workflow-Ausführung

Workflows definieren den Server-Vorbereitungsprozess:
  • Template-Dateien ins Server-Verzeichnis kopieren
  • Plugins von Registries herunterladen und installieren
  • Konfiguration basierend auf Server-Software anwenden
  • Benutzerdefinierte Setup-Schritte ausführen

Plugin-Verwaltung

Automatische Plugin-Installation aus mehreren Quellen:
QuelleBeschreibung
ModrinthModerne Plugin/Mod-Registry
HangarPaperMCs Plugin-Repository
SpigotSpigotMC-Ressourcenseiten
URLDirekter Download von beliebiger HTTP(S)-URL

Architektur

Ausführungsmodi

Screen/Tmux (Lokal)

Der Standard-Ausführungsmodus mit Terminal-Multiplexern:
  • Screen - Bevorzugt, weit verbreitet auf Linux
  • Tmux - Alternative wenn Screen nicht verfügbar
SimpleCloud-Komponenten laufen als detached Prozesse mit Komponenten-Konsolenzugriff via:
# An die Serverhost-Komponenten-Konsole anhängen
sc attach serverhost

Docker

Container-basierte Ausführung für Isolation:
  • Jeder Server läuft in eigenem Container
  • Ressourcenlimits durch Docker erzwungen
  • Bessere Isolation zwischen Servern
  • Docker muss installiert sein
Runner-Modus beim Starten konfigurieren:
sc start --runner docker
sc start --runner screen

Verzeichnisstruktur

secrets
network-id.key
network-secret.key
serverhost-id.key
workflows
internal
setup.yml
cleanup.yml
options
modrinth-platform-mappings.yml
templates
every
every_proxy
every_server
every_paper
every_velocity
cache
running
logs

Template-Hierarchie

Templates werden der Reihe nach angewendet, wobei spätere Templates frühere überschreiben:
ReihenfolgeVerzeichnisBeschreibung
1every/Basisdateien für alle Server
2every_{type}/Typspezifisch (z.B. every_proxy/)
3every_{software}/Softwarespezifisch (z.B. every_paper/)
4_tagged/{tag}/Für jeden Tag der Gruppe
5{server-name}/Serverspezifische Templates
6cache/{group}/Gecachte Dateien von vorherigen Starts

Kommunikation

NATS Messaging

Der Serverhost kommuniziert mit dem Controller via NATS: Eingehend (vom Controller):
  • {networkId}.serverhost.{id}.start - Server-Start-Anfrage
Ausgehend (zum Controller):
  • {networkId}.server.{id}.status - Server-Status-Updates
  • {networkId}.server.{id}.logs - Log-Streaming
  • {networkId}.internal.serverhost.{id}.keep-alive - Health Checks

Zustandssynchronisation

Jede Minute führt der Serverhost durch:
  1. Aktive Server vom Controller abrufen
  2. Mit lokal laufenden Servern vergleichen
  3. Verwaiste Server stoppen, die nicht im Controller-Zustand sind

Server-Vorbereitungsablauf

Wenn eine Start-Anfrage eintrifft:

Konfiguration

Serverhost-Setup verwendet die aktuellen CLI-Setup-Optionen:
ParameterBeschreibungStandard
--networkNetwork-ID oder SlugInteraktive Auswahl
--install-dirServerhost-InstallationsverzeichnisInteraktive Abfrage
--host-nameAnzeigename des ServerhostsInteraktive Abfrage
--max-memoryMaximaler Serverhost-Speicher, z. B. 80% oder 32gbAus Systemspeicher erkannt
--start / --no-startSimpleCloud nach dem Setup starten oder Start überspringenInteraktive Abfrage
--auto-install-deps / --no-auto-install-depsErforderliche Abhängigkeiten automatisch installieren oder Installation überspringenInteraktive Abfrage
--installSetup-Installables installieren, z. B. --install java:21Keine
-y, --yesWo möglich nicht-interaktive Defaults verwendenfalse

Monitoring

Via CLI

# Serverhost-Status prüfen
sc status serverhost

# Serverhost-Logs anzeigen
sc logs serverhost

# Spezifische Server-Logs anzeigen
sc server logs <group> <id>

Keep-Alive

Der Serverhost sendet periodische Keep-Alive-Nachrichten:
  • Meldet aktuelle Version
  • Meldet installierte Java-Runtime-Versionen (als installed_java_versions in den Serverhost-API-Antworten verfügbar)
  • Empfängt Update-Benachrichtigungen
  • Hält Verbindung zum Controller aufrecht
Serverhosts starten Server automatisch neu, wenn der Serverhost selbst neu startet, basierend auf der Synchronisation mit dem Controller-Zustand.

Verwandte Themen