Compare commits

...

33 Commits

Author SHA1 Message Date
fc07f25169 scripts/start-server.sh aktualisiert 2023-07-20 11:17:46 +02:00
13aaa04312 Delete config/UDKDedServerSettings.ini 2023-07-12 20:51:11 +02:00
23e17fec2f Update README.md 2023-07-12 20:48:43 +02:00
2bb938a2b4 Update scripts/start-server.sh 2023-07-12 20:40:09 +02:00
1c1bd04181 Update scripts/start-server.sh 2023-07-12 20:23:58 +02:00
f73fb4a290 Update config/UDKDedServerSettings.ini 2023-07-12 20:22:53 +02:00
b4862f0a14 Update scripts/start-server.sh 2023-07-12 20:10:01 +02:00
c59417e8aa Add scripts/start-watchdog.sh 2023-07-12 20:04:46 +02:00
d142a452ec Update scripts/start.sh 2023-07-12 20:03:43 +02:00
7523f0c102 Update config/UDKDedServerSettings.ini 2023-07-12 19:53:23 +02:00
75e7b53377 Update scripts/start-server.sh 2023-07-12 19:53:14 +02:00
07bfc75c4e Update Dockerfile 2023-07-12 19:45:46 +02:00
da4cb0651f Update Dockerfile 2023-07-12 19:40:54 +02:00
a296a8c61a Update config/UDKDedServerSettings.ini 2023-07-12 19:39:32 +02:00
557e3ba3d9 Update scripts/start-server.sh 2023-07-12 19:38:42 +02:00
41c7677e8c Add scripts/start-Xvfb.sh 2023-07-12 19:29:18 +02:00
fde402da83 Add config/UDKDedServerSettings.ini 2023-07-12 18:59:00 +02:00
ed117f8d35 Update scripts/start-server.sh 2023-07-12 18:35:59 +02:00
841e6a0a1c Delete config/dedicatedserver.cfg 2023-07-12 18:35:21 +02:00
223188f06e Update config/dedicatedserver.cfg 2023-06-23 21:43:01 +02:00
3d30acbc1e Update config/dedicatedserver.cfg 2023-06-23 21:36:03 +02:00
e03219a936 Update Dockerfile 2023-06-23 21:03:30 +02:00
5c371e6e2e Update README.md 2023-06-23 21:03:12 +02:00
8d26d2a8d3 Update scripts/start-server.sh 2023-06-23 20:53:43 +02:00
1a5ff66373 Update scripts/start-server.sh 2023-06-23 20:43:52 +02:00
f71d0579ac Update scripts/start.sh 2023-06-23 20:36:01 +02:00
f4677a9a01 Update scripts/start-server.sh 2023-06-23 20:32:02 +02:00
e6a855484e Update config/dedicatedserver.cfg 2023-06-23 20:29:38 +02:00
a79dd225be Update config/config.cfg 2023-06-23 20:29:22 +02:00
57b5304696 Update scripts/start-server.sh 2023-06-23 20:28:49 +02:00
8962c5df2d Update README.md 2023-06-23 20:23:11 +02:00
ebe0ee01ea Update README.md 2023-06-23 20:21:26 +02:00
5bcdc21483 Update scripts/start-server.sh 2023-06-23 20:15:21 +02:00
7 changed files with 73 additions and 100 deletions

View File

@@ -4,15 +4,16 @@ LABEL org.opencontainers.image.authors="admin@minenet.at"
LABEL org.opencontainers.image.source="https://github.com/ich777/docker-steamcmd-server"
RUN apt-get update && \
apt-get -y install lib32gcc-s1 winbind xvfb screen && \
apt-get -y install lib32gcc-s1 winbind xvfb screen cabextract && \
wget -q -O /usr/bin/winetricks https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks && \
chmod +x /usr/bin/winetricks && chown 755 /usr/bin/winetricks && \
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_NAME="template"
ENV GAME_PARAMS="template"
ENV GAME_ID=""
ENV GAME_PARAMS=""
ENV GAME_PORT=27015
ENV VALIDATE=""
ENV UMASK=000

View File

