~ cleaned develop branch
This commit is contained in:
		
							
								
								
									
										39
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -1,39 +0,0 @@ | ||||
| FROM jusito/lgsm:latest | ||||
|  | ||||
| ENV LGSM_GAMESERVER="gmodserver" \ | ||||
| 	LGSM_EXECUTABLE="gmodserver" \ | ||||
| 	LGSM_STOP_SCRIPT="/home/stop.sh" \ | ||||
| 	GAMECONFIG_SCRIPT="/home/config.sh" \ | ||||
| 	\ | ||||
| 	WORKSHOP_COLLECTION_ID="" \ | ||||
| 	SERVER_NAME="" \ | ||||
| 	SERVER_PASSWORD="" \ | ||||
| 	SERVER_VOICE_ENABLE="1" \ | ||||
| 	\ | ||||
| 	INSTALL_CSS=false \ | ||||
| 	INSTALL_HL2=false \ | ||||
| 	INSTALL_HLDM=false \ | ||||
| 	INSTALL_TF2=false \ | ||||
| 	\ | ||||
| 	CSS_PATH="/home/steam/addons/css" \ | ||||
| 	HL2_PATH="/home/steam/addons/hl2" \ | ||||
| 	HLDM_PATH="/home/steam/addons/hldm" \ | ||||
| 	TF2_PATH="/home/steam/addons/tf2" \ | ||||
| 	\ | ||||
| 	USE_MY_REPLACER_CONFIG=false | ||||
|  | ||||
| COPY ["config.sh", "stop.sh", "forceWorkshopDownload.sh", "installAndMountAddons.sh", "/home/"] | ||||
|  | ||||
| RUN chown "$DOCKER_USER:$DOCKER_USER" "/home/config.sh" && \ | ||||
| 	chown "$DOCKER_USER:$DOCKER_USER" "/home/stop.sh" && \ | ||||
| 	chown "$DOCKER_USER:$DOCKER_USER" "/home/forceWorkshopDownload.sh" && \ | ||||
| 	chown "$DOCKER_USER:$DOCKER_USER" "/home/installAndMountAddons.sh" && \ | ||||
| 	\ | ||||
| 	chmod a=rx /home/config.sh && \ | ||||
| 	chmod a=rx /home/stop.sh && \ | ||||
| 	chmod a=rx /home/forceWorkshopDownload.sh && \ | ||||
| 	chmod a=rx /home/installAndMountAddons.sh | ||||
| 	 | ||||
| USER "$USER_ID:$GROUP_ID" | ||||
|  | ||||
| VOLUME "$SERVER_PATH" | ||||
							
								
								
									
										101
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								README.md
									
									
									
									
									
								
							| @ -1,101 +0,0 @@ | ||||
