From a14e614aef397ed56933adba16e26dfda5295b97 Mon Sep 17 00:00:00 2001 From: santic-zombie Date: Fri, 11 Mar 2022 22:06:05 +0300 Subject: [PATCH] init commit --- Dockerfile | 44 ++++++++++++ README.md | 34 ++++++++++ config | 195 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 273 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 config diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5578879 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,44 @@ +FROM debian:latest as builder +MAINTAINER Santic + +RUN apt-get update && apt-get install -y git libcurl4-gnutls-dev \ + build-essential libsdl2-dev zlib1g-dev + +RUN git clone https://github.com/skullernet/q2pro && \ + git clone https://github.com/skullernet/openffa && \ + git clone https://github.com/skullernet/opentdm + +COPY config /q2pro/.config +WORKDIR /q2pro +RUN make + +WORKDIR /openffa +RUN make + +WORKDIR /opentdm +RUN make + + +FROM debian:latest + +RUN useradd -m -s /bin/bash quake2 && \ + mkdir -p /usr/local/lib/games/q2pro/baseq2 && \ + mkdir -p /usr/local/lib/games/q2pro/openffa && \ + mkdir -p /usr/local/lib/games/q2pro/opentdm + + +COPY --from=builder /q2pro/gamex86_64.so \ + /usr/local/lib/games/q2pro/baseq2/gamex86_64.so +COPY --from=builder /openffa/gamex86_64.so \ + /usr/local/lib/games/q2pro/openffa/gamex86_64.so +COPY --from=builder /opentdm/gamex86_64.so \ + /usr/local/lib/games/q2pro/opentdm/gamex86_64.so +COPY --from=builder /q2pro/q2proded /usr/local/bin + +EXPOSE 27910/udp + +USER quake2 + +ENTRYPOINT ["q2proded"] + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..55af09b --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# docker-q2pro +Dockerfile to build q2proded container + +How build: +``` +$docker build . --tag q2image +``` + +How run: +``` +$docker run --name q2 -d --rm -v /home/santic/.q2pro_t:/home/quake2/.q2pro -p 27999:27910/udp q2image +set game openffa +exec server.cfg +``` + +How to configure Docker in ArchLinux (Rootless mode): +``` +#echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/99-docker-rootless.conf + +#sudo sysctl --system + +$yaourt -S docker-rootless subuid-register + +$subuid-register + +#echo 'santic:814481408:65536' > /etc/subgid + +#echo 'santic:814481408:65536' > /etc/subuid + +$export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock + +$systemctl --user start docker + +$systemctl --user enable docker +#loginctl enable-linger santic +``` diff --git a/config b/config new file mode 100644 index 0000000..cc464ae --- /dev/null +++ b/config @@ -0,0 +1,195 @@ +# Example Q2PRO build time configuration file. Copy this file to `.config' and +# edit it to suit your needs. +# +# Any variable that is commented out is DISABLED. Setting a variable to some +# non-empty value ENABLES it. It doesn't really matter what value the variable +# is set to, except in cases where the variable is NOT a boolean. +# +# After you change something in `.config', make sure to do a full rebuild by +# typing `make clean; make'. + + +### Client configuration ### + +# Enable PNG textures by linking against libpng. +#CONFIG_PNG=y + +# Enable JPEG textures by linking against libjpeg. +#CONFIG_JPEG=y + +# Enable HTTP downloads by linking against libcurl. +#CONFIG_HTTP=y + +# Enable OpenAL sound engine. +#CONFIG_OPENAL=y + +# Enable direct sound driver (DirectSound on Windows, OSS on Linux). This +# option has no effect if CONFIG_NO_SOFTWARE_SOUND is set. +#CONFIG_DIRECT_SOUND=y + +# Enable when building for systems that support OpenGL ES 1.1 only (e.g. Raspberry Pi) +#CONFIG_GLES=y + +# Specify default list of fullscreen modes. Note: modes are automatically +# detected on Windows. Default list is only used when autodetection fails. +#CONFIG_DEFAULT_MODELIST=640x480 800x600 1024x768 + +# Specify default window geometry. +#CONFIG_DEFAULT_GEOMETRY=640x480 + +# Disable default Quake 2 software sound engine. Only makes sense when +# CONFIG_OPENAL is set. +#CONFIG_NO_SOFTWARE_SOUND=y + +# Disable menu-based user interface. This disables scriptable menus, as well as +# demo and server browsers. +#CONFIG_NO_MENUS=y + +# Disable dynamic lighting. +#CONFIG_NO_DYNAMIC_LIGHTS=y + +# Disable automatic replies to "!version" chat probes. +#CONFIG_NO_AUTOREPLY=y + +# Disable MD3 models. +#CONFIG_NO_MD3=y + +# Disable TGA textures. +#CONFIG_NO_TGA=y + + +### Server configuration ### + +# Enable r1ch.net anticheat server interface. +#CONFIG_ANTICHEAT_SERVER=y + +# Enable local MVD recording and MVD/GTV server functionality. Use this for +# hosting a GTV-capable game server. +#CONFIG_MVD_SERVER=y + +# Enable MVD/GTV client functionality. Use this for hosting a GTV relay server. +#CONFIG_MVD_CLIENT=y + + +### X86 options ### + +# Options below have no effect on architectures other than x86. + +# Enable this option on Linux to build a server capable of loading game mods +# built using ancient GCC versions. +#CONFIG_X86_GAME_ABI_HACK=y + +# Enable this option to build for x86 CPUs without SSE2 support. Enabling this +# makes player movement code incompatible with original quake2.exe. Prediction +# errors will occur on the client unless both client and server use this +# option. +#CONFIG_X86_NO_SSE_MATH=y + + +### Common configuration ### + +# Enable this when targeting native Windows. +#CONFIG_WINDOWS=y + +# Enable crash dump generation on Windows. +#CONFIG_WINDOWS_CRASH_DUMPS=y + +# Allow dedicated server to be run as Windows service. +#CONFIG_WINDOWS_SERVICE=y + +# Enable experimental variable server FPS support in server and client. +#CONFIG_VARIABLE_SERVER_FPS=y + +# Enable built-in tests. DON'T USE IN RELEASE BUILDS. +#CONFIG_TESTS=y + +# Enable debugging and developer code. +#CONFIG_DEBUG=y + +# Don't link against zlib. Not recommended for client builds, since lack of +# zlib support breaks compatibility with servers running protocol 35. +#CONFIG_NO_ZLIB=y + +# Don't handle ICMP errors on UDP sockets. +#CONFIG_NO_ICMP=y + +# Don't print console text on standard output and don't read commands from +# standard input. +#CONFIG_NO_SYSTEM_CONSOLE=y + + +### Game directories ### + +# Name of the game directory used as base game directory. Default value is +# "baseq2". Change this when creating a standalone game using Q2PRO engine. +#CONFIG_GAME_BASE=baseq2 + +# Name of the game directory used as default game directory. Default value is +# empty. This option sets the default value of "game" console variable. Change +# this for building a version of Q2PRO customized for particular game mod, e.g. +# "action". +#CONFIG_GAME_DEFAULT= + + +### System paths ### + +# By default Q2PRO assumes per-user installation: all game content, configs and +# executable files are kept in the same directory tree. This configuration is +# easy for most users to set up, but not ideal from security standpoint. +# +# Uncomment the options below if you wish to install Q2PRO system-wide, +# separating static, executable and writable content into different trees with +# different permissions. These options have no effect on Windows. + +# Path to the game data tree. This is where all static, non-executable data +# lives (e.g., paks). This option sets the default value of "basedir" console +# variable. Default value of this option is "." (current directory). +CONFIG_PATH_DATA=/usr/local/share/games/q2pro + +# Path to the game libraries tree. This is where executable parts of all game +# mods live (e.g., game$(CPU).so files). This option sets the default value of +# "libdir" console variable. Default value of this option is "." (current +# directory). +CONFIG_PATH_LIB=/usr/local/lib/games/q2pro + +# Name of the directory where Q2PRO stores per-user data. Tilde at the +# beginning of the name is automatically expanded to user home directory at run +# time. Users running Q2PRO must have write permissions to this directory. +# This option sets the default value of "homedir" console variable. Default +# value of this option is "" (use basedir as homedir). +CONFIG_PATH_HOME=~/.q2pro + + +### Options for cross-compiling. ### + +# Force cpu type to CPU, instead of autodetecting it. +#CPU=x86 + +# Force system type to CPU, instead of autodetecting it. +#SYS=Win32 + +# Force different utility names. +#CC=i686-w64-mingw32-gcc +#WINDRES=i686-w64-mingw32-windres +#STRIP=i686-w64-mingw32-strip +#RM=rm -f +#RMDIR=rm -rf +#MKDIR=mkdir -p + +# Specify additional global include and library options. +#INCLUDES= +#LIBS= + +# Disable autodetection and force include and library options for various +# libraries. +#CURL_CFLAGS= +#CURL_LIBS= + +#PNG_CFLAGS= +#PNG_LIBS= + +#JPG_CFLAGS= +#JPG_LIBS= + +#ZLIB_CFLAGS= +#ZLIB_LIBS=