Compare commits
42 commits
Author | SHA1 | Date | |
---|---|---|---|
94e1ab98bd | |||
59d9699760 | |||
87d566639d | |||
4fb984b9e2 | |||
a217aa5a86 | |||
665137a9f0 | |||
|
76fd195f91 | ||
|
214494a322 | ||
|
119915c382 | ||
|
4fa41cd219 | ||
|
d82ef8c3d2 | ||
|
142c15a438 | ||
|
50db7b51b9 | ||
|
dcf915587f | ||
|
4b74e14d4a | ||
|
3ada6fe319 | ||
|
d177be717c | ||
|
b03fff8ddb | ||
|
22e5a21e07 | ||
|
6e5e3c2b81 | ||
|
1608d2c603 | ||
|
fe31ba1f82 | ||
|
7a16e83b09 | ||
|
6a93408761 | ||
|
96c6a3f757 | ||
|
a179f36264 | ||
|
a9e52d1dca | ||
|
536e5e831c | ||
|
575921cf79 | ||
|
94f2005ba7 | ||
|
67a4e95509 | ||
|
7c45399b48 | ||
|
57213b0d39 | ||
|
1b24a83708 | ||
|
16aaa29f57 | ||
|
ecd3ec73d0 | ||
|
4165d86e46 | ||
|
3629b0d1b9 | ||
|
8b389d0bfb | ||
|
ad1098fb34 | ||
|
5f75007061 | ||
|
55ef946ea2 |
9 changed files with 235 additions and 61 deletions
51
Dockerfile
51
Dockerfile
|
@ -1,4 +1,4 @@
|
||||||
FROM ubuntu:14.04
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
MAINTAINER TuRzAm
|
MAINTAINER TuRzAm
|
||||||
|
|
||||||
|
@ -17,20 +17,24 @@ ENV NBPLAYERS 70
|
||||||
ENV UPDATEONSTART 1
|
ENV UPDATEONSTART 1
|
||||||
# if the server is backup when start with docker start
|
# if the server is backup when start with docker start
|
||||||
ENV BACKUPONSTART 1
|
ENV BACKUPONSTART 1
|
||||||
# Nb minute between auto update (warm) (-1 : no auto update)
|
# Tag on github for ark server tools
|
||||||
ENV AUTOUPDATE -1
|
ENV GIT_TAG v1.6.56
|
||||||
# Nb minute between auto backup (-1 : no auto backup)
|
|
||||||
ENV AUTOBACKUP -1
|
|
||||||
# branch on github for ark server tools
|
|
||||||
ENV BRANCH master
|
|
||||||
# Server PORT (you can't remap with docker, it doesn't work)
|
# Server PORT (you can't remap with docker, it doesn't work)
|
||||||
ENV SERVERPORT 27015
|
ENV SERVERPORT 27015
|
||||||
# Steam port (you can't remap with docker, it doesn't work)
|
# Steam port (you can't remap with docker, it doesn't work)
|
||||||
ENV STEAMPORT 7778
|
ENV STEAMPORT 7778
|
||||||
|
# if the server should backup after stopping
|
||||||
|
ENV BACKUPONSTOP 0
|
||||||
|
# If the server warn the players before stopping
|
||||||
|
ENV WARNONSTOP 0
|
||||||
|
# UID of the user steam
|
||||||
|
ENV UID 1000
|
||||||
|
# GID of the user steam
|
||||||
|
ENV GID 1000
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN apt-get update &&\
|
RUN apt-get update &&\
|
||||||
apt-get install -y curl lib32gcc1 lsof git
|
apt-get install -y curl lib32gcc1 lsof git sudo
|
||||||
|
|
||||||
# Enable passwordless sudo for users under the "sudo" group
|
# Enable passwordless sudo for users under the "sudo" group
|
||||||
RUN sed -i.bkp -e \
|
RUN sed -i.bkp -e \
|
||||||
|
@ -48,28 +52,37 @@ RUN usermod -a -G sudo steam
|
||||||
|
|
||||||
# Copy & rights to folders
|
# Copy & rights to folders
|
||||||
COPY run.sh /home/steam/run.sh
|
COPY run.sh /home/steam/run.sh
|
||||||
|
COPY user.sh /home/steam/user.sh
|
||||||
|
COPY crontab /home/steam/crontab
|
||||||
COPY arkmanager-user.cfg /home/steam/arkmanager.cfg
|
COPY arkmanager-user.cfg /home/steam/arkmanager.cfg
|
||||||
|
|
||||||
|
RUN touch /root/.bash_profile
|
||||||
RUN chmod 777 /home/steam/run.sh
|
RUN chmod 777 /home/steam/run.sh
|
||||||
|
RUN chmod 777 /home/steam/user.sh
|
||||||
RUN mkdir /ark
|
RUN mkdir /ark
|
||||||
|
|
||||||
|
|
||||||
# We use the git method, because api github has a limit ;)
|
# We use the git method, because api github has a limit ;)
|
||||||
RUN git clone -b $BRANCH https://github.com/FezVrasta/ark-server-tools.git /home/steam/ark-server-tools
|
RUN git clone https://github.com/FezVrasta/ark-server-tools.git /home/steam/ark-server-tools
|
||||||
|
WORKDIR /home/steam/ark-server-tools/
|
||||||
|
RUN git checkout $GIT_TAG
|
||||||
# Install
|
# Install
|
||||||
WORKDIR /home/steam/ark-server-tools/tools
|
WORKDIR /home/steam/ark-server-tools/tools
|
||||||
RUN chmod +x install.sh
|
RUN chmod +x install.sh
|
||||||
RUN ./install.sh steam
|
RUN ./install.sh steam
|
||||||
|
|
||||||
# Define default config file in /ark
|
# Allow crontab to call arkmanager
|
||||||
|
RUN ln -s /usr/local/bin/arkmanager /usr/bin/arkmanager
|
||||||
|
|
||||||
|
# Define default config file in /etc/arkmanager
|
||||||
COPY arkmanager-system.cfg /etc/arkmanager/arkmanager.cfg
|
COPY arkmanager-system.cfg /etc/arkmanager/arkmanager.cfg
|
||||||
|
|
||||||
|
# Define default config file in /etc/arkmanager
|
||||||
|
COPY instance.cfg /etc/arkmanager/instances/main.cfg
|
||||||
|
|
||||||
RUN chown steam -R /ark && chmod 755 -R /ark
|
RUN chown steam -R /ark && chmod 755 -R /ark
|
||||||
|
|
||||||
|
#USER steam
|
||||||
|
|
||||||
USER steam
|
|
||||||
|
|
||||||
# download steamcmd
|
# download steamcmd
|
||||||
RUN mkdir /home/steam/steamcmd &&\
|
RUN mkdir /home/steam/steamcmd &&\
|
||||||
|
@ -78,13 +91,17 @@ RUN mkdir /home/steam/steamcmd &&\
|
||||||
|
|
||||||
|
|
||||||
# First run is on anonymous to download the app
|
# First run is on anonymous to download the app
|
||||||
RUN /home/steam/steamcmd/steamcmd.sh +login anonymous +quit
|
# We can't download from docker hub anymore -_-
|
||||||
|
#RUN /home/steam/steamcmd/steamcmd.sh +login anonymous +quit
|
||||||
|
|
||||||
|
|
||||||
EXPOSE ${STEAMPORT} 32330 ${SERVERPORT}
|
EXPOSE ${STEAMPORT} 32330 ${SERVERPORT}
|
||||||
|
# Add UDP
|
||||||
|
EXPOSE ${STEAMPORT}/udp ${SERVERPORT}/udp
|
||||||
|
|
||||||
VOLUME /ark
|
VOLUME /ark
|
||||||
|
|
||||||
|
# Change the working directory to /arkd
|
||||||
|
WORKDIR /ark
|
||||||
|
|
||||||
# Update game launch the game.
|
# Update game launch the game.
|
||||||
ENTRYPOINT ["/home/steam/run.sh"]
|
ENTRYPOINT ["/home/steam/user.sh"]
|
||||||
|
|
79
README.md
79
README.md
|
@ -4,15 +4,15 @@ Docker build for managing an ARK: Survival Evolved server.
|
||||||
|
|
||||||
This image uses [Ark Server Tools](https://github.com/FezVrasta/ark-server-tools) to manage an ark server.
|
This image uses [Ark Server Tools](https://github.com/FezVrasta/ark-server-tools) to manage an ark server.
|
||||||
|
|
||||||
*If you use an old volume, delete arkmanager.cfg to get the new configuration file.*
|
*If you use an old volume, get the new arkmanager.cfg in the template directory.*
|
||||||
__Don't forger to use `docker pull turzam/ark` to get the latest version of the image__
|
__Don't forget to use `docker pull turzam/ark` to get the latest version of the image__
|
||||||
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Easy install (no steamcmd / lib32... to install)
|
- Easy install (no steamcmd / lib32... to install)
|
||||||
- Use Ark Server Tools : update/install/start/backup/rcon
|
- Use Ark Server Tools : update/install/start/backup/rcon/mods
|
||||||
- Auto update (on start or on timer)
|
- Easy crontab configuration
|
||||||
- Auto backup (on start or on timer)
|
- Easy access to ark config file
|
||||||
- Mods handling (via Ark Server Tools)
|
- Mods handling (via Ark Server Tools)
|
||||||
- `Docker stop` is a clean stop
|
- `Docker stop` is a clean stop
|
||||||
|
|
||||||
|
@ -22,14 +22,11 @@ Fast & Easy server setup :
|
||||||
|
|
||||||
You can map the ark volume to access config files :
|
You can map the ark volume to access config files :
|
||||||
`docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -e SESSIONNAME=myserver -v /my/path/to/ark:/ark --name ark turzam/ark`
|
`docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -e SESSIONNAME=myserver -v /my/path/to/ark:/ark --name ark turzam/ark`
|
||||||
Then you can edit */my/path/to/ark/arkcmanager.cfg* (the values override GameUserSetting.ini) and */my/path/to/ark/server/ShooterGame/Saved/Config/LinuxServer/[GameUserSetting.ini/Game.ini]*
|
Then you can edit */my/path/to/ark/arkmanager.cfg* (the values override GameUserSetting.ini) and */my/path/to/ark/[GameUserSetting.ini/Game.ini]*
|
||||||
|
|
||||||
You can manager your server with rcon if you map the rcon port (you can rebind the rcon port with docker):
|
You can manager your server with rcon if you map the rcon port (you can rebind the rcon port with docker):
|
||||||
`docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver --name ark turzam/ark`
|
`docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver --name ark turzam/ark`
|
||||||
|
|
||||||
You can define a server that updates itself every 2 hours (with 1 hour warning) and backups itself every hours:
|
|
||||||
`docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -e SESSIONNAME=myserver -e AUTOBACKUP=60 -e AUTOUPDATE=120 -e WARNMINUTE=60 --name ark turzam/ark`
|
|
||||||
|
|
||||||
You can change server and steam port to allow multiple servers on same host:
|
You can change server and steam port to allow multiple servers on same host:
|
||||||
*(You can't just rebind the port with docker. It won't work, you need to change STEAMPORT & SERVERPORT variable)*
|
*(You can't just rebind the port with docker. It won't work, you need to change STEAMPORT & SERVERPORT variable)*
|
||||||
`docker run -d -p 7779:7779 -p 7779:7779/udp -p 27016:27016 -p 27016:27016/udp -p 32331:32330 -e SESSIONNAME=myserver2 -e SERVERPORT=27016 -e STEAMPORT=7779 --name ark2 turzam/ark`
|
`docker run -d -p 7779:7779 -p 7779:7779/udp -p 27016:27016 -p 27016:27016/udp -p 32331:32330 -e SESSIONNAME=myserver2 -e SERVERPORT=27016 -e STEAMPORT=7779 --name ark2 turzam/ark`
|
||||||
|
@ -37,6 +34,9 @@ You can change server and steam port to allow multiple servers on same host:
|
||||||
You can check your server with :
|
You can check your server with :
|
||||||
`docker exec ark arkmanager status`
|
`docker exec ark arkmanager status`
|
||||||
|
|
||||||
|
You can manually update your mods:
|
||||||
|
`docker exec ark arkmanager update --update-mods`
|
||||||
|
|
||||||
You can manually update your server:
|
You can manually update your server:
|
||||||
`docker exec ark arkmanager update --force`
|
`docker exec ark arkmanager update --force`
|
||||||
|
|
||||||
|
@ -55,13 +55,28 @@ You can use rcon command via docker :
|
||||||
|
|
||||||
__You can check all available command for arkmanager__ [here](https://github.com/FezVrasta/ark-server-tools/blob/master/README.md)
|
__You can check all available command for arkmanager__ [here](https://github.com/FezVrasta/ark-server-tools/blob/master/README.md)
|
||||||
|
|
||||||
|
You can easily configure automatic update and backup.
|
||||||
|
If you edit the file `/my/path/to/ark/crontab` you can add your crontab job.
|
||||||
|
For example :
|
||||||
|
`# Update the server every hours`
|
||||||
|
`0 * * * * arkmanager update --warn --update-mods >> /ark/log/crontab.log 2>&1`
|
||||||
|
`# Backup the server each day at 00:00 `
|
||||||
|
`0 0 * * * arkmanager backup >> /ark/log/crontab.log 2>&1`
|
||||||
|
*You can check [this website](http://www.unix.com/man-page/linux/5/crontab/) for more information on cron.*
|
||||||
|
|
||||||
|
To add mods, you only need to change the variable ark_GameModIds in *arkmanager.cfg* with a list of your modIds (like this `ark_GameModIds="987654321,1234568"`). If UPDATEONSTART is enable, just restart your docker or use `docker exec ark arkmanager update --update-mods`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Recommended Usage
|
## Recommended Usage
|
||||||
- First run
|
- First run
|
||||||
`docker run -it -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver -e ADMINPASSWORD="mypasswordadmin" -e AUTOUPDATE=120 -e AUTOBACKUP=60 -e WARNMINUTE=30 -v /my/path/to/ark:/ark --name ark turzam/ark`
|
`docker run -it -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver -e ADMINPASSWORD="mypasswordadmin" -e AUTOUPDATE=120 -e AUTOBACKUP=60 -e WARNMINUTE=30 -v /my/path/to/ark:/ark --name ark turzam/ark`
|
||||||
- Wait for ark to be downloaded installed and launched, then Ctrl+C to stop the server.
|
- Wait for ark to be downloaded installed and launched, then Ctrl+C to stop the server.
|
||||||
- Modify */my/path/to/ark/server/ShooterGame/Saved/Config/LinuxServer/GameUserSetting.ini and Game.ini*
|
- Edit */my/path/to/ark/GameUserSetting.ini and Game.ini*
|
||||||
|
- Edit */my/path/to/ark/arkserver.cfg* to add mods and configure warning time.
|
||||||
|
- Add auto update every day and autobackup by editing */my/path/to/ark/crontab* with this lines :
|
||||||
|
`0 0 * * * arkmanager update --warn --update-mods >> /ark/log/crontab.log 2>&1`
|
||||||
|
`0 0 * * * arkmanager backup >> /ark/log/crontab.log 2>&1`
|
||||||
- `docker start ark`
|
- `docker start ark`
|
||||||
- Check your server with :
|
- Check your server with :
|
||||||
`docker exec ark arkmanager status`
|
`docker exec ark arkmanager status`
|
||||||
|
@ -84,14 +99,17 @@ Steam server port (can't rebind with docker, it doesn't work) (default : 7778)
|
||||||
+ __BACKUPONSTART__
|
+ __BACKUPONSTART__
|
||||||
1 : Backup the server when the container is started. 0: no backup (default : 1)
|
1 : Backup the server when the container is started. 0: no backup (default : 1)
|
||||||
+ __UPDATEPONSTART__
|
+ __UPDATEPONSTART__
|
||||||
1 : Update the server when the container is started. 0: no update (default : 1)
|
1 : Update the server when the container is started. 0: no update (default : 1)
|
||||||
+ __AUTOUPDATE__
|
+ __BACKUPONSTOP__
|
||||||
Number of minute between each check for une newer version (-1 disable auto update) (default : -1)
|
1 : Backup the server when the container is stopped. 0: no backup (default : 0)
|
||||||
Auto update is set to --warn and warn the players 30 minutes before update (default, can be changed in /ark/arkmanager.cfg).
|
+ __WARNONSTOP__
|
||||||
+ __AUTOBACKUP__
|
1 : Warn the players before the container is stopped. 0: no warning (default : 0)
|
||||||
Number of minute between each backup (-1 disable auto backup) (default : -1)
|
+ __TZ__
|
||||||
+ __WARNMINUTE__
|
Time Zone : Set the container timezone (for crontab). (You can get your timezone posix format with the command `tzselect`. For example, France is "Europe/Paris").
|
||||||
Number of minute to warn the players when auto-update (default : 30)
|
+ __UID__
|
||||||
|
UID of the user used. Owner of the volume /ark
|
||||||
|
+ __GID__
|
||||||
|
GID of the user used. Owner of the volume /ark
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -101,7 +119,14 @@ Number of minute to warn the players when auto-update (default : 30)
|
||||||
+ /ark/server : Server files and data.
|
+ /ark/server : Server files and data.
|
||||||
+ /ark/log : logs
|
+ /ark/log : logs
|
||||||
+ /ark/backup : backups
|
+ /ark/backup : backups
|
||||||
+ /ark/arkmanager.cfg : config file
|
+ /ark/arkmanager.cfg : config file for Ark Server Tools
|
||||||
|
+ /ark/crontab : crontab config file
|
||||||
|
+ /ark/Game.ini : ark game.ini config file
|
||||||
|
+ /ark/GameUserSetting.ini : ark gameusersetting.ini config file
|
||||||
|
+ /ark/template : Default config files
|
||||||
|
+ /ark/template/arkmanager.cfg : default config file for Ark Server Tools
|
||||||
|
+ /ark/template/crontab : default config file for crontab
|
||||||
|
+ /ark/staging : default directory if you use the --downloadonly option when updating.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -123,4 +148,20 @@ Number of minute to warn the players when auto-update (default : 30)
|
||||||
+ 1.1 :
|
+ 1.1 :
|
||||||
- Works with Ark Server Tools 1.4 [See changelog here](https://github.com/FezVrasta/ark-server-tools/releases/tag/v1.4)
|
- Works with Ark Server Tools 1.4 [See changelog here](https://github.com/FezVrasta/ark-server-tools/releases/tag/v1.4)
|
||||||
- Handle mods && auto update mods
|
- Handle mods && auto update mods
|
||||||
|
+ 1.2 :
|
||||||
|
- Remove variable AUTOBACKUP & AUTOUPDATE
|
||||||
|
- Remove variable WARNMINUTE (can now be find in arkmanager.cfg)
|
||||||
|
- Add crontab support
|
||||||
|
- You can now config crontab with the file /your/ark/path/crontab
|
||||||
|
- Add template directory with default config files.
|
||||||
|
- Add documentation on TZ variable.
|
||||||
|
+ 1.3 :
|
||||||
|
- Add BACKUPONSTOP to backup the server when you stop the server (thanks to [fkoester](https://github.com/fkoester))
|
||||||
|
- Add WARNONSTOP to add warning message when you stop the server (default: 60 min)
|
||||||
|
- Works with Ark Server Tools v1.5
|
||||||
|
- Compressing backups so they take up less space
|
||||||
|
- Downloading updates to a staging directory before applying
|
||||||
|
- Added support for automatically updating on restart
|
||||||
|
- Show a spinner when updating
|
||||||
|
- Add UID & GID to set the uid & gid of the user used in the container (and permissions on the volume /ark)
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ steamcmd_appinfocache="/home/steam/Steam/appcache/appinfo.vdf" # cache of t
|
||||||
arkserverroot="/ark/server" # path of your ARK server files (default ~/ARK)
|
arkserverroot="/ark/server" # path of your ARK server files (default ~/ARK)
|
||||||
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
|
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
|
||||||
arkbackupdir="/ark/backup" # path to backup directory
|
arkbackupdir="/ark/backup" # path to backup directory
|
||||||
arkwarnminutes="30" # number of minutes to warn players when using update --warn
|
|
||||||
arkautorestartfile="ShooterGame/Saved/.autorestart" # path to autorestart file
|
arkautorestartfile="ShooterGame/Saved/.autorestart" # path to autorestart file
|
||||||
|
arkStagingDir="/ark/staging"
|
||||||
|
|
||||||
# config Service
|
# config Service
|
||||||
servicename="arkserv" # Name of the service (don't change if you don't know what are you doing)
|
servicename="arkserv" # Name of the service (don't change if you don't know what are you doing)
|
||||||
|
@ -31,5 +31,14 @@ ark_RCONPort="32330" # RCON Port
|
||||||
|
|
||||||
# steamdb specific
|
# steamdb specific
|
||||||
appid=376030 # Linux server App ID
|
appid=376030 # Linux server App ID
|
||||||
|
mod_appid=346110 # App ID for mods
|
||||||
|
|
||||||
|
# Need to be true to work with UPDATEPONSTART (See #10)
|
||||||
|
arkAutoUpdateOnStart="true" # set this to true if you want to always update before startup
|
||||||
|
|
||||||
|
defaultinstance="main"
|
||||||
|
|
||||||
|
# We don't use the dots because it doesn't show.
|
||||||
|
progressDisplayType=spinner
|
||||||
|
|
||||||
source /ark/arkmanager.cfg
|
source /ark/arkmanager.cfg
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# comment out these values if you want to define them
|
# comment out these values if you want to define them
|
||||||
# inside your GameUserSettings.ini file
|
# inside your GameUserSettings.ini file
|
||||||
serverMap=${SERVERMAP} # server map (default TheIsland)
|
serverMap=${SERVERMAP} # server map (default TheIsland)
|
||||||
|
#serverMapModId="469987622" # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
|
||||||
|
#ark_TotalConversionMod="496735411" # Uncomment this to specify a total-conversion mod
|
||||||
ark_SessionName=${SESSIONNAME} # if your session name needs special characters please use the .ini instead
|
ark_SessionName=${SESSIONNAME} # if your session name needs special characters please use the .ini instead
|
||||||
ark_ServerPassword=${SERVERPASSWORD} # ARK server password, empty: no password required to login
|
ark_ServerPassword=${SERVERPASSWORD} # ARK server password, empty: no password required to login
|
||||||
ark_ServerAdminPassword=${ADMINPASSWORD} # ARK server admin password, KEEP IT SAFE!
|
ark_ServerAdminPassword=${ADMINPASSWORD} # ARK server admin password, KEEP IT SAFE!
|
||||||
|
@ -26,9 +28,22 @@ mod_branch=Windows
|
||||||
# ARK server options - i.e. for -optname=val, use arkopt_optname=val
|
# ARK server options - i.e. for -optname=val, use arkopt_optname=val
|
||||||
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
|
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
|
||||||
|
|
||||||
|
#ark_AltSaveDirectoryName="SotF" # Uncomment to specify a different save directory name
|
||||||
|
|
||||||
# Update warning messages
|
# Update warning messages
|
||||||
# Modify as desired, putting the %d replacement operator where the number belongs
|
# Modify as desired, putting the %d replacement operator where the number belongs
|
||||||
msgWarnUpdateMinutes="This ARK server will shutdown for an update in %d minutes"
|
msgWarnUpdateMinutes="This ARK server will shutdown for an update in %d minutes"
|
||||||
msgWarnUpdateSeconds="This ARK server will shutdown for an update in %d seconds"
|
msgWarnUpdateSeconds="This ARK server will shutdown for an update in %d seconds"
|
||||||
|
msgWarnRestartMinutes="This ARK server will shutdown for a restart in %d minutes"
|
||||||
|
msgWarnRestartSeconds="This ARK server will shutdown for a restart in %d seconds"
|
||||||
|
msgWarnShutdownMinutes="This ARK server will shutdown in %d minutes"
|
||||||
|
msgWarnShutdownSeconds="This ARK server will shutdown in %d seconds"
|
||||||
|
|
||||||
|
# config environment
|
||||||
|
arkwarnminutes="60" # number of minutes to warn players when using update --warn
|
||||||
arkBackupPreUpdate="false" # set this to true if you want to perform a backup before updating
|
arkBackupPreUpdate="false" # set this to true if you want to perform a backup before updating
|
||||||
|
|
||||||
|
# Options to automatically remove old backups to keep backup size in check
|
||||||
|
# Each compressed backup is generally about 1-2MB in size.
|
||||||
|
arkMaxBackupSizeMB="500" # Set to automatically remove old backups when size exceeds this limit
|
||||||
|
#arkMaxBackupSizeGB="2" # Uncomment this and comment the above to specify the limit in whole GB
|
||||||
|
|
16
crontab
Normal file
16
crontab
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# Example of job definition:
|
||||||
|
# .---------------- minute (0 - 59)
|
||||||
|
# | .------------- hour (0 - 23)
|
||||||
|
# | | .---------- day of month (1 - 31)
|
||||||
|
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
|
||||||
|
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|
||||||
|
# | | | | |
|
||||||
|
# * * * * * user command to be executed
|
||||||
|
# Example : update every hour
|
||||||
|
# 0 * * * * arkmanager update
|
||||||
|
# Example : backup every 15min
|
||||||
|
# */15 * * * * arkmanager backup
|
||||||
|
# Example : backup every day at midnight
|
||||||
|
# 0 0 * * * arkmanager backup
|
||||||
|
# WARNING : the container timezone is maybe not your current timezone
|
||||||
|
# You can sync them with option -v /etc/localtime:/etc/localtime:ro or -e "TZ=UTC"
|
21
docker-compose.yml
Normal file
21
docker-compose.yml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
ark:
|
||||||
|
container_name: ark
|
||||||
|
image: turzam/ark
|
||||||
|
environment:
|
||||||
|
- SESSIONNAME=Ark Docker
|
||||||
|
- SERVERMAP=TheIsland
|
||||||
|
- SERVERPASSWORD=""
|
||||||
|
- ADMINPASSWORD=adminpassword
|
||||||
|
- BACKUPONSTART=1
|
||||||
|
- UPDATEONSTART=1
|
||||||
|
- TZ=Europe/Paris
|
||||||
|
- GID=1000
|
||||||
|
- UID=1000
|
||||||
|
volumes:
|
||||||
|
- /my/path/to/ark:/ark
|
||||||
|
ports:
|
||||||
|
- 7778:7778/udp
|
||||||
|
- 7778:7778
|
||||||
|
- 27015:27015/udp
|
||||||
|
- 27015:27015
|
||||||
|
- 32330:32330
|
2
instance.cfg
Normal file
2
instance.cfg
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Config root directory
|
||||||
|
arkserverroot="/ark/server"
|
80
run.sh
80
run.sh
|
@ -1,56 +1,88 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
echo "###########################################################################"
|
echo "###########################################################################"
|
||||||
echo "# Ark Server - " `date`
|
echo "# Ark Server - " `date`
|
||||||
|
echo "# UID $UID - GID $GID"
|
||||||
echo "###########################################################################"
|
echo "###########################################################################"
|
||||||
[ -p /tmp/FIFO ] && rm /tmp/FIFO
|
[ -p /tmp/FIFO ] && rm /tmp/FIFO
|
||||||
mkfifo /tmp/FIFO
|
mkfifo /tmp/FIFO
|
||||||
|
|
||||||
export TERM=linux
|
export TERM=linux
|
||||||
|
|
||||||
|
function stop {
|
||||||
|
if [ ${BACKUPONSTOP} -eq 1 ] && [ "$(ls -A server/ShooterGame/Saved/SavedArks)" ]; then
|
||||||
|
echo "[Backup on stop]"
|
||||||
|
arkmanager backup
|
||||||
|
fi
|
||||||
|
if [ ${WARNONSTOP} -eq 1 ];then
|
||||||
|
arkmanager stop --warn
|
||||||
|
else
|
||||||
|
arkmanager stop
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Change working directory to /ark to allow relative path
|
||||||
|
cd /ark
|
||||||
|
|
||||||
|
# Add a template directory to store the last version of config file
|
||||||
|
[ ! -d /ark/template ] && mkdir /ark/template
|
||||||
|
# We overwrite the template file each time
|
||||||
|
cp /home/steam/arkmanager.cfg /ark/template/arkmanager.cfg
|
||||||
|
cp /home/steam/crontab /ark/template/crontab
|
||||||
|
# Creating directory tree && symbolic link
|
||||||
[ ! -f /ark/arkmanager.cfg ] && cp /home/steam/arkmanager.cfg /ark/arkmanager.cfg
|
[ ! -f /ark/arkmanager.cfg ] && cp /home/steam/arkmanager.cfg /ark/arkmanager.cfg
|
||||||
[ ! -d /ark/log ] && mkdir /ark/log
|
[ ! -d /ark/log ] && mkdir /ark/log
|
||||||
[ ! -d /ark/backup ] && mkdir /ark/backup
|
[ ! -d /ark/backup ] && mkdir /ark/backup
|
||||||
|
[ ! -d /ark/staging ] && mkdir /ark/staging
|
||||||
#echo "Upgrade Ark server tools..."
|
[ ! -L /ark/Game.ini ] && ln -s server/ShooterGame/Saved/Config/LinuxServer/Game.ini Game.ini
|
||||||
#arkmanager upgrade-tools
|
[ ! -L /ark/GameUserSettings.ini ] && ln -s server/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini GameUserSettings.ini
|
||||||
|
[ ! -f /ark/crontab ] && cp /ark/template/crontab /ark/crontab
|
||||||
|
|
||||||
|
|
||||||
if [ ! -d "/ark/server" ] && [ ! -f "/ark/server/arkversion" ];then
|
|
||||||
echo "Install ark..."
|
if [ ! -d /ark/server ] || [ ! -f /ark/server/version.txt ];then
|
||||||
|
echo "No game files found. Installing..."
|
||||||
|
mkdir -p /ark/server/ShooterGame/Saved/SavedArks
|
||||||
|
mkdir -p /ark/server/ShooterGame/Content/Mods
|
||||||
|
mkdir -p /ark/server/ShooterGame/Binaries/Linux/
|
||||||
|
touch /ark/server/ShooterGame/Binaries/Linux/ShooterGameServer
|
||||||
arkmanager install
|
arkmanager install
|
||||||
# Create mod dir
|
# Create mod dir
|
||||||
mkdir /ark/server/ShooterGame/Content/Mods
|
|
||||||
else
|
else
|
||||||
|
|
||||||
if [ ${BACKUPONSTART} -eq 1 ]; then
|
if [ ${BACKUPONSTART} -eq 1 ] && [ "$(ls -A server/ShooterGame/Saved/SavedArks/)" ]; then
|
||||||
echo "[Backup]"
|
echo "[Backup]"
|
||||||
arkmanager backup
|
arkmanager backup
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ${UPDATEONSTART} -eq 1 ]; then
|
|
||||||
echo "[Update]"
|
# If there is uncommented line in the file
|
||||||
arkmanager update --update-mods
|
CRONNUMBER=`grep -v "^#" /ark/crontab | wc -l`
|
||||||
fi
|
if [ $CRONNUMBER -gt 0 ]; then
|
||||||
|
echo "Loading crontab..."
|
||||||
|
# We load the crontab file if it exist.
|
||||||
|
crontab /ark/crontab
|
||||||
|
# Cron is attached to this process
|
||||||
|
sudo cron -f &
|
||||||
|
else
|
||||||
|
echo "No crontab set."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Launching ark server
|
# Launching ark server
|
||||||
arkmanager start
|
if [ $UPDATEONSTART -eq 0 ]; then
|
||||||
|
arkmanager start -noautoupdate
|
||||||
|
else
|
||||||
|
arkmanager start
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Stop server in case of signal INT or TERM
|
# Stop server in case of signal INT or TERM
|
||||||
echo "Waiting..."
|
echo "Waiting..."
|
||||||
trap 'arkmanager stop' INT
|
trap stop INT
|
||||||
trap 'arkmanager stop' TERM
|
trap stop TERM
|
||||||
|
|
||||||
# Auto update every $AUTOUPDATE minutes
|
|
||||||
if [ $AUTOUPDATE -gt 0 ]; then
|
|
||||||
while :; do sleep $(($AUTOUPDATE * 60)); echo "[`date +'%y/%m/%d %H:%M'`] [Auto-Update]"; arkmanager update --warn --update-mods --backup ; done &
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Auto backup every $AUTOBACKUP minutes
|
|
||||||
if [ $AUTOBACKUP -gt 0 ]; then
|
|
||||||
while :; do sleep $(($AUTOBACKUP * 60)); echo "[`date +'%Y/%m/%d %H:%M'`] [Auto-Backup]"; arkmanager backup ; done &
|
|
||||||
fi
|
|
||||||
|
|
||||||
read < /tmp/FIFO &
|
read < /tmp/FIFO &
|
||||||
wait
|
wait
|
||||||
|
|
21
user.sh
Normal file
21
user.sh
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Change the UID if needed
|
||||||
|
if [ ! "$(id -u steam)" -eq "$UID" ]; then
|
||||||
|
echo "Changing steam uid to $UID."
|
||||||
|
usermod -o -u "$UID" steam ;
|
||||||
|
fi
|
||||||
|
# Change gid if needed
|
||||||
|
if [ ! "$(id -g steam)" -eq "$GID" ]; then
|
||||||
|
echo "Changing steam gid to $GID."
|
||||||
|
groupmod -o -g "$GID" steam ;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put steam owner of directories (if the uid changed, then it's needed)
|
||||||
|
chown -R steam:steam /ark /home/steam
|
||||||
|
|
||||||
|
# avoid error message when su -p (we need to read the /root/.bash_rc )
|
||||||
|
chmod -R 777 /root/
|
||||||
|
|
||||||
|
# Launch run.sh with user steam (-p allow to keep env variables)
|
||||||
|
su -p - steam -c /home/steam/run.sh
|
Loading…
Add table
Add a link
Reference in a new issue