Updated repo to use docker-compose. Updated debian version due to EOL of previous one
This commit is contained in:
139
Dockerfile
139
Dockerfile
@@ -1,79 +1,88 @@
|
||||
# Custom half life server - Steam & No Steam classic
|
||||
# pre 2024 anniversary patches edition
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
FROM debian:buster-slim
|
||||
# Build arguments
|
||||
# ARG HLDS_BUILD=7559
|
||||
ARG HLDS_BUILD=7882
|
||||
ARG METAMOD_VERSION=1.21p38
|
||||
ARG AMXMODX_VERSION=1.8.1-300
|
||||
|
||||
ARG hlds_build=7882
|
||||
ARG metamod_version=1.21p38
|
||||
ARG amxmod_version=1.8.2
|
||||
ARG steamcmd_url=https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
|
||||
ARG hlds_url="https://github.com/DevilBoy-eXe/hlds/releases/download/$hlds_build/hlds_build_$hlds_build.zip"
|
||||
ARG metamod_url="https://github.com/Bots-United/metamod-p/releases/download/v$metamod_version/metamod_i686_linux_win32-$metamod_version.tar.xz"
|
||||
ARG amxmod_url="http://www.amxmodx.org/release/amxmodx-$amxmod_version-base-linux.tar.gz"
|
||||
# Install dependencies
|
||||
RUN dpkg --add-architecture i386 && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
lib32gcc-s1 \
|
||||
lib32stdc++6 \
|
||||
libc6-i386 \
|
||||
wget \
|
||||
curl \
|
||||
unzip \
|
||||
ca-certificates \
|
||||
xz-utils \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN groupadd -r steam && useradd -r -g steam -m -d /opt/steam steam
|
||||
# Create steam user and directories
|
||||
RUN useradd -m steam && \
|
||||
mkdir -p /opt/steam/hlds
|
||||
|
||||
RUN apt-get -y update && apt-get install -y ca-certificates curl lib32gcc1 unzip xz-utils zip
|
||||
|
||||
USER steam
|
||||
WORKDIR /opt/steam
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
COPY ./lib/hlds.install /opt/steam
|
||||
|
||||
RUN curl -sL "$steamcmd_url" | tar xzvf - \
|
||||
&& ./steamcmd.sh +runscript hlds.install
|
||||
|
||||
RUN curl -sLJO "$hlds_url" \
|
||||
&& unzip "hlds_build_$hlds_build.zip" -d "/opt/steam" \
|
||||
&& cp -R "hlds_build_$hlds_build"/* hlds/ \
|
||||
&& rm -rf "hlds_build_$hlds_build" "hlds_build_$hlds_build.zip"
|
||||
|
||||
# Fix error that steamclient.so is missing
|
||||
RUN mkdir -p "$HOME/.steam" \
|
||||
&& ln -s /opt/steam/linux32 "$HOME/.steam/sdk32"
|
||||
|
||||
# Fix warnings:
|
||||
# couldn't exec listip.cfg
|
||||
# couldn't exec banned.cfg
|
||||
RUN touch /opt/steam/hlds/valve/listip.cfg
|
||||
RUN touch /opt/steam/hlds/valve/banned.cfg
|
||||
# Download HLDS
|
||||
WORKDIR /tmp
|
||||
RUN wget "https://github.com/EXORTEM/hlds/releases/download/${HLDS_BUILD}/hlds_build_${HLDS_BUILD}.zip" && \
|
||||
unzip "hlds_build_${HLDS_BUILD}.zip" && \
|
||||
mv hlds_build_${HLDS_BUILD}/* /opt/steam/hlds/ && \
|
||||
rm -rf "hlds_build_${HLDS_BUILD}.zip" "hlds_build_${HLDS_BUILD}" && \
|
||||
chmod +x /opt/steam/hlds/hlds_run && \
|
||||
chmod +x /opt/steam/hlds/hlds_linux
|
||||
|
||||
# Install Metamod-P
|
||||
RUN mkdir -p /opt/steam/hlds/valve/addons/metamod/dlls \
|
||||
&& touch /opt/steam/hlds/valve/addons/metamod/plugins.ini
|
||||
RUN curl -sqL "$metamod_url" | tar -C /opt/steam/hlds/valve/addons/metamod/dlls -xJ
|
||||
RUN sed -i 's/dlls\/hl\.so/addons\/metamod\/dlls\/metamod.so/g' /opt/steam/hlds/valve/liblist.gam
|
||||
RUN mkdir -p /opt/steam/hlds/valve/addons/metamod/dlls && \
|
||||
touch /opt/steam/hlds/valve/addons/metamod/plugins.ini && \
|
||||
wget "https://github.com/Bots-United/metamod-p/releases/download/v${METAMOD_VERSION}/metamod_i686_linux_win32-${METAMOD_VERSION}.tar.xz" && \
|
||||
tar -xJf "metamod_i686_linux_win32-${METAMOD_VERSION}.tar.xz" -C /opt/steam/hlds/valve/addons/metamod/dlls && \
|
||||
rm "metamod_i686_linux_win32-${METAMOD_VERSION}.tar.xz" && \
|
||||
sed -i 's/dlls\/hl\.so/addons\/metamod\/dlls\/metamod.so/g' /opt/steam/hlds/valve/liblist.gam
|
||||
|
||||
# Install AMX mod X
|
||||
RUN curl -sqL "$amxmod_url" | tar -C /opt/steam/hlds/valve/ -zxvf - \
|
||||
&& echo 'linux addons/amxmodx/dlls/amxmodx_mm_i386.so' >> /opt/steam/hlds/valve/addons/metamod/plugins.ini
|
||||
# Install AMX Mod X 1.9 (stable, fixes crashes with newer HLDS)
|
||||
RUN wget "https://www.amxmodx.org/latest.php?version=1.9&os=linux&package=base" -O amxmodx-base.tar.gz && \
|
||||
tar -xzf amxmodx-base.tar.gz -C /opt/steam/hlds/valve/ && \
|
||||
rm amxmodx-base.tar.gz && \
|
||||
echo 'linux addons/amxmodx/dlls/amxmodx_mm_i386.so' >> /opt/steam/hlds/valve/addons/metamod/plugins.ini
|
||||
|
||||
# Copy maps to AMX config
|
||||
RUN cat /opt/steam/hlds/valve/mapcycle.txt >> /opt/steam/hlds/valve/addons/amxmodx/configs/maps.ini
|
||||
|
||||
# Install dproto
|
||||
RUN mkdir -p /opt/steam/hlds/valve/addons/dproto
|
||||
COPY lib/dproto/bin/Linux/dproto_i386.so /opt/steam/hlds/valve/addons/dproto/dproto_i386.so
|
||||
COPY lib/dproto/dproto.cfg /opt/steam/hlds/valve/dproto.cfg
|
||||
RUN echo 'linux addons/dproto/dproto_i386.so' >> /opt/steam/hlds/valve/addons/metamod/plugins.ini
|
||||
COPY lib/dproto/amxx/* /opt/steam/hlds/valve/addons/amxmodx/scripting/
|
||||
# Copy custom configuration files
|
||||
COPY server.cfg /opt/steam/hlds/valve/server.cfg
|
||||
COPY mapcycle.txt /opt/steam/hlds/valve/mapcycle.txt
|
||||
COPY motd.txt /opt/steam/hlds/valve/motd.txt
|
||||
COPY roundstart.cfg /opt/steam/hlds/valve/roundstart.cfg
|
||||
|
||||
# Install bind_key
|
||||
COPY lib/bind_key/amxx/bind_key.amxx /opt/steam/hlds/valve/addons/amxmodx/plugins/bind_key.amxx
|
||||
RUN echo 'bind_key.amxx ; binds keys for voting' >> /opt/steam/hlds/valve/addons/amxmodx/configs/plugins.ini
|
||||
# Fix error that steamclient.so is missing
|
||||
RUN mkdir -p /home/steam/.steam && \
|
||||
ln -s /opt/steam/hlds/linux32 /home/steam/.steam/sdk32
|
||||
|
||||
# Fix warnings for missing config files
|
||||
RUN touch /opt/steam/hlds/valve/listip.cfg && \
|
||||
touch /opt/steam/hlds/valve/banned.cfg
|
||||
|
||||
# Create steam_appid.txt
|
||||
RUN echo 70 > /opt/steam/hlds/steam_appid.txt
|
||||
|
||||
# Copy and setup startup script
|
||||
COPY start-server.sh /start-server.sh
|
||||
RUN chmod +x /start-server.sh && \
|
||||
chown steam:steam /start-server.sh
|
||||
|
||||
# Change ownership
|
||||
RUN chown -R steam:steam /opt/steam
|
||||
|
||||
# Switch to steam user
|
||||
USER steam
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /opt/steam/hlds
|
||||
|
||||
# Copy default config
|
||||
COPY valve valve
|
||||
# Expose ports
|
||||
EXPOSE 27015/tcp 27015/udp
|
||||
|
||||
RUN chmod +x hlds_run hlds_linux
|
||||
|
||||
RUN echo 70 > steam_appid.txt
|
||||
|
||||
EXPOSE 27015
|
||||
EXPOSE 27015/udp
|
||||
|
||||
# Start server
|
||||
ENTRYPOINT ["./hlds_run", "-timeout 3", "-pingboost 1"]
|
||||
|
||||
# Default start parameters
|
||||
CMD ["+map crossfire", "+rcon_password 12345678"]
|
||||
# Set entrypoint
|
||||
ENTRYPOINT ["/start-server.sh"]
|
||||
|
||||
Reference in New Issue
Block a user