Gruppen

Leg fest, was in deinem Netzwerk läuft: Serversoftware, Minecraft-Version, Arbeitsspeicher und wie viele Server automatisch starten.

Eine Gruppe ist eine Datei unter groups/. Sie beschreibt, was laufen soll, nicht was gerade läuft. MuteCloud gleicht den Sollzustand alle zwei Sekunden mit der Wirklichkeit ab und schreibt die Datei nie um, deshalb kannst du sie in einer Versionsverwaltung ablegen.

groups/lobby.toml
name = "Lobby"
memory = 1024
layers = ["global", "lobby"]
fallback = true

[software]
kind = "paper"
version = "26.2"

[scale]
min = 2
max = 6
keep_free = 1
full_at = 0.8

[restart]
at = ["04:00"]

[[plugins]]
modrinth = "luckperms"

Felder

FeldBedeutung
nameName der Gruppe, die Server heißen dann Lobby-1, Lobby-2, ...
kindserver oder proxy
memoryRAM pro Server in MB
layerswelche Vorlagen hineinkopiert werden, in dieser Reihenfolge
persistentWelt behalten, das Verzeichnis bleibt unter static/
fallbackwo Spieler beim Betreten landen und wenn ein Server ausfällt
maintenanceGruppe im Wartungsmodus, niemand kommt hinein
enabledfalse startet nichts Neues, laufende Server bleiben
port_rangeBereich, aus dem die Ports genommen werden
jvm_flagszusätzliche JVM-Schalter
envUmgebungsvariablen für den Serverprozess
requiresGruppen, die vorher bereit sein müssen
drain_secswie lange ein Server beim Leerlaufen auf seine Spieler wartet
nodeswelche Nodes diese Gruppe ausführen dürfen, leer heißt alle; im laufenden Betrieb mit groups <name> set nodes +node-2, siehe Eine Node hinzufügen
rolloutauto oder freigabe, siehe unten

[software]

version ist die Minecraft-Version, ohne Angabe nimmt MuteCloud die neueste stabile. build legt einen bestimmten Build fest, sofern die Quelle Builds hat, Standard ist latest.

kindWoher es kommt
paper, foliaPaperMC
purpurPurpurMC
leafLeafMC, ein Performance-Fork von Paper
pufferfishPufferfish CI, ebenfalls ein Performance-Fork
pandaspigothpfxd, PvP-Fork von 1.8.8, läuft auf Java 21
vanillaMojang
fabricFabricMC, Loader und Installer werden passend zur Version ermittelt
velocityPaperMC, der Proxy, den man heute nimmt
bungeecordmd-5 CI, der ältere Proxy, immer noch überall verbreitet
waterfallPaperMC, vom Hersteller eingestellt, nimm velocity
urldie Adresse in url, eine beliebige Server-Jar
customdie Datei in jar, mitgebracht von einer Vorlage

Pufferfish baut einen Job pro Unterversionsreihe, version = "1.21.4" wählt also den Job 1.21, und du bekommst den neuesten Patch, den er gebaut hat. MuteCloud liest die tatsächliche Version aus der heruntergeladenen Datei und verwendet diese, auch für die Java-Laufzeit. BungeeCord hat überhaupt keine Minecraft-Version, lass version dort weg.

PandaSpigot gibt es nur für 1.8.8. Anders als ein normaler 1.8-Server bekommt es standardmäßig Java 21, damit aktuelle Plugins wie ViaVersion oder LuckPerms laden. Die Bridge richtet sich nach der Minecraft-Version, der Server bekommt also trotz Java 21 die Legacy-Bridge.

Alles, was nicht in der Liste steht, ist nur eine Zeile entfernt, solange es eine Jar ist, die mit java -jar startet:

groups/bedwars.toml
[software]
kind = "url"
version = "1.8.8"
url = "https://example.com/downloads/server-1.8.8.jar"

Die Datei wird einmal geholt und unter cache/ zwischengespeichert, geordnet nach Adresse und Version. Eine geänderte Adresse bedeutet also einen neuen Download, eine unveränderte kostet nichts.

