| # Service control script: init.d/minecraft |
| Configuration file `/etc/default/minecraft` |
| |Variable |Description |Default value | |
| |-------------------------------|-------------------------------------------------------|-----------------------| |
| |MINECRAFT_USER_NAME |The user name to run Minecraft server |minecraft | |
| |MINECRAFT_HOME |Home directory of Minecraft server instances |/home/minecraft | |
| |MINECRAFT_START_COMMAND |Server startup command |exec sh start.sh | |
| |MINECRAFT_USE_TMUX |Enable to uses of tmux(1) |NO | |
| |MINECRAFT_SESSION_NAME |Base session name of tmux(1) sessions |minecraft | |
| |MINECRAFT_ALTERNATIVE_LOG_FILE |Redirect outputs to this file if tmux(1) is not used |/dev/null | |
| |MINECRAFT_SERVERS |Space separated server instances | | |
| |
| Server instances are directories under MINECRAFT_HOME; each server instance will be started under its instance directory by running MINECRAFT_START_COMMAND. |
| Enabling tmux(1) is recommended if using Bukkit server framework, as this server didn't save worlds when exiting on signals. |
| Session name of each server instance will be 'MINECRAFT_SESSION_NAME-INSTANCE_NAME'. |
| |
| `/etc/default/minecraft` example: |
| ``` |
| MINECRAFT_HOME=/export/home/minecraft |
| MINECRAFT_SERVERS="1.7-server 1.8-server" |
| MINECRAFT_USE_TMUX=YES |
| ``` |
| |
| The user (`minecraft` by default) must have a `sh(1)` compatible shell in order to run shell commands with the default shell. |
| |
| The startup script (`start.sh` by default) must write the PID of server program to `server.pid`, and must not fork the server program into background. |
| |
| `start.sh` example: |
| ```sh |
| #!/bin/sh |
| JAVA_HOME=/opt/jdk1.7.0_80 |
| echo $$ > server.pid |
| exec "$JAVA_HOME/bin/java" -jar /opt/minecraft/minecraft-server-1.7.10.jar --nogui |
| ``` |
| |
| ### Dependency |
| * sudo(1) |
| * tmux(1) if enabled by MINECRAFT_USE_TMUX |
| |
| |
| # Service control script for BSD init: rc.d/minecraft |
| This is very similar with `init.d/minecraft`, except the configuration variables are in lower case and set from `rc.conf` instead of `/etc/default/minecraft` |
| |
| Example configuration in `rc.conf`: |
| ```sh |
| minecraft_enable="YES" |
| minecraft_home="/usr/home/minecraft" |
| minecraft_use_tmux="YES" |
| minecraft_servers="1.7-server 1.8-server" |
| ``` |
| |
| The user and startup script requirements are same with `init.d/minecraft`. |
| |
| ### Dependency |
| * tmux(1) if enabled by using `minecraft_use_tmux="YES"` |
| |
| |
| # Service manifest and control script for SMF: svc/* |
| svccfg(1M) should be used instead of editing configuration file; configuration properties and its default values are: |
| ``` |
| $ svccfg -s site/minecraft listprop config |
| config application |
| config/alt_log_file astring /dev/null |
| config/session_name astring minecraft |
| config/start_command astring "exec sh start.sh" |
| config/use_tmux boolean false |
| config/user astring minecraft |
| config/home astring /var/games/minecraft |
| config/servers astring |
| ``` |
| |
| Example configuration: |
| ``` |
| # svccfg -s site/minecraft setprop config/home = astring: /export/home/minecraft |
| # svccfg -s site/minecraft setprop config/use_tmux = boolean: true |
| # svccfg -s site/minecraft setprop config/servers = astring: '("1.7-server" "1.8-server")' |
| # svcadm enable site/minecraft |
| ``` |
| |
| |
| # Systemd services: systemd/system/*.service |
| Due to some limitations of systemd, many configuration variables used in previous scripts are hardcoded; service user will always be `minecraft`; home directory is the home directory of user `minecraft`; start up script is `start.sh` under instance directory. |
| Two types of services are available: `minecraft@.service` and `minecraft-tmux@.service`; use only one type per instance. |
| Like `init.d/minecraft`, instances are directories under home directory. Referencing an instance in systemd with `minecraft@<instance-name>.service` or `minecraft-tmux@<instance-name>.service`. To configure multiple server instances, just enable every instance via systemctl(1). |
| |
| Example configuration: |
| ``` |
| # systemctl enable --now minecraft-tmux@1.6-server minecraft@1.7-server minecraft@1.8-server |
| ``` |
| |
| ### minecraft-tmux@.service dependency |
| * tmux(1) |