Tutorials/FreeBSD startup script
This is an example of a possible Minecraft server rc.d startup script for FreeBSD.
Installation[edit]
- Use adduser to create a new user named minecraft. When asked to select the new user's home directory, use /srv/minecraft.
- Ensure that your /srv filesystem has enough free space (around ~100-200MB depending on your needs) - df -h will show how much space is available.
- Install Java if necessary. The port is available at /usr/ports/java/openjdk8.
- As root, run the following:
# cd /usr/ports/sysutils/screen && make install clean # cd /srv/minecraft # fetch https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar # chown minecraft:minecraft * # fetch -o /usr/local/etc/rc.d/minecraft http://vidya.dyndns.org/stuff/minecraft # chmod 0555 /usr/local/etc/rc.d/minecraft
- If you have existing server configuration files, world files, etc., copy them into /srv/minecraft and give ownership to your minecraft user.
- Edit /etc/rc.conf.local (create if it doesn't exist) and add the following line:
minecraft_enable="yes"
- The server should now start on boot. To launch, check status, and shut down, use the following commands:
# /usr/local/etc/rc.d/minecraft start # /usr/local/etc/rc.d/minecraft status # /usr/local/etc/rc.d/minecraft stop
Or:
# service minecraft start # service minecraft status # service minecraft stop
Script[edit]
#!/bin/sh # # PROVIDE: minecraft # REQUIRE: LOGIN DAEMON NETWORKING mountcritlocal # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf.local to enable the minecraft server: # # minecraft_enable="YES" # minecraft_user="<run server as this user>" # minecraft_chdir="<run server in this directory>" # minecraft_path="<path to minecraft_server.jar>" # minecraft_flags="<set as needed>" # # For default setup, create a user named 'minecraft', set its home directory # to /srv/minecraft, and place minecraft_server.jar into /srv/minecraft # # See minecraft_server.jar for flags . /etc/rc.subr name=minecraft rcvar=minecraft_enable load_rc_config ${name} command=/usr/local/bin/screen pidfile=/var/run/minecraft.pid start_cmd="${name}_start" stop_cmd="${name}_stop" status_cmd="${name}_status" : ${minecraft_enable="NO"} : ${minecraft_session="minecraft-session"} : ${minecraft_user="minecraft"} : ${minecraft_chdir="/srv/minecraft"} : ${minecraft_path="/srv/minecraft/minecraft_server.jar"} : ${minecraft_flags="--nogui"} : ${minecraft_args="/usr/local/bin/java -Xmx1024M -Xms1024M \ -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing \ -XX:ParallelGCThreads=4 -XX:+AggressiveOpts \ -jar ${minecraft_path} ${minecraft_flags}"} minecraft_start() { unset "${rc_arg}_cmd" minecraft_flags="-d -m -S ${minecraft_session} ${minecraft_args}" if minecraft_running; then echo "minecraft already running?" else run_rc_command "start" fi } minecraft_stop() { local cmd cmd="${command} -p 0 -S ${minecraft_session} -X eval 'stuff stop\015'" if minecraft_running; then echo "Stopping minecraft." su -m ${minecraft_user} -c "${cmd}" fi } minecraft_status() { if minecraft_running; then echo "minecraft is running." else echo "minecraft is not running." fi } minecraft_running() { local check ses ses="${minecraft_session}" check=`su -m ${minecraft_user} -c "${command} -list" | grep ${ses}` if [ "$check" ]; then return 0 else return 1 fi } run_rc_command "$1"