add files
This commit is contained in:
commit
e5a69f276a
10 changed files with 336 additions and 0 deletions
1
bullseye/.dockerignore
Normal file
1
bullseye/.dockerignore
Normal file
|
@ -0,0 +1 @@
|
|||
hooks/
|
83
bullseye/Dockerfile
Normal file
83
bullseye/Dockerfile
Normal file
|
@ -0,0 +1,83 @@
|
|||
###########################################################
|
||||
# Dockerfile that builds a CS2 Gameserver
|
||||
###########################################################
|
||||
|
||||
# BUILD STAGE
|
||||
|
||||
FROM cm2network/steamcmd:root as build_stage
|
||||
|
||||
LABEL maintainer="astra@zio.sh"
|
||||
|
||||
ENV STEAMAPPID 730
|
||||
ENV STEAMAPP cs2
|
||||
ENV STEAMAPPDIR "${HOMEDIR}/${STEAMAPP}-dedicated"
|
||||
|
||||
COPY etc/entry.sh "${HOMEDIR}/entry.sh"
|
||||
COPY etc/server.cfg "/etc/server.cfg"
|
||||
COPY etc/pre.sh "/etc/pre.sh"
|
||||
COPY etc/post.sh "/etc/post.sh"
|
||||
|
||||
RUN set -x \
|
||||
# Install, update & upgrade packages
|
||||
&& dpkg --add-architecture i386 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||
libcurl4:i386 \
|
||||
wget \
|
||||
ca-certificates \
|
||||
lib32z1 \
|
||||
simpleproxy \
|
||||
libicu-dev \
|
||||
&& mkdir -p "${STEAMAPPDIR}" \
|
||||
# Add entry script
|
||||
&& chmod +x "${HOMEDIR}/entry.sh" \
|
||||
&& chown -R "${USER}:${USER}" "${HOMEDIR}/entry.sh" "${STEAMAPPDIR}" \
|
||||
# Clean up
|
||||
&& apt-get clean \
|
||||
&& find /var/lib/apt/lists/ -type f -delete
|
||||
|
||||
# BASE
|
||||
|
||||
FROM build_stage AS bullseye-base
|
||||
|
||||
ENV CS2_SERVERNAME="cs2 private server" \
|
||||
CS2_IP=0.0.0.0 \
|
||||
CS2_PORT=27015 \
|
||||
CS2_SERVER_HIBERNATE=0 \
|
||||
CS2_RCON_PORT="" \
|
||||
CS2_MAXPLAYERS=10 \
|
||||
CS2_RCONPW="changeme" \
|
||||
CS2_PW="changeme" \
|
||||
CS2_MAPGROUP="mg_active" \
|
||||
CS2_STARTMAP="de_inferno" \
|
||||
CS2_GAMEALIAS="" \
|
||||
CS2_GAMETYPE=0 \
|
||||
CS2_GAMEMODE=1 \
|
||||
CS2_LAN=0 \
|
||||
TV_AUTORECORD=0 \
|
||||
TV_ENABLE=0 \
|
||||
TV_PW="changeme" \
|
||||
TV_PORT=27020 \
|
||||
TV_RELAY_PW="changeme" \
|
||||
TV_MAXRATE=0 \
|
||||
TV_DELAY=0 \
|
||||
SRCDS_TOKEN="" \
|
||||
CS2_ADDITIONAL_ARGS=""
|
||||
|
||||
# Set permissions on STEAMAPPDIR
|
||||
# Permissions may need to be reset if persistent volume mounted
|
||||
RUN set -x \
|
||||
&& chown -R "${USER}:${USER}" "${STEAMAPPDIR}" \
|
||||
&& chmod 0777 "${STEAMAPPDIR}"
|
||||
|
||||
# Switch to user
|
||||
USER ${USER}
|
||||
|
||||
WORKDIR ${HOMEDIR}
|
||||
|
||||
CMD ["bash", "entry.sh"]
|
||||
|
||||
# Expose ports
|
||||
EXPOSE 27015/tcp \
|
||||
27015/udp \
|
||||
27020/udp
|
92
bullseye/etc/entry.sh
Executable file
92
bullseye/etc/entry.sh
Executable file
|
@ -0,0 +1,92 @@
|
|||
#!/bin/bash
|
||||
mkdir -p "${STEAMAPPDIR}" || true
|
||||
|
||||
# Download Updates
|
||||
bash "${STEAMCMDDIR}/steamcmd.sh" +force_install_dir "${STEAMAPPDIR}" \
|
||||
+login anonymous \
|
||||
+app_update "${STEAMAPPID}" \
|
||||
+quit
|
||||
|
||||
# steamclient.so fix
|
||||
mkdir -p ~/.steam/sdk64
|
||||
ln -sfT ${STEAMCMDDIR}/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
|
||||
|
||||
# Install server.cfg
|
||||
cp /etc/server.cfg "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg
|
||||
sed -i -e "s/hostname.*/hostname ${CS2_SERVERNAME}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/sv_password.*/sv_password ${CS2_PW}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/rcon_password.*/rcon_password ${CS2_RCONPW}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_enable.*/tv_enable ${TV_ENABLE}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_port.*/tv_port ${TV_PORT}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_autorecord.*/tv_autorecord ${TV_AUTORECORD}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_enable.*/tv_enable ${TV_PW}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_relay_pw.*/tv_relay_pw ${TV_RELAY_PW}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_maxrate.*/tv_maxrate ${TV_MAXRATE}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg \
|
||||
-e "s/tv_enable./tv_delay.*/tv_delay ${TV_DELAY}/g" "${STEAMAPPDIR}"/game/csgo/cfg/server.cfg
|
||||
|
||||
# Install hooks
|
||||
if [[ ! -f "${STEAMAPPDIR}/pre.sh" ]] ; then
|
||||
cp /etc/pre.sh "${STEAMAPPDIR}/pre.sh"
|
||||
fi
|
||||
if [[ ! -f "${STEAMAPPDIR}/post.sh" ]] ; then
|
||||
cp /etc/post.sh "${STEAMAPPDIR}/post.sh"
|
||||
fi
|
||||
|
||||
# Rewrite Config Files
|
||||
if [[ ! -z $CS2_BOT_DIFFICULTY ]] ; then
|
||||
sed -i "s/bot_difficulty.*/bot_difficulty ${CS2_BOT_DIFFICULTY}/" "${STEAMAPPDIR}"/game/csgo/cfg/*
|
||||
fi
|
||||
if [[ ! -z $CS2_BOT_QUOTA ]] ; then
|
||||
sed -i "s/bot_quota.*/bot_quota ${CS2_BOT_QUOTA}/" "${STEAMAPPDIR}"/game/csgo/cfg/*
|
||||
fi
|
||||
if [[ ! -z $CS2_BOT_QUOTA_MODE ]] ; then
|
||||
sed -i "s/bot_quota_mode.*/bot_quota_mode ${CS2_BOT_QUOTA_MODE}/" "${STEAMAPPDIR}"/game/csgo/cfg/*
|
||||
fi
|
||||
|
||||
# Switch to server directory
|
||||
cd "${STEAMAPPDIR}/game/bin/linuxsteamrt64"
|
||||
|
||||
# Pre Hook
|
||||
bash "${STEAMAPPDIR}/pre.sh"
|
||||
|
||||
# Construct server arguments
|
||||
if [[ -z $CS2_GAMEALIAS ]]; then
|
||||
# If CS2_GAMEALIAS is undefined then default to CS2_GAMETYPE and CS2_GAMEMODE
|
||||
CS2_GAME_MODE_ARGS="+game_type ${CS2_GAMETYPE} +game_mode ${CS2_GAMEMODE}"
|
||||
else
|
||||
# Else, use alias to determine game mode
|
||||
CS2_GAME_MODE_ARGS="+game_alias ${CS2_GAMEALIAS}"
|
||||
fi
|
||||
|
||||
if [[ -z $CS2_IP ]]; then
|
||||
CS2_IP_ARGS=""
|
||||
else
|
||||
CS2_IP_ARGS="-ip ${CS2_IP}"
|
||||
fi
|
||||
|
||||
if [[ ! -z $SRCDS_TOKEN ]]; then
|
||||
SV_SETSTEAMACCOUNT_ARGS="+sv_setsteamaccount ${SRCDS_TOKEN}"
|
||||
fi
|
||||
|
||||
# Start Server
|
||||
if [[ ! -z $CS2_RCON_PORT ]]; then
|
||||
echo "Establishing Simpleproxy for ${CS2_RCON_PORT} to 127.0.0.1:${CS2_PORT}"
|
||||
simpleproxy -L "${CS2_RCON_PORT}" -R 127.0.0.1:"${CS2_PORT}" &
|
||||
fi
|
||||
|
||||
eval "./cs2" -dedicated \
|
||||
"${CS2_IP_ARGS}" -port "${CS2_PORT}" \
|
||||
-console \
|
||||
-usercon \
|
||||
-maxplayers "${CS2_MAXPLAYERS}" \
|
||||
"${CS2_GAME_MODE_ARGS}" \
|
||||
+mapgroup "${CS2_MAPGROUP}" \
|
||||
+map "${CS2_STARTMAP}" \
|
||||
+rcon_password "${CS2_RCONPW}" \
|
||||
"${SV_SETSTEAMACCOUNT_ARGS}" \
|
||||
+sv_password "${CS2_PW}" \
|
||||
+sv_lan "${CS2_LAN}" \
|
||||
"${CS2_ADDITIONAL_ARGS}"
|
||||
|
||||
# Post Hook
|
||||
bash "${STEAMAPPDIR}/post.sh"
|
5
bullseye/etc/post.sh
Normal file
5
bullseye/etc/post.sh
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
# POST HOOK
|
||||
# Make your customisation here
|
||||
echo "post-hook: noop"
|
5
bullseye/etc/pre.sh
Normal file
5
bullseye/etc/pre.sh
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
# PRE HOOK
|
||||
# Make your customisation here
|
||||
echo "pre-hook: noop"
|
36
bullseye/etc/server.cfg
Normal file
36
bullseye/etc/server.cfg
Normal file
|
@ -0,0 +1,36 @@
|
|||
// Server Defaults
|
||||
|
||||
hostname "changeme" // Set server hostname
|
||||
sv_hibernate_when_empty 0 // Disable server hibernation
|
||||
|
||||
// Passwords
|
||||
|
||||
rcon_password "changeme" // Set rcon password
|
||||
sv_password "changeme" // Set server password
|
||||
|
||||
// CSTV
|
||||
|
||||
sv_hibernate_postgame_delay 30 // Delay server hibernation after all clients disconnect
|
||||
|
||||
tv_allow_camera_man 1 // Auto director allows spectators to become camera man
|
||||
tv_allow_static_shots 1 // Auto director uses fixed level cameras for shots
|
||||
tv_autorecord 0 // Automatically records all games as CSTV demos: 0=off, 1=on.
|
||||
tv_chatgroupsize 0 // Set the default chat group size
|
||||
tv_chattimelimit 8 // Limits spectators to chat only every n seconds
|
||||
tv_debug 0 // CSTV debug info.
|
||||
tv_delay 30 // CSTV broadcast delay in seconds
|
||||
tv_delaymapchange 1 // Delays map change until broadcast is complete
|
||||
tv_deltacache 2 // Enable delta entity bit stream cache
|
||||
tv_dispatchmode 1 // Dispatch clients to relay proxies: 0=never, 1=if appropriate, 2=always
|
||||
tv_enable 0 // Activates CSTV on server: 0=off, 1=on.
|
||||
tv_maxclients 10 // Maximum client number on CSTV server.
|
||||
tv_maxrate 20000 // Max CSTV spectator bandwidth rate allowed, 0 == unlimited
|
||||
tv_name "changeme" // CSTV host name
|
||||
tv_overridemaster 0 // Overrides the CSTV master root address.
|
||||
tv_port 0 // Host SourceTV port
|
||||
tv_password "changeme" // CSTV password for clients
|
||||
tv_relaypassword "changeme" // CSTV password for relay proxies
|
||||
tv_relayvoice 1 // Relay voice data: 0=off, 1=on
|
||||
tv_timeout 60 // CSTV connection timeout in seconds.
|
||||
tv_title "changeme" // Set title for CSTV spectator UI
|
||||
tv_transmitall 1 // Transmit all entities (not only director view)
|
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