Compare commits
20 Commits
stormworks
...
lifyo
Author | SHA1 | Date | |
---|---|---|---|
4ad44c6236 | |||
c2f12e4973 | |||
5bb0fd1b97 | |||
795dd23ff6 | |||
06a69209e6 | |||
3dc0a90fe0 | |||
4b6613b811 | |||
1ad09f8f97 | |||
22f77bcd6a | |||
53f2c85cc3 | |||
1f180eba29 | |||
341fe7ab26 | |||
8452d04cd3 | |||
8420cc945a | |||
73f5b651d7 | |||
c695153cb8 | |||
a0952e7858 | |||
29d9a371be | |||
7472226716 | |||
92014b7df1 |
13
Dockerfile
13
Dockerfile
@@ -5,15 +5,14 @@ LABEL org.opencontainers.image.source="https://github.com/ich777/docker-steamcmd
|
||||
|
||||
RUN dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get -y install lib32gcc-s1 screen xvfb winbind && \
|
||||
apt-get -y install lib32gcc-s1 screen xvfb winbind mariadb-server && \
|
||||
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 WS_CONTENT=""
|
||||
ENV GAME_PARAMS=""
|
||||
ENV GAME_PARAMS="-world 1"
|
||||
ENV VALIDATE=""
|
||||
ENV UMASK=000
|
||||
ENV UID=99
|
||||
@@ -28,11 +27,15 @@ RUN mkdir $DATA_DIR && \
|
||||
mkdir $SERVER_DIR && \
|
||||
useradd -d $DATA_DIR -s /bin/bash $USER && \
|
||||
chown -R $USER $DATA_DIR && \
|
||||
ulimit -n 2048
|
||||
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
|
||||
|
||||
ADD /scripts/ /opt/scripts/
|
||||
RUN chmod -R 770 /opt/scripts/
|
||||
COPY /config/server_config.xml /opt/server_config.xml
|
||||
|
||||
#Server Start
|
||||
ENTRYPOINT ["/opt/scripts/start.sh"]
|
18
README.md
18
README.md
@@ -1,10 +1,8 @@
|
||||
# SteamCMD in Docker optimized for Unraid
|
||||
This Docker will download and install SteamCMD. It will also install Stormworks and run it.
|
||||
This Docker will download and install SteamCMD. It will also install Life is Feudal: Your Own and run it.
|
||||
|
||||
Initial server configuration:
|
||||
**Servername:** Stormworks Docker **Password:** Docker
|
||||
|
||||
**Configuration/Save Location:** You'll find your server configuration and saved games in: ../WINE64/drive_c/users/steam/AppData/Roaming/Stormworks/
|
||||
**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!
|
||||
|
||||
@@ -16,7 +14,7 @@ Update Notice: Simply restart the container if a newer version of the game is av
|
||||
| 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: '1247090 -beta YOURBRANCH' (without quotes, replace YOURBRANCH with the branch or version you want to install). | 1247090 |
|
||||
| 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 |
|
||||
| UID | User Identifier | 99 |
|
||||
| GID | Group Identifier | 100 |
|
||||
| VALIDATE | Validates the game data | false |
|
||||
@@ -26,14 +24,14 @@ Update Notice: Simply restart the container if a newer version of the game is av
|
||||
|
||||
## Run example
|
||||
```
|
||||
docker run --name Stormworks -d \
|
||||
-p 25564-25565/udp \
|
||||
--env 'GAME_ID=1247090' \
|
||||
docker run --name LifeIsFeudal-YourOwn -d \
|
||||
-p 28000-28003 -p 28000-28003/udp \
|
||||
--env 'GAME_ID=320850' \
|
||||
--env 'UID=99' \
|
||||
--env 'GID=100' \
|
||||
--volume /path/to/steamcmd:/serverdata/steamcmd \
|
||||
--volume /path/to/stormworks:/serverdata/serverfiles \
|
||||
ich777/steamcmd:stormworks
|
||||
--volume /path/to/lifeisfeudal-yo:/serverdata/serverfiles \
|
||||
ich777/steamcmd:lifyo
|
||||
```
|
||||
|
||||
|
||||
|
4
scripts/start-Xvfb.sh
Normal file
4
scripts/start-Xvfb.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
until Xvfb :99 -screen scrn 640x480x16; do
|
||||
echo "Xvfb server crashed with exit code $?. Respawning.." >&2
|
||||
sleep 1
|
||||
done
|
@@ -57,6 +57,7 @@ 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...---"
|
||||
@@ -74,27 +75,59 @@ else
|
||||
echo "---WINE properly set up---"
|
||||
fi
|
||||
|
||||
echo "---Looking if 'server_config.xml' file is in place---"
|
||||
if [ ! -f ${SERVER_DIR}/WINE64/drive_c/users/steam/AppData/Roaming/Stormworks/server_config.xml ]; then
|
||||
echo "---'ServerSettings.ini' not found, copying template...---"
|
||||
if [ ! -d ${SERVER_DIR}/WINE64/drive_c/users/steam/AppData/Roaming/Stormworks ]; then
|
||||
mkdir -p ${SERVER_DIR}/WINE64/drive_c/users/steam/AppData/Roaming/Stormworks
|
||||
fi
|
||||
cp /opt/server_config.xml ${SERVER_DIR}/WINE64/drive_c/users/steam/AppData/Roaming/Stormworks/server_config.xml
|
||||
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 "---'server_config.xml' found---"
|
||||
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}/server64.exe ]; then
|
||||
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}
|
||||
wine64 server64.exe ${GAME_PARAMS}
|
||||
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
|
8
scripts/start-watchdog.sh
Normal file
8
scripts/start-watchdog.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/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,14 +22,16 @@ fi
|
||||
echo "---Taking ownership of data...---"
|
||||
chown -R root:${GID} /opt/scripts
|
||||
chmod -R 750 /opt/scripts
|
||||
chown ${UID}:${GID} /opt/server_config.xml
|
||||
chmod 750 /opt/server_config.xml
|
||||
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 server64.exe)
|
||||
tail --pid=$(pidof server64.exe) -f 2>/dev/null
|
||||
kill -SIGINT $(pidof ddctd_cm_yo_server.exe)
|
||||
tail --pid=$(pidof ddctd_cm_yo_server.exe) -f 2>/dev/null
|
||||
exit 143;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user