Skip to content

Instantly share code, notes, and snippets.

@Razuuu
Last active November 26, 2025 21:57
Show Gist options
  • Select an option

  • Save Razuuu/ad087efe6624eeec44510f42c0906e64 to your computer and use it in GitHub Desktop.

Select an option

Save Razuuu/ad087efe6624eeec44510f42c0906e64 to your computer and use it in GitHub Desktop.
Dynamic systemd Minecraft server template with customizable java home, server jar and memory per instance.

This setup provides a multi-instance Minecraft server using systemd templates.

  1. Add user
adduser --disabled-password --gecos "" minecraft
  1. Create files

/usr/lib/systemd/system/[email protected]

[Unit]
Description=Minecraft Server - %i
After=network.target

[Service]
WorkingDirectory=/home/minecraft/%i
User=minecraft
Group=minecraft

EnvironmentFile=-/home/minecraft/%i/mc.conf
Environment="SERVER_MEMORY=16384M"
Environment="SERVER_FILE=server.jar"

ExecStart=/usr/bin/java -Xmx${SERVER_MEMORY} -Xms${SERVER_MEMORY} -jar ${SERVER_FILE} nogui

Sockets=minecraft@%i.socket
StandardInput=socket
StandardOutput=journal
StandardError=journal

Restart=on-failure

[Install]
WantedBy=multi-user.target

/usr/lib/systemd/system/[email protected]

[Socket]
ListenFIFO=%t/minecraft-%i.stdin
Service=minecraft@%i.service
  1. Create mc0 as example

/home/minecraft/mc0/mc.conf

SERVER_FILE="server.jar" # E.g vanilla jar
SERVER_MEMORY="16384M" # 16G

4.Enable systemd service and start right after

systemctl --now enable [email protected]
  1. Execute commands with socket file
echo "say Hello" > /run/minecraft-mc0.stdin
  1. See logs/status
service minecraft@mc0 status
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment