diff --git a/Dockerfile b/Dockerfile index 83ffe15..ebdebbf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,13 @@ -FROM ich777/debian-baseimage:bullseye_amd64 +FROM fithwum/base-image:debian-bullseye +LABEL maintainer "fithwum" -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 && \ - rm -rf /var/lib/apt/lists/* +RUN apt-get update \ + && apt-get -y install --no-install-recommends lib32gcc-s1 lib32stdc++6 lib32z1 \ + && rm -rf /var/lib/apt/lists/* ENV DATA_DIR="/serverdata" -ENV STEAMCMD_DIR="${DATA_DIR}/steamcmd" -ENV SERVER_DIR="${DATA_DIR}/serverfiles" +ENV STEAMCMD_DIR="$DATA_DIR/steamcmd" +ENV SERVER_DIR="$DATA_DIR/serverfiles" ENV GAME_ID="template" ENV GAME_NAME="template" ENV GAME_PARAMS="template" @@ -23,15 +21,15 @@ ENV PASSWRD="" ENV USER="steam" ENV DATA_PERM=770 -RUN mkdir $DATA_DIR && \ - mkdir $STEAMCMD_DIR && \ - mkdir $SERVER_DIR && \ - useradd -d $DATA_DIR -s /bin/bash $USER && \ - chown -R $USER $DATA_DIR && \ - ulimit -n 2048 +RUN mkdir $DATA_DIR \ + && mkdir $STEAMCMD_DIR \ + && mkdir $SERVER_DIR \ + && useradd -d $DATA_DIR -s /bin/bash $USER \ + && chown -R $USER $DATA_DIR \ + && ulimit -n 2048 ADD /scripts/ /opt/scripts/ RUN chmod -R 770 /opt/scripts/ #Server Start -ENTRYPOINT ["/opt/scripts/start.sh"] +ENTRYPOINT ["/opt/scripts/start.sh"] \ No newline at end of file diff --git a/scripts/start-server.sh b/scripts/start-server.sh index b0b2c50..ac683f9 100644 --- a/scripts/start-server.sh +++ b/scripts/start-server.sh @@ -1,68 +1,68 @@ #!/bin/bash -if [ ! -f ${STEAMCMD_DIR}/steamcmd.sh ]; then +if [ ! -f $STEAMCMD_DIR/steamcmd.sh ]; then echo "SteamCMD not found!" - wget -q -O ${STEAMCMD_DIR}/steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz - tar --directory ${STEAMCMD_DIR} -xvzf /serverdata/steamcmd/steamcmd_linux.tar.gz - rm ${STEAMCMD_DIR}/steamcmd_linux.tar.gz + wget -q -O $STEAMCMD_DIR/steamcmd_linux.tar.gz http://media.steampowered.com/client/steamcmd_linux.tar.gz + tar --directory $STEAMCMD_DIR -xvzf /serverdata/steamcmd/steamcmd_linux.tar.gz + rm $STEAMCMD_DIR/steamcmd_linux.tar.gz fi echo "---Update SteamCMD---" -if [ "${USERNAME}" == "" ]; then - ${STEAMCMD_DIR}/steamcmd.sh \ +if [ "$USERNAME" == "" ]; then + $STEAMCMD_DIR/steamcmd.sh \ +login anonymous \ +quit else - ${STEAMCMD_DIR}/steamcmd.sh \ - +login ${USERNAME} ${PASSWRD} \ + $STEAMCMD_DIR/steamcmd.sh \ + +login $USERNAME $PASSWRD \ +quit fi echo "---Update Server---" -if [ "${USERNAME}" == "" ]; then - if [ "${VALIDATE}" == "true" ]; then +if [ "$USERNAME" == "" ]; then + if [ "$VALIDATE" == "true" ]; then echo "---Validating installation---" - ${STEAMCMD_DIR}/steamcmd.sh \ - +force_install_dir ${SERVER_DIR} \ + $STEAMCMD_DIR/steamcmd.sh \ + +force_install_dir $SERVER_DIR \ +login anonymous \ - +app_update ${GAME_ID} validate \ + +app_update $GAME_ID validate \ +quit else - ${STEAMCMD_DIR}/steamcmd.sh \ - +force_install_dir ${SERVER_DIR} \ + $STEAMCMD_DIR/steamcmd.sh \ + +force_install_dir $SERVER_DIR \ +login anonymous \ - +app_update ${GAME_ID} \ + +app_update $GAME_ID \ +quit fi else - if [ "${VALIDATE}" == "true" ]; then + if [ "$VALIDATE" == "true" ]; then echo "---Validating installation---" - ${STEAMCMD_DIR}/steamcmd.sh \ - +force_install_dir ${SERVER_DIR} \ - +login ${USERNAME} ${PASSWRD} \ - +app_update ${GAME_ID} validate \ + $STEAMCMD_DIR/steamcmd.sh \ + +force_install_dir $SERVER_DIR \ + +login $USERNAME $PASSWRD \ + +app_update $GAME_ID validate \ +quit else - ${STEAMCMD_DIR}/steamcmd.sh \ - +force_install_dir ${SERVER_DIR} \ - +login ${USERNAME} ${PASSWRD} \ - +app_update ${GAME_ID} \ + $STEAMCMD_DIR/steamcmd.sh \ + +force_install_dir $SERVER_DIR \ + +login $USERNAME $PASSWRD \ + +app_update $GAME_ID \ +quit fi fi echo "---Prepare Server---" -if [ ! -f ${DATA_DIR}/.steam/sdk32/steamclient.so ]; then - if [ ! -d ${DATA_DIR}/.steam ]; then - mkdir ${DATA_DIR}/.steam +if [ ! -f $DATA_DIR/.steam/sdk32/steamclient.so ]; then + if [ ! -d $DATA_DIR/.steam ]; then + mkdir $DATA_DIR/.steam fi - if [ ! -d ${DATA_DIR}/.steam/sdk32 ]; then - mkdir ${DATA_DIR}/.steam/sdk32 + if [ ! -d $DATA_DIR/.steam/sdk32 ]; then + mkdir $DATA_DIR/.steam/sdk32 fi - cp -R ${STEAMCMD_DIR}/linux32/* ${DATA_DIR}/.steam/sdk32/ + cp -R $STEAMCMD_DIR/linux32/* $DATA_DIR/.steam/sdk32/ fi -chmod -R ${DATA_PERM} ${DATA_DIR} +chmod -R $DATA_PERM $DATA_DIR echo "---Server ready---" echo "---Start Server---" -cd ${SERVER_DIR} -${SERVER_DIR}/srcds_run -game ${GAME_NAME} ${GAME_PARAMS} -console +port ${GAME_PORT} \ No newline at end of file +cd $SERVER_DIR +$SERVER_DIR/srcds_run -game $GAME_NAME $GAME_PARAMS -console +port $GAME_PORT \ No newline at end of file diff --git a/scripts/start.sh b/scripts/start.sh index a8b06c1..22ab6a0 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,11 +1,11 @@ #!/bin/bash -echo "---Ensuring UID: ${UID} matches user---" -usermod -u ${UID} ${USER} -echo "---Ensuring GID: ${GID} matches user---" -groupmod -g ${GID} ${USER} > /dev/null 2>&1 ||: -usermod -g ${GID} ${USER} -echo "---Setting umask to ${UMASK}---" -umask ${UMASK} +echo "---Ensuring UID: $UID matches user---" +usermod -u $UID $USER +echo "---Ensuring GID: $GID matches user---" +groupmod -g $GID $USER > /dev/null 2>&1 ||: +usermod -g $GID $USER +echo "---Setting umask to $UMASK---" +umask $UMASK echo "---Checking for optional scripts---" cp -f /opt/custom/user.sh /opt/scripts/start-user.sh > /dev/null 2>&1 ||: @@ -20,9 +20,9 @@ else fi echo "---Taking ownership of data...---" -chown -R root:${GID} /opt/scripts +chown -R root:$GID /opt/scripts chmod -R 750 /opt/scripts -chown -R ${UID}:${GID} ${DATA_DIR} +chown -R $UID:$GID $DATA_DIR echo "---Starting...---" term_handler() { @@ -32,10 +32,10 @@ term_handler() { } trap 'kill ${!}; term_handler' SIGTERM -su ${USER} -c "/opt/scripts/start-server.sh" & +su $USER -c "/opt/scripts/start-server.sh" & killpid="$!" while true do wait $killpid exit 0; -done +done \ No newline at end of file