Compare commits

..

48 Commits

Author SHA1 Message Date
eeb85556ad scripts/start-server.sh aktualisiert 2024-04-10 08:22:07 +02:00
f14a1dc3fe scripts/start-server.sh aktualisiert 2024-04-10 08:20:35 +02:00
30700f775f geändert: Dockerfile
geändert:       README.md
	geändert:       scripts/start-server.sh
2023-12-17 11:03:47 +01:00
eac5e63c4d „scripts/start-server.sh“ ändern 2023-02-05 22:24:25 +01:00
081ddedfea „Dockerfile“ ändern 2023-02-05 22:24:05 +01:00
d3d5934ad5 „scripts/start-server.sh“ ändern 2023-02-05 22:23:05 +01:00
0750068ca6 „scripts/start.sh“ ändern 2022-10-25 11:09:00 +02:00
e2ec99e499 „Dockerfile“ ändern 2022-05-06 10:52:03 +02:00
57aab8c7d3 „README.md“ ändern 2022-04-18 14:06:13 +02:00
dc3549bfe2 „scripts/start.sh“ ändern 2022-04-18 14:04:37 +02:00
43174efe10 „scripts/start.sh“ ändern 2022-04-07 17:15:39 +02:00
b326166d44 „README.md“ ändern 2022-01-29 12:25:15 +01:00
371ab7fe00 „README.md“ ändern 2022-01-29 12:22:47 +01:00
f5c2a67935 „scripts/start-server.sh“ ändern 2022-01-29 11:27:07 +01:00
4949e254bc „scripts/start.sh“ ändern 2022-01-29 11:25:47 +01:00
793d6ec39a „Dockerfile“ ändern 2022-01-29 11:11:35 +01:00
c5a37f3b49 „scripts/start-server.sh“ ändern 2021-05-13 07:55:40 +02:00
86a2f8df1d „Dockerfile“ ändern 2021-05-12 09:24:15 +02:00
1d71725f68 „scripts/start-server.sh“ ändern 2021-05-12 09:23:54 +02:00
cb6a834697 „Dockerfile“ ändern 2021-05-12 09:08:08 +02:00
a7d7932e64 „Dockerfile“ ändern 2021-05-12 09:06:55 +02:00
42289cdf22 „scripts/start-server.sh“ ändern 2021-05-12 09:05:45 +02:00
6b57321b20 „scripts/start.sh“ ändern 2021-03-10 15:01:56 +01:00
43bd6d7772 „Dockerfile“ ändern 2021-03-10 15:01:09 +01:00
4c682e1bf1 „scripts/start.sh“ ändern 2020-04-28 17:01:31 +02:00
06996ce77d „.drone.yml“ löschen 2020-03-08 21:06:26 +01:00
b14f052be6 „.drone.yml“ hinzufügen
Some checks reported errors
continuous-integration/drone/push Build was killed
2020-03-05 20:22:02 +01:00
e8b15b0fec „scripts/start-server.sh“ ändern 2020-02-25 14:37:58 +01:00
d6e571306b „scripts/start.sh“ hinzufügen 2020-02-25 14:37:45 +01:00
6634fa2927 „Dockerfile“ ändern 2020-02-25 14:28:38 +01:00
b6919f1eb6 „Dockerfile“ ändern 2020-01-07 16:56:33 +01:00
25217bb65b „Dockerfile“ ändern 2019-11-11 11:30:47 +01:00
2a4e76bad4 „scripts/start-server.sh“ ändern 2019-11-11 11:24:53 +01:00
1b7da01cab „scripts/start-server.sh“ ändern 2019-06-04 15:01:01 +02:00
f64d2934d6 „Dockerfile“ ändern 2019-06-04 14:49:44 +02:00
afd3bcf56d „Dockerfile“ ändern 2019-06-04 14:48:40 +02:00
1bc269133d „scripts/start-server.sh“ ändern 2019-06-04 14:48:33 +02:00
8d4cd6dd52 „Dockerfile“ ändern 2019-06-04 14:35:11 +02:00
72f414543c „scripts/start-server.sh“ ändern 2019-06-04 14:34:09 +02:00
63c028c511 „scripts/start-server.sh“ ändern 2019-06-04 13:40:29 +02:00
00e650d120 „Dockerfile“ ändern 2019-06-04 12:41:17 +02:00
af4f947705 „scripts/start-server.sh“ ändern 2019-06-04 12:40:56 +02:00
b683db6b1f „scripts/start-server.sh“ ändern 2019-06-04 12:33:54 +02:00
a9333a0352 „scripts/start-server.sh“ ändern 2019-05-21 11:57:20 +02:00
f3b120f82d „scripts/start-server.sh“ ändern 2019-05-20 22:58:31 +02:00
b380bc7f24 Update start-server.sh 2019-04-29 17:32:41 +02:00
c463e82651 Update start-server.sh 2019-04-29 13:20:07 +02:00
1c1fbc6826 Update Dockerfile 2019-04-29 12:54:18 +02:00
4 changed files with 137 additions and 49 deletions

