SCP:SL - Exiled

games
Report Issue

Egg for SCP: Secret Laboratory Dedicated Linux Server with Exiled Plugin Framework - https://github.com/ExMod-Team/EXILED

Contributors:
README

SCP: Secret Laboratory Exiled

SCP: Secret Laboratory Pterodactyl egg with Exiled Plugin Framework https://github.com/ExMod-Team/EXILED

Minimum RAM

Minimum memory required to run the server: 4096 MB

Server Port

Default port required to run the server.

Port Default
Game 7777

Documentation

Official technical documentation is available at https://techwiki.scpslgame.com.

Verification

The server must be verified in order for it to be visible in the server browser. Make sure your server complies with the Community Server Guidelines.

Automatic Verification

Run one of the following commands in the server console:

  • !verify static if you have a static IP address.
  • !verify dynamic if you have a dynamic IP address.

Manual Verification

Send an email to safety.compliance@scpslgame.com with the following info:

  • Your Public IPv4 (IPv6 or Domain Server Verification isn't supported).
  • Whether your IP is Static or Dynamic.
  • The port that your server is running on.
Docker Images (1)
Name Image
Mono - Latest ghcr.io/ptero-eggs/yolks:mono_latest
Startup Command
./LocalAdmin {{SERVER_PORT}}
Variables (5)

Exiled Version

Exiled version to install. "latest" will install the latest release of Exiled.

Environment:
EXILED_VERSION
Default:
latest
User Viewable:
User Editable:
Rules:
required|string|max:30

Exiled Pre-Releases

If Exiled Version is set to latest, this will cause it to include pre-release versions. This is not required to be on when setting a specific Exiled version

Environment:
EXILED_PRE_RELEASES
Default:
0
User Viewable:
User Editable:
Rules:
required|boolean|in:0,1

SRCDS_APPID

Steam AppID to install

Environment:
SRCDS_APPID
Default:
996560
User Viewable:
User Editable:
Rules:
required|string

Beta Branch

Installs beta branch from steam if specified. Requires a reinstall to switch branches properly.

Environment:
SRCDS_BETAID
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string|max:20

Dotnet Bundle

For EXILED Framework Updater.

Environment:
DOTNET_BUNDLE_EXTRACT_BASE_DIR
Default:
./dotnet-bundle
User Viewable:
User Editable:
Rules:
required|string
Installation Script
Container: ghcr.io/ptero-eggs/installers:debian
Entrypoint: bash
#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server

## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; 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
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} $( [[ "${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 ## other flags may be needed depending on install. looking at you cs 1.6

## 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

mkdir -p $HOME/.config

# Download Exiled installer
curl -L -o /tmp/Exiled.Installer-Linux https://github.com/ExMod-Team/EXILED/releases/latest/download/Exiled.Installer-Linux 
chmod +x /tmp/Exiled.Installer-Linux


# Run Exiled installer
if [[ -n $EXILED_VERSION  ]] && [[ "${EXILED_VERSION}" != "latest" ]]; then
    echo "Installing Exiled version ${EXILED_VERSION}..."

    if [[ "${EXILED_PRE_RELEASES}" == "1" ]]; then
        echo "Including Exiled pre-releases"
    fi
else
    echo "Installing the latest Exiled version..."
    EXILED_VERSION=""
fi

# shellcheck disable=SC2046
/tmp/Exiled.Installer-Linux --path /mnt/server/ --appdata /mnt/server/.config --skip-version-select --exiled /mnt/server/.config $( [[ "${EXILED_PRE_RELEASES}" == "1" ]] && echo "--pre-releases " || echo "" )$( [[ -n "${EXILED_VERSION}" ]] && echo "--target-version ${EXILED_VERSION} " || echo "" )



echo "Installation complete."