Tutorial:FreeBSD startup script
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
- 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
#!/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"