inolen / quakejs

1.45k stars 191 forks source link

Running as service with systemd #50

Closed OstrichBot closed 4 years ago

OstrichBot commented 5 years ago

Is there an example of how to run quakejs as a systemd managed service?

Runs fine as dedicated server from console.
Appears difficult to start as systemd due to environment variables.

begleysm commented 5 years ago

I just recently got this working under Debian 9.

You need to install the daemonize package and create an init.d script with the following body.

NOTE: This script assumes the following:

  1. you have a user named "quake" who will run your QuakeJS server
  2. you have a working version of QuakeJS installed at /home/quake/quakejs
#!/bin/sh
#
### BEGIN INIT INFO
# Provides:     quakejs
# Required-Start:   $network
# Required-Stop:
# Default-Start:    2 3 4 5
# Default-Stop:
# Short-Description:    QuakeJS Server Daemon
### END INIT INFO

#
# /etc/init.d/quakejs
# Subsystem file for "quakejs" server
#
# chkconfig: 2345 95 05
# description: QuakeJS server daemon
#
# processname: quakejs
# pidfile: /var/run/quakejs.pid

RETVAL=0
prog="quakejs"

start() {
    echo "Starting $prog:"
    daemonize -v -p /var/run/$prog.pid -c /home/quake/quakejs -u quake /usr/bin/node build/ioq3ded.js +set fs_game baseq3 set dedicated 1 +exec server.cfg
    RETVAL=$?
    [ "$RETVAL" = 0 ] && touch /var/lock/subsys/$prog
    echo
}

stop() {
    echo "Stopping $prog:"
    killproc $prog -TERM
    RETVAL=$?
    [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/$prog
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    condrestart)
        if [ -f /var/lock/subsys/$prog ] ; then
            stop
            # avoid race
            sleep 3
            start
        fi
        ;;
    status)
        status $prog
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
esac
exit $RETVAL

More detailed step-by-step instructions can be found here: https://steamforge.net/wiki/index.php/How_to_setup_a_local_QuakeJS_server_under_Debian_9#Finalize_the_Setup