Noch nicht abgedeckt ist Software, die vor dem ersten Start einen Installer durchlaufen muss, wie Forge und NeoForge, sowie alles, was nicht mit java -jar gestartet wird, etwa der Bedrock-Server oder ein Proxy, der als native Programmdatei ausgeliefert wird.

Server ohne Bukkit- oder Velocity-Plugin, also vanilla, fabric und das meiste hinter url, laufen einwandfrei, bleiben aber ohne Bridge: MuteCloud startet, überwacht und startet sie neu und kennt ihren Port, Spielerzahlen, Ränge und Strafen kommen dagegen von der Bridge und bleiben deshalb leer.

[java]

major erzwingt eine Java-Version. Ohne Angabe leitet MuteCloud sie aus der Minecraft-Version ab: 1.8.8 bekommt Java 8, 26.2 bekommt Java 25. Die Laufzeit wird bei Bedarf heruntergeladen und liegt unter runtimes/.

[scale]

FeldBedeutung
minso viele laufen immer
maxnie mehr als diese Zahl
keep_freeso viele sollen leer und bereit stehen
full_atab dieser Auslastung startet ein weiterer, 0.8 sind achtzig Prozent
cooldown_secsPause zwischen zwei Starts

[restart]

[restart]
at = ["04:00"]
every_hours = 0
warn_seconds = [600, 300, 60, 10]
message = "&7This server restarts in &f{time}&7."

at startet zu festen Uhrzeiten neu, every_hours in festen Abständen, gezählt ab dem Moment, in dem ein Server Spieler annimmt. Sind beide gesetzt, gewinnt every_hours. warn_seconds legt fest, wie viele Sekunden vorher die Spieler auf diesem Server gewarnt werden. Aus {time} wird zum Beispiel „10 Sekunden“ oder „5 Minuten“. Die Server einer Gruppe sind im Abstand von einer halben Minute an der Reihe, Lobby-2 also dreißig Sekunden nach Lobby-1, und jeder wird leerlaufen gelassen statt gestoppt. Niemand fliegt raus.

[backup]

Nur für dauerhafte Server. at = ["03:00"] sichert zu diesen Uhrzeiten, keep gibt an, wie viele Archive erhalten bleiben. Von Hand: groups <name> backup.

[[plugins]]

[[plugins]]
modrinth = "viaversion"

[[plugins]]
url = "https://example.com/Custom.jar"
sha256 = "..."

Plugins landen in der letzten Vorlage der Gruppe. groups <name> plugins update lädt sie erneut herunter.

Vorlagenänderungen ausrollen

Ändert sich eine Vorlage, sind die laufenden Server veraltet. Bei Spielservern startet MuteCloud den Ersatz neben dem bestehenden Server und lässt den alten erst leerlaufen, wenn der neue Spieler annimmt. Für die Spieler bleibt die Änderung so unsichtbar.

Ein Proxy hat keinen Stellvertreter, ihn zu ersetzen trennt jeden Spieler. Proxy-Gruppen warten deshalb auf eine ausdrückliche Freigabe:

groups Proxy rollout

Solange etwas aussteht, zeigt die Gruppenliste „Freigabe nötig“, und eine Nachricht geht an den Webhook. Pro Gruppe änderst du das mit groups <name> set rollout auto oder freigabe, standard kehrt zur Voreinstellung zurück.

Dauerhaft und kurzlebig

Ohne persistent bekommt jeder Server ein frisches Arbeitsverzeichnis unter run/, das beim Stoppen des Servers entfernt wird. Das ist der Normalfall für Lobbys und Rundenserver.

Mit persistent = true liegt das Verzeichnis unter static/ und bleibt erhalten. Beim Start werden nur die Dateien aus den Vorlagen aufgefrischt, die Welt bleibt unberührt. Das gilt für Bauserver und jede Installation, deren Zustand mit der Zeit wächst.

Auf dieser Seite