Tutorial:FreeBSD startup script

Jump to navigation Jump to search
Script Warning
 
The Minecraft Wiki is a website that can be edited by anyone. Although edits are usually checked by other editors, it is possible for a bad actor to modify scripts and programs to behave maliciously. It is suggested that you should check the integrity of any script or program you run on your device.

This is an example of a possible Minecraft server rc.d startup script for FreeBSD.

Installation[edit | edit source]

  • 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 | edit source]

#!/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 \
                    -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"

Navigation[edit | edit source]