Compare commits

..

35 Commits
cs2 ... vrising

Author SHA1 Message Date
7eb64456b2 compose.yml hinzugefügt 2025-01-29 07:56:11 +01:00
15d54b2318 scripts/start-server.sh aktualisiert 2024-06-06 10:53:04 +02:00
aec39d04f0 „scripts/start-watchdog.sh“ ändern 2023-05-27 17:33:59 +02:00
68950246c9 „scripts/start-watchdog.sh“ ändern 2023-05-27 17:20:47 +02:00
ad610e454b „config/ServerHostSettings.json“ ändern 2023-05-19 08:28:58 +02:00
f2ee1a13c3 „scripts/start.sh“ ändern 2022-10-25 11:11:14 +02:00
a16c3859c2 Merge pull request #24 from ricin/vrising
Added BepInEx for V Rising support.
2022-06-05 08:13:25 +02:00
9c36f444a4 changed variable to -> "" 2022-06-05 08:12:49 +02:00
0c581da1f0 changed false -> empty 2022-06-05 08:12:33 +02:00
51fe74290f Update start-server.sh 2022-06-05 08:09:24 +02:00
cf78806232 added two things
- enable mod if a user had previously enabled and disabled BepInEx and enables it again
- changed README in line 119 also to .txt extension
2022-06-04 21:43:08 +02:00
d303cbc430 few changes
- put the variables in "ENABLE_BEPINIX" condition
- made a few changes to the jq routine to get rid of trailing /
- removed winhttp arguments
- put the API URL directly in the curl line because it is only used once (curl output to variable doesn't work in container)
- added line to disable BepInEx if user disables it after enabling it to turn it off again
2022-06-04 21:30:51 +02:00
ricin
66350d0d83 Silently grab Thunderstore BepInEx json 2022-06-04 05:15:29 -07:00
ricin
e5cf925467 Added BepInEx for V Rising support. 2022-06-03 14:09:33 -07:00
f24da8fe35 „scripts/start-server.sh“ ändern 2022-05-18 17:37:51 +02:00
f55c8e3603 „README.md“ ändern 2022-05-18 06:56:24 +02:00
f9b79a7941 „scripts/start-server.sh“ ändern 2022-05-18 06:47:34 +02:00
0c659a61c0 „README.md“ ändern 2022-05-17 20:00:20 +02:00
4cb9c42755 „scripts/start-server.sh“ ändern 2022-05-17 19:50:10 +02:00
e67f763f7a „scripts/start-server.sh“ ändern 2022-05-17 19:43:27 +02:00
b1c06c3502 „scripts/start-server.sh“ ändern 2022-05-17 19:39:36 +02:00
e940b63bb8 „scripts/start-server.sh“ ändern 2022-05-17 19:39:24 +02:00
b90a44d81d „Dockerfile“ ändern 2022-05-17 19:28:14 +02:00
847260ee02 „scripts/start-server.sh“ ändern 2022-05-17 19:27:27 +02:00
f54e530497 Dateien hochladen nach „config“ 2022-05-17 19:23:30 +02:00
d38f863f43 „scripts/start-watchdog.sh“ hinzufügen 2022-05-17 19:21:21 +02:00
6b9d703a86 „scripts/start.sh“ ändern 2022-05-17 19:17:47 +02:00
34f7dc3b05 „Dockerfile“ ändern 2022-05-17 19:15:44 +02:00
06bc48b975 „scripts/start-server.sh“ ändern 2022-05-17 18:34:43 +02:00
0b9a9cf671 „Dockerfile“ ändern 2022-05-17 18:34:05 +02:00
ca0c8fefe6 „Dockerfile“ ändern 2022-05-06 09:06:19 +02:00
e7c87bd8f1 „README.md“ ändern 2022-04-18 13:08:18 +02:00
2432940e23 „scripts/start-server.sh“ ändern 2022-04-13 14:31:26 +02:00
89598a9710 „scripts/start.sh“ ändern 2022-04-07 17:20:32 +02:00
83992eb6cb „scripts/start-server.sh“ ändern 2021-12-14 12:59:09 +01:00
7 changed files with 189 additions and 36 deletions

View File

@@ -1,19 +1,22 @@
FROM ich777/debian-baseimage:bullseye_amd64
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 apt-get update && \
apt-get -y install --no-install-recommends lib32gcc-s1 lib32stdc++6 lib32z1 lsof libicu67 && \
apt-get -y install --no-install-recommends curl unzip jq lib32gcc-s1 screen xvfb winbind xauth && \
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 SERVER_NAME="V Rising Docker"
ENV WORLD_NAME="world1"
ENV GAME_NAME="template"
ENV GAME_PARAMS="template"
ENV GAME_PORT=27015
ENV ENABLE_BEPINEX=""
ENV VALIDATE=""
ENV UMASK=000
ENV UID=99

View File

@@ -1,44 +1,42 @@
# SteamCMD in Docker optimized for Unraid
This Docker will download and install SteamCMD. It will also install Counter-Strike 2 and run it.
This Docker will download and install SteamCMD. It will also install V Rising and run it.
**ATTENTION:** You have to provide a valid Steam account with the game in it is Library and SteamGuard completely disabled so that the download is working!
_It is recommended that you create dedicated Steam account for your dedicated servers with the games in it and SteamGuard completely disabled!_
**DON'T DISABLE STEAM GUARD ON YOUR PRIMARY ACCOUNT!!!**
**Save Files:** The save files are located in: .../vrising/save-data/Saves
**Config Files:** The config files are located in: .../vrising/save-data/Settings
**ATTENTION:** First Startup can take very long since it downloads the gameserver files!
**PUBLIC PLAY:** If you want that your server is public listed you must add '+sv_setsteamaccount YOURTOKEN' to the GAME_PARAMS (without the quotes and replace YOURTOKEN with your token).
Create your token here: https://steamcommunity.com/dev/managegameservers (every gameserver needs it's own token!!!)
**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!
## Example Env
## Example 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: '730 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 730 |
| USERNAME | Leave blank for anonymous login | \<STEAMUSER> |
| PASSWRD | Leave blank for anonymous login | \<STEAMPASSWORD> |
| GAME_PARAMS | Values to start the server | -dedicated -dev +map de_inferno +game_type 0 +game_mode 1 -usercon |
| 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: '1829350 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 1829350 |
| SERVER_NAME | Enter your preferred server name. | V Rising Docker |
| WORLD_NAME | Enter your prefered world name. | world1 |
| GAME_PARAMS | Enter additional game startup parameters if needed, otherwise leave empty. | empty |
| ENABLE_BEPINEX | If you want to enable BepInEx for V Rising set this variable to 'true' (without quotes). For more help please refer to this site: [Click](https://v-rising.thunderstore.io/package/BepInEx/BepInExPack_V_Rising/) | 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 |
| VALIDATE | Validates the game data | true |
| USERNAME | Leave blank for anonymous login | blank |
| PASSWRD | Leave blank for anonymous login | blank |
## Run example
```
docker run --name CS2 -d \
-p 27015:27015 -p 27015:27015/udp \
--env 'GAME_ID=730' \
--env 'USERNAME=<STEAMUSER>' \
--env 'PASSWRD=<STEAMPASSWORD>' \
--env 'GAME_PARAMS=-dedicated -dev +map de_inferno +game_type 0 +game_mode 1 -usercon' \
docker run --name V-Rising -d \
-p 9876-9877:9876-9877/udp \
--env 'GAME_ID=1829350' \
--env 'SERVER_NAME=V Rising Docker' \
--env 'WORLD_NAME=world1' \
--env 'UID=99' \
--env 'GID=100' \
--volume /path/to/steamcmd:/serverdata/steamcmd \
--volume /path/to/cs2:/serverdata/serverfiles \
ich777/steamcmd:cs2
--volume /path/to/vrising:/serverdata/serverfiles \
ich777/steamcmd:vrising
```
This Docker was mainly edited for better use with Unraid, if you don't use Unraid you should definitely try it!

16
compose.yml Normal file
View File

@@ -0,0 +1,16 @@
services:
vrising:
container_name: V-Rising
image: ich777/steamcmd:vrising
ports:
- "9876-9877:9876-9877/udp"
environment:
- GAME_ID=1829350
- SERVER_NAME="V Rising Docker"
- WORLD_NAME=world1
- UID=99 # a valid UID from the host
- GID=100 # a valid GID from the host
- ENABLE_BEPINEX=false
volumes:
- /path/to/steamcmd:/serverdata/steamcmd
- /path/to/vrising:/serverdata/serverfiles

View File

@@ -0,0 +1,21 @@
{
"Name": "V Rising Docker",
"Description": "",
"Port": 9876,
"QueryPort": 9877,
"Address": "0.0.0.0",
"MaxConnectedUsers": 40,
"MaxConnectedAdmins": 4,
"ServerFps": 30,
"SaveName": "world1",
"Password": "Docker",
"Secure": true,
"ListOnSteam": true,
"ListOnEOS": true,
"AutoSaveCount": 30,
"AutoSaveInterval": 60,
"CompressSaveFiles": true,
"GameSettingsPreset": "",
"AdminOnlyDebugEvents": true,
"DisableDebugEvents": false
}

View File

@@ -22,12 +22,14 @@ if [ "${USERNAME}" == "" ]; then
if [ "${VALIDATE}" == "true" ]; then
echo "---Validating installation---"
${STEAMCMD_DIR}/steamcmd.sh \
+@sSteamCmdForcePlatformType windows \
+force_install_dir ${SERVER_DIR} \
+login anonymous \
+app_update ${GAME_ID} validate \
+quit
else
${STEAMCMD_DIR}/steamcmd.sh \
+@sSteamCmdForcePlatformType windows \
+force_install_dir ${SERVER_DIR} \
+login anonymous \
+app_update ${GAME_ID} \
@@ -37,12 +39,14 @@ else
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} \
@@ -50,19 +54,122 @@ else
fi
fi
echo "---Prepare Server---"
if [ ! -f ${DATA_DIR}/.steam/sdk64/steamclient.so ]; then
if [ ! -d ${DATA_DIR}/.steam ]; then
mkdir ${DATA_DIR}/.steam
if [ "${ENABLE_BEPINEX}" == "true" ]; then
export WINEDLLOVERRIDES="winhttp=n,b"
BEPINEX_VR_TS_URL=https://v-rising.thunderstore.io/package/BepInEx/BepInExPack_V_Rising/
echo "---BepInEx for V Rising enabled!---"
CUR_V="$(find ${SERVER_DIR} -maxdepth 1 -name "BepInEx-*" | cut -d '-' -f2)"
BEPINEX_VR_API_DATA="$(curl -s -X GET https://thunderstore.io/c/v-rising/api/v1/package/b86fcaaf-297a-45c8-82a0-fcbd7806fdc4/ -H "accept: application/json")"
LAT_V="$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].version_number')"
if [ -z "${LAT_V}" ] && [ -z "${CUR_V}" ]; then
echo "---Can't get latest version of BepInEx for V Rising!---"
echo "---Please try to run the Container without BepInEx for V Rising, putting Container into sleep mode!---"
sleep infinity
fi
if [ ! -d ${DATA_DIR}/.steam/sdk64 ]; then
mkdir ${DATA_DIR}/.steam/sdk64
if [ -f ${SERVER_DIR}/BepInEx.zip ]; then
rm -rf ${SERVER_DIR}/BepInEx.zip
fi
cp -R ${STEAMCMD_DIR}/linux64/* ${DATA_DIR}/.steam/sdk64/
echo "---BepInEx for V Rising Version Check---"
echo
echo "---${BEPINEX_VR_TS_URL}---"
echo
BEPINEX_VR_TS_DOWNLOAD_URL="$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].download_url')"
if [ -z "${CUR_V}" ]; then
echo "---BepInEx for V Rising not found, downloading and installing v${LAT_V}...---"
cd ${SERVER_DIR}
rm -rf ${SERVER_DIR}/BepInEx-*
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c "${BEPINEX_VR_TS_DOWNLOAD_URL}" ; then
echo "---Successfully downloaded BepInEx for V Rising v${LAT_V}---"
else
echo "---Something went wrong, can't download BepInEx for V Rising v${LAT_V}, putting container into sleep mode!---"
sleep infinity
fi
mkdir -p /tmp/BepInEx
unzip -o ${SERVER_DIR}/BepInEx.zip -d /tmp/BepInEx
if [ $? -eq 0 ];then
touch ${SERVER_DIR}/BepInEx-${LAT_V}
cp -rf /tmp/BepInEx/BepInEx*/* ${SERVER_DIR}/
cp /tmp/BepInEx/README* ${SERVER_DIR}/README_BepInEx_for_VRising.txt
rm -rf ${SERVER_DIR}/BepInEx.zip /tmp/BepInEx
else
echo "---Unable to unzip BepInEx archive! Putting container into sleep mode!---"
sleep infinity
fi
elif [ "$CUR_V" != "${LAT_V}" ]; then
echo "---Version missmatch, BepInEx v$CUR_V installed, downloading and installing v${LAT_V}...---"
cd ${SERVER_DIR}
rm -rf ${SERVER_DIR}/BepInEx-$CUR_V
mkdir /tmp/Backup
cp -R ${SERVER_DIR}/BepInEx/config /tmp/Backup/
if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${SERVER_DIR}/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c "${BEPINEX_VR_TS_DOWNLOAD_URL}" ; then
echo "---Successfully downloaded BepInEx for V Rising v${LAT_V}---"
else
echo "---Something went wrong, can't download BepInEx for V Rising v${LAT_V}, putting container into sleep mode!---"
sleep infinity
fi
unzip -o ${SERVER_DIR}/BepInEx.zip -d /tmp/BepInEx
if [ $? -eq 0 ];then
cp -rf /tmp/BepInEx/BepInEx*/* ${SERVER_DIR}/
cp /tmp/BepInEx/README* ${SERVER_DIR}/README_BepInEx_for_VRising.txt
touch ${SERVER_DIR}/BepInEx-${LAT_V}
cp -R /tmp/Backup/config ${SERVER_DIR}/BepInEx/
rm -rf ${SERVER_DIR}/BepInEx.zip /tmp/BepInEx /tmp/Backup
else
echo "---Unable to unzip BepInEx archive! Putting container into sleep mode!---"
sleep infinity
fi
elif [ "${CUR_V}" == "${LAT_V}" ]; then
echo "---BepInEx v$CUR_V up-to-date---"
fi
if [ -f ${SERVER_DIR}/doorstop_config.ini ]; then
sed -i "/enabled = false/c\enabled = true" ${SERVER_DIR}/doorstop_config.ini
fi
# Workaround for disabling console to actually be able to start with BepInEx
sed -i '/^\[Logging.Console\]/,/^Enabled =/ s/^Enabled = true.*/Enabled = false/' ${SERVER_DIR}/BepInEx/config/BepInEx.cfg
else
if [ -f ${SERVER_DIR}/doorstop_config.ini ]; then
sed -i "/enabled = true/c\enabled = false" ${SERVER_DIR}/doorstop_config.ini
fi
echo "---BepInEx for V Rising disabled!---"
fi
export WINEARCH=win64
export WINEPREFIX=/serverdata/serverfiles/WINE64
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
if [ ! -d ${SERVER_DIR}/save-data/Settings ]; then
mkdir -p ${SERVER_DIR}/save-data
cp -R ${SERVER_DIR}/VRisingServer_Data/StreamingAssets/Settings ${SERVER_DIR}/save-data
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 "---Start Server---"
cd ${SERVER_DIR}
${SERVER_DIR}/game/bin/linuxsteamrt64/cs2 ${GAME_PARAMS}
xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine64 ${SERVER_DIR}/VRisingServer.exe -persistentDataPath ${SERVER_DIR}/save-data -serverName "${SERVER_NAME}" -saveName "${WORLD_NAME}" -logFile ${SERVER_DIR}/logs/VRisingServer.log ${GAME_PARAMS} >/dev/null 2>&1 &
sleep 5
/opt/scripts/start-watchdog.sh &
tail -n +0 -f ${SERVER_DIR}/logs/VRisingServer.log

View File

@@ -0,0 +1,8 @@
#!/bin/bash
killpid="$(pidof VRisingServer.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 -SIGTERM "$killpid"
wait "$killpid" -f 2>/dev/null
kill -SIGINT $(pidof VRisingServer.exe)
tail --pid=$(pidof VRisingServer.exe) -f 2>/dev/null
exit 143;
}