71 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.5 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/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
 | |
| 
 | |
| # -- 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 in /opt/l4d2/scripts/overlays/*; do
 | |
|   bash -xeuo pipefail "$overlay"
 | |
| 
 | |
|   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
 |