Custom ReHLDS Engine Game
gamesThis option allows modifying the startup arguments and other details to run a custom HLDS based game on the panel, substituting the official Valve engine binaries with the ReHLDS binaries.
README
HLDS Servers
This is for older games like CS 1.6 (default game) and other servers that still run on the older HLDS server under id 90
ReHLDS
ReHLDS is a reverse engineered build of the original HLDS (build 6152/6153), and provides a number of fixes and improvements over the vanilla engine files, while remaining compatible with vanilla clients.
Github: https://github.com/dreamstalker/rehlds
Server Ports
HLDS servers require up to 6 ports
| Port | default |
|---|---|
| Game/rcon | 27015 |
| HLTV | 27020 |
| VAC | 26900 |
Docker Images (1)
| Name | Image |
|---|---|
ghcr.io/ptero-eggs/games:source | ghcr.io/ptero-eggs/games:source |
Startup Command
./hlds_run -console -game {{HLDS_GAME}} -port {{SERVER_PORT}} -sport {{VAC_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart Variables (11)
Game ID
The ID corresponding to the game to download and run using HLDS. The HLDS server ID is 90. This should not be changed.
- Environment:
SRCDS_APPID- Default:
90- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|numeric|in:90
Game Name
The name corresponding to the game to download and run using HLDS. all the HLDS server names are here - https://developer.valvesoftware.com/wiki/Dedicated_Server_Name_Enumeration
- Environment:
HLDS_GAME- Default:
valve- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|alpha_dash|between:1,100
Map
The default map for the server.
- Environment:
SRCDS_MAP- Default:
crossfire- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|string|alpha_dash
VAC port
Specifies the VAC port the server should use. Default is 26900.
- Environment:
VAC_PORT- Default:
26900- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|numeric|digits_between:1,5
ReHLDS Version
The version of ReHLDS to install, or 'latest' for the latest release.
- Environment:
VERSION- Default:
latest- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|string
Validate
Validate game files on update. Recommended to turn off with ReHLDS due to SteamCMD overwriting its changes
- Environment:
VALIDATE- Default:
0- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|boolean
Steam Username
Username associated wanted to be used. Not needed.
- Environment:
STEAM_USER- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string
Steam Password
Steam Password for account.
- Environment:
STEAM_PASS- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string
Steam Auth
Steam authenticator code for the account
- Environment:
STEAM_AUTH- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string
Beta branch
Leave empty for the public branch, for the legacy version select steam_legacy.
- Environment:
SRCDS_BETAID- Default:
None- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
nullable|string|in:,steam_legacy
Auto update
Auto update on restart
- Environment:
AUTO_UPDATE- Default:
0- User Viewable:
- ❌
- User Editable:
- ❌
- Rules:
required|boolean
Installation Script
ghcr.io/ptero-eggs/installers:debianbash#!/bin/bash
# SRCDS Base Installation Script
#
# Server Files: /mnt/server
# just in case someone removed the defaults.
if [[ "${STEAM_USER}" == "" ]] || [[ "${STEAM_PASS}" == "" ]]; then
echo -e "steam user is not set.\n"
echo -e "Using anonymous user.\n"
STEAM_USER=anonymous
STEAM_PASS=""
STEAM_AUTH=""
else
echo -e "user set to ${STEAM_USER}"
fi
## download and install steamcmd
cd /tmp
mkdir -p /mnt/server/steamcmd
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
mkdir -p /mnt/server/steamapps # Fix steamcmd disk write error when this folder is missing
cd /mnt/server/steamcmd
# SteamCMD fails otherwise for some reason, even running as root.
# This is changed at the end of the install process anyways.
chown -R root:root /mnt
export HOME=/mnt/server
## install game using steamcmd
./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_set_config 90 mod ${HLDS_GAME} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) ${INSTALL_FLAGS} validate +quit
## set up 32 bit libraries
mkdir -p /mnt/server/.steam/sdk32
cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so
## set up 64 bit libraries
mkdir -p /mnt/server/.steam/sdk64
cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so
# Github Release Grabber script
## get release info and download links
LATEST_JSON=$(curl --silent "https://api.github.com/repos/dreamstalker/rehlds/releases/latest")
RELEASES=$(curl --silent "https://api.github.com/repos/dreamstalker/rehlds/releases")
MATCH="rehlds-bin"
if [ -z "${VERSION}" ] || [ "${VERSION}" == "latest" ]; then
DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})
else
VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .tag_name')
if [ "${VERSION}" == "${VERSION_CHECK}" ]; then
DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -Ei ${MATCH})
else
echo -e "defaulting to latest release"
DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)
fi
fi
cd /tmp
curl -sSL -o rehlds-bin.zip ${DOWNLOAD_URL}
unzip -q -o rehlds-bin.zip
cp -r /tmp/bin/linux32/* /mnt/server
## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"