Compare commits
36 Commits
lifyo
...
alienswarm
Author | SHA1 | Date | |
---|---|---|---|
ce12ad05e5 | |||
2c4bfbfa2a
|
|||
cae3dd9057
|
|||
5522b94509
|
|||
3a5a86d87c
|
|||
e5b6fe52b8
|
|||
09d10f980a
|
|||
8420cb5009
|
|||
06946eaba6 | |||
4110d8c63f | |||
e395523328 | |||
51ebfd8cb7 | |||
f5437e3bb9 | |||
39e05c250d | |||
698aaf3ea0 | |||
c4961e935a | |||
a39853ef0b | |||
2183e4f385 | |||
2224938f09 | |||
6a9d7b0a54 | |||
d36beae9c2 | |||
f1a09bb58a | |||
51b8aceb8d | |||
2c5f891e54 | |||
bf9255afa0 | |||
f89dd52f92 | |||
dcf5d9a289 | |||
6b15acc2ca | |||
b91e9e34cb | |||
ec2e8da8e5 | |||
704cb4d751 | |||
e8b32f8111 | |||
a25209607c | |||
c2e8107ff2 | |||
1899fa095b | |||
e7b6de5318 |
16
Dockerfile
16
Dockerfile
@@ -3,16 +3,17 @@ FROM ich777/winehq-baseimage
|
||||
LABEL org.opencontainers.image.authors="admin@minenet.at"
|
||||
LABEL org.opencontainers.image.source="https://github.com/ich777/docker-steamcmd-server"
|
||||
|
||||
RUN dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get -y install lib32gcc-s1 screen xvfb winbind mariadb-server && \
|
||||
RUN apt-get update && \
|
||||
apt-get -y install --no-install-recommends lib32gcc-s1 winbind xvfb screen && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV DATA_DIR="/serverdata"
|
||||
ENV STEAMCMD_DIR="${DATA_DIR}/steamcmd"
|
||||
ENV SERVER_DIR="${DATA_DIR}/serverfiles"
|
||||
ENV GAME_ID="template"
|
||||
ENV GAME_PARAMS="-world 1"
|
||||
ENV GAME_NAME="template"
|
||||
ENV GAME_PARAMS="template"
|
||||
ENV GAME_PORT=27015
|
||||
ENV VALIDATE=""
|
||||
ENV UMASK=000
|
||||
ENV UID=99
|
||||
@@ -27,12 +28,7 @@ RUN mkdir $DATA_DIR && \
|
||||
mkdir $SERVER_DIR && \
|
||||
useradd -d $DATA_DIR -s /bin/bash $USER && \
|
||||
chown -R $USER $DATA_DIR && \
|
||||
ulimit -n 2048 && \
|
||||
/etc/init.d/mariadb start && \
|
||||
mysql -u root -e "CREATE USER IF NOT EXISTS 'steam'@'%' IDENTIFIED BY 'lifyo';FLUSH PRIVILEGES;" && \
|
||||
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'steam'@'%' IDENTIFIED BY 'lifyo';" && \
|
||||
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'LiFYO';FLUSH PRIVILEGES;" && \
|
||||
echo "\n[mysqld]\ndatadir=/serverdata/serverfiles/.database/" >> /etc/alternatives/my.cnf
|
||||
ulimit -n 2048
|
||||
|
||||
ADD /scripts/ /opt/scripts/
|
||||
RUN chmod -R 770 /opt/scripts/
|
||||
|
34
README.md
34
README.md
@@ -1,43 +1,41 @@
|
||||
# SteamCMD in Docker optimized for Unraid
|
||||
This Docker will download and install SteamCMD. It will also install Life is Feudal: Your Own and run it.
|
||||
This Docker will download and install SteamCMD. It will also install Alien Swarm: Reactive Drop and run it.
|
||||
|
||||
Initial server configuration:
|
||||
**Servername:** LiF Docker **Password:** Docker **Admin Password:** adminDocker
|
||||
**!!!This container will only run on systems with less than 32 CPU cores!!!**
|
||||
|
||||
**ATTENTION:** First startup can take very long since it downloads the gameserver files and it also installs the runtimes which can take quite some time!
|
||||
|
||||
Update Notice: Simply restart the container if a newer version of the game is available.
|
||||
**Update Notice:** Simply restart the container if a newer version of the game is available.
|
||||
|
||||
## Env params
|
||||
| Name | Value | Example |
|
||||
| --- | --- | --- |
|
||||
| STEAMCMD_DIR | Folder for SteamCMD | /serverdata/steamcmd |
|
||||
| SERVER_DIR | Folder for gamefile | /serverdata/serverfiles |
|
||||
| GAME_PARAMS | Values to start the server if needed. | empty |
|
||||
| GAME_ID | The GAME_ID that the container downloads at startup. If you want to install a static or beta version of the game change the value to: '320850 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 320850 |
|
||||
| GAME_ID | SteamID for server | 563560 |
|
||||
| GAME_NAME | SRCDS gamename | reactivedrop |
|
||||
| GAME_PARAMS | Values to start the server | +map lobby -maxplayers 4 +exec server.cfg |
|
||||
| UID | User Identifier | 99 |
|
||||
| GID | Group Identifier | 100 |
|
||||
| VALIDATE | Validates the game data | false |
|
||||
| GAME_PORT | Port the server will be running on | 27015 |
|
||||
| VALIDATE | Validates the game data | blank |
|
||||
| USERNAME | Leave blank for anonymous login | blank |
|
||||
| PASSWRD | Leave blank for anonymous login | blank |
|
||||
|
||||
|
||||
## Run example
|
||||
```
|
||||
docker run --name LifeIsFeudal-YourOwn -d \
|
||||
-p 28000-28003 -p 28000-28003/udp \
|
||||
--env 'GAME_ID=320850' \
|
||||
docker run --name AlienSwarmReactiveDrop -d \
|
||||
-p 27015:27015 -p 27015:27015/udp \
|
||||
--env 'GAME_ID=563560' \
|
||||
--env 'GAME_NAME=reactivedrop' \
|
||||
--env 'GAME_PORT=27015' \
|
||||
--env 'GAME_PARAMS=+map lobby -maxplayers 4 +exec server.cfg' \
|
||||
--env 'UID=99' \
|
||||
--env 'GID=100' \
|
||||
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
||||
--volume /path/to/lifeisfeudal-yo:/serverdata/serverfiles \
|
||||
ich777/steamcmd:lifyo
|
||||
--volume /path/to/alienswarmreactivedrop:/serverdata/serverfiles \
|
||||
ich777/steamcmd:alienswarmreactivedrop
|
||||
```
|
||||
|
||||
|
||||
This Docker was mainly edited for better use with Unraid, if you don't use Unraid you should definitely try it!
|
||||
|
||||
|
||||
This Docker is forked from mattieserver, thank you for this wonderfull Docker.
|
||||
|
||||
### Support Thread: https://forums.unraid.net/topic/79530-support-ich777-gameserver-dockers/
|
||||
|
31
config/server.cfg
Normal file
31
config/server.cfg
Normal file
@@ -0,0 +1,31 @@
|
||||
hostname Docker AlienSwarmReactiveDrop
|
||||
|
||||
sv_lan 0 // enable LAN = 1; disable LAN = 0
|
||||
sv_region 255
|
||||
sv_allow_lobby_connect_only 0 //enable/disable Lobby connections 1/0
|
||||
|
||||
mp_disable_autokick 1 //disables autokick=1
|
||||
sv_allow_wait_command 0
|
||||
sv_alltalk 1
|
||||
sv_alternateticks 0
|
||||
sv_clearhinthistory 0
|
||||
sv_consistency 1
|
||||
sv_pausable 0
|
||||
sv_voiceenable 1
|
||||
sv_cheats 0
|
||||
sv_forcepreload 1
|
||||
sv_pure_kick_clients 0
|
||||
|
||||
sv_log_onefile 0
|
||||
sv_logbans 1
|
||||
sv_logecho 0
|
||||
sv_logfile 1
|
||||
sv_logflush 0
|
||||
sv_logsdir logs
|
||||
|
||||
sv_minrate 30000
|
||||
sv_maxrate 60000
|
||||
sv_minupdaterate 66
|
||||
sv_maxupdaterate 101
|
||||
sv_mincmdrate 66
|
||||
sv_maxcmdrate 101
|
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<server_data port="25564" name="Stormworks Docker" save_name="autosave_server" max_players="32" password="Docker" day_night_length="60" sunrise="0.25" sunset="0.791" infinite_resources="false" unlock_all_islands="false" settings_menu="false" base_island="data/tiles/island12.xml" settings_menu_lock="false" infinite_batteries="false" infinite_fuel="false" engine_overheating="false" ceasefire="false" infinite_ammo="false" no_clip="false" map_teleport="false" vehicle_spawn="false" photo_mode="false" respawning="false" cleanup_vehicle="false" clear_fow="false" third_person="true" third_person_vehicle="true" vehicle_damage="false" player_damage="false" npc_damage="false" aggressive_animals="false" sea_monsters="false" lightning="true" teleport_vehicle="true" fast_travel="true" starting_currency="20000" despawn_on_leave="false" map_show_players="false" map_show_vehicles="false" show_3d_waypoints="false" show_name_plates="false" override_weather="false" override_time="false" override_wind="false" physics_timestep="0" wildlife_enabled="true" fish_spawn_rate="2" unlock_components="true" dlc_weapons="false" dlc_arid="false"/>
|
@@ -1,4 +1,4 @@
|
||||
until Xvfb :99 -screen scrn 640x480x16; do
|
||||
echo "Xvfb server crashed with exit code $?. Respawning.." >&2
|
||||
sleep 1
|
||||
echo "Xvfb server crashed with exit code $?. Respawning.." >&2
|
||||
sleep 1
|
||||
done
|
@@ -55,79 +55,49 @@ else
|
||||
fi
|
||||
|
||||
echo "---Prepare Server---"
|
||||
echo "---Checking for 'server.cfg'---"
|
||||
if [ ! -f ${SERVER_DIR}/reactivedrop/cfg/server.cfg ]; then
|
||||
cd ${SERVER_DIR}/reactivedrop/cfg
|
||||
if wget -q -nc --show-progress --progress=bar:force:noscroll https://raw.githubusercontent.com/ich777/docker-steamcmd-server/alienswarmreactivedrop/config/server.cfg ; then
|
||||
echo "---Successfully downloaded 'server.cfg'---"
|
||||
else
|
||||
echo "---Something went wrong, can't download 'server.cfg', putting server in sleep mode---"
|
||||
sleep infinity
|
||||
fi
|
||||
fi
|
||||
export WINEARCH=win64
|
||||
export WINEPREFIX=/serverdata/serverfiles/WINE64
|
||||
export DISPLAY=:99
|
||||
echo "---Checking if WINE workdirectory is present---"
|
||||
if [ ! -d ${SERVER_DIR}/WINE64 ]; then
|
||||
echo "---WINE workdirectory not found, creating please wait...---"
|
||||
mkdir ${SERVER_DIR}/WINE64
|
||||
mkdir ${SERVER_DIR}/WINE64
|
||||
else
|
||||
echo "---WINE workdirectory found---"
|
||||
fi
|
||||
echo "---Checking if WINE is properly installed---"
|
||||
if [ ! -d ${SERVER_DIR}/WINE64/drive_c/windows ]; then
|
||||
echo "---Setting up WINE---"
|
||||
cd ${SERVER_DIR}
|
||||
winecfg > /dev/null 2>&1
|
||||
sleep 15
|
||||
cd ${SERVER_DIR}
|
||||
winecfg > /dev/null 2>&1
|
||||
sleep 15
|
||||
else
|
||||
echo "---WINE properly set up---"
|
||||
fi
|
||||
|
||||
echo "---Checking config---"
|
||||
if grep -q "<name>My own LiF server</name>" ${SERVER_DIR}/config/world_1.xml ; then
|
||||
echo "---Adding initial config parameters to config file---"
|
||||
sed -i 's/\<My own LiF server\>/LiF Docker/g' ${SERVER_DIR}/config/world_1.xml
|
||||
sed -i s/"<password><\/password>"/"<password>Docker<\/password>"/g ${SERVER_DIR}/config/world_1.xml
|
||||
sed -i s/"<adminPassword><\/adminPassword>"/"<adminPassword>adminDocker<\/adminPassword>"/g ${SERVER_DIR}/config/world_1.xml
|
||||
else
|
||||
echo "---Config check done---"
|
||||
fi
|
||||
|
||||
echo "---Checking if database is in place---"
|
||||
if [ ! -d ${SERVER_DIR}/.database ]; then
|
||||
echo "---Database not found, setting up databbase...---"
|
||||
mkdir -p ${SERVER_DIR}/.database
|
||||
cp -R /var/lib/mysql/* ${SERVER_DIR}/.database/
|
||||
else
|
||||
echo "---Database found---"
|
||||
fi
|
||||
|
||||
echo "---Checking if database configuration is in place---"
|
||||
if [ ! -f ${SERVER_DIR}/config_local.cs ]; then
|
||||
echo "---Database configuration not found, configuring...---"
|
||||
cp ${SERVER_DIR}/docs/config_local.cs ${SERVER_DIR}/config_local.cs
|
||||
sed -i 's/\<root\>/steam/g' ${SERVER_DIR}/config_local.cs
|
||||
sed -i 's/\<rootPassword\>/lifyo/g' ${SERVER_DIR}/config_local.cs
|
||||
else
|
||||
echo "---Database connection found---"
|
||||
fi
|
||||
|
||||
echo "---Starting MariaDB---"
|
||||
screen -S MariaDB -d -m mysqld_safe
|
||||
sleep 2
|
||||
|
||||
echo "---Starting Xvfb---"
|
||||
screen -S Xvfb -d -m /opt/scripts/start-Xvfb.sh
|
||||
sleep 2
|
||||
|
||||
echo "---Checking for old display lock files---"
|
||||
find /tmp -name ".X99*" -exec rm -f {} \; > /dev/null 2>&1
|
||||
echo "---Checking for old logfiles---"
|
||||
find ${SERVER_DIR} -name "masterLog.*" -exec rm -f {} \; > /dev/null 2>&1
|
||||
find ${SERVER_DIR} -name "XvfbLog.*" -exec rm -f {} \; > /dev/null 2>&1
|
||||
chmod -R ${DATA_PERM} ${DATA_DIR}
|
||||
echo "---Server ready---"
|
||||
|
||||
echo "---Starting Xvfb server---"
|
||||
screen -S Xvfb -L -Logfile ${SERVER_DIR}/XvfbLog.0 -d -m /opt/scripts/start-Xvfb.sh
|
||||
sleep 5
|
||||
|
||||
echo "---Start Server---"
|
||||
if [ ! -f ${SERVER_DIR}/ddctd_cm_yo_server.exe ]; then
|
||||
echo "---Something went wrong, can't find the executable, putting container into sleep mode!---"
|
||||
sleep infinity
|
||||
else
|
||||
cd ${SERVER_DIR}
|
||||
screen -S LiFYO -d -m wine64 ddctd_cm_yo_server.exe ${GAME_PARAMS}
|
||||
echo "---Waiting for logs...---"
|
||||
sleep 3
|
||||
/opt/scripts/start-watchdog.sh &
|
||||
cd ${SERVER_DIR}/logs
|
||||
cd $(ls -1d */ | tail -1)
|
||||
tail -n 9999 -f $(ls -t | head -n 1)
|
||||
fi
|
||||
cd ${SERVER_DIR}
|
||||
screen -S AlienSwarm-ReactiveDrop -L -Logfile ${SERVER_DIR}/masterLog.0 -d -m wine64 start srcds.exe -console -game ${GAME_NAME} ${GAME_PARAMS} +port ${GAME_PORT}
|
||||
sleep 5
|
||||
tail -f ${SERVER_DIR}/masterLog.0
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
killpid="$(pidof ddctd_cm_yo_server.exe)"
|
||||
while true
|
||||
do
|
||||
tail --pid=$killpid -f /dev/null
|
||||
kill "$(pidof tail)"
|
||||
exit 0
|
||||
done
|
@@ -22,16 +22,14 @@ fi
|
||||
echo "---Taking ownership of data...---"
|
||||
chown -R root:${GID} /opt/scripts
|
||||
chmod -R 750 /opt/scripts
|
||||
chown -R ${UID}:${GID} /var/lib/mysql
|
||||
chown -R ${UID}:${GID} /var/run/mysqld
|
||||
chown -R ${UID}:${GID} ${DATA_DIR}
|
||||
chmod -R 770 /var/lib/mysql
|
||||
chmod -R 770 /var/run/mysqld
|
||||
|
||||
echo "---Starting...---"
|
||||
term_handler() {
|
||||
kill -SIGINT $(pidof ddctd_cm_yo_server.exe)
|
||||
tail --pid=$(pidof ddctd_cm_yo_server.exe) -f 2>/dev/null
|
||||
kill -SIGINT $(pidof valheim_server.x86_64)
|
||||
tail --pid=$(pidof valheim_server.x86_64) -f 2>/dev/null
|
||||
sleep 0.5
|
||||
echo 1 > ${SERVER_DIR}/server_exit.drp
|
||||
exit 143;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user