Minecraft Spigot-Server unter Ubuntu 22, der 2.

Kommt auf deinen Playercount drauf an. Ohne den kann man nicht sizen.

Sieht auch so aus als hättest du dir gedanken gemacht bezüglich der systemd unit

Code:
After=network-online.target local-fs.target
SuccessExitStatus=143

hier kann der "local-fs.target" raus. Ohne FS kann sowieso nichts starten. Der SuccessExit ist auch egal, da es java ist und sich der ExitCode auf java bezieht und nicht auf die Java App an sich.

Was du vll noch ergänzen willst ist:
Code:
[Service]
KillSignal=SIGINT
PrivateDevices=true
PrivateTmp=true
ProtectKernelLogs=true
ProtectProc=invisible
PrivateUsers=true
UMask=0077
RestrictNamespaces=true
LockPersonality=true
NoNewPrivileges=true
ProtectKernelModules=true
SystemCallArchitectures=native
ProtectHostname=true
RestrictAddressFamilies=AF_INET AF_INET6
RestrictRealtime=true
ProtectControlGroups=true
ProtectKernelTunables=true
RestrictSUIDSGID=true
ProtectClock=true
RemoveIPC=true
 
graywolf2 schrieb:
Der SuccessExit ist auch egal
Theoretisch egal. Wenn du das allerdings rausnimmst, dann führt ein systemctl stop minecraft-server in einen failed state, da Java beim Beenden eben genau 143 als Status zurückgibt. Linux erwartet normalerweise 0.

Zu den Sicherheitsparametern:
https://www.redhat.com/sysadmin/mastering-systemd

systemd-analyze security minecraft-server listet noch viel Potential auf. Mal sehen, was ich noch alles davon umsetz.
 
Bei mir failed die MC Unit nicht wenn ich es stoppe.

Bezüglich des Hardenings. Man kann meiner Erfahrung alles machen außer:

Code:
## Capabilities and syscalls
CapabilityBoundingSet=
SystemCallFilter=@system-service
SystemCallFilter=~@privileged @resources
 
graywolf2 schrieb:
Bei mir failed die MC Unit nicht wenn ich es stoppe.
Ich hab das bei fast allen Java-Programmen, u.a. auch beim Geoserver.

Grad mal gegoogelt.
https://stackoverflow.com/questions/6963811/why-does-the-jvm-return-exit-status-code-143
143 often means that the application was terminated due to a SIGTERM command. See also https://unix.stackexchange.com/questions/10231/when-does-the-system-send-a-sigterm-to-a-process
Das kommt bei mir hin, da ich kein ExecStop verwende sondern einfach System das SIGTERM (15) an die Applikation schicken lass.

In der Signal-Manpage steht's auch ganz gut erklärt.
  • SIGINT: 2
  • SIGKILL: 9
  • SIGTERM: 15

Grad gefunden
https://stackoverflow.com/questions/2541475/capture-sigint-in-java
The way to handle this would be to register a shutdown hook. If you use (SIGINT) kill -2 will cause the program to gracefully exit and run the shutdown hooks.
Ich probier das mal. Sehr wahrscheinlich hast du mit SIGINT Recht. Wusste ich auch noch nicht. Danke.
Ergänzung ()

