This setup provides a multi-instance Minecraft server using systemd templates.
- Add user
adduser --disabled-password --gecos "" minecraft- 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
- 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]- Execute commands with socket file
echo "say Hello" > /run/minecraft-mc0.stdin- See logs/status
service minecraft@mc0 status