Minecraft Server: Difference between revisions

Removed flags from example, they were old and broken (causing minecraft-server to fail upon using them); instead recommended user to find their own flags. Also added a tip on changing server version/package
 
(7 intermediate revisions by the same user not shown)
Line 15: Line 15:
== Configuration ==
== Configuration ==


This example is a more thorough declarative configuration that sets a few options including opening the firewall, restricting the server to only whitelisted users and setting the port to <code>43000</code>
This example is a more thorough declarative configuration that sets a few options including opening the firewall, restricting the server to only whitelisted users and setting the port to <code>43000</code>.


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
Line 40: Line 40:
};
};
</nowiki>}}
</nowiki>}}
You might want to look at using using [https://docs.papermc.io/paper/aikars-flags/ Aikar's flags] or the [https://github.com/brucethemoose/Minecraft-Performance-Flags-Benchmarks Minecraft performance flags benchmark].
You might want to view the [https://minecraft.wiki/w/Server.properties#Keys list of all available server properties for the vanilla server].


== Tips and tricks ==
== Tips and tricks ==
=== Prefer IPv4 ===
To use IPv4 by default, add <code>-Djava.net.preferIPv4Stack=true</code> to <code>jvmOpts</code>.


=== Use a different server version/package ===
=== Use a different server version/package ===
Line 59: Line 55:


<code>services.minecraft-server.package = pkgs.papermc;</code>
<code>services.minecraft-server.package = pkgs.papermc;</code>
=== Accessing the Minecraft server console ===
The Minecraft server console allows you to view server logs and issue [https://minecraft.wiki/w/Commands commands] to the server interactively. The Minecraft server console is <strong>not</strong> directly accessible on NixOS—unlike on imperative systems, where running the server through a shell command provides the interactive console to the current terminal session.
==== Accessing logs ====
Since the Minecraft server runs as a systemd service, you can access its stdout through the systemd journal:
<code>journalctl -eu minecraft-server.service</code>
The logs are also available in the <code>logs</code> subdirectory of the server's data directory, which is configured via <code>services.minecraft-server.dataDir</code>. The default value for this option is <code>/var/lib/minecraft</code>.
==== Issuing commands ====
There are two ways to issue commands to the Minecraft server:
1. Writing to the server’s stdin via its named pipe at <code>/run/minecraft-server.stdin</code>:
<code>echo "say Removed Herobrine" > /run/minecraft-server.stdin</code>
2. Using the [https://minecraft.wiki/w/RCON server's provided RCON feature].
Example minimal configuration:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
services.minecraft-server.serverProperties = {
    enable-rcon = true;
    "rcon.password" = "your password";
};
</nowiki>}}
=== Prefer IPv4 ===
To use IPv4 by default, add <code>-Djava.net.preferIPv4Stack=true</code> to <code>jvmOpts</code>.
== See also ==
* [https://github.com/Infinidoge/nix-minecraft nix-minecraft], a [[flake]] based attempt to better support Minecraft related content for the Nix ecosystem. It can be used for more complex server setups, including mods and plugins.
* [https://docs.papermc.io/paper/aikars-flags/ Aikar's flags] or the [https://github.com/Mukul1127/Minecraft-Java-Flags Minecraft performance flags benchmark] for setting additional JVM options in the <code>jvmOpts</code> option.


[[Category: Applications]]
[[Category: Applications]]
[[Category: Gaming]]
[[Category: Gaming]]