Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
e55b03ba94 | |||
1a431c7286
|
|||
786c88ace3
|
|||
9c4d6dd1e5
|
|||
f1eecac1ba
|
|||
a624f05425
|
|||
27a57a48de
|
|||
eb8aa41951
|
|||
64750fa660 | |||
4defb796eb | |||
361b3d7945 | |||
33e701b427 | |||
2f098b2c11 | |||
f7d79aa6d0 | |||
ece9c5258d | |||
c8f27e028c | |||
b6e788d2b6 | |||
7eb6664c32 | |||
1fa3f72937 | |||
82ef8cb5aa | |||
d79aa3a1ec |
18
Dockerfile
18
Dockerfile
@@ -1,18 +1,19 @@
|
||||
FROM ich777/winehq-baseimage
|
||||
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 dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get -y install lib32gcc-s1 screen xvfb winbind mariadb-server && \
|
||||
RUN apt-get update && \
|
||||
apt-get -y install --no-install-recommends lib32gcc-s1 lib32stdc++6 && \
|
||||
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_PARAMS="-world 1"
|
||||
ENV GAME_NAME="template"
|
||||
ENV GAME_PARAMS="template"
|
||||
ENV GAME_PORT=27015
|
||||
ENV VALIDATE=""
|
||||
ENV UMASK=000
|
||||
ENV UID=99
|
||||
@@ -27,12 +28,7 @@ RUN mkdir $DATA_DIR && \
|
||||
mkdir $SERVER_DIR && \
|
||||
useradd -d $DATA_DIR -s /bin/bash $USER && \
|
||||
chown -R $USER $DATA_DIR && \
|
||||
ulimit -n 2048 && \
|
||||
/etc/init.d/mariadb start && \
|
||||
mysql -u root -e "CREATE USER IF NOT EXISTS 'steam'@'%' IDENTIFIED BY 'lifyo';FLUSH PRIVILEGES;" && \
|
||||
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'steam'@'%' IDENTIFIED BY 'lifyo';" && \
|
||||
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'LiFYO';FLUSH PRIVILEGES;" && \
|
||||
echo "\n[mysqld]\ndatadir=/serverdata/serverfiles/.database/" >> /etc/alternatives/my.cnf
|
||||
ulimit -n 2048
|
||||
|
||||
ADD /scripts/ /opt/scripts/
|
||||
RUN chmod -R 770 /opt/scripts/
|
||||
|
35
README.md
35
README.md
@@ -1,43 +1,40 @@
|
||||
# SteamCMD in Docker optimized for Unraid
|
||||
This Docker will download and install SteamCMD. It will also install Life is Feudal: Your Own and run it.
|
||||
This Docker will download and install SteamCMD. It will also install Garry's Mod and run it.
|
||||
|
||||
Initial server configuration:
|
||||
**Servername:** LiF Docker **Password:** Docker **Admin Password:** adminDocker
|
||||
|
||||
**ATTENTION:** First startup can take very long since it downloads the gameserver files and it also installs the runtimes which can take quite some time!
|
||||
|
||||
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.
|
||||
|
||||
## Env params
|
||||
| Name | Value | Example |
|
||||
| --- | --- | --- |
|
||||
| STEAMCMD_DIR | Folder for SteamCMD | /serverdata/steamcmd |
|
||||
| SERVER_DIR | Folder for gamefile | /serverdata/serverfiles |
|
||||
| GAME_PARAMS | Values to start the server if needed. | 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: '320850 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 320850 |
|
||||
| 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: '4020 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 4020 |
|
||||
| GAME_NAME | SRCDS gamename | garrysmod |
|
||||
| GAME_PARAMS | Values to start the server | -secure +maxplayers 12 +map gm_flatgrass |
|
||||
| UID | User Identifier | 99 |
|
||||
| GID | Group Identifier | 100 |
|
||||
| VALIDATE | Validates the game data | false |
|
||||
| GAME_PORT | Port the server will be running on | 27015 |
|
||||
| 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 LifeIsFeudal-YourOwn -d \
|
||||
-p 28000-28003 -p 28000-28003/udp \
|
||||
--env 'GAME_ID=320850' \
|
||||
docker run --name GarrysMod -d \
|
||||
-p 27015:27015 -p 27015:27015/udp \
|
||||
--env 'GAME_ID=4020' \
|
||||
--env 'GAME_NAME=garrysmod' \
|
||||
--env 'GAME_PORT=27015' \
|
||||
--env 'GAME_PARAMS=-secure +maxplayers 12 +map gm_flatgrass' \
|
||||
--env 'UID=99' \
|
||||
--env 'GID=100' \
|
||||
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
||||
--volume /path/to/lifeisfeudal-yo:/serverdata/serverfiles \
|
||||
ich777/steamcmd:lifyo
|
||||
--volume /path/to/garrysmod:/serverdata/serverfiles \
|
||||
ich777/steamcmd:garrysmod
|
||||
```
|
||||
|
||||
|
||||
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/
|
||||
### Support Thread: https://forums.unraid.net/topic/79530-support-ich777-gameserver-dockers/
|
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<server_data port="25564" name="Stormworks Docker" save_name="autosave_server" max_players="32" password="Docker" day_night_length="60" sunrise="0.25" sunset="0.791" infinite_resources="false" unlock_all_islands="false" settings_menu="false" base_island="data/tiles/island12.xml" settings_menu_lock="false" infinite_batteries="false" infinite_fuel="false" engine_overheating="false" ceasefire="false" infinite_ammo="false" no_clip="false" map_teleport="false" vehicle_spawn="false" photo_mode="false" respawning="false" cleanup_vehicle="false" clear_fow="false" third_person="true" third_person_vehicle="true" vehicle_damage="false" player_damage="false" npc_damage="false" aggressive_animals="false" sea_monsters="false" lightning="true" teleport_vehicle="true" fast_travel="true" starting_currency="20000" despawn_on_leave="false" map_show_players="false" map_show_vehicles="false" show_3d_waypoints="false" show_name_plates="false" override_weather="false" override_time="false" override_wind="false" physics_timestep="0" wildlife_enabled="true" fish_spawn_rate="2" unlock_components="true" dlc_weapons="false" dlc_arid="false"/>
|
@@ -1,4 +0,0 @@
|
||||
until Xvfb :99 -screen scrn 640x480x16; do
|
||||
echo "Xvfb server crashed with exit code $?. Respawning.." >&2
|
||||
sleep 1
|
||||
done
|
@@ -22,14 +22,12 @@ 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} \
|
||||
@@ -39,14 +37,12 @@ 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} \
|
||||
@@ -55,79 +51,8 @@ else
|
||||
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 config---"
|
||||
if grep -q "<name>My own LiF server</name>" ${SERVER_DIR}/config/world_1.xml ; then
|
||||
echo "---Adding initial config parameters to config file---"
|
||||
sed -i 's/\<My own LiF server\>/LiF Docker/g' ${SERVER_DIR}/config/world_1.xml
|
||||
sed -i s/"<password><\/password>"/"<password>Docker<\/password>"/g ${SERVER_DIR}/config/world_1.xml
|
||||
sed -i s/"<adminPassword><\/adminPassword>"/"<adminPassword>adminDocker<\/adminPassword>"/g ${SERVER_DIR}/config/world_1.xml
|
||||
else
|
||||
echo "---Config check done---"
|
||||
fi
|
||||
|
||||
echo "---Checking if database is in place---"
|
||||
if [ ! -d ${SERVER_DIR}/.database ]; then
|
||||
echo "---Database not found, setting up databbase...---"
|
||||
mkdir -p ${SERVER_DIR}/.database
|
||||
cp -R /var/lib/mysql/* ${SERVER_DIR}/.database/
|
||||
else
|
||||
echo "---Database found---"
|
||||
fi
|
||||
|
||||
echo "---Checking if database configuration is in place---"
|
||||
if [ ! -f ${SERVER_DIR}/config_local.cs ]; then
|
||||
echo "---Database configuration not found, configuring...---"
|
||||
cp ${SERVER_DIR}/docs/config_local.cs ${SERVER_DIR}/config_local.cs
|
||||
sed -i 's/\<root\>/steam/g' ${SERVER_DIR}/config_local.cs
|
||||
sed -i 's/\<rootPassword\>/lifyo/g' ${SERVER_DIR}/config_local.cs
|
||||
else
|
||||
echo "---Database connection found---"
|
||||
fi
|
||||
|
||||
echo "---Starting MariaDB---"
|
||||
screen -S MariaDB -d -m mysqld_safe
|
||||
sleep 2
|
||||
|
||||
echo "---Starting Xvfb---"
|
||||
screen -S Xvfb -d -m /opt/scripts/start-Xvfb.sh
|
||||
sleep 2
|
||||
|
||||
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---"
|
||||
if [ ! -f ${SERVER_DIR}/ddctd_cm_yo_server.exe ]; then
|
||||
echo "---Something went wrong, can't find the executable, putting container into sleep mode!---"
|
||||
sleep infinity
|
||||
else
|
||||
cd ${SERVER_DIR}
|
||||
screen -S LiFYO -d -m wine64 ddctd_cm_yo_server.exe ${GAME_PARAMS}
|
||||
echo "---Waiting for logs...---"
|
||||
sleep 3
|
||||
/opt/scripts/start-watchdog.sh &
|
||||
cd ${SERVER_DIR}/logs
|
||||
cd $(ls -1d */ | tail -1)
|
||||
tail -n 9999 -f $(ls -t | head -n 1)
|
||||
fi
|
||||
${SERVER_DIR}/srcds_run -game ${GAME_NAME} ${GAME_PARAMS} -console +port ${GAME_PORT}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
killpid="$(pidof ddctd_cm_yo_server.exe)"
|
||||
while true
|
||||
do
|
||||
tail --pid=$killpid -f /dev/null
|
||||
kill "$(pidof tail)"
|
||||
exit 0
|
||||
done
|
@@ -22,16 +22,12 @@ fi
|
||||
echo "---Taking ownership of data...---"
|
||||
chown -R root:${GID} /opt/scripts
|
||||
chmod -R 750 /opt/scripts
|
||||
chown -R ${UID}:${GID} /var/lib/mysql
|
||||
chown -R ${UID}:${GID} /var/run/mysqld
|
||||
chown -R ${UID}:${GID} ${DATA_DIR}
|
||||
chmod -R 770 /var/lib/mysql
|
||||
chmod -R 770 /var/run/mysqld
|
||||
|
||||
echo "---Starting...---"
|
||||
term_handler() {
|
||||
kill -SIGINT $(pidof ddctd_cm_yo_server.exe)
|
||||
tail --pid=$(pidof ddctd_cm_yo_server.exe) -f 2>/dev/null
|
||||
kill -SIGTERM "$killpid"
|
||||
wait "$killpid" -f 2>/dev/null
|
||||
exit 143;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user