mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-12 10:58:28 +00:00
commit
38c8a46260
@ -9,14 +9,6 @@ https://developer.valvesoftware.com/wiki/SteamCMD#Linux
|
||||
We assume you have created the `steam` user to store steamcmd and your ARK server.
|
||||
|
||||
## Requirements
|
||||
Use this command to install soft requirement on your system
|
||||
```
|
||||
# Debian based/ Ubuntu
|
||||
apt-get install screen
|
||||
|
||||
# RHEL / CentOS / Fedora
|
||||
yum install screen
|
||||
```
|
||||
|
||||
Edit /etc/sysctl.conf and set:
|
||||
```
|
||||
|
||||
43
tools/arkdaemon
Normal file → Executable file
43
tools/arkdaemon
Normal file → Executable file
@ -1,3 +1,4 @@
|
||||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: ARK manager deamon
|
||||
# Required-Start: networking
|
||||
@ -9,21 +10,15 @@
|
||||
#
|
||||
### END INIT INFO
|
||||
|
||||
# NOTICE: this daemon can work only if your system supports start-stop-daemon
|
||||
|
||||
# Using the lsb functions to perform the operations.
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
# Global variables
|
||||
source /etc/arkdaemon.cfg
|
||||
source /home/${steamuser}/.arkmanager.cfg
|
||||
source /etc/arkmanager/arkmanager.cfg
|
||||
|
||||
NAME=arkmanager_daemon
|
||||
DESC="ARK manager daemon used to start the server and keep it updated"
|
||||
PIDFILE="/var/run/${NAME}.pid"
|
||||
NAME="ShooterGameServer"
|
||||
LOGFILE="${logdir}/${NAME}.log"
|
||||
DAEMON="arkmanager"
|
||||
START_OPTS="--pidfile ${PIDFILE} --user=${steamuser} ${DAEMON}"
|
||||
DAEMON="/usr/bin/arkmanager"
|
||||
|
||||
set -e
|
||||
|
||||
@ -33,7 +28,10 @@ test -x $DAEMON || exit 5
|
||||
case "$1" in
|
||||
start)
|
||||
log_daemon_msg "Starting" "$NAME"
|
||||
if start-stop-daemon -b --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON ; then
|
||||
su -s /bin/sh -c "$DAEMON start" $steamcmd_user
|
||||
sleep 5
|
||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
||||
if [ -n "$PID" ]; then
|
||||
log_end_msg 0
|
||||
else
|
||||
log_end_msg 1
|
||||
@ -42,28 +40,27 @@ case "$1" in
|
||||
|
||||
stop)
|
||||
log_daemon_msg "Stopping" "$NAME"
|
||||
kill ${cat $PIDFILE}
|
||||
echo "$NAME."
|
||||
rm -f $PIDFILE
|
||||
su -s /bin/sh -c "$DAEMON stop" $steamcmd_user
|
||||
sleep 5
|
||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
||||
if [ -n "$PID" ]; then
|
||||
log_end_msg 1
|
||||
else
|
||||
log_end_msg 0
|
||||
fi
|
||||
;;
|
||||
|
||||
restart|force-reload)
|
||||
$0 stop && sleep 2 && $0 start
|
||||
restart)
|
||||
su -s /bin/sh -c "$DAEMON restart" $steamcmd_user
|
||||
;;
|
||||
|
||||
status)
|
||||
# Check the status of the process.
|
||||
PID=`ps -ef | grep $DAEMON | grep -v grep | awk '{print $2}'`
|
||||
if [ -n "$PID" ]; then
|
||||
echo "$NAME is running on PID $PID"
|
||||
else
|
||||
echo "$NAME is not running"
|
||||
fi
|
||||
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
|
||||
;;
|
||||
|
||||
*)
|
||||
# For invalid arguments, print the usage message.
|
||||
echo "Usage: $0 {start|stop|restart|status|force-reload}"
|
||||
echo "Usage: $0 {start|stop|restart|status}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -109,8 +109,7 @@ function isTheServerRunning(){
|
||||
# If the server is listenning on his port return 0, else return 1
|
||||
#
|
||||
function isTheServerUp(){
|
||||
PORT="7779"
|
||||
lsof -i |grep $PORT > /dev/null
|
||||
lsof -i |grep $arkserverport > /dev/null
|
||||
result=$?
|
||||
return $result
|
||||
}
|
||||
@ -123,11 +122,11 @@ doStart() {
|
||||
if isTheServerRunning; then
|
||||
echo "The server is already running"
|
||||
else
|
||||
arkserveropts="TheIsland?SessionName=$sessioname?QueryPort=$arkqueryport?Port=$arkserverport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
|
||||
arkserveropts="TheIsland?SessionName=$sessioname?QueryPort=$arkqueryport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
|
||||
thejob="$arkserverroot/$arkserverexec $arkserveropts"
|
||||
screen -dmS "$servicename" $thejob
|
||||
# run the server in background
|
||||
$thejob >/dev/null 2>&1 &
|
||||
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -137,10 +136,10 @@ doStart() {
|
||||
doStop() {
|
||||
if isTheServerRunning; then
|
||||
echo "Stopping server..."
|
||||
screen -X -S "$servicename" -X stuff "^C"
|
||||
sleep 30
|
||||
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
# kill the server with the PID
|
||||
PID=`ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}'`
|
||||
kill -9 $PID
|
||||
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
||||
else
|
||||
echo "The server is already stopped"
|
||||
fi
|
||||
@ -151,10 +150,10 @@ doStop() {
|
||||
#
|
||||
doInstall() {
|
||||
mkdir -p $arkserverroot
|
||||
|
||||
|
||||
# Check if steamcmd is installed, and if not, install it
|
||||
if [ ! -e $steamcmdroot/$steamcmdexec ]; then
|
||||
mkdir -p $steamcmdroot
|
||||
mkdir -p $steamcmdroot
|
||||
cd /tmp
|
||||
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
|
||||
tar -xvzf steamcmd_linux.tar.gz -C $steamcmdroot
|
||||
@ -162,7 +161,7 @@ doInstall() {
|
||||
./steamcmd.sh +quit
|
||||
echo "SteamCMD was installed in $steamcmdroot"
|
||||
fi
|
||||
|
||||
|
||||
cd $steamcmdroot
|
||||
# install the server
|
||||
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit
|
||||
|
||||
@ -8,7 +8,7 @@ sessioname=YourLinuxSessionName
|
||||
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
|
||||
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
|
||||
arkqueryport="27016" # ARK query port (default 27016)
|
||||
arkserverport="7779" # ARK server port (default 7779)
|
||||
arkserverport="7778" # ARK server port (default 7778)
|
||||
arkserverpass="SERVERPASSWORD" # ARK server password, empty: no password required to login
|
||||
arkserverapass="ADMINPASSWORD" # ARK server admin password, KEEP IT SAFE!
|
||||
|
||||
|
||||
@ -5,22 +5,28 @@ if [ ! -z $1 ]; then
|
||||
cp arkmanager /usr/bin/arkmanager
|
||||
chmod +x /usr/bin/arkmanager
|
||||
|
||||
# Copy arkdaemon to /etc/init.d and set permissions
|
||||
# Copy arkdaemon to /etc/init.d ,set permissions and add it to boot
|
||||
cp arkdaemon /etc/init.d/arkdaemon
|
||||
chmod +x /etc/init.d/arkdaemon
|
||||
# add to startup if the system use sysinit
|
||||
if [ test -x /usr/sbin/update-rc.d ]; then
|
||||
update-rc.d arkdaemon defaults
|
||||
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
|
||||
echo "update-rc.d -f arkdaemon remove"
|
||||
fi
|
||||
|
||||
# Create a folder in /var/log to let Ark tools write its own log files
|
||||
mkdir -p /var/log/arktools
|
||||
chown $1 /var/log/arktools
|
||||
|
||||
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
|
||||
mkdir -p /etc/arkmanager
|
||||
if [ -f /etc/arkmanager/arkmanager.cfg ]; then
|
||||
mkdir -p /etc/arkmanager
|
||||
cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg
|
||||
chown $1 /etc/arkmanager/arkmanager.cfg
|
||||
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it.";
|
||||
exit 2
|
||||
else
|
||||
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it.";
|
||||
exit 2
|
||||
cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg
|
||||
chown $1 /etc/arkmanager/arkmanager.cfg
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user