Da ist noch der Wurm drin:
Code:
root ~> systemctl stop minecraft-server.service 
root ~> systemctl status minecraft-server.service 
× minecraft-server.service - Minecraft Server
     Loaded: loaded (/etc/systemd/system/minecraft-server.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-08-29 12:06:14 CEST; 4min 11s ago

Aug 29 12:06:14 xxx systemd[1]: minecraft-server.service: Main process exited, code=exited, status=130/n/a
Aug 29 12:06:14 xxx systemd[1]: minecraft-server.service: Failed with result 'exit-code'.

Zu Code 130:
the 130 exit code is given by bash, and Mendel Cooper's Bash-Scripting Guide states that it indicates that the process was terminated by a SIGTERM. Generally this is the user pressing Ctrl-C.
Dabei hab ich in meiner Unit:
Code:
TimeoutStopSec=120                                                         
KillSignal=SIGINT

Nächstes Update
https://transwikia.com/server-fault/services-remain-in-failed-state-after-stopped-with-systemctl/
Exit code 143 means that the program received a SIGTERM signal to instruct it to exit. The JVM catches the signal, does a clean shutdown, i.e. it runs all registered shutdown hooks, but still exits with an exit code of 143. That's just how Java works.
Ich bleib bei meinem SuccessExitStatus=143.
 
Zuletzt bearbeitet:
Kommen wir mal zum nächsten Punkt: Mods

Nach der Frage nach sinnvollen Mods kam vom Sohnemann gleich der Wunsch nach Minimap. Gefunden hab ich Xaero's Minimap.

Kurzerhand hab ich die jar (Xaeros_Minimap_24.3.0_Fabric_1.21.jar) ins mods-Verzeichnis reingeschoben. Der Server scheint das auch ganz brav zu laden:
Code:
Aug 29 12:18:48 xxx systemd[1]: Started Minecraft Server.
Aug 29 12:18:52 xxx java[6313]: Starting net.fabricmc.loader.impl.game.minecraft.BundlerClassPathCapture
Aug 29 12:18:53 xxx java[6313]: [12:18:53] [main/INFO]: Loading Minecraft 1.21.1 with Fabric Loader 0.16.2
Aug 29 12:18:53 xxx java[6313]: [12:18:53] [main/INFO]: Loading 93 mods:
Aug 29 12:18:53 xxx java[6313]:       - fabric-api 0.102.1+1.21.1
Aug 29 12:18:53 xxx java[6313]:          |-- fabric-api-base 0.4.42+6573ed8c6a
Aug 29 12:18:53 xxx java[6313]:          |-- fabric-api-lookup-api-v1 1.6.68+b55973446a
Aug 29 12:18:53 xxx java[6313]:          |-- fabric-biome-api-v1 13.0.29+5bd9f1bc6a
...
Aug 29 12:18:53 xxx java[6313]:          |-- org_geysermc_event_events 1.1-SNAPSHOT
Aug 29 12:18:53 xxx java[6313]:          |-- org_lanternpowered_lmbda 2.0.0
Aug 29 12:18:53 xxx java[6313]:          \-- org_yaml_snakeyaml 2.2
Aug 29 12:18:53 xxx java[6313]:       - java 21
Aug 29 12:18:53 xxx java[6313]:       - minecraft 1.21.1
Aug 29 12:18:53 xxx java[6313]:       - xaerominimap 24.3.0
Aug 29 12:18:54 xxx java[6313]: [12:18:54] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.7 Source=file:/opt/minecraft-server-1.21.1-fabric/libraries/net/fabricmc/sponge-mixin/0.15.2+mixin.0.8.7/sponge-mixin-0.15.2+mixin.0.8.7.jar Service=Knot/Fabric Env=SERVER
Aug 29 12:18:54 xxx java[6313]: [12:18:54] [main/INFO]: Compatibility level set to JAVA_17
Aug 29 12:18:54 xxx java[6313]: [12:18:54] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.4.1).
Aug 29 12:19:02 xxx java[6313]: [12:19:02] [main/INFO]: Lade Erweiterungen...
Aug 29 12:19:02 xxx java[6313]: [12:19:02] [main/INFO]: 0 Erweiterung(en) geladen
Aug 29 12:19:02 xxx java[6313]: [12:19:02] [main/INFO]: Loading Xaero's Minimap - Stage 1/2 (Server)
Aug 29 12:19:03 xxx java[6313]: [12:19:03] [main/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
Aug 29 12:19:04 xxx java[6313]: [12:19:04] [main/INFO]: Loaded 1290 recipes
Aug 29 12:19:05 xxx java[6313]: [12:19:05] [main/INFO]: Loaded 1399 advancements
Aug 29 12:19:05 xxx java[6313]: [12:19:05] [main/INFO]: Applied 0 biome modifications to 0 of 64 new biomes in 1.596 ms

Im Configverzeichnis taucht auch die xaerominimap-common.txt auf:
Code:
allowCaveModeOnServer:true
allowNetherCaveModeOnServer:true
allowRadarOnServer:true
registerStatusEffects:true
everyoneTracksEveryone:false

Nur sieht man davon im Spiel nichts. Hab ich da (wieder) was falsch verstanden? Muss der Mod auf dem Client und nicht auf dem Server installiert werden? Muss der Mod noch irgendwo aktiviert werden?
 
Zuletzt bearbeitet:
Zurück
Oben