72 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2.6 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 "$@" <&0
 | 
						|
    export HOME=/opt/l4d2/steam
 | 
						|
}
 | 
						|
 | 
						|
# -- 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
 | 
						|
 | 
						|
# workshop downloader
 | 
						|
test -f /opt/l4d2/scripts/steam-workshop-download || \
 | 
						|
    steam wget -4 https://git.sublimity.de/cronekorkn/steam-workshop-downloader/raw/branch/master/steam-workshop-download -P /opt/l4d2/scripts
 | 
						|
steam chmod +x /opt/l4d2/scripts/steam-workshop-download
 | 
						|
 | 
						|
# -- 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 -- #
 | 
						|
 | 
						|
for overlay_path in /opt/l4d2/scripts/overlays/*; do
 | 
						|
    overlay=$(basename "$overlay_path")
 | 
						|
    steam mkdir -p /opt/l4d2/overlays/$overlay
 | 
						|
    bash -xeuo pipefail "$overlay_path"
 | 
						|
    test -f /opt/l4d2/overlays/$overlay/left4dead2/cfg/server.cfg && \
 | 
						|
        steam cp /opt/l4d2/overlays/$overlay/left4dead2/cfg/server.cfg /opt/l4d2/overlays/$overlay/left4dead2/cfg/server_$overlay.cfg
 | 
						|
done
 | 
						|
 | 
						|
# -- SERVERS -- #
 | 
						|
 | 
						|
#steam rm -rf /opt/l4d2/servers
 | 
						|
steam mkdir -p /opt/l4d2/servers
 |