ql-lg-server: Quake Live LG vampiric practice server in Docker

One-command setup (SteamCMD + minqlx build), .env settings with a
listed/unlisted switch, three factories (lgvamp, lgvamp_nolag, lgvamp100),
warmup-text and welcome minqlx plugins, watchdog/backup/daily-restart,
docs for admins and players.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
esefandClaude Opus 5.5 committed 2026-10-08 01:39:43 +03:00
commit bc5bd09c15
25 files changed
+1009

No files matched your search

Executable
+35
View File
@@ -0,0 +1,35 @@
#!/bin/sh
# Runs inside the container before the server starts: turns the .env settings (passed in as
# environment variables) into home/baseq3/local.cfg, secrets.cfg and mappool_lg.txt.
# server.cfg execs secrets.cfg and local.cfg; local.cfg ends with the map command.
set -e
B=/ql/home/baseq3
clean() { printf '%s' "$1" | tr -d '"\r'; }
PW=$(tr -d '\r\n' < /ql/secrets/rcon-password.txt)
[ -n "$PW" ] || { echo "mkcfg: secrets/rcon-password.txt is empty (run setup.sh)" >&2; exit 1; }
case "$QL_LISTED" in
yes|1|true) MASTER=1 ;;
*) MASTER=0 ;;
esac
FACTORY=$(clean "${QL_FACTORY:-lgvamp}")
MAP=$(clean "${QL_MAP:-thunderstruck}")
case "$FACTORY" in lgvamp_nolag) TAGS="lg,vampiric,ffa" ;; *) TAGS="lg,vampiric,ffa,antilag" ;; esac
umask 077
printf 'set zmq_rcon_password "%s"\n' "$(clean "$PW")" > $B/secrets.cfg
umask 022
cat > $B/local.cfg <<EOF
// Generated from .env by tools/mkcfg.sh on every start. Edit .env, not this file.
set sv_hostname "$(clean "${QL_HOSTNAME:-LG Vampiric FFA}")"
set sv_tags "$TAGS"
set sv_master "$MASTER"
set g_password "$(clean "$QL_PASSWORD")"
set sv_maxClients "$(clean "${QL_MAXCLIENTS:-16}")"
set zmq_rcon_port "$(clean "${QL_RCON_PORT:-28960}")"
set qlx_welcome "$(clean "$QL_WELCOME")"
map $MAP $FACTORY
EOF
echo "$MAP|$FACTORY" > $B/mappool_lg.txt
echo "mkcfg: $MAP $FACTORY, listed=$MASTER, port ${QL_PORT}"