This siteAll blogsLe 17ClémentCCBCuisineLe 3ContactSe connecterS'inscrire
  • All blogs
  • Le 17
  • Clément
  • CCB
  • Cuisine
  • Le 3
  • Contact

  • S'inscrire

Recettes informatiques

  • Page de garde
  • Contact
  • Se connecter
  • « Color diff
  • GIT/HG/SVN on multiple repos simultaneously »

Create on Debian a Minecraft server

Posted by mazet on 24 Jan 2021 in Systeme, Debian


This service depends on daemon package.


Download Minecraft server from official web site and extract it into /usr/local/share/minecraft directory.


Create minecraft.daemon containing:

Shell

#! /bin/bash
### BEGIN INIT INFO
# Provides:          minecraft
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: minecraft initscript
# Description:       Script to start and stop minecraft server.
### END INIT INFO
 
# Author: Laurent Mazet
 
# Do NOT "set -e"
 
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Minecraft server"
NAME=minecraft
USER=minecraft
CACHE=/var/cache/minecraft
DAEMON=/usr/local/share/minecraft/server.jar
MEMORY_MIN=1024M
MEMORY_MAX=1024M
DAEMON_ARGS="-Xms$MEMORY_MIN -Xmx$MEMORY_MAX"
PIDFILE=/var/run/$NAME/pid
LOGFILE=/var/log/$NAME.log
SCRIPTNAME=/etc/init.d/$NAME
 
# Exit if the package is not installed
[ -f "$DAEMON" ] || exit 0
 
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
 
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
 
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
 
# Do not start daemon if not wanted
[ "$SERVICE" = "no" -o "$SERVICE" = "NO" ] && exit 0
 
#
# Function that starts the daemon/service
#
do_start()
{
        [ -d $CACHE ] || mkdir $CACHE
        chown -R $USER $CACHE
 
        # Init log files
        if [ "$LOGFILE" ]; then
                touch $LOGFILE
                chown $USER $LOGFILE
                DAEMON_LOGS="-l $LOGFILE -b $LOGFILE -o $LOGFILE"
        fi
        [ -d /var/log/$NAME ] || mkdir /var/log/$NAME
        chown -R $USER /var/log/$NAME
 
        # Link own config files
        for f in $DAEMON /etc/$NAME/*; do
                [ -f $CACHE/$(basename $f) ] || ln -sf $f $CACHE
        done
        [ -e $CACHE/logs ] || ln -sf /var/log/$NAME $CACHE/logs
 
        export CLASSPATH=.
 
        PIDDIR=$(dirname $PIDFILE)
        [ -d $PIDDIR ] || mkdir -p $PIDDIR
        chown $USER $PIDDIR
 
        daemon --chdir $CACHE --name $NAME --pidfile $PIDFILE --user $USER \
                $DAEMON_LOGS \
                --respawn --acceptable 10 --attempts 2 --delay 30 -- \
                java $DAEMON_ARGS -jar $(basename $DAEMON) nogui
}
 
#
# Function that stops the daemon/service
#
do_stop()
{
        daemon --stop --name $NAME --pidfile $PIDFILE
        sleep 1
        PIDS=$(ps -u corlocmh -o pid=)
        [ "$PIDS" ] && eval kill -SIGTERM $PIDS
}
 
case "$1" in
  start)
 
        [ "$VERBOSE" != yes ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != yes ] && log_end_msg 0; RETVAL=0;;
                2) [ "$VERBOSE" != yes ] && log_end_msg 1; RETVAL=1;;
        esac
        ;;
  stop)
        do_stop
        [ "$VERBOSE" != yes ] && log_daemon_msg "Stopping $DESC" "$NAME"
        case "$?" in
                0|1) [ "$VERBOSE" != yes ] && log_end_msg 0; RETVAL=0;;
                2) [ "$VERBOSE" != yes ] && log_end_msg 1; RETVAL=1;;
        esac
        ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
 
       log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0; RETVAL=0;;
                        1) log_end_msg 1; RETVAL=1;; # Old process is still runn
                        *) log_end_msg 1; RETVAL=1;; # Failed to start
                esac
                ;;
          *)
                  # Failed to stop
                log_end_msg 1; RETVAL=1;;
        esac
        ;;
  *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac
 
exit $RETVAL


Execute post-install script:

Shell

#!/bin/sh
  
set -e
 
USER=minecraft
 
# Create /etc files
 
mkdir /etc/minecraft
 
java -Xmx128M -Xms128M -jar server.jar nogui
 
mv eula.txt server.properties /etc/minecraft
sed -i s/false/true/ eula.txt
rm -rf logs
 
# Copy service files
cp minecraft.daemon /etc/init.d/minecraft
echo "SERVICE=yes" > /etc/default/minecraft
 
# Add user
if ! getent passwd | grep -q "^$USER:"; then
    echo "Adding $USER user..."
    adduser --system --group --no-create-home --home /var/cache/minecraft --shell /bin/sh --quiet $USER || true
fi
 
# Start service
if [ -x "/etc/init.d/minecraft" ]; then
    update-rc.d minecraft defaults >/dev/null
    service minecraft start || exit $?
fi
 
exit 0
This entry was posted by mazet and filed under Systeme, Debian.

Aucun commentaire pour le moment

Catégories

  • Toutes
  • Non catégorisé
  • Programmation
    • Awk
    • Bash
    • C
    • C++
    • Javascript
    • LaTeX
    • Perl
    • Tcl/Tk
  • Systeme
    • Android
    • Debian
    • Ubuntu

Contenu

  • Creating a network between 2 virtual machines on Windows with Qemu
  • Build a Debian package for pdmenu
  • Extract informations from epub file
  • Connexion PostgreSql / Java par Socket Unix
  • Example of fork and respawn
  • Start SSH daemon on Git portable distribution
  • Create a git mirror
  • Color diff
  • Create on Debian a Minecraft server
  • GIT/HG/SVN on multiple repos simultaneously
  • Convert Comics into CBZ format
  • Random password generator function
  • Convert to camelCase
  • DKIM and SPF
  • Migration from BackupPC 3 (Debian package) to BackupPC 4 (Standalone Installation)
  • Minimal BC for Mingw
  • Diskless Debian cluster
  • Colorize log file
  • Generate certificates with (or without) a certificate authority
  • Install Mercurial (hg) on Android
Juin 2025
Lun Mar Mer Jeu Ven Sam Dim
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 << <   > >>
  • Accueil
  • Récemment
  • Archives
  • Catégories
  • Derniers commentaires

Rechercher

Flux XML

  • RSS 2.0: Posts
  • Atom: Posts
What is RSS?

©2025 by Laurent Mazet • Contact • Aide • Web Site Engine

Advanced CMS

Cookies are required to enable core site functionality.