diff --git a/Dockerfile b/Dockerfile index 430eb85..96bb3cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,18 @@ ############################################################ -# Dockerfile that contains SteamCMD +# Counter-Strike dedicated server ############################################################ -FROM debian:bookworm-slim as build_stage +FROM debian:bookworm-slim LABEL maintainer="admin@based.pt" -ARG PUID=1000 -ENV USER steam -ENV HOMEDIR "/home/${USER}" -ENV STEAMCMDDIR "${HOMEDIR}/steamcmd" +ARG PUID=1000 +ENV USER=steam \ + HOMEDIR=/home/steam \ + STEAMCMDDIR=/home/steam/steamcmd \ + PORT=27015 \ + DATADIR=/data RUN set -x \ - # Install, update & upgrade packages && apt-get update \ && apt-get install -y --no-install-recommends --no-install-suggests \ lib32stdc++6=12.2.0-14+deb12u1 \ @@ -22,9 +23,9 @@ RUN set -x \ locales=2.36-9+deb12u13 \ && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ && dpkg-reconfigure --frontend=noninteractive locales \ - # Create unprivileged user && useradd -u "${PUID}" -m "${USER}" \ - # Download SteamCMD, execute as user + && mkdir -p "${STEAMCMDDIR}" "${DATADIR}" \ + && chown -R "${USER}:${USER}" "${HOMEDIR}" "${DATADIR}" \ && su "${USER}" -c \ "mkdir -p \"${STEAMCMDDIR}\" \ && curl -fsSL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar xvzf - -C \"${STEAMCMDDIR}\" \ @@ -37,34 +38,14 @@ RUN set -x \ && ln -s \"${STEAMCMDDIR}/linux64/steamclient.so\" \"${HOMEDIR}/.steam/sdk64/steamclient.so\" \ && ln -s \"${STEAMCMDDIR}/linux64/steamcmd\" \"${STEAMCMDDIR}/linux64/steam\" \ && ln -s \"${STEAMCMDDIR}/steamcmd.sh\" \"${STEAMCMDDIR}/steam.sh\"" \ - # Symlink steamclient.so; So misconfigured dedicated servers can find it && ln -s "${STEAMCMDDIR}/linux64/steamclient.so" "/usr/lib/x86_64-linux-gnu/steamclient.so" \ && rm -rf /var/lib/apt/lists/* -FROM build_stage AS steamcmd - -########################################################### -# HALF-LIFE SERVER -########################################################## - -FROM steamcmd AS hlds - -# Define variables -ENV STEAMAPPID 90 -ENV STEAMAPPDIR "data/hlds" -ENV PORT 27015 - USER ${USER} - WORKDIR ${HOMEDIR} -# Install Half-Life Dedicated Server (HLDS) for Counter-Strike -RUN mkdir -p ${STEAMAPPDIR} \ - && ${STEAMCMDDIR}/steamcmd.sh +force_install_dir ${STEAMAPPDIR} +login anonymous +app_update 90 +quit +EXPOSE ${PORT}/udp +VOLUME ["/data"] -# Expose necessary ports for the game -EXPOSE ${PORT} - -# Run HLDS with the Counter-Strike mod -ENTRYPOINT ["${STEAMAPPDIR}/hlds_run", "-game", "cstrike", "-console", "-port", "${PORT}", "-steam_dir", "${STEAMCMDDIR}", "-steamcmd_script", "${STEAMCMDDIR}/steamcmd.sh"] +ENTRYPOINT ["/bin/bash", "-c", "/home/steam/steamcmd/steamcmd.sh +force_install_dir /data +login anonymous +app_set_config 90 mod cstrike +app_update 90 validate +quit && cd /data && exec bash hlds_run -game cstrike -console +ip 0.0.0.0 -port ${PORT}"] diff --git a/docker-compose.yml b/docker-compose.yml index 0a71152..64ad9ee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,8 +4,11 @@ services: counter-strike: build: . container_name: counter-strike + stop_signal: SIGKILL ports: - - "27016:27015/udp" + - "27016:27016/udp" + environment: + - PORT=27016 volumes: - ./data:/data restart: always