diff --git a/README.md b/README.md index 00db756..9d0d6ba 100644 --- a/README.md +++ b/README.md @@ -38,21 +38,29 @@ The following default maps are available: ## Advanced -In order to use a custom content like maps or server config file, create a directory named `gamedir` and place your files there. +In order to use custom content like maps or server config file, create a directory named `deploy` and a subdirectory `copy-gamedir` and place your files there. For an example of a custom `server.cfg` run: ``` -mkdir gamedir && echo 'echo "Executing custom server.cfg"' > gamedir/server.cfg +mkdir -p deploy/copy-gamedir && echo 'echo "Executing custom server.cfg"' > deploy/copy-gamedir/server.cfg ``` Add your settings to the `server.cfg` and mount the directory as volume by running: ``` -docker run -it --rm -d -p27015:27015 -p27015:27015/udp -v gamedir:/gamedir spezifanta/hldm +docker run -it --rm -d -p27015:27015 -p27015:27015/udp -v ${PWD}/deploy:/deploy spezifanta/hldm ``` You should see `Executing custom server.cfg` in the server log when starting the server. +You can add more content by creating the following directories under `deploy`: + + - `install-assets`: You can put archive files here to be extracted into the root game directory (`valve`). + - `install-maps`: Put archive files or BSP, RES files here to be deployed into the `maps` subdirectory. + - `copy-gamedir`: The entire directory structure will be copied verbatim into the root game directory. + +The following archive formats are supported: `zip`, `7z`, `rar`, `tar`, `gzip`, `bzip2`, `xz`, `zstd`, `arj`. To remove content, you can simply remove the files from `deploy` and then recreate your container. + ## About this Docker image diff --git a/docker-compose.yml b/docker-compose.yml index 3390c52..779bc79 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,6 @@ services: # - '27015:27015/udp' # - '26900:26900/udp' volumes: - - './gamedir:/gamedir' + - './docker/deploy:/deploy' command: +maxplayers 12 +map crossfire +rcon_password "supersecret" +log on +logaddress 0.0.0.0 27500 +sys_ticrate 1000 -pingboost 2 network_mode: 'host' diff --git a/docker/Dockerfile b/docker/Dockerfile index 840feee..006a022 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,33 +1,41 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim -ENV VERSION 2021.9 -ENV RELEASE_DATE 2021-09-05 +ENV VERSION 2023.12 +ENV RELEASE_DATE 2023-12-01 ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 ENV DEBIAN_FRONTEND noninteractive # Update base image and install dependencies. RUN dpkg --add-architecture i386 \ + && sed -i "s/^Components: main$/Components: main non-free/g" /etc/apt/sources.list.d/debian.sources \ && apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ - rsync \ + file \ + gzip \ + bzip2 \ + xz-utils \ + zstd \ + p7zip-rar \ libc6:i386 \ - && rm -rf /var/lib/apt/lists/* \ + libstdc++6:i386 \ + && apt-get clean && rm -rf /var/lib/apt/lists/* \ && groupadd -r steam && useradd -r -g steam -m -d /opt/steam steam \ - && mkdir /gamedir + && mkdir /deploy USER steam WORKDIR /opt/steam COPY ./hldm.install /opt/steam -# Download SteamCMD and install HLDM. +# Download SteamCMD and install HLDM. Abort container build on failure. RUN curl -sL media.steampowered.com/client/installer/steamcmd_linux.tar.gz | tar xzvf - \ && ldd /opt/steam/linux32/steamcmd \ && ./steamcmd.sh +runscript hldm.install \ && rm -fr /opt/steam/hldm/cstrike \ && rm -fr /opt/steam/hldm/siteserverui \ - && rm -fr /opt/steam/hldm/linux64 + && rm -fr /opt/steam/hldm/linux64 \ + && stat ./hldm/valve/gfx.wad # Fix error that steamclient.so is missing. RUN mkdir -p $HOME/.steam \ @@ -37,14 +45,14 @@ RUN mkdir -p $HOME/.steam \ WORKDIR /opt/steam/hldm # Copy configs, Metamod, Stripper2 and AMX. -COPY --chown=steam:steam gamedir valve -COPY --chown=steam:steam ./entrypoint.sh ./entrypoint.sh +COPY --chown=steam:steam deploy/copy-gamedir valve +COPY --chown=steam:steam ./hlds_deploy ./hlds_deploy EXPOSE 27015 EXPOSE 27015/udp # Start server. -ENTRYPOINT ["./entrypoint.sh", "-timeout 3"] +ENTRYPOINT ["./hlds_deploy", "-timeout 15"] # Default start parameters. CMD ["+maxplayers 12", "+map crossfire"] diff --git a/docker/gamedir/addons/amxmodx/configs/amxx.cfg b/docker/deploy/copy-gamedir/addons/amxmodx/configs/amxx.cfg similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/amxx.cfg rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/amxx.cfg diff --git a/docker/gamedir/addons/amxmodx/configs/clcmds.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/clcmds.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/clcmds.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/clcmds.ini diff --git a/docker/gamedir/addons/amxmodx/configs/cmds.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/cmds.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/cmds.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/cmds.ini diff --git a/docker/gamedir/addons/amxmodx/configs/configs.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/configs.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/configs.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/configs.ini diff --git a/docker/gamedir/addons/amxmodx/configs/core.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/core.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/core.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/core.ini diff --git a/docker/gamedir/addons/amxmodx/configs/custommenuitems.cfg b/docker/deploy/copy-gamedir/addons/amxmodx/configs/custommenuitems.cfg similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/custommenuitems.cfg rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/custommenuitems.cfg diff --git a/docker/gamedir/addons/amxmodx/configs/cvars.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/cvars.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/cvars.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/cvars.ini diff --git a/docker/gamedir/addons/amxmodx/configs/hamdata.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/hamdata.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/hamdata.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/hamdata.ini diff --git a/docker/gamedir/addons/amxmodx/configs/maps.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/maps.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/maps.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/maps.ini diff --git a/docker/gamedir/addons/amxmodx/configs/modules.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/modules.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/modules.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/modules.ini diff --git a/docker/gamedir/addons/amxmodx/configs/plugins.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/plugins.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/plugins.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/plugins.ini diff --git a/docker/gamedir/addons/amxmodx/configs/speech.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/speech.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/speech.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/speech.ini diff --git a/docker/gamedir/addons/amxmodx/configs/sql.cfg b/docker/deploy/copy-gamedir/addons/amxmodx/configs/sql.cfg similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/sql.cfg rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/sql.cfg diff --git a/docker/gamedir/addons/amxmodx/configs/users.ini b/docker/deploy/copy-gamedir/addons/amxmodx/configs/users.ini similarity index 100% rename from docker/gamedir/addons/amxmodx/configs/users.ini rename to docker/deploy/copy-gamedir/addons/amxmodx/configs/users.ini diff --git a/docker/gamedir/addons/amxmodx/data/GeoIP.dat b/docker/deploy/copy-gamedir/addons/amxmodx/data/GeoIP.dat similarity index 100% rename from docker/gamedir/addons/amxmodx/data/GeoIP.dat rename to docker/deploy/copy-gamedir/addons/amxmodx/data/GeoIP.dat diff --git a/docker/gamedir/addons/amxmodx/data/lang/admin.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/admin.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/admin.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/admin.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/adminchat.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminchat.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/adminchat.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminchat.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/admincmd.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/admincmd.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/admincmd.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/admincmd.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/adminhelp.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminhelp.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/adminhelp.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminhelp.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/adminslots.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminslots.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/adminslots.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminslots.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/adminvote.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminvote.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/adminvote.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/adminvote.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/antiflood.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/antiflood.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/antiflood.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/antiflood.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/cmdmenu.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/cmdmenu.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/cmdmenu.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/cmdmenu.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/common.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/common.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/common.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/common.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/imessage.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/imessage.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/imessage.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/imessage.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/languages.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/languages.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/languages.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/languages.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/mapchooser.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/mapchooser.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/mapchooser.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/mapchooser.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/mapsmenu.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/mapsmenu.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/mapsmenu.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/mapsmenu.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/menufront.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/menufront.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/menufront.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/menufront.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/miscstats.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/miscstats.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/miscstats.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/miscstats.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/multilingual.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/multilingual.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/multilingual.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/multilingual.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/nextmap.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/nextmap.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/nextmap.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/nextmap.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/pausecfg.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/pausecfg.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/pausecfg.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/pausecfg.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/plmenu.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/plmenu.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/plmenu.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/plmenu.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/restmenu.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/restmenu.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/restmenu.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/restmenu.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/scrollmsg.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/scrollmsg.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/scrollmsg.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/scrollmsg.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/stats_dod.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/stats_dod.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/stats_dod.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/stats_dod.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/statscfg.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/statscfg.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/statscfg.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/statscfg.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/statsx.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/statsx.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/statsx.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/statsx.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/telemenu.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/telemenu.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/telemenu.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/telemenu.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/time.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/time.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/time.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/time.txt diff --git a/docker/gamedir/addons/amxmodx/data/lang/timeleft.txt b/docker/deploy/copy-gamedir/addons/amxmodx/data/lang/timeleft.txt similarity index 100% rename from docker/gamedir/addons/amxmodx/data/lang/timeleft.txt rename to docker/deploy/copy-gamedir/addons/amxmodx/data/lang/timeleft.txt diff --git a/docker/gamedir/addons/amxmodx/dlls/amxmodx_mm_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/dlls/amxmodx_mm_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/dlls/amxmodx_mm_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/dlls/amxmodx_mm_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/engine_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/engine_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/engine_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/engine_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/fakemeta_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/fakemeta_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/fakemeta_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/fakemeta_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/fun_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/fun_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/fun_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/fun_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/geoip_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/geoip_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/geoip_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/geoip_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/hamsandwich_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/hamsandwich_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/hamsandwich_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/hamsandwich_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/mysql_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/mysql_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/mysql_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/mysql_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/nvault_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/nvault_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/nvault_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/nvault_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/regex_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/regex_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/regex_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/regex_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/sockets_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/sockets_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/sockets_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/sockets_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/modules/sqlite_amxx_i386.so b/docker/deploy/copy-gamedir/addons/amxmodx/modules/sqlite_amxx_i386.so similarity index 100% rename from docker/gamedir/addons/amxmodx/modules/sqlite_amxx_i386.so rename to docker/deploy/copy-gamedir/addons/amxmodx/modules/sqlite_amxx_i386.so diff --git a/docker/gamedir/addons/amxmodx/plugins/admin.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/admin.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/admin.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/admin.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/admin_sql.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/admin_sql.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/admin_sql.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/admin_sql.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/adminchat.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminchat.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/adminchat.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminchat.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/admincmd.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/admincmd.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/admincmd.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/admincmd.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/adminhelp.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminhelp.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/adminhelp.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminhelp.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/adminslots.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminslots.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/adminslots.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminslots.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/adminvote.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminvote.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/adminvote.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/adminvote.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/amxmod_compat.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/amxmod_compat.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/amxmod_compat.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/amxmod_compat.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/antiflood.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/antiflood.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/antiflood.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/antiflood.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/cmdmenu.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/cmdmenu.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/cmdmenu.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/cmdmenu.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/imessage.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/imessage.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/imessage.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/imessage.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/mapchooser.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/mapchooser.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/mapchooser.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/mapchooser.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/mapsmenu.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/mapsmenu.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/mapsmenu.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/mapsmenu.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/menufront.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/menufront.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/menufront.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/menufront.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/multilingual.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/multilingual.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/multilingual.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/multilingual.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/nextmap.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/nextmap.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/nextmap.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/nextmap.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/pausecfg.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/pausecfg.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/pausecfg.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/pausecfg.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/plmenu.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/plmenu.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/plmenu.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/plmenu.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/pluginmenu.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/pluginmenu.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/pluginmenu.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/pluginmenu.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/scrollmsg.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/scrollmsg.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/scrollmsg.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/scrollmsg.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/statscfg.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/statscfg.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/statscfg.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/statscfg.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/telemenu.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/telemenu.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/telemenu.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/telemenu.amxx diff --git a/docker/gamedir/addons/amxmodx/plugins/timeleft.amxx b/docker/deploy/copy-gamedir/addons/amxmodx/plugins/timeleft.amxx similarity index 100% rename from docker/gamedir/addons/amxmodx/plugins/timeleft.amxx rename to docker/deploy/copy-gamedir/addons/amxmodx/plugins/timeleft.amxx diff --git a/docker/gamedir/addons/amxmodx/scripting/admin.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/admin.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/admin.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/admin.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/adminchat.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminchat.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/adminchat.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminchat.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/admincmd.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/admincmd.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/admincmd.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/admincmd.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/adminhelp.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminhelp.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/adminhelp.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminhelp.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/adminslots.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminslots.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/adminslots.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminslots.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/adminvote.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminvote.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/adminvote.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/adminvote.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amx_log copy.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amx_log copy.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amx_log copy.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amx_log copy.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amx_log.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amx_log.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amx_log.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amx_log.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amxmod_compat/core.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/core.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxmod_compat/core.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/core.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amxmod_compat/mysql.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/mysql.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxmod_compat/mysql.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/mysql.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amxmod_compat/vexdum.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/vexdum.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxmod_compat/vexdum.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxmod_compat/vexdum.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/amxxpc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxxpc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxxpc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxxpc diff --git a/docker/gamedir/addons/amxmodx/scripting/amxxpc32.so b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxxpc32.so similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/amxxpc32.so rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/amxxpc32.so diff --git a/docker/gamedir/addons/amxmodx/scripting/antiflood.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/antiflood.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/antiflood.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/antiflood.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/cmdmenu.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/cmdmenu.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/cmdmenu.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/cmdmenu.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/compile.sh b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/compile.sh similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/compile.sh rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/compile.sh diff --git a/docker/gamedir/addons/amxmodx/scripting/crossfire_siren_fix.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/crossfire_siren_fix.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/crossfire_siren_fix.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/crossfire_siren_fix.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/imessage.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/imessage.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/imessage.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/imessage.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxconst.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxconst.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxconst.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxconst.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmisc.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmisc.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmisc.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmisc.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/maths.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/maths.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/maths.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/maths.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/translator.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/translator.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/translator.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/translator.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/amxmodx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmodx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/amxmodx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/amxmodx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/cellarray.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/cellarray.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/cellarray.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/cellarray.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/celltrie.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/celltrie.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/celltrie.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/celltrie.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/core.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/core.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/core.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/core.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/csstats.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/csstats.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/csstats.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/csstats.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/cstrike.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/cstrike.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/cstrike.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/cstrike.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/csx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/csx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/csx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/csx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/dbi.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dbi.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/dbi.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dbi.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/dodconst.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodconst.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/dodconst.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodconst.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/dodfun.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodfun.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/dodfun.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodfun.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/dodstats.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodstats.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/dodstats.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodstats.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/dodx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/dodx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/dodx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/engine.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/engine.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/engine_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/engine_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/engine_stocks.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine_stocks.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/engine_stocks.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/engine_stocks.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/esf.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/esf.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/esf.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/esf.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/esf_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/esf_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/esf_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/esf_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/fakemeta.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/fakemeta.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/fakemeta_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/fakemeta_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/fakemeta_stocks.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_stocks.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/fakemeta_stocks.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_stocks.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/fakemeta_util.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_util.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/fakemeta_util.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fakemeta_util.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/file.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/file.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/file.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/file.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/float.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/float.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/float.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/float.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/fun.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fun.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/fun.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/fun.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/geoip.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/geoip.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/geoip.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/geoip.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/ham_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ham_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/ham_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ham_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/hamsandwich.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/hamsandwich.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/hamsandwich.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/hamsandwich.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/hlsdk_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/hlsdk_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/hlsdk_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/hlsdk_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/lang.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/lang.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/lang.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/lang.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/message_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/message_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/message_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/message_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/message_stocks.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/message_stocks.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/message_stocks.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/message_stocks.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/messages.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/messages.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/messages.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/messages.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/newmenus.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/newmenus.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/newmenus.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/newmenus.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/ns.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/ns.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/ns2amx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns2amx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/ns2amx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns2amx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/ns_const.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns_const.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/ns_const.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/ns_const.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/nvault.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/nvault.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/nvault.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/nvault.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/regex.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/regex.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/regex.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/regex.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/sockets.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sockets.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/sockets.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sockets.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/sorting.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sorting.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/sorting.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sorting.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/sqlx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sqlx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/sqlx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/sqlx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/string.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/string.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/string.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/string.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/svn_version.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/svn_version.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/svn_version.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/svn_version.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/svn_version.tpl b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/svn_version.tpl similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/svn_version.tpl rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/svn_version.tpl diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tfcconst.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcconst.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tfcconst.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcconst.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tfcstats.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcstats.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tfcstats.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcstats.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tfcx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tfcx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tfcx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/time.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/time.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/time.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/time.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tsconst.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsconst.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tsconst.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsconst.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tsfun.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsfun.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tsfun.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsfun.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tsstats.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsstats.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tsstats.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsstats.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/tsx.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsx.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/tsx.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/tsx.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/vault.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/vault.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/vault.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/vault.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/vector.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/vector.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/vector.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/vector.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/include/xs.inc b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/xs.inc similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/include/xs.inc rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/include/xs.inc diff --git a/docker/gamedir/addons/amxmodx/scripting/mapchooser.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/mapchooser.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/mapchooser.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/mapchooser.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/mapsmenu.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/mapsmenu.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/mapsmenu.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/mapsmenu.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/menufront.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/menufront.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/menufront.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/menufront.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/multilingual.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/multilingual.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/multilingual.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/multilingual.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/nextmap.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/nextmap.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/nextmap.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/nextmap.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/pausecfg.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/pausecfg.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/pausecfg.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/pausecfg.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/plmenu.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/plmenu.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/plmenu.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/plmenu.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/pluginmenu.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/pluginmenu.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/pluginmenu.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/pluginmenu.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/scrollmsg.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/scrollmsg.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/scrollmsg.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/scrollmsg.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/statscfg.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/statscfg.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/statscfg.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/statscfg.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/telemenu.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/telemenu.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/telemenu.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/telemenu.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/admins_test.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/admins_test.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/admins_test.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/admins_test.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/arraytest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/arraytest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/arraytest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/arraytest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/callfunc_test.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/callfunc_test.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/callfunc_test.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/callfunc_test.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/fmttest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fmttest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/fmttest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fmttest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/fwdtest1.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fwdtest1.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/fwdtest1.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fwdtest1.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/fwdtest2.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fwdtest2.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/fwdtest2.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/fwdtest2.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/logtest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/logtest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/logtest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/logtest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/menutest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/menutest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/menutest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/menutest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/native_test.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/native_test.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/native_test.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/native_test.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/nvault_test.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/nvault_test.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/nvault_test.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/nvault_test.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/sorttest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sorttest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/sorttest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sorttest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sql b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sql similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sql rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/sqlxtest.sql diff --git a/docker/gamedir/addons/amxmodx/scripting/testsuite/trietest.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/trietest.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/testsuite/trietest.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/testsuite/trietest.sma diff --git a/docker/gamedir/addons/amxmodx/scripting/timeleft.sma b/docker/deploy/copy-gamedir/addons/amxmodx/scripting/timeleft.sma similarity index 100% rename from docker/gamedir/addons/amxmodx/scripting/timeleft.sma rename to docker/deploy/copy-gamedir/addons/amxmodx/scripting/timeleft.sma diff --git a/docker/gamedir/addons/metamod/dlls/metamod.so b/docker/deploy/copy-gamedir/addons/metamod/dlls/metamod.so similarity index 100% rename from docker/gamedir/addons/metamod/dlls/metamod.so rename to docker/deploy/copy-gamedir/addons/metamod/dlls/metamod.so diff --git a/docker/gamedir/addons/metamod/plugins.ini b/docker/deploy/copy-gamedir/addons/metamod/plugins.ini similarity index 100% rename from docker/gamedir/addons/metamod/plugins.ini rename to docker/deploy/copy-gamedir/addons/metamod/plugins.ini diff --git a/docker/gamedir/addons/stripper2/dlls/stripper2_mm.so b/docker/deploy/copy-gamedir/addons/stripper2/dlls/stripper2_mm.so similarity index 100% rename from docker/gamedir/addons/stripper2/dlls/stripper2_mm.so rename to docker/deploy/copy-gamedir/addons/stripper2/dlls/stripper2_mm.so diff --git a/docker/gamedir/autoexec.cfg b/docker/deploy/copy-gamedir/autoexec.cfg similarity index 100% rename from docker/gamedir/autoexec.cfg rename to docker/deploy/copy-gamedir/autoexec.cfg diff --git a/docker/gamedir/default.cfg b/docker/deploy/copy-gamedir/default.cfg similarity index 100% rename from docker/gamedir/default.cfg rename to docker/deploy/copy-gamedir/default.cfg diff --git a/docker/gamedir/liblist.gam b/docker/deploy/copy-gamedir/liblist.gam similarity index 100% rename from docker/gamedir/liblist.gam rename to docker/deploy/copy-gamedir/liblist.gam diff --git a/docker/gamedir/mapcycle.txt b/docker/deploy/copy-gamedir/mapcycle.txt similarity index 100% rename from docker/gamedir/mapcycle.txt rename to docker/deploy/copy-gamedir/mapcycle.txt diff --git a/docker/gamedir/maps/crossfire_str.cfg b/docker/deploy/copy-gamedir/maps/crossfire_str.cfg similarity index 100% rename from docker/gamedir/maps/crossfire_str.cfg rename to docker/deploy/copy-gamedir/maps/crossfire_str.cfg diff --git a/docker/gamedir/motd.txt b/docker/deploy/copy-gamedir/motd.txt similarity index 100% rename from docker/gamedir/motd.txt rename to docker/deploy/copy-gamedir/motd.txt diff --git a/docker/gamedir/server.cfg b/docker/deploy/copy-gamedir/server.cfg similarity index 100% rename from docker/gamedir/server.cfg rename to docker/deploy/copy-gamedir/server.cfg diff --git a/docker/gamedir/stripper2.cfg b/docker/deploy/copy-gamedir/stripper2.cfg similarity index 100% rename from docker/gamedir/stripper2.cfg rename to docker/deploy/copy-gamedir/stripper2.cfg diff --git a/docker/hldm.install b/docker/hldm.install index ce0e6dc..d550e3e 100644 --- a/docker/hldm.install +++ b/docker/hldm.install @@ -1,7 +1,7 @@ @ShutdownOnFailedCommand 0 @NoPromptForPassword 1 -login anonymous force_install_dir ./hldm +login anonymous app_set_config 90 mod valve app_update 90 app_update 90 validate diff --git a/docker/hlds_deploy b/docker/hlds_deploy new file mode 100755 index 0000000..b455e16 --- /dev/null +++ b/docker/hlds_deploy @@ -0,0 +1,241 @@ +#!/bin/sh +DEPLOY=/deploy +DEPLOY_MAPS=${DEPLOY}/install-maps +DEPLOY_ASSETS=${DEPLOY}/install-assets +DEPLOY_GAMEDIR=${DEPLOY}/copy-gamedir +TARGET_GAMEDIR=valve +TARGET_MAPS=${TARGET_GAMEDIR}/maps +MAPCYCLE=${TARGET_GAMEDIR}/mapcycle.txt + +# announce text +# Print text with separator lines. +announce() { + sep="--------------------------------------------------------------------------------" + printf "\n\n%s\n %s\n%s\n\n" "${sep}" "$1" "${sep}" +} + +# is_multiplayer_map bspfile +# Determines is given BSP file is a multiplayer map by searching for an +# info_player_deathmatch entity. +is_multiplayer_map() { + BSPFILE="$1" + grep -q "^\"classname\" \"info_player_deathmatch\"$" "${BSPFILE}" +} + +# decompress_with command switches source target +# Use the specified command and its switches to decompress the source file +# to the given destination directory. +decompress_with() { + COMMAND="$1" + SWITCHES="$2" + SOURCE="$3" + TARGET="$4" + + outfile="${TARGET}/${filename%.*}" + eval "${COMMAND}" "${SOURCE}" "${SWITCHES}" > "${outfile}" + touch -r "${SOURCE}" "${outfile}" +} + +# deploy_archive source target +# Extracts an archive file (source) to the target directory. +deploy_archive() { + SOURCE="$1" + TARGET="$2" + + filename="$(basename "${SOURCE}")" + filetype="$(file -b --mime-type "${SOURCE}")" + filetype="${filetype#"application/"}" + + printf "\nConsidering %s, it is a(n) %s...\n" "${SOURCE}" "${filetype}" + + # Check for tar compressed with gzip, bzip2, xz, zstd + if [ "${filetype}" = "gzip" ] || [ "${filetype}" = "x-bzip2" ] || [ "${filetype}" = "x-xz" ] || [ "${filetype}" = "zstd" ] + then + if [ "$(file -bz --mime-type "${SOURCE}")" = "application/x-tar" ] + then + printf "Found x-tar compressed with %s.\n" "${filetype}" + filetype="x-tar" + fi + fi + + case "${filetype}" in + "gzip") + decompress_with gunzip -vc "${SOURCE}" "${TARGET}";; + "x-bzip2") + decompress_with bunzip2 -vc "${SOURCE}" "${TARGET}";; + "x-xz") + decompress_with unxz -vc "${SOURCE}" "${TARGET}";; + "zstd") + zstd -vdfo "${TARGET}/${filename%.*}" "${SOURCE}";; + "x-tar") + tar xvfC "${SOURCE}" "${TARGET}";; + "x-7z-compressed" | "zip" | "x-rar" | "x-arj") + 7z x -bb1 "${SOURCE}" -y -o"${TARGET}/";; + *) + printf "ERROR! Skipping %s due to unknown file type.\n" "${SOURCE}" >&2 + esac +} + +# deploy_archive_map source target +# The source may be an archive, a BSP file, or a RES file. In case the source +# is an archive, extract it with deploy_archive. If it is a multiplayer map or +# accompanying resource file, copy it to the target directory. +deploy_archive_map() { + SOURCE="$1" + TARGET="$2" + + filename="$(basename "${SOURCE}")" + fileext="$(printf "%s" "${filename##*.}" | tr 'BSPRE' 'bspre')" + filetype="$(file -b --mime-type "${SOURCE}")" + + if [ "${fileext}" = "bsp" ] + then + if is_multiplayer_map "${SOURCE}" + then + printf "\nFound BSP %s...\n" "${SOURCE}" + cp -pv "${SOURCE}" "${TARGET}/" + else + printf "\nFound %s, but it is not a Half-Life multiplayer map!\n" "${SOURCE}" >&2 + fi + elif [ "${fileext}" = "res" ] + then + if [ "$(file -b --mime-type "${SOURCE}")" = "text/plain" ] + then + printf "\nFound RES %s...\n" "${SOURCE}" + cp -pv "${SOURCE}" "${TARGET}/" + else + printf "\nFound %s, but it is not a valid resource file!\n" "${SOURCE}" >&2 + fi + else + deploy_archive "${SOURCE}" "${TARGET}" + fi +} + + +cat << END + + +-------------------------------------------------------------------------------- + + # # # ###### ##### + # # # # # # # + # # # # # # + ####### # # # ##### + # # # # # # + # # # # # # # + # # ####### ###### ##### + + ((( Docker Deployment ))) + +-------------------------------------------------------------------------------- + +END + + +# This often breaks HLDS, rather not try +#announce "Updating HLDS via SteamCMD..." +#../steamcmd.sh +runscript hldm.update + +# Deploy archives to the base game directory +announce "Deploying assets..." +if [ -d "${DEPLOY_ASSETS}" ] +then + find "${DEPLOY_ASSETS}" -mindepth 1 -maxdepth 1 | while read -r sourcefile + do + deploy_archive "${sourcefile}" "${TARGET_GAMEDIR}" + done +else + printf "No assets deploy found. You may add archive files to %s.\n" "${DEPLOY_ASSETS}" +fi + +# Deploy archives to the maps directory +announce "Deploying maps..." +if [ -d "${DEPLOY_MAPS}" ] +then + find "${DEPLOY_MAPS}" -mindepth 1 -maxdepth 1 | while read -r sourcefile + do + deploy_archive_map "${sourcefile}" "${TARGET_MAPS}" + done +else + printf "No maps deploy found. You may add archive files and maps to %s.\n" "${DEPLOY_MAPS}" +fi + +# Copy miscellaneous files to the game directory +announce "Deploying gamedir..." +if [ -d "${DEPLOY_GAMEDIR}" ] +then + find "${DEPLOY_GAMEDIR}" -mindepth 1 -maxdepth 1 -exec cp -vr {} "${TARGET_GAMEDIR}"/ \; +else + printf "No gamedir deploy found. You may add files to %s.\n" "${DEPLOY_GAMEDIR}" +fi + +# Generate a mapcycle.txt by enumerating all multiplayer maps +# In case the server owner prefers to use a hand-made mapcycle.txt, this file +# might be overridden by specifying a different mapcycle file in server.cfg +announce "Generating mapcycle.txt..." +printf "" > "${MAPCYCLE}" +find "${TARGET_MAPS}" -mindepth 1 -maxdepth 1 -type f -iname \*.bsp -not -iname \*~\*.bsp | while read -r bspfile +do + mapname="$(basename "${bspfile}")" + mapname="${mapname%.*}" + printf "%-30s: " "${mapname}" + if is_multiplayer_map "${bspfile}" + then + printf "%s\n" "${mapname}" >> "${MAPCYCLE}" + printf "added\n" + else + printf "skipped (not a multiplayer map)\n" + fi +done + +# Check for potentially misinstalled maps +tmplist="$(mktemp)" +find "${TARGET_GAMEDIR}" -mindepth 1 -maxdepth 1 -type f -iname \*.bsp -ls > "${tmplist}" +if [ "$(wc -l < "${tmplist}")" -gt 0 ] +then + announce "WARNING! Misinstalled maps in root game directory!" + printf "%s\n%s\n\n" \ + "The following maps found in the root game directory, likely came from" \ + "archive files you should have put into $(basename "${DEPLOY_MAPS}") instead:" + cat "${tmplist}" +fi + +# First try to remove the bogus directory which will fail if it's not empty, +# so we avoid listing an empty directory +rmdir "${TARGET_MAPS}/maps" 2> /dev/null +if [ -d "${TARGET_MAPS}/maps" ] +then + announce "WARNING! Misinstalled maps in ${TARGET_MAPS}/maps directory!" + printf "%s\n%s\n\n" \ + "The following files likely came from an archive you should have put" \ + "into $(basename "${DEPLOY_ASSETS}") instead:" + ls -l "${TARGET_MAPS}/maps" +fi + +# Find maps from various other subdirectories +find "${TARGET_GAMEDIR}" -mindepth 2 -type f -iname \*.bsp -not -ipath "${TARGET_MAPS}/*.bsp" -ls > "${tmplist}" +find "${TARGET_MAPS}" -mindepth 2 -type f -iname \*.bsp -ls >> "${tmplist}" + +if [ "$(wc -l < "${tmplist}")" -gt 0 ] +then + announce "WARNING! Misinstalled maps!" + printf "%s\n%s\n\n" \ + "The following maps found in subdirectories where they are not supposed to be," \ + "likely came from incorrectly structured archive files:" + cat "${tmplist}" +fi + +# Warn about maps with invalid filenames +find "${TARGET_MAPS}" -mindepth 1 -maxdepth 1 -iname \*~\*.bsp -ls > "${tmplist}" +if [ "$(wc -l < "${tmplist}")" -gt 0 ] +then + announce "WARNING! Maps with invalid filenames!" + printf "The '~' character is not allowed in map names, thus these maps will not be functional:\n\n" + cat "${tmplist}" +fi +rm "${tmplist}" + +# Execute the hlds_run script, replacing the current process, thus this +# deployment script and its shell interpreter will be unloaded from memory +announce "Starting HLDS..." +exec ./hlds_run "$@"