159 lines
No EOL
5.4 KiB
Bash
159 lines
No EOL
5.4 KiB
Bash
#!/bin/bash
|
|
|
|
set -xeuo pipefail
|
|
|
|
# -- DEFINE FUNCTIONS AND VARIABLES -- #
|
|
|
|
function steam() {
|
|
# for systemd, so it can terminate the process (for other things sudo would have been enough)
|
|
setpriv --reuid=steam --regid=steam --init-groups "$@"
|
|
export HOME=/opt/l4d2/steam
|
|
}
|
|
|
|
declare -A addons=(
|
|
[Ions_Vocalizer]=698857882
|
|
[EMS_Admin_System]=1376314661
|
|
)
|
|
|
|
function install_addon() {
|
|
local overlay="$1"
|
|
local addon_name="$2"
|
|
local addon_id="${addons[${addon_name}]}"
|
|
steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/addons"
|
|
test -f "/opt/l4d2/overlays/${overlay}/left4dead2/addons/${addon_id}.vpk" || \
|
|
steam /opt/l4d2/steam-workshop-download "${addon_id}" --out "/opt/l4d2/overlays/${overlay}/left4dead2/addons"
|
|
}
|
|
|
|
function install_admin_system() {
|
|
local overlay="$1"
|
|
install_addon "${overlay}" EMS_Admin_System
|
|
steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/ems/admin system"
|
|
steam echo "STEAM_1:0:12376499" > "/opt/l4d2/overlays/${overlay}/left4dead2/ems/admin system/admins.txt"
|
|
}
|
|
|
|
function install_tickrate_enabler() {
|
|
local overlay="$1"
|
|
steam mkdir -p "/opt/l4d2/overlays/${overlay}/left4dead2/addons"
|
|
for file in tickrate_enabler.dll tickrate_enabler.so tickrate_enabler.vdf
|
|
do
|
|
curl -L "https://github.com/SirPlease/L4D2-Competitive-Rework/raw/refs/heads/master/addons/${file}" -o "/opt/l4d2/overlays/${overlay}/left4dead2/addons/${file}"
|
|
done
|
|
}
|
|
|
|
# -- PREPARE SYSTEM -- #
|
|
|
|
getent passwd steam >/dev/null || useradd -M -d /opt/l4d2 -s /bin/bash steam
|
|
mkdir -p /opt/l4d2 /tmp/dumps
|
|
chown steam:steam /opt/l4d2 /tmp/dumps
|
|
dpkg --add-architecture i386
|
|
apt update
|
|
DEBIAN_FRONTEND=noninteractive apt install -y libc6:i386 lib32z1
|
|
|
|
# -- STEAM -- #
|
|
|
|
steam mkdir -p /opt/l4d2/steam
|
|
test -f /opt/l4d2/steam/steamcmd_linux.tar.gz || \
|
|
steam wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz -P /opt/l4d2/steam
|
|
test -f /opt/l4d2/steam/steamcmd.sh || \
|
|
steam tar -xvzf /opt/l4d2/steam/steamcmd_linux.tar.gz -C /opt/l4d2/steam
|
|
|
|
# fix for: /opt/l4d2/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory
|
|
steam mkdir -p /opt/l4d2/steam/.steam # needs to be in steam users home dir
|
|
readlink /opt/l4d2/steam/.steam/sdk32 | grep -q ^/opt/l4d2/steam/linux32$ || \
|
|
steam ln -sf /opt/l4d2/steam/linux32 /opt/l4d2/steam/.steam/sdk32
|
|
readlink /opt/l4d2/steam/.steam/sdk64 | grep -q ^/opt/l4d2/steam/linux64$ || \
|
|
steam ln -sf /opt/l4d2/steam/linux64 /opt/l4d2/steam/.steam/sdk64
|
|
|
|
# -- INSTALL -- #
|
|
|
|
# erst die windows deps zu installieren scheint ein workaround für x64 zu sein?
|
|
steam mkdir -p /opt/l4d2/installation
|
|
steam /opt/l4d2/steam/steamcmd.sh \
|
|
+force_install_dir /opt/l4d2/installation \
|
|
+login anonymous \
|
|
+@sSteamCmdForcePlatformType windows \
|
|
+app_update 222860 validate \
|
|
+quit
|
|
steam /opt/l4d2/steam/steamcmd.sh \
|
|
+force_install_dir /opt/l4d2/installation \
|
|
+login anonymous \
|
|
+@sSteamCmdForcePlatformType linux \
|
|
+app_update 222860 validate \
|
|
+quit
|
|
|
|
# -- OVERLAYS -- #
|
|
|
|
steam mkdir -p /opt/l4d2/overlays
|
|
|
|
# workshop downloader
|
|
test -f /opt/l4d2/steam-workshop-download || \
|
|
steam wget -4 https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download -P /opt/l4d2
|
|
steam chmod +x /opt/l4d2/steam-workshop-download
|
|
|
|
# -- OVERLAY PVE -- #
|
|
|
|
steam mkdir -p /opt/l4d2/overlays/pve
|
|
|
|
# server config
|
|
steam mkdir -p /opt/l4d2/overlays/pve/left4dead2/cfg
|
|
steam cat <<'EOF' > /opt/l4d2/overlays/pve/left4dead2/cfg/server.cfg
|
|
motd_enabled 0
|
|
|
|
sv_steamgroup "38347879"
|
|
#sv_steamgroup_exclusive 0
|
|
|
|
sv_minrate 60000
|
|
sv_maxrate 0
|
|
net_splitpacket_maxrate 60000
|
|
|
|
#sv_cheats 1
|
|
#sb_all_bot_game 1
|
|
EOF
|
|
|
|
# admin system
|
|
install_addon pve Ions_Vocalizer
|
|
install_admin_system pve
|
|
install_tickrate_enabler pve
|
|
|
|
# -- OVERLAY 100TICK -- #
|
|
|
|
# steam mkdir -p /opt/l4d2/overlays/100tick
|
|
|
|
# install_tickrate_enabler 100tick
|
|
|
|
# # server config
|
|
# steam mkdir -p /opt/l4d2/overlays/100tick/left4dead2/cfg
|
|
# steam cat <<'EOF' > /opt/l4d2/overlays/100tick/left4dead2/cfg/server.cfg
|
|
# motd_enabled 0
|
|
# sv_steamgroup "38347879"
|
|
# sv_minrate 60000
|
|
# sv_maxrate 0
|
|
# EOF
|
|
|
|
# -- OVERLAY COMPETITIVE REWORK WIP -- #
|
|
|
|
# https://github.com/SirPlease/L4D2-Competitive-Rework
|
|
|
|
# steam mkdir -p /opt/l4d2/overlays/competitive_rework
|
|
# steam mkdir -p /opt/l4d2/overlays/competitive_rework/left4dead2
|
|
# test -d /opt/l4d2/overlays/competitive_rework/left4dead2/README.md || \
|
|
# curl -L https://github.com/SirPlease/L4D2-Competitive-Rework/archive/refs/heads/master.zip | steam unzip -d /opt/l4d2/overlays/competitive_rework/left4dead2
|
|
|
|
# # admin system
|
|
# steam mkdir -p /opt/l4d2/overlays/pve/left4dead2/addons
|
|
# test -f /opt/l4d2/overlays/pve/left4dead2/addons/2524204971.vpk || \
|
|
# steam /opt/l4d2/steam-workshop-download 2524204971 --out /opt/l4d2/overlays/pve/left4dead2/addons
|
|
# steam mkdir -p "/opt/l4d2/overlays/pve/left4dead2/ems/admin system"
|
|
# steam echo "STEAM_1:0:12376499" > "/opt/l4d2/overlays/pve/left4dead2/ems/admin system/admins.txt"
|
|
|
|
# # ions vocalizer
|
|
# test -f /opt/l4d2/overlays/pve/left4dead2/addons/698857882.vpk || \
|
|
# steam /opt/l4d2/steam-workshop-download 698857882 --out /opt/l4d2/overlays/pve/left4dead2/addons
|
|
|
|
# test -f /opt/l4d2/overlays/pve/left4dead2/addons/1575673903.vpk || \
|
|
# steam /opt/l4d2/steam-workshop-download 1575673903 --out /opt/l4d2/overlays/pve/left4dead2/addons
|
|
|
|
# -- SERVERS -- #
|
|
|
|
#steam rm -rf /opt/l4d2/servers
|
|
steam mkdir -p /opt/l4d2/servers |