| # GMOD TTT | ||||
| GMOD TTT server image, https://hub.docker.com/r/jusito/ | ||||
|  | ||||
| ## TODO | ||||
| * sv_password not working | ||||
| * rcon not working | ||||
| * scrds doesn't like different internal / external ports (thats why no ports are exposed) | ||||
| * replacer config in other repo u2d? | ||||
| * health check -> details | ||||
| * volume for steam workshop | ||||
| * volume for other games | ||||
| * volume for gmod config | ||||
| * AppArmor Profile | ||||
|  | ||||
| ## Getting Started | ||||
| 1. Create public workshop collection without maps, dummy ID:=123456. Use `jusito/docker-ttt [...] +host_workshop_collection 123456`. Create a collection with maps ID:=7891011 and add/link it to 123456. If you want the clients to automatically load the collection from the workshop when connecting without subscribing, use `-e WORKSHOP_COLLECTION_ID=123456`. The users loading all non-maps at startup and the map if needed, but you don't need to point them to the collection in the workshop. | ||||
| 2. Do this elements need CSS, HL2, HLDM, TF2? Use `-e INSTALL_CSS=true` or `-e INSTALL_HL2=true` aso. | ||||
| 3. Which ports? 27015/udp is default for game traffic x/tcp for rcon, for 27016 you would use `-p 27016:27016/udp [...] jusito/docker-ttt [...] -port 27016`. | ||||
| 4. Set environment variables like servername `-e SERVER_NAME="My Server"`, password `-e SERVER_PASSWORD="securepw"` and timezone for cron `-e TZ="Europe/Berlin"`, default short downtime at Sunday 10 o'clock. | ||||
| 5. Add options for server like startmap `+map ttt_rooftops_2016_v1` and max players `-maxplayers 10` | ||||
|  | ||||
| ### run example without rcon | ||||
| ``` | ||||
| docker run -d \ | ||||
|  -e INSTALL_CSS=true \ | ||||
|  -p 27015:27015/udp \ | ||||
|  -e SERVER_NAME="My Server" \ | ||||
|  -e SERVER_PASSWORD="securepw" \ | ||||
|  -e TZ="Europe/Berlin" \ | ||||
|  jusito/docker-ttt:gmod_ttt_debian \ | ||||
|  -port 27015 \ | ||||
|  +map ttt_rooftops_2016_v1 \ | ||||
|  -maxplayers 10 | ||||
| ``` | ||||
|  | ||||
| ### run example with rcon | ||||
| ``` | ||||
| docker run -d \ | ||||
|  -e WORKSHOP_COLLECTION_ID=123456 \ | ||||
|  -e INSTALL_CSS=true \ | ||||
|  -p 27015:27015/udp -p 27015:27015/tcp \ | ||||
|  -e SERVER_NAME="My Server" \ | ||||
|  -e SERVER_PASSWORD="securepw" \ | ||||
|  -e TZ="Europe/Berlin" \ | ||||
|  jusito/docker-ttt:gmod_ttt_debian \ | ||||
|  -port 27015 \ | ||||
|  +map ttt_rooftops_2016_v1 \ | ||||
|  -maxplayers 10 \ | ||||
|  -usercon +rcon_password "yourPW" | ||||
| ``` | ||||
|  | ||||
| ## Tags | ||||
| * lgsm\_debian - Linux Game Server Manager in Debian | ||||
| * gmod\_debian - Garrys Mod with Debian and LGSM | ||||
| * gmod\_ttt\_debian | ||||
|  | ||||
| ## Environment Variables | ||||
|  | ||||
| ### Server Properties | ||||
| ### additional config | ||||
| ### Internal Used (don't change please) | ||||
|  | ||||
| ## GMOD Parameters | ||||
|  | ||||
| ## LGSM Usage | ||||
| docker exec -it CONTAINER ./home/steam/gmodserver console | ||||
|  | ||||
| ## File Locations | ||||
| ### Volumes | ||||
|  | ||||
| ### Other | ||||
|  | ||||
|  | ||||
| ## environment variables | ||||
| If set every workshop item at the collection is added as forced, that means its automatically downloaded on connecting. Don't add collections with maps here just like weapons aso. | ||||
| WORKSHOP_COLLECTION_ID= | ||||
|  | ||||
| This variables are used to write the value to the server.cfg: | ||||
| SERVER_NAME="" | ||||
| SERVER_PASSWORD="" | ||||
| SERVER_VOICE_ENABLE="1" | ||||
|  | ||||
| If set to "true" the game is installed and mounted, most of the time you want to add the css content. | ||||
| INSTALL_CSS=false | ||||
| INSTALL_HL2=false | ||||
| INSTALL_HLDM=false | ||||
| INSTALL_TF2=false | ||||
|  | ||||
| ## server config | ||||
| http://ttt.badking.net/config-and-commands/convars | ||||
| https://wiki.garrysmod.de/server.cfg | ||||
|  | ||||
| Path in container is: | ||||
| docker cp "your server.cfg path" CONTAINER:/home/steam/serverfiles/garrysmod/cfg/server.cfg | ||||
|  | ||||
|  | ||||
| ## Additional | ||||
| - Debian Buster, one dependency is missing: https://packages.debian.org/search?keywords=lib32tinfo5 | ||||
| - Alpine, steamcmd doesn't like musl | ||||
| ### Debian Buster | ||||
| Currently one dependency is missing: https://packages.debian.org/search?keywords=lib32tinfo5 | ||||
							
								
								
									
										64
									
								
								config.sh
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								config.sh
									
									
									
									
									
								
							| @ -1,64 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| set -e | ||||
