mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-17 04:48:26 +00:00
initial release, prepared part of the readme, a simple daemon, and an improved arkmanager script
This commit is contained in:
parent
915c4c67cd
commit
9e1d531033
34
README.md
Normal file
34
README.md
Normal file
@ -0,0 +1,34 @@
|
||||
# ARK: Survival Evolved Linux Server Tools
|
||||
|
||||
## Pre-requisites
|
||||
|
||||
To install ARK Server Tools you must have already installed **SteamCMD** following this guide:
|
||||
|
||||
https://developer.valvesoftware.com/wiki/SteamCMD#Linux
|
||||
|
||||
We assume you have created the `steam` user to store steamcmd and your ARK server.
|
||||
|
||||
## Install ARK Server Tools
|
||||
|
||||
To install ARK Server Tools run these commands:
|
||||
|
||||
```sh
|
||||
cd ~
|
||||
wget https://github.com/FezVrasta/ark-server-tools/archive/master.zip
|
||||
unzip master.zip -d arktools
|
||||
cd arktools/tools
|
||||
chmod u+x install.sh
|
||||
./install.sh steam
|
||||
```
|
||||
|
||||
NB: You may want to change the `install.sh` parameter to fit your steam user if different from `steam`.
|
||||
|
||||
This will copy the `arkmanager` and the `arkdaemon` to the proper directories and will create an empty log directory in `/var/log` for ARK Server Tools.
|
||||
|
||||
## Install ARK Server
|
||||
|
||||
To install ARK Server just run this command:
|
||||
|
||||
```sh
|
||||
arkmanager install
|
||||
```
|
||||
BIN
tools/.DS_Store
vendored
Normal file
BIN
tools/.DS_Store
vendored
Normal file
Binary file not shown.
43
tools/arkdaemon
Normal file
43
tools/arkdaemon
Normal file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
NAME=arkmanager_daemon
|
||||
DESC="ARK manager daemon used to start the server and keep it updated"
|
||||
PIDFILE="/var/run/${NAME}.pid"
|
||||
LOGFILE="/var/log/${NAME}.log"
|
||||
|
||||
DAEMON="sh /usr/bin/arkmanager daemon"
|
||||
|
||||
START_OPTS="--start --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON}"
|
||||
STOP_OPTS="--stop --pidfile ${PIDFILE}"
|
||||
|
||||
test -x $DAEMON || exit 0
|
||||
|
||||
set -e
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting ${DESC}: "
|
||||
start-stop-daemon $START_OPTS >> $LOGFILE
|
||||
echo "$NAME."
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping $DESC: "
|
||||
start-stop-daemon $STOP_OPTS
|
||||
echo "$NAME."
|
||||
rm -f $PIDFILE
|
||||
;;
|
||||
restart|force-reload)
|
||||
echo -n "Restarting $DESC: "
|
||||
start-stop-daemon $STOP_OPTS
|
||||
sleep 1
|
||||
start-stop-daemon $START_OPTS >> $LOGFILE
|
||||
echo "$NAME."
|
||||
;;
|
||||
*)
|
||||
N=/etc/init.d/$NAME
|
||||
echo "Usage: $N {start|stop|restart|force-reload}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
120
tools/arkmanager
Normal file
120
tools/arkmanager
Normal file
@ -0,0 +1,120 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ARK: survival evolved manager
|
||||
#
|
||||
# Original author: LeXaT
|
||||
# Maintainer: FezVrasta
|
||||
|
||||
# config SteamCMD
|
||||
steamcmdroot="/home/steam/steamcmd"
|
||||
steamcmdexec="steamcmd.sh"
|
||||
steamuser="anonymous"
|
||||
steampass=""
|
||||
|
||||
# config Server
|
||||
arkserverroot="/home/steam/ARK"
|
||||
arkserverexec="ShooterGameServer"
|
||||
arkserversession="GameServerSetup"
|
||||
arkserverport="27016"
|
||||
arkserverpass="SERVERPASSWORD"
|
||||
akrserverapass="ADMINPASSWORD"
|
||||
|
||||
# config Service
|
||||
servicename="arkserv"
|
||||
logdir="$arkserverroot/logs"
|
||||
|
||||
# init
|
||||
if [ ! -d "$arkserverroot" ]; then
|
||||
mkdir $arkserverroot
|
||||
fi
|
||||
|
||||
info=""
|
||||
thejob=""
|
||||
update=1
|
||||
timestamp=$( date +%T )
|
||||
cd $arkserverroot
|
||||
instver=`cat "arkversion"`
|
||||
cd $steamcmdroot
|
||||
bnumber=`./$steamcmdexec +login anonymous +app_info_print "376030" +quit | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14`
|
||||
|
||||
case "$bnumber" in
|
||||
*$instver*)
|
||||
update=0
|
||||
;; esac
|
||||
|
||||
# start function
|
||||
doStart() {
|
||||
arkserveropts="TheIsland?SessionName=$arkserversession?QueryPort=$arkserverport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
|
||||
thejob="$arkserverroot/$arkserverexec $arkserveropts"
|
||||
screen -dmS "$servicename" "$thejob"
|
||||
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
||||
}
|
||||
|
||||
# stop function
|
||||
doStop() {
|
||||
screen -S "$servicename" -p 0 -X stuff "quit$(printf \\r)"
|
||||
# screen -S "$servicename" -X quit
|
||||
sleep 30
|
||||
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
||||
}
|
||||
|
||||
# update function
|
||||
doUpdate() {
|
||||
if (($update == 1))
|
||||
then
|
||||
if [ -f "$arkserverroot/arkupdate.timed" ]
|
||||
then
|
||||
doStop
|
||||
cd $steamcmdroot
|
||||
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update 376030 validate +quit
|
||||
cd $logdir
|
||||
echo "$bnumber" > "$arkserverroot/arkversion"
|
||||
cd $steamcmdroot
|
||||
doStart
|
||||
echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log"
|
||||
mail -a $logdir/update.log -s "Update-Log" mail@domain.com < /dev/null
|
||||
rm "$arkserverroot/arkupdate.timed"
|
||||
else
|
||||
touch "$arkserverroot/arkupdate.timed"
|
||||
info="There is a update for ark, server will restart in 60mins!!!!!"
|
||||
doInfo $info
|
||||
fi;
|
||||
else
|
||||
echo "$timestamp: No update needed." >> "$logdir/update.log"
|
||||
fi;
|
||||
}
|
||||
|
||||
#broadcast info
|
||||
doInfo() {
|
||||
if [ ! -z $1 ]; then
|
||||
info=$1
|
||||
fi
|
||||
screen -S "$servicename" -p 0 -X stuff "broadcast $info $(printf \\r)"
|
||||
}
|
||||
|
||||
# parameter select
|
||||
case "$1" in
|
||||
start)
|
||||
doStart
|
||||
;;
|
||||
stop)
|
||||
doStop
|
||||
;;
|
||||
restart)
|
||||
doStop
|
||||
doStart
|
||||
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
||||
sleep 60
|
||||
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
||||
echo "$timestamp: restart" >> "$logdir/arkserver.log"
|
||||
;;
|
||||
update)
|
||||
doUpdate
|
||||
;;
|
||||
broadcast)
|
||||
doInfo "$2"
|
||||
;;
|
||||
*)
|
||||
echo "use ./arkserver.sh <start|stop|restart|update>"
|
||||
;;
|
||||
esac
|
||||
19
tools/install.sh
Normal file
19
tools/install.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! -z $1 ]; then
|
||||
# Copy arkmanager to /usr/bin and set permissions
|
||||
cp arkmanager /usr/bin/arkmanager
|
||||
chmod +x /usr/bin/arkmanager
|
||||
|
||||
# Copy arkdaemon to /etc/init.d and set permissions
|
||||
cp arkdaemon /etc/init.d/arkdaemon
|
||||
chmod +x /etc/init.d/arkdaemon
|
||||
|
||||
# Create a folder in /var/log to let Ark tools write its own log files
|
||||
mkdir /var/log/arktools
|
||||
chown $1 /var/log/arktools
|
||||
else
|
||||
echo "You must specify your steam user to install ARK Tools. Usage: ./install.sh steam"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Loading…
x
Reference in New Issue
Block a user