Egg Repository

Pterodactyl Community Egg Repository

Custom ReHLDS Engine Game

This 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.

Read Me

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

Portdefault
Game/rcon27015
HLTV27020
VAC26900
Yolks
NameTag
ghcr.io/ptero-eggs/games:sourceghcr.io/ptero-eggs/games:source
Variables and Startup

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

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 Variable: SRCDS_APPID
Default Value: 90
User Viewable:
User Editable:
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 Variable: HLDS_GAME
Default Value: valve
User Viewable:
User Editable:
Map

The default map for the server.

Environment Variable: SRCDS_MAP
Default Value: crossfire
User Viewable:
User Editable:
VAC port

Specifies the VAC port the server should use. Default is 26900.

Environment Variable: VAC_PORT
Default Value: 26900
User Viewable:
User Editable:
ReHLDS Version

The version of ReHLDS to install, or 'latest' for the latest release.

Environment Variable: VERSION
Default Value: latest
User Viewable:
User Editable:
Validate

Validate game files on update. Recommended to turn off with ReHLDS due to SteamCMD overwriting its changes

Environment Variable: VALIDATE
Default Value: 0
User Viewable:
User Editable:
Steam Username

Username associated wanted to be used. Not needed.

Environment Variable: STEAM_USER
Default Value:
User Viewable:
User Editable:
Steam Password

Steam Password for account.

Environment Variable: STEAM_PASS
Default Value:
User Viewable:
User Editable:
Steam Auth

Steam authenticator code for the account

Environment Variable: STEAM_AUTH
Default Value:
User Viewable:
User Editable:
Beta branch

Leave empty for the public branch, for the legacy version select steam_legacy.

Environment Variable: SRCDS_BETAID
Default Value:
User Viewable:
User Editable:
Auto update

Auto update on restart

Environment Variable: AUTO_UPDATE
Default Value: 0
User Viewable:
User Editable:
Install Script
#!/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 "-----------------------------------------"
Installation Imageghcr.io/ptero-eggs/installers:debianInstallation Entrypointbash