Compare commits
119 Commits
v1
...
lambdawars
Author | SHA1 | Date | |
---|---|---|---|
e937873a26 | |||
d165ac4ca7
|
|||
28d1d521ea
|
|||
fc8d348083
|
|||
0d0b464f2c
|
|||
991affb5f7
|
|||
7e5cc16f23
|
|||
95ef3127b8
|
|||
78f24bfe52
|
|||
5db32f8d91
|
|||
851a6f210e
|
|||
634b21d1d9
|
|||
a1253cdfca
|
|||
83992eb6cb
|
|||
5e4b466e76
|
|||
72a0e28c71
|
|||
82dea2c6af
|
|||
16d782c55e
|
|||
58f34acf41
|
|||
f0ea49bad6 | |||
d25c781c22 | |||
056f05756a | |||
1c79a312d2 | |||
41df27576a | |||
ad3762e4c0 | |||
821c430387 | |||
37e416a7b1 | |||
8d4d03b438 | |||
20a77cae00 | |||
2e9463a721 | |||
d62dca657f | |||
a7a8798ea8 | |||
94a9d103b6 | |||
25509af841 | |||
a82efe30be | |||
704525d91c | |||
252605ca63 | |||
eb266c39f6 | |||
57865f566b | |||
d22246d105 | |||
f0137cf7b6 | |||
0f592029f1 | |||
8d283cfe53 | |||
becf5dc1a7 | |||
4278fc8884 | |||
700351ff61 | |||
ed40f24e06 | |||
8b70b11884 | |||
d71ca52efe | |||
075799da02 | |||
1fea73c677 | |||
d8471aadf3 | |||
500275b668 | |||
f603c5a482 | |||
20e2a492b6 | |||
1af4324c74 | |||
83c8ce9cc4 | |||
5fe96b0b12 | |||
d755ec14fa | |||
d5fa207964 | |||
26ca9f1ad0 | |||
d50caefedd | |||
3a2fd6a598 | |||
a7f37fcf85 | |||
d5d85ac911 | |||
f6900bf5a5 | |||
546dc7c319 | |||
74d636577e | |||
d448df5801 | |||
a663bbb7fa | |||
53a86c7ea2 | |||
d7e0a36f88 | |||
83d06598c4 | |||
45a951f94e | |||
51c9ecf700 | |||
376f7a06dc | |||
cb19c5f003 | |||
e8a67cf353 | |||
eeb873b5a8 | |||
ff2e78a8bd | |||
6c67d0b0e2 | |||
a0cbf4f91f | |||
f80ef02c6e | |||
036f1356de | |||
09168405e1 | |||
924c6017b9 | |||
f64ab2abd1 | |||
36590b4d65 | |||
5d89185447 | |||
769ffb051b | |||
0c05977241 | |||
93c791552d | |||
2b40b1eb63 | |||
f4bbb08354 | |||
e1bc103b7b | |||
9d96e65385 | |||
9d41321985 | |||
6ee5c060ec | |||
9fe2f36cf1 | |||
553f592a2f | |||
c1d656cc46 | |||
b817d5b177 | |||
de5943d244 | |||
7ea682bc64 | |||
|
353ffae4f6 | ||
|
1784bd6089 | ||
|
9a04db8c7a | ||
|
726a4522fa | ||
|
6b4e787021 | ||
|
5ade361ec9 | ||
|
3a5a8c1c11 | ||
|
6d72a2dae7 | ||
|
3ca64f4fb0 | ||
|
187727f842 | ||
|
f8c7456f4f | ||
|
ad05453649 | ||
|
c17e75cc71 | ||
|
e9d87318a6 | ||
|
26bfd6da1b |
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
github: ich777
|
53
Dockerfile
53
Dockerfile
@@ -1,38 +1,37 @@
|
||||
FROM ubuntu
|
||||
FROM ich777/winehq-baseimage
|
||||
|
||||
MAINTAINER Mattie
|
||||
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
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install libstdc++6:i386
|
||||
RUN apt-get -y install wget
|
||||
RUN apt-get update && \
|
||||
apt-get -y install --no-install-recommends lib32gcc-s1 lib32stdc++6 xvfb winbind && \
|
||||
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="740"
|
||||
ENV GAME_NAME="csgo"
|
||||
ENV GAME_PARAMS="+game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2"
|
||||
ENV GAME_ID="template"
|
||||
ENV GAME_NAME="template"
|
||||
ENV GAME_PARAMS="template"
|
||||
ENV GAME_PORT=27015
|
||||
ENV VALIDATE=""
|
||||
ENV UMASK=000
|
||||
ENV UID=99
|
||||
ENV GID=100
|
||||
ENV USERNAME=""
|
||||
ENV PASSWRD=""
|
||||
ENV USER="steam"
|
||||
ENV DATA_PERM=770
|
||||
|
||||
RUN mkdir $DATA_DIR
|
||||
RUN mkdir $STEAMCMD_DIR
|
||||
RUN mkdir $SERVER_DIR
|
||||
RUN mkdir -p ~/.steam/sdk32
|
||||
|
||||
RUN wget -q -O ${STEAMCMD_DIR}/steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz \
|
||||
&& tar --directory ${STEAMCMD_DIR} -xvzf /serverdata/steamcmd/steamcmd_linux.tar.gz \
|
||||
&& rm ${STEAMCMD_DIR}/steamcmd_linux.tar.gz \
|
||||
&& chmod -R 774 ${STEAMCMD_DIR} ${STEAMCMD_DIR}/linux32 $SERVER_DIR \
|
||||
&& ln -s ${STEAMCMD_DIR}/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
|
||||
RUN ulimit -n 2048
|
||||
|
||||
EXPOSE 27015
|
||||
EXPOSE 27015/udp
|
||||
EXPOSE 27020/udp
|
||||
EXPOSE 27005/udp
|
||||
RUN mkdir $DATA_DIR && \
|
||||
mkdir $STEAMCMD_DIR && \
|
||||
mkdir $SERVER_DIR && \
|
||||
useradd -d $DATA_DIR -s /bin/bash $USER && \
|
||||
chown -R $USER $DATA_DIR && \
|
||||
ulimit -n 2048
|
||||
|
||||
ADD /scripts/ /opt/scripts/
|
||||
RUN chmod -R 774 /opt/scripts/
|
||||
RUN chmod -R 770 /opt/scripts/
|
||||
|
||||
#Server Start
|
||||
ENTRYPOINT ["/opt/scripts/start-csgo.sh"]
|
||||
ENTRYPOINT ["/opt/scripts/start.sh"]
|
61
README.md
61
README.md
@@ -1,28 +1,43 @@
|
||||
#Steamcmd in docker
|
||||
This dockerfill will download/install steamcmd.
|
||||
It will also install the server you want(like csgo,tf2,ins ...)
|
||||
# SteamCMD in Docker optimized for Unraid
|
||||
This Docker will download and install SteamCMD. It will also install LambdaWars and run it.
|
||||
|
||||
##Env params
|
||||
| Name | Value | Default |
|
||||
**STEAM CREDENTIALS:** For this container you have to provide valid Steam credentials where SteamGuard is disabled and this user need to have the game in it's library (since this game is free you can simply add it to this account).
|
||||
It is recommended to create a dedicated Steam account for dedicated servers so that account theft of your personal account is impossible.
|
||||
|
||||
## Example Env params for CS:Source
|
||||
| Name | Value | Example |
|
||||
| --- | --- | --- |
|
||||
| DATA_DIR | main folder | /serverdata |
|
||||
| STEAMCMD_DIR | folder for steamcmd | /serverdata/steamcmd |
|
||||
| SERVER_DIR | folder for gamefile | /serverdata/serverfiles |
|
||||
| GAME_ID | steamid for server | 740 |
|
||||
| GAME_NAME | srcds gamename | csgo |
|
||||
| GAME_PARAMS | values to start the server | +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 |
|
||||
| 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: '319060 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 319060 |
|
||||
| GAME_NAME | SRCDS gamename | lambdawars |
|
||||
| GAME_PARAMS | Values to start the server | +maxplayers 8 +map gamelobby |
|
||||
| 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 |
|
||||
|
||||
>**NOTE** GAME_ID values can be found [here](https://developer.valvesoftware.com/wiki/Dedicated_Servers_List)
|
||||
|
||||
> And for GAME_NAME there is no list, so a quick search should give you the result
|
||||
|
||||
##Run example
|
||||
## Run example
|
||||
```
|
||||
docker run --name csgo-server -d \
|
||||
-p 27015:27015 -p 27015:27015/udp -p 27020:27020/udp -p 27005:27005/udp \
|
||||
--env 'GAME_ID=740' \
|
||||
--env 'GAME_NAME=csgo' \
|
||||
--env 'GAME_PARAMS=+game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2' \
|
||||
--volume /share/CACHEDEV1_DATA/Public/VM/Docker/CSGO:/serverdata \
|
||||
mattie/docker-steamcmd-server:stable
|
||||
docker run --name LambdaWars -d \
|
||||
-p 27015:27015/udp -p 27005:27005/udp -p 27020:27020/udp -p 26901:26901/udp -p 27015:27015 \
|
||||
--env 'GAME_ID=319060' \
|
||||
--env 'GAME_NAME=lambdawars' \
|
||||
--env 'GAME_PORT=27015' \
|
||||
--env 'USERNAME=YOURSTEAMUSER' \
|
||||
--env 'PASSWRD=YOURSTEAMPASSWORD' \
|
||||
--env 'GAME_PARAMS=+maxplayers 8 +map gamelobby' \
|
||||
--env 'UID=99' \
|
||||
--env 'GID=100' \
|
||||
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
||||
--volume /path/to/lambdawars:/serverdata/serverfiles \
|
||||
ich777/steamcmd:lambdawars
|
||||
```
|
||||
|
||||
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/
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
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
|
||||
tar --directory ${STEAMCMD_DIR} -xvzf /serverdata/steamcmd/steamcmd_linux.tar.gz
|
||||
rm ${STEAMCMD_DIR}/steamcmd_linux.tar.gz
|
||||
chmod -R 774 ${STEAMCMD_DIR}/steamcmd.sh ${STEAMCMD_DIR}/linux32/steamcmd
|
||||
ln -s ${STEAMCMD_DIR}/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
|
||||
fi
|
||||
|
||||
echo "---Update steamcmd---"
|
||||
${STEAMCMD_DIR}/steamcmd.sh \
|
||||
+login anonymous \
|
||||
+quit
|
||||
|
||||
echo "---Update server---"
|
||||
${STEAMCMD_DIR}/steamcmd.sh \
|
||||
+login anonymous \
|
||||
+force_install_dir $SERVER_DIR \
|
||||
+app_update $GAME_ID \
|
||||
+quit
|
||||
|
||||
echo "---Start Server---"
|
||||
${SERVER_DIR}/srcds_run -game $GAME_NAME -usercon -console $GAME_PARAMS +ip 0.0.0.0 +port 27015 +sv_lan 0
|
70
scripts/start-server.sh
Normal file
70
scripts/start-server.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
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
|
||||
tar --directory ${STEAMCMD_DIR} -xvzf /serverdata/steamcmd/steamcmd_linux.tar.gz
|
||||
rm ${STEAMCMD_DIR}/steamcmd_linux.tar.gz
|
||||
fi
|
||||
|
||||
echo "---Update SteamCMD---"
|
||||
if [ "${USERNAME}" == "" ]; then
|
||||
echo "Please enter a valid username and password and restart the container. ATTENTION: Steam Guard must be DISABLED!!!"
|
||||
sleep infinity
|
||||
else
|
||||
${STEAMCMD_DIR}/steamcmd.sh \
|
||||
+login ${USERNAME} ${PASSWRD} \
|
||||
+quit
|
||||
fi
|
||||
|
||||
echo "---Update Server---"
|
||||
if [ "${VALIDATE}" == "true" ]; then
|
||||
echo "---Validating installation---"
|
||||
${STEAMCMD_DIR}/steamcmd.sh \
|
||||
+@sSteamCmdForcePlatformType windows \
|
||||
+force_install_dir ${SERVER_DIR} \
|
||||
+login ${USERNAME} ${PASSWRD} \
|
||||
+app_update ${GAME_ID} validate \
|
||||
+quit
|
||||
else
|
||||
${STEAMCMD_DIR}/steamcmd.sh \
|
||||
+@sSteamCmdForcePlatformType windows \
|
||||
+force_install_dir ${SERVER_DIR} \
|
||||
+login ${USERNAME} ${PASSWRD} \
|
||||
+app_update ${GAME_ID} \
|
||||
+quit
|
||||
fi
|
||||
|
||||
echo "---Prepare Server---"
|
||||
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
|
||||
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
|
||||
else
|
||||
echo "---WINE properly set up---"
|
||||
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---"
|
||||
Xvfb :99 -screen scrn 640x480x16 2>/dev/null &
|
||||
sleep 3
|
||||
|
||||
echo "---Start Server---"
|
||||
cd ${SERVER_DIR}
|
||||
wine64 start srcds.exe -console -game ${GAME_NAME} ${GAME_PARAMS} +port ${GAME_PORT}
|
||||
sleep 1
|
||||
tail --pid=$(pgrep srcds.exe) -f /dev/null
|
41
scripts/start.sh
Normal file
41
scripts/start.sh
Normal file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
echo "---Ensuring UID: ${UID} matches user---"
|
||||
usermod -u ${UID} ${USER}
|
||||
echo "---Ensuring GID: ${GID} matches user---"
|
||||
groupmod -g ${GID} ${USER} > /dev/null 2>&1 ||:
|
||||
usermod -g ${GID} ${USER}
|
||||
echo "---Setting umask to ${UMASK}---"
|
||||
umask ${UMASK}
|
||||
|
||||
echo "---Checking for optional scripts---"
|
||||
cp -f /opt/custom/user.sh /opt/scripts/start-user.sh > /dev/null 2>&1 ||:
|
||||
cp -f /opt/scripts/user.sh /opt/scripts/start-user.sh > /dev/null 2>&1 ||:
|
||||
|
||||
if [ -f /opt/scripts/start-user.sh ]; then
|
||||
echo "---Found optional script, executing---"
|
||||
chmod -f +x /opt/scripts/start-user.sh ||:
|
||||
/opt/scripts/start-user.sh || echo "---Optional Script has thrown an Error---"
|
||||
else
|
||||
echo "---No optional script found, continuing---"
|
||||
fi
|
||||
|
||||
echo "---Taking ownership of data...---"
|
||||
chown -R root:${GID} /opt/scripts
|
||||
chmod -R 750 /opt/scripts
|
||||
chown -R ${UID}:${GID} ${DATA_DIR}
|
||||
|
||||
echo "---Starting...---"
|
||||
term_handler() {
|
||||
kill -SIGTERM "$killpid"
|
||||
wait "$killpid" -f 2>/dev/null
|
||||
exit 143;
|
||||
}
|
||||
|
||||
trap 'kill ${!}; term_handler' SIGTERM
|
||||
su ${USER} -c "/opt/scripts/start-server.sh" &
|
||||
killpid="$!"
|
||||
while true
|
||||
do
|
||||
wait $killpid
|
||||
exit 0;
|
||||
done
|
Reference in New Issue
Block a user