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
Server laufen als detached Prozesse mit Konsolenzugriff via:
# An Server-Konsole anhängen
sc attach <server-name>

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-Konfiguration via CLI-Parameter:
ParameterBeschreibungStandard
--network-idNetzwerk-IdentifierAus env
--controller-urlController-API-URLplatform.simplecloud.app
--nats-urlNATS-Server-URLplatform.simplecloud.app
--deployment-typeAusführungsmoduslocal
--port-rangeVerfügbarer Port-Bereich25565-25665
--multiplexerScreen oder TmuxAuto-detect

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
  • 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