Compare commits
46 Commits
rust
...
projectzom
Author | SHA1 | Date | |
---|---|---|---|
ed2d3034d3 | |||
9908cce8ba | |||
8e33b6adaa
|
|||
2906f40aed
|
|||
0d14384f5e
|
|||
f2990b3fb3
|
|||
a5b395f74f
|
|||
2d5dd259ce
|
|||
59633661c9
|
|||
622f590b70
|
|||
561ac1863d
|
|||
6e8dda4877
|
|||
c4c7a0f952
|
|||
2e46692284
|
|||
82bf38aa8e
|
|||
769bceba97 | |||
0701805ce0 | |||
9dd0f890ae | |||
93f4a853bd | |||
65675a133b | |||
d47178c975 | |||
9b4b62f08c | |||
aca9821cbe | |||
eb8f1bd45c | |||
20451dfb55 | |||
6b07e267dc | |||
a8f2528c0c | |||
bf26b3ad92 | |||
c9c68c7cc8 | |||
9ab948f3de | |||
379c4ee750 | |||
dd5edf7afe | |||
4cf4578606 | |||
d7a177fbb5 | |||
5ff2acc7cf | |||
59743a9ce7 | |||
9f8b559904 | |||
3e12790cf9 | |||
de7e0ba57a | |||
8e19d9d3d0 | |||
a0a0bb3726 | |||
bf873f21f3 | |||
3d7e698bc5 | |||
a29620dd5a | |||
8f13b8850d | |||
7d0b2023cc |
17
Dockerfile
17
Dockerfile
@@ -4,7 +4,7 @@ LABEL org.opencontainers.image.authors="admin@minenet.at"
|
|||||||
LABEL org.opencontainers.image.source="https://github.com/ich777/docker-steamcmd-server"
|
LABEL org.opencontainers.image.source="https://github.com/ich777/docker-steamcmd-server"
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get -y install --no-install-recommends lib32gcc-s1 libsqlite3-0 libgdiplus unzip && \
|
apt-get -y install --no-install-recommends lib32gcc-s1 screen unzip && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV DATA_DIR="/serverdata"
|
ENV DATA_DIR="/serverdata"
|
||||||
@@ -13,15 +13,8 @@ ENV SERVER_DIR="${DATA_DIR}/serverfiles"
|
|||||||
ENV GAME_ID="template"
|
ENV GAME_ID="template"
|
||||||
ENV GAME_NAME="template"
|
ENV GAME_NAME="template"
|
||||||
ENV GAME_PARAMS="template"
|
ENV GAME_PARAMS="template"
|
||||||
ENV GAME_PORT=28015
|
ENV ADMIN_PWD="adminDocker"
|
||||||
ENV QUERY_PORT=28016
|
ENV GAME_PORT=27015
|
||||||
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 VALIDATE=""
|
||||||
ENV UMASK=000
|
ENV UMASK=000
|
||||||
ENV UID=99
|
ENV UID=99
|
||||||
@@ -34,7 +27,7 @@ ENV DATA_PERM=770
|
|||||||
RUN mkdir $DATA_DIR && \
|
RUN mkdir $DATA_DIR && \
|
||||||
mkdir $STEAMCMD_DIR && \
|
mkdir $STEAMCMD_DIR && \
|
||||||
mkdir $SERVER_DIR && \
|
mkdir $SERVER_DIR && \
|
||||||
useradd -d $DATA_DIR -s /bin/bash $USER && \
|
useradd -d $SERVER_DIR -s /bin/bash $USER && \
|
||||||
chown -R $USER $DATA_DIR && \
|
chown -R $USER $DATA_DIR && \
|
||||||
ulimit -n 2048
|
ulimit -n 2048
|
||||||
|
|
||||||
@@ -42,4 +35,4 @@ ADD /scripts/ /opt/scripts/
|
|||||||
RUN chmod -R 770 /opt/scripts/
|
RUN chmod -R 770 /opt/scripts/
|
||||||
|
|
||||||
#Server Start
|
#Server Start
|
||||||
ENTRYPOINT ["/opt/scripts/start.sh"]
|
ENTRYPOINT ["/opt/scripts/start.sh"]
|
29
README.md
29
README.md
@@ -1,5 +1,5 @@
|
|||||||
# SteamCMD in Docker optimized for Unraid
|
# SteamCMD in Docker optimized for Unraid
|
||||||
This Docker will download and install SteamCMD. It will also install RUST and run it.
|
This Docker will download and install SteamCMD. It will also install Project Zomboid and run it.
|
||||||
|
|
||||||
**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.
|
||||||
|
|
||||||
@@ -8,13 +8,8 @@ This Docker will download and install SteamCMD. It will also install RUST and ru
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| STEAMCMD_DIR | Folder for SteamCMD | /serverdata/steamcmd |
|
| STEAMCMD_DIR | Folder for SteamCMD | /serverdata/steamcmd |
|
||||||
| SERVER_DIR | Folder for gamefile | /serverdata/serverfiles |
|
| SERVER_DIR | Folder for gamefile | /serverdata/serverfiles |
|
||||||
| 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_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: '380870 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 380870 |
|
||||||
| 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 |
|
| ADMIN_PWD | Password to become admin ingame | adminDocker |
|
||||||
| 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 |
|
| UID | User Identifier | 99 |
|
||||||
| GID | Group Identifier | 100 |
|
| GID | Group Identifier | 100 |
|
||||||
| VALIDATE | Validates the game data | false |
|
| VALIDATE | Validates the game data | false |
|
||||||
@@ -23,22 +18,20 @@ This Docker will download and install SteamCMD. It will also install RUST and ru
|
|||||||
|
|
||||||
## Run example
|
## Run example
|
||||||
```
|
```
|
||||||
docker run --name RUST -d \
|
docker run --name ProjectZomboid -d \
|
||||||
-p 28015:28015/udp \
|
-p 16261-16262:16261-16262/udp -p 27015:27015 \
|
||||||
--env 'GAME_ID=258550' \
|
--env 'GAME_ID=380870' \
|
||||||
--env 'SERVER_NAME=RustDockerServer' \
|
--env 'ADMIN_PWD=adminDocker' \
|
||||||
--env 'SERVER_DISCRIPTION=Simple Unraid Rust Docker Server' \
|
|
||||||
--env 'GAME_PARAMS=+server.maxplayers 10' \
|
|
||||||
--env 'GAME_PORT=28015' \
|
|
||||||
--env 'UID=99' \
|
--env 'UID=99' \
|
||||||
--env 'GID=100' \
|
--env 'GID=100' \
|
||||||
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
||||||
--volume /path/to/rust:/serverdata/serverfiles \
|
--volume /path/to/projectzomboid:/serverdata/serverfiles \
|
||||||
ich777/steamcmd:rust
|
ich777/steamcmd:projectzomboid
|
||||||
```
|
```
|
||||||
|
|
||||||
This Docker was mainly edited for better use with Unraid, if you don't use Unraid you should definitely try it!
|
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.
|
This Docker is forked from mattieserver, thank you for this wonderfull Docker.
|
||||||
|
|
||||||
### Support Thread: https://forums.unraid.net/topic/79530-support-ich777-gameserver-dockers/
|
### Support Thread: https://forums.unraid.net/topic/79530-support-ich777-gameserver-dockers/
|
BIN
config/cfg.zip
Normal file
BIN
config/cfg.zip
Normal file
Binary file not shown.
@@ -50,116 +50,36 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
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 "---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---"
|
echo "---Prepare Server---"
|
||||||
|
echo "---Setting up Environment---"
|
||||||
|
export PATH="${SERVER_DIR}/jre64/bin:$PATH"
|
||||||
|
export LD_LIBRARY_PATH="${SERVER_DIR}/linux64:${SERVER_DIR}/natives:${SERVER_DIR}:${SERVER_DIR}/jre64/lib/amd64:${LD_LIBRARY_PATH}"
|
||||||
|
export JSIG="libjsig.so"
|
||||||
|
export JARPATH="java/:java/lwjgl.jar:java/lwjgl_util.jar:java/sqlite-jdbc-3.8.10.1.jar:java/uncommons-maths-1.2.3.jar"
|
||||||
|
echo "---Looking for server configuration file---"
|
||||||
|
if [ ! -d ${SERVER_DIR}/Zomboid ]; then
|
||||||
|
echo "---No server configruation found, downloading template---"
|
||||||
|
cd ${SERVER_DIR}
|
||||||
|
if wget -q -nc --show-progress --progress=bar:force:noscroll https://github.com/ich777/docker-steamcmd-server/raw/projectzomboid/config/cfg.zip ; then
|
||||||
|
echo "---Sucessfully downloaded server configuration file---"
|
||||||
|
else
|
||||||
|
echo "---Something went wrong, can't download server configuration file, putting server in sleep mode---"
|
||||||
|
sleep infinity
|
||||||
|
fi
|
||||||
|
unzip -o ${SERVER_DIR}/cfg.zip
|
||||||
|
rm ${SERVER_DIR}/cfg.zip
|
||||||
|
else
|
||||||
|
echo "---Server configuration files found!---"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "---Checking for old logs---"
|
||||||
|
find ${SERVER_DIR} -name "masterLog.0" -exec rm -f {} \; > /dev/null 2>&1
|
||||||
chmod -R ${DATA_PERM} ${DATA_DIR}
|
chmod -R ${DATA_PERM} ${DATA_DIR}
|
||||||
echo "---Setting Library path---"
|
|
||||||
export LD_LIBRARY_PATH=:/bin/RustDedicated_Data/Plugins/x86_64
|
|
||||||
echo "---Server ready---"
|
echo "---Server ready---"
|
||||||
|
|
||||||
echo "---Start Server---"
|
echo "---Start Server---"
|
||||||
cd ${SERVER_DIR}
|
cd ${SERVER_DIR}
|
||||||
if [ ! -f ${SERVER_DIR}/RustDedicated ]; then
|
screen -S PZ -L -Logfile ${SERVER_DIR}/masterLog.0 -d -m ${SERVER_DIR}/ProjectZomboid64 -adminpassword ${ADMIN_PWD} ${GAME_PARAMS}
|
||||||
echo "---Can't find game executable, putting server into sleep mode!---"
|
sleep 2
|
||||||
sleep infinity
|
screen -S watchdog -d -m /opt/scripts/start-watchdog.sh
|
||||||
else
|
tail -f ${SERVER_DIR}/masterLog.0
|
||||||
${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
|
|
8
scripts/start-watchdog.sh
Normal file
8
scripts/start-watchdog.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
killpid="$(pidof ProjectZomboid64)"
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
tail --pid=$killpid -f /dev/null
|
||||||
|
kill "$(pidof tail)"
|
||||||
|
exit 0
|
||||||
|
done
|
@@ -26,8 +26,8 @@ chown -R ${UID}:${GID} ${DATA_DIR}
|
|||||||
|
|
||||||
echo "---Starting...---"
|
echo "---Starting...---"
|
||||||
term_handler() {
|
term_handler() {
|
||||||
kill -SIGINT $(pidof RustDedicated)
|
kill -SIGINT $(pidof ProjectZomboid64)
|
||||||
tail --pid=$(pidof RustDedicated) -f 2>/dev/null
|
tail --pid=$(pidof ProjectZomboid64) -f 2>/dev/null
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
exit 143;
|
exit 143;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user