Skip to content

Instantly share code, notes, and snippets.

@Taurolyon
Created November 21, 2023 12:05
Show Gist options
  • Save Taurolyon/15a65e077edfa5267c94ad68213b7519 to your computer and use it in GitHub Desktop.
Save Taurolyon/15a65e077edfa5267c94ad68213b7519 to your computer and use it in GitHub Desktop.
systemd daemon service file for minecraft dedicated server
[Unit]
Description=Minecraft dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
ExecStartPre=/home/minecraft/mcserver/update_server.sh
ExecStart=/home/minecraft/mcserver/launch.sh
User=minecraft
Group=minecraft
StandardOutput=journal
Restart=on-failure
WorkingDirectory=/home/minecraft/mcserver
[Install]
WantedBy=multi-user.target
@Taurolyon
Copy link
Author

Taurolyon commented Nov 21, 2023

See also: https://gist.github.com/Taurolyon/b0e833a210488b0572e752119aaccdcd
This has the script for the update_server.sh script used in ExecStartPre

launch.sh in ExecStart only contains the following:

#!/bin/sh
java -Xmx6G -Xms1G -XX:SoftMaxHeapSize=6G -jar server.jar --nogui

I wasn't sure about using the ExecStart=/usr/bin/java [...] -jar server.jar [...] if it would respect WorkingDirectory=/home/minecraft/mcserver
Perhaps I'll experiment later.

Follow-up

Passed check using: systemd-analyze verify minecraft.service

Follow up with systemctl daemon-reload

and enable with systemctl enable --now minecraft.service
(make sure game server isn't already running in a user-instance such as GNU screen)

systemctl status minecraft.service

* minecraft.service - Minecraft dedicated server
     Loaded: loaded (/etc/systemd/system/minecraft.service; enabled; preset: enabled)
     Active: active (running) since Tue 2023-11-21 12:11:46 UTC; 43s ago
    Process: 6207 ExecStartPre=/home/minecraft/mcserver/update_server.sh (code=exited, status=0/SUCCESS)
   Main PID: 6213 (launch.sh)
      Tasks: 130 (limit: 115780)
     Memory: 2.1G
        CPU: 1min 44.821s
     CGroup: /system.slice/minecraft.service
             |-6213 /bin/sh /home/minecraft/mcserver/launch.sh
             `-6214 java -Xmx6G -Xms1G -XX:SoftMaxHeapSize=6G -jar server.jar --nogui

Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-20/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-1/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-27/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-20/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-1/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-32/INFO]: Preparing spawn area: 0%
Nov 21 12:11:59 minecraft launch.sh[6214]: [12:11:59] [Worker-Main-1/INFO]: Preparing spawn area: 0%
Nov 21 12:12:00 minecraft launch.sh[6214]: [12:12:00] [Worker-Main-37/INFO]: Preparing spawn area: 30%
Nov 21 12:12:00 minecraft launch.sh[6214]: [12:12:00] [Server thread/INFO]: Time elapsed: 4994 ms
Nov 21 12:12:00 minecraft launch.sh[6214]: [12:12:00] [Server thread/INFO]: Done (5.673s)! For help, type "help"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment