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"