Initial commit
This commit is contained in:
parent
151d11e7c8
commit
0ccf90faac
6 changed files with 128 additions and 0 deletions
47
README.md
Normal file
47
README.md
Normal file
|
@ -0,0 +1,47 @@
|
|||
# What is Counter-Strike 2
|
||||
For over two decades, Counter-Strike has offered an elite competitive experience, one shaped by millions of players from across the globe. And now the next chapter in the CS story is about to begin. This is Counter-Strike 2.
|
||||
This Docker image contains the dedicated server of the game.
|
||||
|
||||
> [CS2](https://store.steampowered.com/app/730/CounterStrike_2/)
|
||||
|
||||
<img src="https://cdn.cloudflare.steamstatic.com/steam/apps/730/header.jpg?t=1696011820" alt="logo" width="300"/></img>
|
||||
|
||||
# How to use this image
|
||||
## Hosting a simple game server
|
||||
|
||||
Running on the *host* interface (recommended):<br/>
|
||||
```console
|
||||
$ docker run -d --net=host --name=cs2 -e STEAMUSER={YOUR_STEAM_USER} -e STEAMPASS={YOUR_STEAM_PASSWD} joedwards32/cs2
|
||||
```
|
||||
|
||||
Running using a bind mount for data persistence on container recreation:
|
||||
```console
|
||||
$ mkdir -p $(pwd)/cs2-data
|
||||
$ chmod 777 $(pwd)/cs2-data # Makes sure the directory is writeable by the unprivileged container user
|
||||
$ docker run -d --net=host -v $(pwd)/cs2-data:/home/steam/cs2-dedicated/ --name=cs2-dedicated -e STEAMUSER={YOUR_STEAM_USER} -e STEAMPASS={YOUR_STEAM_PASSWD} joedwards32/cs2
|
||||
```
|
||||
|
||||
`STEAMUSER` and `STEAMPASS` **are required as unlike CS:GO, CS2 can not be downloaded anonymously (at time of writing).**
|
||||
|
||||
**Steam Guard must be disabled on the Steam Account**
|
||||
|
||||
**For security reasons, it is strongly recommended that you create a new Steam Account separate to your personal Steam Account.**
|
||||
|
||||
**The container will automatically update the game on startup, so if there is a game update just restart the container.**
|
||||
|
||||
# Configuration
|
||||
## Environment Variables
|
||||
Feel free to overwrite these environment variables, using -e (--env):
|
||||
```dockerfile
|
||||
STEAMUSER="changeme" (Steam User for SteamCMD. Steam Guard must be disabled.)
|
||||
STEAMPASS="changeme" (Password for Steam User.)
|
||||
CS2_PORT=27015 (CS2 server listen port tcp_udp)
|
||||
CS2_RCONPW="changeme" (RCON password)
|
||||
CS2_PW="changeme" (CS2 server password)
|
||||
CS2_MAXPLAYERS=10 (Max players)
|
||||
CS2_GAMETYPE=0 (Game type, see)
|
||||
CS2_GAMEMODE=0 (Game mode, see)
|
||||
CS2_MAPGROUP="mg_active" (Map pool)
|
||||
CS2_STARTMAP="de_inferno" (Start map)
|
||||
CS2_ADDITIONAL_ARGS="" (Optional additional arguments to pass into cs2)
|
||||
```
|
1
bullseye/.dockerignore
Normal file
1
bullseye/.dockerignore
Normal file
|
@ -0,0 +1 @@
|
|||
hooks/
|
53
bullseye/Dockerfile
Normal file
53
bullseye/Dockerfile
Normal file
|
@ -0,0 +1,53 @@
|
|||
###########################################################
|
||||
# Dockerfile that builds a CS2 Gameserver
|
||||
###########################################################
|
||||
FROM cm2network/steamcmd:root as build_stage
|
||||
|
||||
LABEL maintainer="joedwards32@gmail.com"
|
||||
|
||||
ENV STEAMUSER "changeme"
|
||||
ENV STEAMPASS "changeme"
|
||||
ENV STEAMAPPID 730
|
||||
ENV STEAMAPP cs2
|
||||
ENV STEAMAPPDIR "${HOMEDIR}/${STEAMAPP}-dedicated"
|
||||
ENV CFG_URL https://raw.githubusercontent.com/joedwards32/CS2/settings.tgz
|
||||
|
||||
COPY etc/entry.sh "${HOMEDIR}/entry.sh"
|
||||
|
||||
RUN set -x \
|
||||
# Install, update & upgrade packages
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||
wget \
|
||||
ca-certificates \
|
||||
lib32z1 \
|
||||
&& mkdir -p "${STEAMAPPDIR}" \
|
||||
# Add entry script
|
||||
&& chmod +x "${HOMEDIR}/entry.sh" \
|
||||
&& chown -R "${USER}:${USER}" "${HOMEDIR}/entry.sh" "${STEAMAPPDIR}" \
|
||||
# Clean up
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
FROM build_stage AS bullseye-base
|
||||
|
||||
ENV CS2_PORT=27015 \
|
||||
CS2_MAXPLAYERS=10 \
|
||||
CS2_RCONPW="changeme" \
|
||||
CS2_PW="changeme" \
|
||||
CS2_MAPGROUP="mg_active" \
|
||||
CS2_STARTMAP="de_inferno" \
|
||||
CS2_GAMETYPE=0 \
|
||||
CS2_GAMEMODE=0 \
|
||||
CS2_ADDITIONAL_ARGS=""
|
||||
|
||||
# Switch to user
|
||||
USER ${USER}
|
||||
|
||||
WORKDIR ${HOMEDIR}
|
||||
|
||||
CMD ["bash", "entry.sh"]
|
||||
|
||||
# Expose ports
|
||||
EXPOSE 27015/tcp \
|
||||
27015/udp \
|
||||
27020/udp
|
20
bullseye/etc/entry.sh
Normal file
20
bullseye/etc/entry.sh
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
mkdir -p "${STEAMAPPDIR}" || true
|
||||
|
||||
bash "${STEAMCMDDIR}/steamcmd.sh" +force_install_dir "${STEAMAPPDIR}" \
|
||||
+login "${STEAMUSER}" "${STEAMPASS}" \
|
||||
+app_update "${STEAMAPPID}" \
|
||||
+quit
|
||||
|
||||
|
||||
"${STEAMAPPDIR}/game/bin/linuxsteamrt64/cs2" -dedicated \
|
||||
-usercon \
|
||||
+game_type "${CS2_GAMETYPE}" \
|
||||
+game_mode "${CS2_GAMEMODE}" \
|
||||
+mapgroup "${CS2_MAPGROUP}" \
|
||||
+map "${CS2_STARTMAP}" \
|
||||
+sv_setsteamaccount \
|
||||
-maxplayers_override "${CS2_MAXPLAYERS}" \
|
||||
+rcon_password "${CS2_RCONPW}" \
|
||||
+sv_password "${CS2_PW}" \
|
||||
"${CS2_ADDITIONAL_ARGS}"
|
5
bullseye/hooks/build
Normal file
5
bullseye/hooks/build
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
docker build --target=bullseye-base -t $DOCKER_REPO:latest -t $DOCKER_REPO:base ${SCRIPT_DIR}/..
|
2
bullseye/hooks/push
Normal file
2
bullseye/hooks/push
Normal file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
docker push --all-tags ${DOCKER_REPO}
|
Loading…
Add table
Add a link
Reference in a new issue