View File

@@ -1,20 +1,27 @@
FROM ich777/debian-baseimage:bullseye_amd64
FROM ich777/debian-baseimage
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 --no-install-recommends lib32gcc-s1 libc6-i386 lib32stdc++6 && \
apt-get -y install --no-install-recommends lib32gcc-s1 libsqlite3-0 libgdiplus unzip && \
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_MOD="template"
ENV GAME_NAME="template"
ENV GAME_PARAMS="template"
ENV GAME_PORT=27015
ENV GAME_PORT=28015
ENV QUERY_PORT=28016
ENV RCON_PORT=28017
ENV APP_PORT=28018
ENV SERVER_NAME="RustDocker"
ENV SERVER_DISCRIPTION="Simple Unraid Rust Docker"
ENV OXIDE_MOD="false"
ENV CARBON_MOD="false"
ENV FORCE_OXIDE_INSTALLATION="true"
ENV VALIDATE=""
ENV UMASK=000
ENV UID=99

View File

@@ -1,5 +1,5 @@
# SteamCMD in Docker optimized for Unraid
This Docker will download and install SteamCMD. It will also install Counter-Strike Condition Zero and run it.
This Docker will download and install SteamCMD. It will also install RUST and run it.
**Update Notice:** Simply restart the container if a newer version of the game is available.
@@ -8,31 +8,33 @@ This Docker will download and install SteamCMD. It will also install Counter-Str
| --- | --- | --- |
| 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: '90 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 90 +app_set_config '90 mod dmc' |
| GAME_MOD | SteamID for server | 90 mod czero |
| GAME_NAME | SRCDS gamename | czero |
| GAME_PARAMS | Values to start the server | -secure +maxplayers 32 +map as_oilrig |
| GAME_ID | The GAME_ID that the container downloads at startup. If you want to use a beta version of the game enter this: '258550 -beta staging' or '258550 -beta prerelease' (without quotes). | 258550 |
| GAME_PARAMS | Enter here your extra game startup parameters if needed starting with (eg: '+rcon.port 27016 +rcon.password YOURPASSWORD' don't forget to add also a new port mapping with container and host port set to the corresponding RCON port) | +server.maxplayers 10 |
| SERVER_NAME | Name of the Server goes here | RustDockerServer |
| SERVER_DISCRIPTION | Server Description goes here | Simple Unraid Rust Docker Server |
| OXIDE_MOD | Set to 'true' (without quotes) to enable Oxide Mod, otherwise leave empty (the container will check on every start/restart if there is a newer version available). | false |
| CARBON_MOD | Set to 'true' (without quotes) to enable Carbon Mod, otherwise leave empty (the container will check on every start/restart if there is a newer version available). | false |
| GAME_PORT | Game port on which the server is running (has to match the port mapping in your container). | 28015 |
| UID | User Identifier | 99 |
| GID | Group Identifier | 100 |
| GAME_PORT | Port the server will be running on | 27015 |
| VALIDATE | Validates the game data | blank |
| VALIDATE | Validates the game data | false |
| USERNAME | Leave blank for anonymous login | blank |
| PASSWRD | Leave blank for anonymous login | blank |
## Run example
```
docker run --name CStrikeConditionZero -d \
-p 27015:27015 -p 27015:27015/udp \
--env 'GAME_ID=90 +app_set_config '90 mod dmc'' \
--env 'GAME_MOD=90 mod czero' \
--env 'GAME_NAME=czero' \
--env 'GAME_PORT=27015' \
--env 'GAME_PARAMS=-secure +maxplayers 32 +map as_oilrig' \
docker run --name RUST -d \
-p 28015:28015/udp \
--env 'GAME_ID=258550' \
--env 'SERVER_NAME=RustDockerServer' \
--env 'SERVER_DISCRIPTION=Simple Unraid Rust Docker Server' \
--env 'GAME_PARAMS=+server.maxplayers 10' \
--env 'GAME_PORT=28015' \
--env 'UID=99' \
--env 'GID=100' \
--volume /path/to/steamcmd:/serverdata/steamcmd \
--volume /path/to/cstrikeczero:/serverdata/serverfiles \
ich777/steamcmd:cstrikeczero
--volume /path/to/rust:/serverdata/serverfiles \
ich777/steamcmd:rust
```
This Docker was mainly edited for better use with Unraid, if you don't use Unraid you should definitely try it!

View File

@@ -24,14 +24,12 @@ if [ "${USERNAME}" == "" ]; then
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login anonymous \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} validate \
+quit
else
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login anonymous \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} \
+quit
fi
@@ -41,47 +39,127 @@ else
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login ${USERNAME} ${PASSWRD} \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} validate \
+quit
else
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login ${USERNAME} ${PASSWRD} \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} \
+quit
fi
fi
echo "---Checking if everything is installed correctly---"
if [ ! -d ${SERVER_DIR}/czero ]; then
echo "---Not everything is installed correctly, trying again---"
if [ "${USERNAME}" == "" ]; then
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login anonymous \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} validate \
+quit
else
${STEAMCMD_DIR}/steamcmd.sh \
+force_install_dir ${SERVER_DIR} \
+login ${USERNAME} ${PASSWRD} \
+app_set_config ${GAME_MOD} \
+app_update ${GAME_ID} validate \
+quit
if [ "${OXIDE_MOD}" == "true" ] && [ "${CARBON_MOD}" == "true" ]; then
echo "---Oxide and Carbon mod enabled, you can only enable one at a time, putting container into sleep mode.--"
sleep infinity
fi
if [ "${OXIDE_MOD}" == "true" ]; then
echo "---Oxide Mod enabled!---"
CUR_V="$(find ${SERVER_DIR} -maxdepth 1 -name "OxideMod-*.zip" | cut -d '-' -f2)"
LAT_V="$(wget -qO- https://api.github.com/repos/OxideMod/Oxide.Rust/releases/latest | grep tag_name | cut -d '"' -f4)"
if [ -z ${LAT_V} ]; then
if [ -z ${CUR_V%.*} ]; then
echo "---Can't get latest Oxide Mod version and found no installed version, putting server into sleep mode!---"
sleep infinity
else
echo "---Everything is installed correctly---"
echo "---Can_t get latest Oxide Mod version, falling back to installed v${CUR_V%.*}!---"
LAT_V="${CUR_V%.*}"
fi
fi
if [ -z "${CUR_V%.}" ]; then
echo "---Oxide Mod not found, downloading!---"
rm -f ${SERVER_DIR}/OxideMod-*.zip
cd ${SERVER_DIR}
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/OxideMod-${LAT_V}.zip "https://github.com/OxideMod/Oxide.Rust/releases/download/${LAT_V}/Oxide.Rust-linux.zip" ; then
echo "---Successfully downloaded Oxide Mode v${LAT_V}!---"
else
echo "---Something went wrong, can't download Oxide Mod v${LAT_V}, putting server in sleep mode---"
sleep infinity
fi
unzip -o ${SERVER_DIR}/OxideMod-${LAT_V}.zip -d ${SERVER_DIR}
elif [ "${LAT_V}" != "${CUR_V%.*}" ]; then
cd ${SERVER_DIR}
rm -rf ${SERVER_DIR}/OxideMod-*.zip
echo "---Newer version of Oxide Mod v${LAT_V} found, currently installed: v${CUR_V%.*}---"
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/OxideMod-${LAT_V}.zip "https://github.com/OxideMod/Oxide.Rust/releases/download/${LAT_V}/Oxide.Rust-linux.zip" ; then
echo "---Successfully downloaded Oxide Mod v${LAT_V}!---"
else
echo "---Something went wrong, can't download Oxide Mod v${LAT_V}, putting server in sleep mode---"
sleep infinity
fi
unzip -o ${SERVER_DIR}/OxideMod-${LAT_V}.zip -d ${SERVER_DIR}
elif [ "$LAT_V" == "${CUR_V%.*}" ]; then
echo "---Oxide Mod v${CUR_V%.*} is Up-To-Date!---"
fi
if [ "${FORCE_OXIDE_INSTALLATION}" == "true" ]; then
unzip -o ${SERVER_DIR}/OxideMod-${LAT_V}.zip -d ${SERVER_DIR}
fi
fi
if [ "${CARBON_MOD}" == "true" ]; then
echo "---Carbon Mod enabled!---"
CUR_V="$(find ${SERVER_DIR} -maxdepth 1 -name "CarbonMod-*.tar.gz" | cut -d '-' -f2)"
LAT_V="$(wget -qO- https://api.github.com/repos/CarbonCommunity/Carbon/releases/latest | grep tag_name | cut -d '"' -f4)"
if [ -z ${LAT_V} ]; then
if [ -z ${CUR_V%.tar.gz} ]; then
echo "---Can't get latest Carbon Mod version and found no installed version, putting server into sleep mode!---"
sleep infinity
else
echo "---Can_t get latest Carbon Mod version, falling back to installed v${CUR_V%.tar.gz}!---"
LAT_V="${CUR_V%.tar.gz}"
fi
fi
if [ -z "${CUR_V%.tar.gz}" ]; then
echo "---Carbon Mod not found, downloading!---"
rm -f ${SERVER_DIR}/CarbonMod-*.tar.gz
cd ${SERVER_DIR}
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/CarbonMod-${LAT_V}.tar.gz "https://github.com/CarbonCommunity/Carbon/releases/download/${LAT_V}/Carbon.Linux.Release.tar.gz" ; then
echo "---Successfully downloaded Carbon Mode ${LAT_V}!---"
else
echo "---Something went wrong, can't download Carbon Mod ${LAT_V}, putting server in sleep mode---"
sleep infinity
fi
tar -xvf ${SERVER_DIR}/CarbonMod-${LAT_V}.tar.gz -C ${SERVER_DIR}
#unzip -o ${SERVER_DIR}/CarbonMod-${LAT_V}.zip -d ${SERVER_DIR}
elif [ "${LAT_V}" != "${CUR_V%.tar.gz}" ]; then
cd ${SERVER_DIR}
rm -rf ${SERVER_DIR}/CarbonMod-*.tar.gz
echo "---Newer version of Carbon Mod ${LAT_V} found, currently installed: v${CUR_V%.tar.gz}---"
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/CarbonMod-${LAT_V}.tar.gz "https://github.com/CarbonCommunity/Carbon/releases/download/${LAT_V}/Carbon.Linux.Release.tar.gz" ; then
echo "---Successfully downloaded Carbon Mod ${LAT_V}!---"
else
echo "---Something went wrong, can't download Carbon Mod ${LAT_V}, putting server in sleep mode---"
sleep infinity
fi
tar -xvf ${SERVER_DIR}/CarbonMod-${LAT_V}.tar.gz ${SERVER_DIR}
elif [ "$LAT_V" == "${CUR_V%.tar.gz}" ]; then
echo "---Carbon Mod ${CUR_V%.tar.gz} is Up-To-Date!---"
fi
if [ "${FORCE_CARBON_INSTALLATION}" == "true" ]; then
tar -xvf ${SERVER_DIR}/CarbonMod-${LAT_V}.tar.gz -C ${SERVER_DIR}
fi
source "${SERVER_DIR}/carbon/tools/environment.sh"
fi
echo "---Prepare Server---"
mkdir ${DATA_DIR}/.steam/sdk32
cp ${SERVER_DIR}/steamclient.so ${DATA_DIR}/.steam/sdk32/steamclient.so
chmod -R ${DATA_PERM} ${DATA_DIR}
echo "---Setting Library path---"
export LD_LIBRARY_PATH=:/bin/RustDedicated_Data/Plugins/x86_64
echo "---Server ready---"
echo "---Start Server---"
cd ${SERVER_DIR}
${SERVER_DIR}/hlds_run -game ${GAME_NAME} ${GAME_PARAMS} -console +port ${GAME_PORT}
if [ ! -f ${SERVER_DIR}/RustDedicated ]; then
echo "---Can't find game executable, putting server into sleep mode!---"
sleep infinity
else
${SERVER_DIR}/RustDedicated -batchmode -server.port ${GAME_PORT} -server.queryport ${QUERY_PORT} -rcon.port ${RCON_PORT} -app.port ${APP_PORT} -server.hostname "${SERVER_NAME}" -server.description "${SERVER_DISCRIPTION}" ${GAME_PARAMS}
fi

View File

@@ -26,8 +26,9 @@ chown -R ${UID}:${GID} ${DATA_DIR}
echo "---Starting...---"
term_handler() {
kill -SIGTERM "$killpid"
wait "$killpid" -f 2>/dev/null
kill -SIGINT $(pidof RustDedicated)
tail --pid=$(pidof RustDedicated) -f 2>/dev/null
sleep 0.5
exit 143;
}