|  | ||||
| #create default server.config | ||||
| if [ ! -e "${SERVER_PATH}/garrysmod/cfg/server.cfg" ] || [ "0" = "$(grep -o '[^[:space:]]' "${SERVER_PATH}/garrysmod/cfg/server.cfg" | wc -l)" ]; then | ||||
| 	mkdir -p "${SERVER_PATH}/garrysmod/cfg" | ||||
| 	wget -O "${SERVER_PATH}/garrysmod/cfg/server.cfg" "https://raw.githubusercontent.com/jusito/docker-ttt/master/server.cfg" | ||||
| 	chown "$USER_ID:$GROUP_ID" "${SERVER_PATH}/garrysmod/cfg/server.cfg" | ||||
| 	chmod u+rw "${SERVER_PATH}/garrysmod/cfg/server.cfg" | ||||
| fi | ||||
|  | ||||
| #set hostname & password, working if only one entry is in | ||||
| function configReplace() { | ||||
| 	source="$1" | ||||
| 	target="$source \"$2\"" | ||||
| 	count=$(grep -Po "($source).+" "${SERVER_PATH}/garrysmod/cfg/server.cfg" | wc -l) | ||||
| 	 | ||||
| 	echo "Request for replacing $source to $target, source is found $count times" | ||||
| 	 | ||||
| 	if [ "$count" == "1" ]; then | ||||
| 		source=$(grep -Po "($source).+" "${SERVER_PATH}/garrysmod/cfg/server.cfg" | sed 's/\\/\\\\/g' | sed 's/\//\\\//g') | ||||
| 		target=$(echo "$target" | sed 's/\\/\\\\/g' | sed 's/\//\\\//g') | ||||
| 		sed -i "s/$source/$target/g" "${SERVER_PATH}/garrysmod/cfg/server.cfg" | ||||
| 	elif [ "$count" == "0" ]; then | ||||
| 		echo "" >> "${SERVER_PATH}/garrysmod/cfg/server.cfg" | ||||
| 		echo "$target" >> "${SERVER_PATH}/garrysmod/cfg/server.cfg" | ||||
| 	else | ||||
| 		echo "can't set $1 because there are multiple in" | ||||
| 	fi | ||||
| } | ||||
| if [ -n "${SERVER_NAME}" ]; then | ||||
| 	configReplace "hostname" "$SERVER_NAME" | ||||
| fi | ||||
| if [ -n "${SERVER_PASSWORD}" ]; then | ||||
| 	configReplace "sv_password" "$SERVER_PASSWORD" | ||||
| fi | ||||
| if [ -n "${SERVER_VOICE_ENABLE}" ]; then | ||||
| 	configReplace "sv_voiceenable" "$SERVER_VOICE_ENABLE" | ||||
| fi | ||||
|  | ||||
| #this is a simple option for one of my mods, but you can use it too | ||||
| if [ "$USE_MY_REPLACER_CONFIG" = "true" ] && [ ! -e "${SERVER_PATH}/garrysmod/data/jusito_ttt_entity_replace" ]; then | ||||
| 	mkdir -p "${SERVER_PATH}/garrysmod/data/jusito_ttt_entity_replace" | ||||
| 	wget -O "${SERVER_PATH}/garrysmod/data/jusito_ttt_entity_replace/config.txt" "https://raw.githubusercontent.com/jusito/ttt_entity_replace/master/config.txt.example_fas2" | ||||
| fi | ||||
|  | ||||
| echo "force workshop download" | ||||
| ./home/forceWorkshopDownload.sh | ||||
| echo "install & mount gamefiles" | ||||
| ./home/installAndMountAddons.sh | ||||
| cd "$STEAM_PATH" | ||||
|  | ||||
| #docker args -> lgsm args | ||||
| export parms="-game garrysmod +gamemode terrortown "$(printf "%s "  "$@") | ||||
| if [ -e "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" ]; then | ||||
| 	rm -f "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" | ||||
| fi | ||||
| mkdir -p "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/" | ||||
| touch "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" | ||||
| echo "fn_parms(){" > "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" | ||||
| echo "parms="'"'"$parms"'"' >> "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" | ||||
| echo "}" >> "${STEAM_PATH}/lgsm/config-lgsm/gmodserver/gmodserver.cfg" | ||||
| echo "starting with $parms" | ||||
		Reference in New Issue
	
	Block a user