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:- Vorbereitung - Workflows ausführen, Templates kopieren, Plugins installieren
- Konfiguration - Configurators anwenden für Ports, Secrets, etc.
- Ausführung - Server-Prozess starten (Screen/Tmux oder Docker)
- Monitoring - Server-Health verfolgen und Logs streamen
- 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:| Quelle | Beschreibung |
|---|---|
| Modrinth | Moderne Plugin/Mod-Registry |
| Hangar | PaperMCs Plugin-Repository |
| Spigot | SpigotMC-Ressourcenseiten |
| URL | Direkter 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
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
Verzeichnisstruktur
secrets
network-id.key
network-secret.key
serverhost-id.key
workflows
internal
setup.yml
cleanup.yml
options
configurators
modrinth-platform-mappings.yml
templates
every
every_proxy
every_server
every_paper
every_velocity
_tagged
cache
running
logs
Template-Hierarchie
Templates werden der Reihe nach angewendet, wobei spätere Templates frühere überschreiben:| Reihenfolge | Verzeichnis | Beschreibung |
|---|---|---|
| 1 | every/ | Basisdateien für alle Server |
| 2 | every_{type}/ | Typspezifisch (z.B. every_proxy/) |
| 3 | every_{software}/ | Softwarespezifisch (z.B. every_paper/) |
| 4 | _tagged/{tag}/ | Für jeden Tag der Gruppe |
| 5 | {server-name}/ | Serverspezifische Templates |
| 6 | cache/{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
{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:- Aktive Server vom Controller abrufen
- Mit lokal laufenden Servern vergleichen
- Verwaiste Server stoppen, die nicht im Controller-Zustand sind
Server-Vorbereitungsablauf
Wenn eine Start-Anfrage eintrifft:Konfiguration
Serverhost-Konfiguration via CLI-Parameter:| Parameter | Beschreibung | Standard |
|---|---|---|
--network-id | Netzwerk-Identifier | Aus env |
--controller-url | Controller-API-URL | platform.simplecloud.app |
--nats-url | NATS-Server-URL | platform.simplecloud.app |
--deployment-type | Ausführungsmodus | local |
--port-range | Verfügbarer Port-Bereich | 25565-25665 |
--multiplexer | Screen oder Tmux | Auto-detect |
Monitoring
Via CLI
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
- Configurators - Server-Konfigurationssystem
- Workflows - Server-Vorbereitungs-Workflows