mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-17 04:48:26 +00:00
Merge remote-tracking branch 'upstream/master'
Conflicts: README.md tools/arkdaemon tools/arkmanager tools/install.sh
This commit is contained in:
commit
63a7b7f069
25
README.md
25
README.md
@ -11,7 +11,11 @@ We assume you have created the `steam` user to store steamcmd and your ARK serve
|
||||
## Requirements
|
||||
Use this command to install soft requirement on your system
|
||||
```
|
||||
apt-get install screen unzip
|
||||
# Debian based/ Ubuntu
|
||||
apt-get install screen
|
||||
|
||||
# RHEL / CentOS / Fedora
|
||||
yum install screen
|
||||
```
|
||||
|
||||
Edit /etc/sysctl.conf and set:
|
||||
@ -23,27 +27,24 @@ Edit /etc/security/limits.conf and set these limits:
|
||||
* soft nofile 100000
|
||||
* hard nofile 100000
|
||||
```
|
||||
Add the following line to /etc/pam.d/common-session:
|
||||
Add the following line to `/etc/pam.d/common-session` (Debian/Ubuntu) or `/etc/pam.d/system-auth` (RHEL/CentOS/Fedora):
|
||||
```
|
||||
session required pam_limits.so
|
||||
```
|
||||
|
||||
After these edits, you'll need to restart your bash session or reconnect to your SSH shell to make the changes effective.
|
||||
|
||||
## Install ARK Server Tools
|
||||
|
||||
To install ARK Server Tools run these commands:
|
||||
To install ARK Server Tools run this command:
|
||||
|
||||
```sh
|
||||
cd ~
|
||||
wget https://github.com/FezVrasta/ark-server-tools/archive/master.zip
|
||||
unzip master.zip
|
||||
cd ark-server-tools-master/tools
|
||||
chmod u+x install.sh
|
||||
sudo sh install.sh steam
|
||||
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/master/netinstall.sh | sudo bash -s steam
|
||||
```
|
||||
|
||||
NB: You may want to change the `install.sh` parameter to fit your steam user if different from `steam`.
|
||||
NB: You may want to change the `bash -s` 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.
|
||||
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.
|
||||
|
||||
## Configure ARK Server
|
||||
|
||||
@ -83,7 +84,7 @@ Check if a new version of the server is available but not apply it
|
||||
broadcast a message to ARK server chat
|
||||
|
||||
```sh
|
||||
arkmanager boradcast "here your message"
|
||||
arkmanager broadcast "your message here"
|
||||
```
|
||||
|
||||
## Credits
|
||||
|
||||
35
netinstall.sh
Normal file
35
netinstall.sh
Normal file
@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Net Installer, used with curl
|
||||
#
|
||||
|
||||
# Download and untar installation files
|
||||
cd /tmp
|
||||
wget https://github.com/FezVrasta/ark-server-tools/archive/master.tar.gz
|
||||
tar -zxvf master.tar.gz
|
||||
|
||||
# Install ARK Server Tools
|
||||
cd ark-server-tools-master/tools
|
||||
chmod +x install.sh
|
||||
sh install.sh $1
|
||||
|
||||
status = $?
|
||||
|
||||
# Remove the installation files
|
||||
rm -f master.tar.gz
|
||||
rm -rf /tmp/ark-server-tools-master
|
||||
|
||||
|
||||
if [ $status == 0 ]; then
|
||||
echo "ARK Server Tools were correctly installed in your system inside the home directory of $1!"
|
||||
fi
|
||||
|
||||
if [ $status == 1 ]; then
|
||||
echo "Something where wrong :("
|
||||
fi
|
||||
|
||||
if [ $status == 2 ]; then
|
||||
echo "WARNING: 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."
|
||||
echo "ARK Server Tools were correctly installed in your system inside the home directory of $1!"
|
||||
fi
|
||||
@ -9,6 +9,8 @@
|
||||
#
|
||||
### 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
|
||||
|
||||
|
||||
112
tools/arkmanager
112
tools/arkmanager
@ -14,8 +14,10 @@ fi
|
||||
#---------------------
|
||||
# Variables
|
||||
#---------------------
|
||||
|
||||
# Global variables
|
||||
source /etc/arkmanager/arkmanager.cfg
|
||||
|
||||
# Local variables
|
||||
info=""
|
||||
thejob=""
|
||||
@ -35,10 +37,11 @@ function testfunction(){
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
# Check if a new version is available but not apply it
|
||||
#
|
||||
function checkForUpdate(){
|
||||
#
|
||||
# Check if a new version is available but not apply it
|
||||
#
|
||||
if isUpdateNeeded; then
|
||||
echo "Current version:" $instver
|
||||
echo "Available version:" $bnumber
|
||||
@ -48,18 +51,20 @@ function checkForUpdate(){
|
||||
echo "No update available"
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Set the new current version in a file
|
||||
#
|
||||
function setCurrentVersion(){
|
||||
#
|
||||
# set the new current version in a file
|
||||
#
|
||||
cd $arkserverroot
|
||||
echo $bnumber > arkversion
|
||||
}
|
||||
|
||||
#
|
||||
# Check if the server need to be updated
|
||||
# Return 0 if update is needed, else return 1
|
||||
#
|
||||
function isUpdateNeeded(){
|
||||
#
|
||||
# Check if the server need to be updated
|
||||
# Return 0 if update is needed, else return 1
|
||||
#
|
||||
getCurrentVersion
|
||||
getAvailableVersion
|
||||
if [ "$bnumber" -eq "$instver" ]; then
|
||||
@ -69,65 +74,52 @@ function isUpdateNeeded(){
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
# Return the current version number
|
||||
#
|
||||
function getCurrentVersion(){
|
||||
#
|
||||
# Return the current version number
|
||||
#
|
||||
cd $arkserverroot
|
||||
touch arkversion # If the file doesn't exist
|
||||
instver=`cat "arkversion"`
|
||||
return $instver
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
# Get the current available server version on steamdb
|
||||
#
|
||||
function getAvailableVersion(){
|
||||
#
|
||||
# Get the current available server version on steamdb
|
||||
#
|
||||
bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14`
|
||||
return $bnumber
|
||||
}
|
||||
|
||||
#
|
||||
# Check id the server process is alive
|
||||
#
|
||||
function isTheServerRunning(){
|
||||
#
|
||||
# Check id the server process is alive
|
||||
#
|
||||
SERVICE="ShooterGameServer"
|
||||
ps aux | grep -v grep | grep $SERVICE > /dev/null
|
||||
result=$?
|
||||
return $result
|
||||
}
|
||||
|
||||
function IsTheServerUp(){
|
||||
#
|
||||
# Check if the server is up and visible in steam server list
|
||||
# If the server is listenning on his port return 0, else return 1
|
||||
#
|
||||
#
|
||||
# Check if the server is up and visible in steam server list
|
||||
# If the server is listenning on his port return 0, else return 1
|
||||
#
|
||||
function isTheServerUp(){
|
||||
PORT="7779"
|
||||
lsof -i |grep $PORT > /dev/null
|
||||
result=$?
|
||||
return $result
|
||||
}
|
||||
|
||||
# To speedup stuff, if you have not specified a command or the command is invalid, we skip everything and just give you the usage message
|
||||
case "$1" in
|
||||
start);;
|
||||
stop);;
|
||||
restart);;
|
||||
install);;
|
||||
update);;
|
||||
checkupdate);;
|
||||
broadcast);;
|
||||
status);;
|
||||
*)
|
||||
echo "use arkmanager <start|stop|restart|install|update|broadcast|status|checkupdate>"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
#
|
||||
# start function
|
||||
#
|
||||
doStart() {
|
||||
#
|
||||
# start function
|
||||
#
|
||||
if isTheServerRunning; then
|
||||
echo "The server is already running"
|
||||
else
|
||||
@ -135,26 +127,29 @@ doStart() {
|
||||
thejob="$arkserverroot/$arkserverexec $arkserveropts"
|
||||
screen -dmS "$servicename" $thejob
|
||||
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# stop the ARK server
|
||||
#
|
||||
doStop() {
|
||||
#
|
||||
# stop the ARK server
|
||||
#
|
||||
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"
|
||||
else
|
||||
echo "The server is already stopped"
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# install of ARK server
|
||||
#
|
||||
doInstall() {
|
||||
#
|
||||
# install of ARK server
|
||||
#
|
||||
if [ ! -d "$arkserverroot" ]; then
|
||||
mkdir $arkserverroot
|
||||
fi
|
||||
@ -166,10 +161,10 @@ doInstall() {
|
||||
setCurrentVersion
|
||||
}
|
||||
|
||||
#
|
||||
# Stop the server, update it and then start it back.
|
||||
#
|
||||
doUpdate() {
|
||||
#
|
||||
# Stop the server, update it and then start it back.
|
||||
#
|
||||
cd $arkserverroot
|
||||
|
||||
if isUpdateNeeded; then
|
||||
@ -185,6 +180,7 @@ doUpdate() {
|
||||
echo "$bnumber" > "$arkserverroot/arkversion"
|
||||
cd $steamcmdroot
|
||||
echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
|
||||
# we restart the server only if it was started before the update
|
||||
if [ $serverWasAlive -eq 1 ]; then
|
||||
@ -197,10 +193,13 @@ doUpdate() {
|
||||
else
|
||||
echo "No update available"
|
||||
echo "$timestamp: No update needed." >> "$logdir/update.log"
|
||||
tail -n 1 "$logdir/update.log"
|
||||
fi;
|
||||
}
|
||||
|
||||
#broadcast info
|
||||
#
|
||||
# Broadcast message to server
|
||||
#
|
||||
doInfo() {
|
||||
if [ ! -z $1 ]; then
|
||||
info=$1
|
||||
@ -208,6 +207,9 @@ doInfo() {
|
||||
screen -S "$servicename" -p 0 -X stuff "broadcast $info $(printf \\r)"
|
||||
}
|
||||
|
||||
#
|
||||
# Print the status of the server (running? online? version?)
|
||||
#
|
||||
printStatus(){
|
||||
if isTheServerRunning ;then
|
||||
echo -e "$NORMAL" "Server running:" "$GREEN" "Yes"
|
||||
@ -215,13 +217,14 @@ printStatus(){
|
||||
echo -e "$NORMAL" "Server running:" "$RED" "No"
|
||||
fi
|
||||
|
||||
if IsTheServerUp ;then
|
||||
if isTheServerUp ;then
|
||||
echo -e "$NORMAL" "Server online:" "$GREEN" " Yes"
|
||||
else
|
||||
echo -e "$NORMAL" "Server online:" "$RED" " No"
|
||||
fi
|
||||
getCurrentVersion
|
||||
echo -e "$NORMAL" "Server version:" "$GREEN" $instver
|
||||
echo -e "$NORMAL"
|
||||
|
||||
}
|
||||
|
||||
@ -238,10 +241,13 @@ case "$1" in
|
||||
restart)
|
||||
doStop
|
||||
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
sleep 10
|
||||
doStart
|
||||
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
echo "$timestamp: restart" >> "$logdir/arkserver.log"
|
||||
tail -n 1 "$logdir/arkserver.log"
|
||||
;;
|
||||
install)
|
||||
doInstall
|
||||
|
||||
@ -13,14 +13,20 @@ if [ ! -z $1 ]; then
|
||||
mkdir -p /var/log/arktools
|
||||
chown $1 /var/log/arktools
|
||||
|
||||
# Copy arkmanager.cfg inside linux configuation folder
|
||||
mkdir /etc/arkmanager
|
||||
mv arkmanager.cfg /etc/arkmanager/arkmanager.cfg
|
||||
chown $1 /etc/arkmanager/arkmanager.cfg
|
||||
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
|
||||
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
|
||||
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
|
||||
fi
|
||||
|
||||
else
|
||||
echo "You must specify your system steam user who own steamcmd directory to install ARK Tools."
|
||||
echo "Usage: ./install.sh steam"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user