@@ -1,37 +1,36 @@
# SteamCMD in Docker optimized for Unraid
This Docker will download and install SteamCMD. It will also install The Forest and run it.
This Docker will download and install SteamCMD. It will also install Subsistence and run it.
**SERVERNAME:** 'The Forest Docker' **SERVERPASSWORD:** 'Docker' **ADMINPASSWORD:** 'adminDocker' (you can change this in your SERVERFOLDER/config/config.cfg)
**ATTENTION:** First startup can take very long since it downloads the gameserver files and also installs dotnet45!
**WARNING:** You have to create a Steam Token to play Online.
Create your token here: https://steamcommunity.com/dev/managegameservers (please note that you must generate the token for the APPID: '242760' and every gameserver needs it's own token!!!). Put your Token into your GAME_PARAMS like this 'serverSteamAccount YOURTOKEN' (without quotes).
**First Start Notice:** On First startup the container installs dotnet45 and it might seem that the container hangs but please be patient since the installation can take very long on some systems (5 minutes+).
**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.
You can also run multiple servers with only one SteamCMD directory!
## Env params
| Name | Value | Example |
| --- | --- | --- |
| STEAMCMD_DIR | Folder for SteamCMD | /serverdata/steamcmd |
| SERVER_DIR | Folder for gamefile | /serverdata/serverfiles |
| 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: '556450 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 556450 |
| GAME_NAME | SRCDS gamename | cstrike |
| GAME_PARAMS | Values to start the server | 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: '1362640 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 1362640 |
| GAME_PARAMS | Values to start the server, leave empty for none | empty |
| UID | User Identifier | 99 |
| GID | Group Identifier | 100 |
| 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 TheForest -d \
-p 8766:8766/udp -p 27015:27015/udp -p 27016:27016/udp \
docker run --name Subsistence -d \
-p 7777:7777/udp -p 27015:27015/udp \
--env 'UID=99' \
--env 'GID=100' \
--volume /path/to/steamcmd:/serverdata/steamcmd \
--volume /path/to/theforest:/serverdata/serverfiles \
ich777/steamcmd:theforest
--volume /path/to/subsistence:/serverdata/serverfiles \
ich777/steamcmd:subsistence
```
This Docker was mainly edited for better use with Unraid, if you don't use Unraid you should definitely try it!

View File

@@ -1,55 +0,0 @@
// Dedicated Server Settings.
// Server IP address - Note: If you have a router, this address is the internal address, and you need to configure ports forwarding
serverIP 0.0.0.0
// Steam Communication Port - Note: If you have a router you will need to open this port.
serverSteamPort 8766
// Game Communication Port - Note: If you have a router you will need to open this port.
serverGamePort 27015
// Query Communication Port - Note: If you have a router you will need to open this port.
serverQueryPort 27016
// Server display name
serverName The Forest Docker
// Maximum number of players
serverPlayers 4
// Enable VAC (Valve Anti-cheat System at the server. Must be set off or on
enableVAC off
// Server password. blank means no password
serverPassword Docker
// Server administration password. blank means no password
serverPasswordAdmin adminDocker
// Your Steam account name. blank means anonymous
serverSteamAccount
// Time between server auto saves in minutes - The minumum time is 15 minutes, the default time is 30
serverAutoSaveInterval 30
// Game difficulty mode. Must be set to Peaceful Normal or Hard
difficulty Normal
// New or continue a game. Must be set to New or Continue
initType Continue
// Slot to save the game. Must be set 1 2 3 4 or 5
slot 1
// Show event log. Must be set off or on
showLogs off
// Contact email for server admin
serverContact email@gmail.com
// No enemies
veganMode off
// No enemies during day time
vegetarianMode off
// Reset all structure holes when loading a save
resetHolesMode off
// Regrow 10% of cut down trees when sleeping
treeRegrowMode off
// Allow building destruction
allowBuildingDestruction on
// Allow enemies in creative games
allowEnemiesCreativeMode off
// Allow clients to use the built in debug console
allowCheats off
// Use full weapon damage values when attacking other players
realisticPlayerDamage off
// Allows defining a custom folder for save slots, leave empty to use the default location
saveFolderPath
// Target FPS when no client is connected
targetFpsIdle 5
// Target FPS when there is at least one client connected
targetFpsActive 60

4
scripts/start-Xvfb.sh Normal file
View File

@@ -0,0 +1,4 @@
until Xvfb :99 -screen scrn 640x480x16; do
echo "Xvfb server crashed with exit code $?. Respawning.." >&2
sleep 1
done

View File

@@ -1,4 +1,5 @@
#!/bin/bash
export DISPLAY=:99
if [ ! -f ${STEAMCMD_DIR}/steamcmd.sh ]; then
echo "SteamCMD not found!"
wget -q -O ${STEAMCMD_DIR}/steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz
@@ -57,47 +58,62 @@ fi
echo "---Prepare Server---"
export WINEARCH=win64
export WINEPREFIX=/serverdata/serverfiles/WINE64
echo "---Checking for 'saves' directory---"
if [ ! -d ${SERVER_DIR}/saves ]; then
echo "---'saves' not found creating---"
mkdir ${SERVER_DIR}/saves
fi
echo "---Directory 'saves' found!---"
echo "---Checking for 'config.cfg'---"
if [ ! -f ${SERVER_DIR}/config/config.cfg ]; then
echo "---'config.cfg' not found downloading---"
if [ ! -d ${SERVER_DIR}/config ]; then
mkdir ${SERVER_DIR}/config
fi
cd ${SERVER_DIR}/config
if wget -q -nc --show-progress --progress=bar:force:noscroll https://raw.githubusercontent.com/ich777/docker-steamcmd-server/theforest/config/config.cfg ; then
echo "---Successfully downloaded 'config.cfg'---"
else
echo "---Something went wrong, can't download 'config.cfg', putting server in sleep mode---"
sleep infinity
fi
fi
echo "---Checking if WINE workdirectory is present---"
if [ ! -d ${SERVER_DIR}/WINE64 ]; then
echo "---WINE workdirectory not found, creating please wait...---"
echo "---WINE workdirectory not found, creating please wait...---"
mkdir ${SERVER_DIR}/WINE64
else
echo "---WINE workdirectory found---"
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---"
echo "---Setting up WINE---"
cd ${SERVER_DIR}
winecfg > /dev/null 2>&1
sleep 15
else
echo "---WINE properly set up---"
echo "---WINE properly set up---"
fi
echo "---Checking if dotnet45 is installed---"
if [ ! -f ${SERVER_DIR}/dotnet45 ]; then
echo "---dotnet45 not installed, please wait installing...---"
find /tmp -name ".X99*" -exec rm -f {} \; > /dev/null 2>&1
/opt/scripts/start-Xvfb.sh 2>/dev/null &
echo "---...this can take some time...---"
sleep 5
/usr/bin/winetricks -q dotnet45 2>/dev/null
wine64 ${SERVER_DIR}/Binaries/Win64/UDK.exe server coldmap1?steamsockets >/dev/null 2&>1 &
sleep 10
kill $(pidof UDK.exe)
kill $(pidof Xvfb)
sed -i "/^Password=/c\Password=Docker" ${SERVER_DIR}/UDKGame/Config/UDKDedServerSettings.ini
sed -i "/^AdminPassword=/c\AdminPassword=adminDocker" ${SERVER_DIR}/UDKGame/Config/UDKDedServerSettings.ini
sed -i "/^ServerName=/c\ServerName=Subsistence Docker" ${SERVER_DIR}/UDKGame/Config/UDKDedServerSettings.ini
sed -i "/^ServerDescription=/c\ServerDescription=Subsistence running in Docker" ${SERVER_DIR}/UDKGame/Config/UDKDedServerSettings.ini
sed -i "/^HostedByName=/c\HostedByName=Unraid" ${SERVER_DIR}/UDKGame/Config/UDKDedServerSettings.ini
touch ${SERVER_DIR}/dotnet45
echo "---Installation from dotnet45 finished!---"
else
echo "---dotnet45 found! Continuing...---"
fi
echo "---Checking for old display lock files---"
find /tmp -name ".X99*" -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---"
cd ${SERVER_DIR}
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 ${SERVER_DIR}/TheForestDedicatedServer.exe -batchmode -dedicated -savefolderpath "${SERVER_DIR}/saves/" -configfilepath "${SERVER_DIR}/config/config.cfg" ${GAME_PARAMS}
if [ ! -f ${SERVER_DIR}/Binaries/Win64/UDK.exe ]; then
echo "---Something went wrong, can't find the executable, putting container into sleep mode!---"
sleep infinity
else
cd ${SERVER_DIR}/Binaries/Win64
screen -S UDK -d -m wine64 ${SERVER_DIR}/Binaries/Win64/UDK.exe server coldmap1?steamsockets -log ${GAME_PARAMS}
sleep 2
/opt/scripts/start-watchdog.sh &
tail -n 9999 -f ${SERVER_DIR}/UDKGame/Logs/Launch.log
fi

View File

@@ -0,0 +1,8 @@
#!/bin/bash
killpid="$(pidof UDK.exe)"
while true
do
tail --pid=$killpid -f /dev/null
kill "$(pidof tail)"
exit 0
done

View File

@@ -26,8 +26,8 @@ chown -R ${UID}:${GID} ${DATA_DIR}
echo "---Starting...---"
term_handler() {
kill -SIGINT $(pgrep TheForestDedica)
tail --pid=$(pgrep TheForestDedica) -f 2>/dev/null
kill -SIGINT $(pidof UDK.exe)
tail --pid=$(pidof UDK.exe) -f 2>/dev/null
exit 143;
}