1699831726a:31:{i:1;a:15:{s:2:"id";i:1;s:4:"uuid";s:36:"2545b608-221a-4275-a549-de779cb95390";s:4:"name";s:10:"Bungeecord";s:4:"nest";i:1;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:440:"For a long time, Minecraft server owners have had a dream that encompasses a free, easy, and reliable way to connect multiple Minecraft servers together. BungeeCord is the answer to said dream. Whether you are a small server wishing to string multiple game-modes together, or the owner of the ShotBow Network, BungeeCord is the ideal solution for you. With the help of BungeeCord, you will be able to unlock your community's full potential.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:1:{s:10:"config.yml";a:2:{s:6:"parser";s:4:"yaml";s:4:"find";a:3:{s:23:"listeners[0].query_port";s:29:"{{server.build.default.port}}";s:17:"listeners[0].host";s:37:"0.0.0.0:{{server.build.default.port}}";s:17:"servers.*.address";a:1:{s:43:"regex:^(127\.0\.0\.1|localhost)(:\d{1,5})?$";s:29:"{{config.docker.interface}}$2";}}}}s:7:"startup";a:1:{s:4:"done";s:13:"Listening on ";}s:4:"stop";s:3:"end";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:63:"java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:337:"#!/bin/ash
# Bungeecord Installation Script
#
# Server Files: /mnt/server

cd /mnt/server

if [ -z "${BUNGEE_VERSION}" ] || [ "${BUNGEE_VERSION}" == "latest" ]; then
    BUNGEE_VERSION="lastStableBuild"
fi

curl -o ${SERVER_JARFILE} https://ci.md-5.net/job/BungeeCord/${BUNGEE_VERSION}/artifact/bootstrap/target/BungeeCord.jar";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:2:{i:1;a:11:{s:2:"id";i:1;s:6:"egg_id";i:1;s:4:"name";s:18:"Bungeecord Version";s:11:"description";s:46:"The version of Bungeecord to download and use.";s:12:"env_variable";s:14:"BUNGEE_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:30:"required|alpha_num|between:1,6";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:2;a:11:{s:2:"id";i:2;s:6:"egg_id";i:1;s:4:"name";s:19:"Bungeecord Jar File";s:11:"description";s:55:"The name of the Jarfile to use when running Bungeecord.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:14:"bungeecord.jar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:2;a:15:{s:2:"id";i:2;s:4:"uuid";s:36:"8bc3c2ea-a493-41e8-a447-c9f794da5960";s:4:"name";s:15:"Forge Minecraft";s:4:"nest";i:1;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:187:"Minecraft Forge Server. Minecraft Forge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:1:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:3:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:183:"java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[  ! -f unix_args.txt ]] && printf %s "-jar {{SERVER_JARFILE}}" || printf %s "@unix_args.txt" )";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:5314:"#!/bin/bash
# Forge Installation Script
#
# Server Files: /mnt/server
apt update
apt install -y curl jq

if [[ ! -d /mnt/server ]]; then
  mkdir /mnt/server
fi

cd /mnt/server

# Remove spaces from the version number to avoid issues with curl
FORGE_VERSION="$(echo "$FORGE_VERSION" | tr -d ' ')"
MC_VERSION="$(echo "$MC_VERSION" | tr -d ' ')"

if [[ ! -z ${FORGE_VERSION} ]]; then
  DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}
  FORGE_JAR=forge-${FORGE_VERSION}*.jar
else
  JSON_DATA=$(curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json)

  if [[ "${MC_VERSION}" == "latest" ]] || [[ "${MC_VERSION}" == "" ]]; then
    echo -e "getting latest version of forge."
    MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains("latest")) | split("-")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)
    BUILD_TYPE=latest
  fi

  if [[ "${BUILD_TYPE}" != "recommended" ]] && [[ "${BUILD_TYPE}" != "latest" ]]; then
    BUILD_TYPE=recommended
  fi

  echo -e "minecraft version: ${MC_VERSION}"
  echo -e "build type: ${BUILD_TYPE}"

  ## some variables for getting versions and things
  FILE_SITE=https://maven.minecraftforge.net/net/minecraftforge/forge/
  VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" --arg BUILD_TYPE "${BUILD_TYPE}" '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')

  ## locating the forge version
  if [[ "${VERSION_KEY}" == "" ]] && [[ "${BUILD_TYPE}" == "recommended" ]]; then
    echo -e "dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested."
    VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" '.promos | del(."latest-1.7.10") | del(."1.7.10-latest-1.7.10") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains("latest"))')
  fi

  ## Error if the mc version set wasn't valid.
  if [ "${VERSION_KEY}" == "" ] || [ "${VERSION_KEY}" == "null" ]; then
    echo -e "The install failed because there is no valid version of forge for the version of minecraft selected."
    exit 1
  fi

  FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY "$VERSION_KEY" '.promos | .[$VERSION_KEY]')

  if [[ "${MC_VERSION}" == "1.7.10" ]] || [[ "${MC_VERSION}" == "1.8.9" ]]; then
    DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}
    FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar
    if [[ "${MC_VERSION}" == "1.7.10" ]]; then
      FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar
    fi
  else
    DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}
    FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar
  fi
fi

#Adding .jar when not eding by SERVER_JARFILE
if [[ ! $SERVER_JARFILE = *\.jar ]]; then
  SERVER_JARFILE="$SERVER_JARFILE.jar"
fi

#Downloading jars
echo -e "Downloading forge version ${FORGE_VERSION}"
echo -e "Download link is ${DOWNLOAD_LINK}"

if [[ ! -z "${DOWNLOAD_LINK}" ]]; then
  if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then
    echo -e "installer jar download link is valid."
  else
    echo -e "link is invalid. Exiting now"
    exit 2
  fi
else
  echo -e "no download link provided. Exiting now"
  exit 3
fi

curl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar

#Checking if downloaded jars exist
if [[ ! -f ./installer.jar ]]; then
  echo "!!! Error downloading forge version ${FORGE_VERSION} !!!"
  exit
fi

function  unix_args {
  echo -e "Detected Forge 1.17 or newer version. Setting up forge unix args."
  ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt
}

# Delete args to support downgrading/upgrading
rm -rf libraries/net/minecraftforge/forge
rm unix_args.txt

#Installing server
echo -e "Installing forge server.\n"
java -jar installer.jar --installServer || { echo -e "\nInstall failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\nShould you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Wings config or specify exact allocated memory in the server Build Configuration instead of 0! \nOtherwise, the Forge installer will not have enough memory."; exit 4; }

# Check if we need a symlink for 1.17+ Forge JPMS args
if [[ $MC_VERSION =~ ^1\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\.(17|18|19|20|21|22|23) ]]; then
  unix_args

# Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives
elif [[ $MC_VERSION == "latest" && $FORGE_VERSION =~ ^1\.(17|18|19|20|21|22|23) ]]; then
  unix_args
else
  # For versions below 1.17 that ship with jar
  mv $FORGE_JAR $SERVER_JARFILE
fi

echo -e "Deleting installer.jar file.\n"
rm -rf installer.jar
echo -e "Installation process is completed"";s:5:"entry";s:4:"bash";s:9:"container";s:18:"openjdk:8-jdk-slim";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:4:{i:3;a:11:{s:2:"id";i:3;s:6:"egg_id";i:2;s:4:"name";s:15:"Server Jar File";s:11:"description";s:69:"The name of the Jarfile to use when running Forge version below 1.17.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:4;a:11:{s:2:"id";i:4;s:6:"egg_id";i:2;s:4:"name";s:17:"Minecraft Version";s:11:"description";s:112:"The version of minecraft you want to install for.

Leaving latest will install the latest recommended version.";s:12:"env_variable";s:10:"MC_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:21:"required|string|max:9";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:5;a:11:{s:2:"id";i:5;s:6:"egg_id";i:2;s:4:"name";s:10:"Build Type";s:11:"description";s:93:"The type of server jar to download from forge.

Valid types are "recommended" and "latest".";s:12:"env_variable";s:10:"BUILD_TYPE";s:13:"default_value";s:11:"recommended";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:37:"required|string|in:recommended,latest";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:6;a:11:{s:2:"id";i:6;s:6:"egg_id";i:2;s:4:"name";s:13:"Forge Version";s:11:"description";s:150:"The full exact version.

Ex. 1.15.2-31.2.4

Overrides MC_VERSION and BUILD_TYPE. If it fails to download the server files it will fail to install.";s:12:"env_variable";s:13:"FORGE_VERSION";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"nullable|regex:/^[0-9\.\-]+$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:3;a:15:{s:2:"id";i:3;s:4:"uuid";s:36:"9590293d-b7ce-47ae-b294-acf5dd8b8a83";s:4:"name";s:22:"Sponge (SpongeVanilla)";s:4:"nest";i:1;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:68:"SpongeVanilla is the SpongeAPI implementation for Vanilla Minecraft.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:13:"docker_images";a:3:{s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:1:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:3:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:63:"java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:249:"#!/bin/ash
# Sponge Installation Script
#
# Server Files: /mnt/server

cd /mnt/server

curl -sSL "https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/${SPONGE_VERSION}/spongevanilla-${SPONGE_VERSION}.jar" -o ${SERVER_JARFILE}";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:2:{i:7;a:11:{s:2:"id";i:7;s:6:"egg_id";i:3;s:4:"name";s:14:"Sponge Version";s:11:"description";s:49:"The version of SpongeVanilla to download and use.";s:12:"env_variable";s:14:"SPONGE_VERSION";s:13:"default_value";s:12:"1.12.2-7.3.0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:37:"required|regex:/^([a-zA-Z0-9.\-_]+)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:8;a:11:{s:2:"id";i:8;s:6:"egg_id";i:3;s:4:"name";s:15:"Server Jar File";s:11:"description";s:58:"The name of the Jarfile to use when running SpongeVanilla.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:4;a:15:{s:2:"id";i:4;s:4:"uuid";s:36:"19ce115e-3eae-4e65-9c50-9ef9c13dc5f9";s:4:"name";s:17:"Vanilla Minecraft";s:4:"nest";i:1;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:347:"Minecraft is a game about placing blocks and going on adventures. Explore randomly generated worlds and build amazing things from the simplest of homes to the grandest of castles. Play in Creative Mode with unlimited resources or mine deep in Survival Mode, crafting weapons and armor to fend off dangerous mobs. Do all this alone or with friends.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:1:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:3:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:63:"java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1344:"#!/bin/ash
# Vanilla MC Installation Script
#
# Server Files: /mnt/server
mkdir -p /mnt/server
cd /mnt/server

LATEST_VERSION=`curl https://launchermeta.mojang.com/mc/game/version_manifest.json | jq -r '.latest.release'`
LATEST_SNAPSHOT_VERSION=`curl https://launchermeta.mojang.com/mc/game/version_manifest.json | jq -r '.latest.snapshot'`

echo -e "latest version is $LATEST_VERSION"
echo -e "latest snapshot is $LATEST_SNAPSHOT_VERSION"

if [ -z "$VANILLA_VERSION" ] || [ "$VANILLA_VERSION" == "latest" ]; then
  MANIFEST_URL=$(curl -sSL https://launchermeta.mojang.com/mc/game/version_manifest.json | jq --arg VERSION $LATEST_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')
elif [ "$VANILLA_VERSION" == "snapshot" ]; then
  MANIFEST_URL=$(curl -sSL https://launchermeta.mojang.com/mc/game/version_manifest.json | jq --arg VERSION $LATEST_SNAPSHOT_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')
else
  MANIFEST_URL=$(curl -sSL https://launchermeta.mojang.com/mc/game/version_manifest.json | jq --arg VERSION $VANILLA_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')
fi

DOWNLOAD_URL=$(curl ${MANIFEST_URL} | jq .downloads.server | jq -r '. | .url')

echo -e "running: curl -o ${SERVER_JARFILE} $DOWNLOAD_URL"
curl -o ${SERVER_JARFILE} $DOWNLOAD_URL

echo -e "Install Complete"";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:2:{i:9;a:11:{s:2:"id";i:9;s:6:"egg_id";i:4;s:4:"name";s:15:"Server Jar File";s:11:"description";s:54:"The name of the server jarfile to run the server with.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:10;a:11:{s:2:"id";i:10;s:6:"egg_id";i:4;s:4:"name";s:14:"Server Version";s:11:"description";s:182:"The version of Minecraft Vanilla to install. Use "latest" to install the latest version, or use "snapshot" to install the latest snapshot. Go to Settings > Reinstall Server to apply.";s:12:"env_variable";s:15:"VANILLA_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:28:"required|string|between:3,15";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:5;a:15:{s:2:"id";i:5;s:4:"uuid";s:36:"c22ed4f2-502e-4fee-bef2-a1ff3d6eee70";s:4:"name";s:5:"Paper";s:4:"nest";i:1;s:6:"author";s:21:"parker@pterodactyl.io";s:11:"description";s:85:"High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:1:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:3:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:107:"java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2151:"#!/bin/ash
# Paper Installation Script
#
# Server Files: /mnt/server
PROJECT=paper

if [ -n "${DL_PATH}" ]; then
	echo -e "Using supplied download url: ${DL_PATH}"
	DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
else
	VER_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`
	LATEST_VERSION=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
	else
		echo -e "Specified version not found. Defaulting to the latest ${PROJECT} version"
		MINECRAFT_VERSION=${LATEST_VERSION}
	fi

	BUILD_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`

	if [ "${BUILD_EXISTS}" == "true" ]; then
		echo -e "Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}"
	else
		echo -e "Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}"
		BUILD_NUMBER=${LATEST_BUILD}
	fi

	JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar

	echo "Version being downloaded"
	echo -e "MC Version: ${MINECRAFT_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	echo -e "JAR Name of Build: ${JAR_NAME}"
	DOWNLOAD_URL=https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
fi

cd /mnt/server

echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi

curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

if [ ! -f server.properties ]; then
    echo -e "Downloading MC server.properties"
    curl -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties
fi";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:4:{i:11;a:11:{s:2:"id";i:11;s:6:"egg_id";i:5;s:4:"name";s:17:"Minecraft Version";s:11:"description";s:132:"The version of minecraft to download. 

Leave at latest to always get the latest version. Invalid versions will default to latest.";s:12:"env_variable";s:17:"MINECRAFT_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:12;a:11:{s:2:"id";i:12;s:6:"egg_id";i:5;s:4:"name";s:15:"Server Jar File";s:11:"description";s:54:"The name of the server jarfile to run the server with.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:13;a:11:{s:2:"id";i:13;s:6:"egg_id";i:5;s:4:"name";s:13:"Download Path";s:11:"description";s:108:"A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.";s:12:"env_variable";s:7:"DL_PATH";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:14;a:11:{s:2:"id";i:14;s:6:"egg_id";i:5;s:4:"name";s:12:"Build Number";s:11:"description";s:133:"The build number for the paper release.

Leave at latest to always get the latest version. Invalid versions will default to latest.";s:12:"env_variable";s:12:"BUILD_NUMBER";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:15;a:15:{s:2:"id";i:15;s:4:"uuid";s:36:"ea8c7c78-dd43-420e-acda-8382ef55f8ac";s:4:"name";s:20:"Spigot Paper Players";s:4:"nest";i:1;s:6:"author";s:21:"parker@pterodactyl.io";s:11:"description";s:85:"High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:2:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:7:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";s:11:"max-players";s:19:"{{env.MAX_PLAYERS}}";s:4:"motd";s:12:"{{env.MOTD}}";s:8:"gamemode";s:17:"{{env.GAME_MODE}}";s:10:"level-name";s:12:"{{env.SEED}}";}}s:8:"eula.txt";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:1:{s:4:"eula";s:4:"true";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:114:"java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}} -nogui";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2151:"#!/bin/ash
# Paper Installation Script
#
# Server Files: /mnt/server
PROJECT=paper

if [ -n "${DL_PATH}" ]; then
	echo -e "Using supplied download url: ${DL_PATH}"
	DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
else
	VER_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`
	LATEST_VERSION=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
	else
		echo -e "Specified version not found. Defaulting to the latest ${PROJECT} version"
		MINECRAFT_VERSION=${LATEST_VERSION}
	fi

	BUILD_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`

	if [ "${BUILD_EXISTS}" == "true" ]; then
		echo -e "Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}"
	else
		echo -e "Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}"
		BUILD_NUMBER=${LATEST_BUILD}
	fi

	JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar

	echo "Version being downloaded"
	echo -e "MC Version: ${MINECRAFT_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	echo -e "JAR Name of Build: ${JAR_NAME}"
	DOWNLOAD_URL=https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
fi

cd /mnt/server

echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi

curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

if [ ! -f server.properties ]; then
    echo -e "Downloading MC server.properties"
    curl -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties
fi";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-09T15:21:47+00:00";s:10:"updated_at";s:25:"2023-07-25T09:06:11+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:8:{i:70;a:11:{s:2:"id";i:70;s:6:"egg_id";i:15;s:4:"name";s:17:"Minecraft Version";s:11:"description";s:132:"The version of minecraft to download. 

Leave at latest to always get the latest version. Invalid versions will default to latest.";s:12:"env_variable";s:17:"MINECRAFT_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:71;a:11:{s:2:"id";i:71;s:6:"egg_id";i:15;s:4:"name";s:15:"Server Jar File";s:11:"description";s:54:"The name of the server jarfile to run the server with.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:72;a:11:{s:2:"id";i:72;s:6:"egg_id";i:15;s:4:"name";s:13:"Download Path";s:11:"description";s:108:"A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.";s:12:"env_variable";s:7:"DL_PATH";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:73;a:11:{s:2:"id";i:73;s:6:"egg_id";i:15;s:4:"name";s:12:"Build Number";s:11:"description";s:133:"The build number for the paper release.

Leave at latest to always get the latest version. Invalid versions will default to latest.";s:12:"env_variable";s:12:"BUILD_NUMBER";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:74;a:11:{s:2:"id";i:74;s:6:"egg_id";i:15;s:4:"name";s:11:"Max Players";s:11:"description";s:0:"";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:50";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:75;a:11:{s:2:"id";i:75;s:6:"egg_id";i:15;s:4:"name";s:4:"MOTD";s:11:"description";s:33:"Message of the day for the server";s:12:"env_variable";s:4:"MOTD";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:32";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:76;a:11:{s:2:"id";i:76;s:6:"egg_id";i:15;s:4:"name";s:8:"Gamemode";s:11:"description";s:20:"survival or creative";s:12:"env_variable";s:9:"GAME_MODE";s:13:"default_value";s:8:"survival";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:43:"required|string|max:20|in:survival,creative";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-09T15:21:47.000000Z";}i:77;a:11:{s:2:"id";i:77;s:6:"egg_id";i:15;s:4:"name";s:4:"Seed";s:11:"description";s:40:"Define the seed for your Minecraft world";s:12:"env_variable";s:4:"SEED";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:32";s:10:"created_at";s:27:"2023-07-09T15:21:47.000000Z";s:10:"updated_at";s:27:"2023-07-11T09:29:44.000000Z";}}}i:26;a:15:{s:2:"id";i:26;s:4:"uuid";s:36:"bfc7fd99-d0eb-4545-a521-60a411f3e1ab";s:4:"name";s:24:"Spigot Paper Players new";s:4:"nest";i:1;s:6:"author";s:21:"parker@pterodactyl.io";s:11:"description";s:85:"High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.";s:12:"docker_image";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:13:"docker_images";a:4:{s:7:"Java 17";s:33:"ghcr.io/pterodactyl/yolks:java_17";s:7:"Java 16";s:33:"ghcr.io/pterodactyl/yolks:java_16";s:7:"Java 11";s:33:"ghcr.io/pterodactyl/yolks:java_11";s:6:"Java 8";s:32:"ghcr.io/pterodactyl/yolks:java_8";}s:6:"config";a:6:{s:5:"files";a:2:{s:17:"server.properties";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:7:{s:9:"server-ip";s:7:"0.0.0.0";s:11:"server-port";s:29:"{{server.build.default.port}}";s:10:"query.port";s:29:"{{server.build.default.port}}";s:11:"max-players";s:19:"{{env.MAX_PLAYERS}}";s:4:"motd";s:12:"{{env.MOTD}}";s:8:"gamemode";s:17:"{{env.GAME_MODE}}";s:10:"level-name";s:12:"{{env.SEED}}";}}s:8:"eula.txt";a:2:{s:6:"parser";s:10:"properties";s:4:"find";a:1:{s:4:"eula";s:4:"true";}}}s:7:"startup";a:1:{s:4:"done";s:18:")! For help, type ";}s:4:"stop";s:4:"stop";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:114:"java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}} -nogui";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2151:"#!/bin/ash
# Paper Installation Script
#
# Server Files: /mnt/server
PROJECT=paper

if [ -n "${DL_PATH}" ]; then
	echo -e "Using supplied download url: ${DL_PATH}"
	DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
else
	VER_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`
	LATEST_VERSION=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
	else
		echo -e "Specified version not found. Defaulting to the latest ${PROJECT} version"
		MINECRAFT_VERSION=${LATEST_VERSION}
	fi

	BUILD_EXISTS=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`

	if [ "${BUILD_EXISTS}" == "true" ]; then
		echo -e "Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}"
	else
		echo -e "Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}"
		BUILD_NUMBER=${LATEST_BUILD}
	fi

	JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar

	echo "Version being downloaded"
	echo -e "MC Version: ${MINECRAFT_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	echo -e "JAR Name of Build: ${JAR_NAME}"
	DOWNLOAD_URL=https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
fi

cd /mnt/server

echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi

curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

if [ ! -f server.properties ]; then
    echo -e "Downloading MC server.properties"
    curl -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties
fi";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-28T17:57:08+00:00";s:10:"updated_at";s:25:"2023-07-28T17:57:12+00:00";s:9:"nest_name";s:9:"Minecraft";s:9:"variables";a:8:{i:196;a:11:{s:2:"id";i:196;s:6:"egg_id";i:26;s:4:"name";s:17:"Minecraft Version";s:11:"description";s:15:"pack.mc_version";s:12:"env_variable";s:17:"MINECRAFT_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-24T10:05:27.000000Z";}i:197;a:11:{s:2:"id";i:197;s:6:"egg_id";i:26;s:4:"name";s:15:"Server Jar File";s:11:"description";s:54:"The name of the server jarfile to run the server with.";s:12:"env_variable";s:14:"SERVER_JARFILE";s:13:"default_value";s:10:"server.jar";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:38:"required|regex:/^([\w\d._-]+)(\.jar)$/";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-07-28T17:57:08.000000Z";}i:198;a:11:{s:2:"id";i:198;s:6:"egg_id";i:26;s:4:"name";s:13:"Download Path";s:11:"description";s:108:"A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.";s:12:"env_variable";s:7:"DL_PATH";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-07-28T17:57:08.000000Z";}i:199;a:11:{s:2:"id";i:199;s:6:"egg_id";i:26;s:4:"name";s:12:"Build Number";s:11:"description";s:20:"pack.mc_build_number";s:12:"env_variable";s:12:"BUILD_NUMBER";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-21T11:55:58.000000Z";}i:200;a:11:{s:2:"id";i:200;s:6:"egg_id";i:26;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:50";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-21T11:56:10.000000Z";}i:201;a:11:{s:2:"id";i:201;s:6:"egg_id";i:26;s:4:"name";s:4:"MOTD";s:11:"description";s:12:"pack.mc_modt";s:12:"env_variable";s:4:"MOTD";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:32";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-21T11:56:21.000000Z";}i:202;a:11:{s:2:"id";i:202;s:6:"egg_id";i:26;s:4:"name";s:8:"Gamemode";s:11:"description";s:16:"pack.mc_gamemode";s:12:"env_variable";s:9:"GAME_MODE";s:13:"default_value";s:8:"survival";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:43:"required|string|max:20|in:survival,creative";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-21T11:56:38.000000Z";}i:203;a:11:{s:2:"id";i:203;s:6:"egg_id";i:26;s:4:"name";s:4:"Seed";s:11:"description";s:12:"pack.mc_seed";s:12:"env_variable";s:4:"SEED";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:32";s:10:"created_at";s:27:"2023-07-28T17:57:08.000000Z";s:10:"updated_at";s:27:"2023-08-21T11:56:31.000000Z";}}}i:6;a:15:{s:2:"id";i:6;s:4:"uuid";s:36:"6a0d0ccf-3804-4611-9d5a-eef4e330bfbe";s:4:"name";s:10:"Insurgency";s:4:"nest";i:2;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:216:"Take to the streets for intense close quarters combat, where a team's survival depends upon securing crucial strongholds and destroying enemy supply in this multiplayer and cooperative Source Engine based experience.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/games:source";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/games:source";s:32:"ghcr.io/pterodactyl/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:19:"gameserver Steam ID";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:117:"./srcds_run -game insurgency -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:911:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server

## 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 anonymous +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +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";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:2:{i:15;a:11:{s:2:"id";i:15;s:6:"egg_id";i:6;s:4:"name";s:7:"Game ID";s:11:"description";s:65:"The ID corresponding to the game to download and run using SRCDS.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"237410";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:27:"required|regex:/^(237410)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:16;a:11:{s:2:"id";i:16;s:6:"egg_id";i:6;s:4:"name";s:11:"Default Map";s:11:"description";s:48:"The default map to use when starting the server.";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:6:"sinjar";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|regex:/^(\w{1,20})$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:7;a:15:{s:2:"id";i:7;s:4:"uuid";s:36:"15feedd1-5f37-4d07-8f16-e3642cd905a2";s:4:"name";s:15:"Team Fortress 2";s:4:"nest";i:2;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:199:"Team Fortress 2 is a team-based first-person shooter multiplayer video game developed and published by Valve Corporation. It is the sequel to the 1996 mod Team Fortress for Quake and its 1999 remake.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/games:source";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/games:source";s:32:"ghcr.io/pterodactyl/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:19:"gameserver Steam ID";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:143:"./srcds_run -game tf -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1991:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'debian:buster-slim'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id ffound here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.
#
##

## 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
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} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_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";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:3:{i:17;a:11:{s:2:"id";i:17;s:6:"egg_id";i:7;s:4:"name";s:7:"Game ID";s:11:"description";s:65:"The ID corresponding to the game to download and run using SRCDS.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"232250";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:27:"required|regex:/^(232250)$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:18;a:11:{s:2:"id";i:18;s:6:"egg_id";i:7;s:4:"name";s:11:"Default Map";s:11:"description";s:48:"The default map to use when starting the server.";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:11:"cp_dustbowl";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|regex:/^(\w{1,20})$/";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:19;a:11:{s:2:"id";i:19;s:6:"egg_id";i:7;s:4:"name";s:5:"Steam";s:11:"description";s:127:"The Steam Game Server Login Token to display servers publicly. Generate one at https://steamcommunity.com/dev/managegameservers";s:12:"env_variable";s:9:"STEAM_ACC";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"required|string|alpha_num|size:32";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:8;a:15:{s:2:"id";i:8;s:4:"uuid";s:36:"dac95b67-6a46-4320-b8da-a97252bb1c21";s:4:"name";s:32:"Counter-Strike: Global Offensive";s:4:"nest";i:2;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:143:"Counter-Strike: Global Offensive is a multiplayer first-person shooter video game developed by Hidden Path Entertainment and Valve Corporation.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/games:source";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/games:source";s:32:"ghcr.io/pterodactyl/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:38:"Connection to Steam servers successful";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:145:"./srcds_run -game csgo -console -port {{SERVER_PORT}} +ip 0.0.0.0 +map {{SRCDS_MAP}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1261:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server

## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
    STEAM_USER=anonymous
    STEAM_PASS=""
    STEAM_AUTH=""
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_update ${SRCDS_APPID} ${EXTRA_FLAGS} +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";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-10-16T16:39:13+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:3:{i:20;a:11:{s:2:"id";i:20;s:6:"egg_id";i:8;s:4:"name";s:3:"Map";s:11:"description";s:31:"The default map for the server.";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:8:"de_dust2";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|string|alpha_dash";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:21;a:11:{s:2:"id";i:21;s:6:"egg_id";i:8;s:4:"name";s:19:"Steam Account Token";s:11:"description";s:73:"The Steam Account Token required for the server to be displayed publicly.";s:12:"env_variable";s:9:"STEAM_ACC";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"required|string|alpha_num|size:32";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:22;a:11:{s:2:"id";i:22;s:6:"egg_id";i:8;s:4:"name";s:12:"Source AppID";s:11:"description";s:66:"Required for game to update on server restart. Do not modify this.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:3:"740";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:9;a:15:{s:2:"id";i:9;s:4:"uuid";s:36:"a2801fa5-4850-4258-a4d1-8e0280d0d212";s:4:"name";s:10:"Garrys Mod";s:4:"nest";i:2;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:111:"Garrys Mod, is a sandbox physics game created by Garry Newman, and developed by his company, Facepunch Studios.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/games:source";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/games:source";s:32:"ghcr.io/pterodactyl/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:19:"gameserver Steam ID";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:333:"./srcds_run -game garrysmod -console -port {{SERVER_PORT}} +ip 0.0.0.0 +host_workshop_collection {{WORKSHOP_ID}} +map {{SRCDS_MAP}} +gamemode {{GAMEMODE}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}} +maxplayers {{MAX_PLAYERS}}  -tickrate {{TICKRATE}}  $( [ "$LUA_REFRESH" == "1" ] || printf %s '-disableluarefresh' )";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2949:"#!/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
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} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_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

# Creating needed default files for the game
cd /mnt/server/garrysmod/lua/autorun/server
echo '
-- Docs: https://wiki.garrysmod.com/page/resource/AddWorkshop
-- Place the ID of the workshop addon you want to be downloaded to people who join your server, not the collection ID
-- Use https://beta.configcreator.com/create/gmod/resources.lua to easily create a list based on your collection ID

resource.AddWorkshop( "" )
' > workshop.lua

cd /mnt/server/garrysmod/cfg
echo '
// Please do not set RCon in here, use the startup parameters.

hostname		"New Gmod Server"
sv_password		""
sv_loadingurl   ""
sv_downloadurl  ""

// Steam Server List Settings
// sv_location "eu"
sv_region "255"
sv_lan "0"
sv_max_queries_sec_global "30000"
sv_max_queries_window "45"
sv_max_queries_sec "5"

// Server Limits
sbox_maxprops		100
sbox_maxragdolls	5
sbox_maxnpcs		10
sbox_maxballoons	10
sbox_maxeffects		10
sbox_maxdynamite	10
sbox_maxlamps		10
sbox_maxthrusters	10
sbox_maxwheels		10
sbox_maxhoverballs	10
sbox_maxvehicles	20
sbox_maxbuttons		10
sbox_maxsents		20
sbox_maxemitters	5
sbox_godmode		0
sbox_noclip		    0

// Network Settings - Please keep these set to default.

sv_minrate		75000
sv_maxrate		0
gmod_physiterations	2
net_splitpacket_maxrate	45000
decalfrequency		12 

// Execute Ban Files - Please do not edit
exec banned_ip.cfg 
exec banned_user.cfg 

// Add custom lines under here
' > server.cfg";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:8:{i:23;a:11:{s:2:"id";i:23;s:6:"egg_id";i:9;s:4:"name";s:3:"Map";s:11:"description";s:31:"The default map for the server.";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:12:"gm_flatgrass";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|string|alpha_dash";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:24;a:11:{s:2:"id";i:24;s:6:"egg_id";i:9;s:4:"name";s:19:"Steam Account Token";s:11:"description";s:73:"The Steam Account Token required for the server to be displayed publicly.";s:12:"env_variable";s:9:"STEAM_ACC";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"nullable|string|alpha_num|size:32";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:25;a:11:{s:2:"id";i:25;s:6:"egg_id";i:9;s:4:"name";s:12:"Source AppID";s:11:"description";s:66:"Required for game to update on server restart. Do not modify this.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:4:"4020";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:26;a:11:{s:2:"id";i:26;s:6:"egg_id";i:9;s:4:"name";s:11:"Workshop ID";s:11:"description";s:70:"The ID of your workshop collection (the numbers at the end of the URL)";s:12:"env_variable";s:11:"WORKSHOP_ID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"nullable|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:27;a:11:{s:2:"id";i:27;s:6:"egg_id";i:9;s:4:"name";s:8:"Gamemode";s:11:"description";s:28:"The gamemode of your server.";s:12:"env_variable";s:8:"GAMEMODE";s:13:"default_value";s:7:"sandbox";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:28;a:11:{s:2:"id";i:28;s:6:"egg_id";i:9;s:4:"name";s:11:"Max Players";s:11:"description";s:58:"The maximum amount of players allowed on your game server.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"32";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:24:"required|integer|max:128";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:29;a:11:{s:2:"id";i:29;s:6:"egg_id";i:9;s:4:"name";s:8:"Tickrate";s:11:"description";s:76:"The tickrate defines how fast the server will update each entity's location.";s:12:"env_variable";s:8:"TICKRATE";s:13:"default_value";s:2:"22";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:24:"required|integer|max:100";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:30;a:11:{s:2:"id";i:30;s:6:"egg_id";i:9;s:4:"name";s:11:"Lua Refresh";s:11:"description";s:48:"0 = disable Lua refresh,
1 = enable Lua refresh";s:12:"env_variable";s:11:"LUA_REFRESH";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:11;a:15:{s:2:"id";i:11;s:4:"uuid";s:36:"2358b5cd-a26b-446c-8d03-32fa5fa652d9";s:4:"name";s:25:"Custom Source Engine Game";s:4:"nest";i:2;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:115:"This option allows modifying the startup arguments and other details to run a custom SRCDS based game on the panel.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/games:source";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/games:source";s:32:"ghcr.io/pterodactyl/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:19:"gameserver Steam ID";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:121:"./srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1944:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id ffound here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.
#
##


## 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
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} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_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";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-10-16T16:39:13+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:6:{i:41;a:11:{s:2:"id";i:41;s:6:"egg_id";i:11;s:4:"name";s:7:"Game ID";s:11:"description";s:65:"The ID corresponding to the game to download and run using SRCDS.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|numeric|digits_between:1,6";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:42;a:11:{s:2:"id";i:42;s:6:"egg_id";i:11;s:4:"name";s:9:"Game Name";s:11:"description";s:67:"The name corresponding to the game to download and run using SRCDS.";s:12:"env_variable";s:10:"SRCDS_GAME";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:33:"required|alpha_dash|between:1,100";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:43;a:11:{s:2:"id";i:43;s:6:"egg_id";i:11;s:4:"name";s:3:"Map";s:11:"description";s:31:"The default map for the server.";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|string|alpha_dash";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:44;a:11:{s:2:"id";i:44;s:6:"egg_id";i:11;s:4:"name";s:14:"Steam Username";s:11:"description";s:0:"";s:12:"env_variable";s:10:"STEAM_USER";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:45;a:11:{s:2:"id";i:45;s:6:"egg_id";i:11;s:4:"name";s:14:"Steam Password";s:11:"description";s:0:"";s:12:"env_variable";s:10:"STEAM_PASS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:46;a:11:{s:2:"id";i:46;s:6:"egg_id";i:11;s:4:"name";s:10:"Steam Auth";s:11:"description";s:0:"";s:12:"env_variable";s:10:"STEAM_AUTH";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:25;a:15:{s:2:"id";i:25;s:4:"uuid";s:36:"60c0f3a9-78ad-4669-b4c3-bd6b87c67a52";s:4:"name";s:25:"Ark: Survival Evolved NEW";s:4:"nest";i:2;s:6:"author";s:14:"dev@shepper.fr";s:11:"description";s:517:"As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! — Gamepedia: ARK";s:12:"docker_image";s:30:"ghcr.io/parkervcp/games:source";s:13:"docker_images";a:1:{s:30:"ghcr.io/parkervcp/games:source";s:30:"ghcr.io/parkervcp/games:source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:31:"Waiting commands for 127.0.0.1:";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:816:"rmv() { echo  "stopping server"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo "Server Closed"; exit; }; trap rmv 15 2; cd ShooterGame/Binaries/Linux && ./ShooterGameServer {{SERVER_MAP}}?listen?SessionName="{{SESSION_NAME}}"?MaxPlayers="{{MAX_PLAYERS}}"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ "$BATTLE_EYE" == "1" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo "waiting for rcon connection..."; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1733:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ubuntu:18.04'
apt -y update
apt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates

## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
    STEAM_USER=anonymous
    STEAM_PASS=""
    STEAM_AUTH=""
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/Engine/Binaries/ThirdParty/SteamCMD/Linux
tar -xzvf steamcmd.tar.gz -C /mnt/server/Engine/Binaries/ThirdParty/SteamCMD/Linux
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 +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir /mnt/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +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

## create a symbolic link for loading mods
cd /mnt/server/Engine/Binaries/ThirdParty/SteamCMD/Linux
ln -sf ../../../../../Steam/steamapps steamapps
cd /mnt/server";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-23T10:53:48+00:00";s:10:"updated_at";s:25:"2023-07-23T10:57:55+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:12:{i:182;a:11:{s:2:"id";i:182;s:6:"egg_id";i:25;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:12:"ARK_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"nullable|alpha_dash|between:1,100";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T05:58:27.000000Z";}i:183;a:11:{s:2:"id";i:183;s:6:"egg_id";i:25;s:4:"name";s:14:"Admin Password";s:11:"description";s:19:"pack.admin_password";s:12:"env_variable";s:18:"ARK_ADMIN_PASSWORD";s:13:"default_value";s:11:"RANDOM_TEXT";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"required|alpha_dash|between:1,100";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T05:58:31.000000Z";}i:184;a:11:{s:2:"id";i:184;s:6:"egg_id";i:25;s:4:"name";s:10:"Server Map";s:11:"description";s:15:"pack.map_choose";s:12:"env_variable";s:10:"SERVER_MAP";s:13:"default_value";s:9:"TheIsland";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:154:"required|string|in:TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction, Valguero_P, Genesis, CrystalIsles, Gen2, Fjordur, LostIsland";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T05:58:41.000000Z";}i:185;a:11:{s:2:"id";i:185;s:6:"egg_id";i:25;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:12:"SESSION_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"required|string|max:128";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T05:58:56.000000Z";}i:186;a:11:{s:2:"id";i:186;s:6:"egg_id";i:25;s:4:"name";s:9:"Rcon Port";s:11:"description";s:44:"'pack.port_request', ['port' => 'Rcon Port']";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:17:37.000000Z";}i:187;a:11:{s:2:"id";i:187;s:6:"egg_id";i:25;s:4:"name";s:10:"Query Port";s:11:"description";s:45:"'pack.port_request', ['port' => 'Query Port']";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:19:39.000000Z";}i:188;a:11:{s:2:"id";i:188;s:6:"egg_id";i:25;s:4:"name";s:11:"Auto-Update";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:20:11.000000Z";}i:189;a:11:{s:2:"id";i:189;s:6:"egg_id";i:25;s:4:"name";s:10:"Battle Eye";s:11:"description";s:19:"pack.ark_battle_eye";s:12:"env_variable";s:10:"BATTLE_EYE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:31:21.000000Z";}i:190;a:11:{s:2:"id";i:190;s:6:"egg_id";i:25;s:4:"name";s:4:"Mods";s:11:"description";s:13:"pack.ark_mods";s:12:"env_variable";s:6:"MOD_ID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:20:12.000000Z";}i:191;a:11:{s:2:"id";i:191;s:6:"egg_id";i:25;s:4:"name";s:6:"App ID";s:11:"description";s:68:"ARK steam app id for auto updates. Leave blank to avoid auto update.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"376030";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"nullable|numeric";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T05:53:20.000000Z";}i:192;a:11:{s:2:"id";i:192;s:6:"egg_id";i:25;s:4:"name";s:35:"pack.ark_additional_arguments_title";s:11:"description";s:29:"pack.ark_additional_arguments";s:12:"env_variable";s:4:"ARGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-23T10:53:48.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:32:53.000000Z";}i:193;a:11:{s:2:"id";i:193;s:6:"egg_id";i:25;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"10";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:23:"required|numeric|max:70";s:10:"created_at";s:27:"2023-07-23T10:56:50.000000Z";s:10:"updated_at";s:27:"2023-08-21T06:33:07.000000Z";}}}i:30;a:15:{s:2:"id";i:30;s:4:"uuid";s:36:"a365e3f9-61d9-4a4f-98fd-953533e5608a";s:4:"name";s:21:"Ark: Survival Evolved";s:4:"nest";i:2;s:6:"author";s:14:"dev@shepper.fr";s:11:"description";s:517:"As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! — Gamepedia: ARK";s:12:"docker_image";s:50:"quay.io/parkervcp/pterodactyl-images:debian_source";s:13:"docker_images";a:1:{s:50:"quay.io/parkervcp/pterodactyl-images:debian_source";s:50:"quay.io/parkervcp/pterodactyl-images:debian_source";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:31:"Waiting commands for 127.0.0.1:";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:672:"rmv() { echo -e "stopping server"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c saveworld && rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c DoExit; }; trap rmv 15; cd ShooterGame/Binaries/Linux && ./ShooterGameServer {{SERVER_MAP}}?listen?SessionName="{{SESSION_NAME}}"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True$( [ "$BATTLE_EYE" == "1" ] || printf %s ' -NoBattlEye' ) -server {{ARGS}} -log & until echo "waiting for rcon connection..."; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD}; do sleep 5; done";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1623:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ubuntu:18.04'

## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
    STEAM_USER=anonymous
    STEAM_PASS=""
    STEAM_AUTH=""
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/Engine/Binaries/ThirdParty/SteamCMD/Linux
tar -xzvf steamcmd.tar.gz -C /mnt/server/Engine/Binaries/ThirdParty/SteamCMD/Linux
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_update ${SRCDS_APPID} ${EXTRA_FLAGS} +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

## create a symbolic link for loading mods
cd /mnt/server/Engine/Binaries/ThirdParty/SteamCMD/Linux
ln -sf ../../../../../Steam/steamapps steamapps
cd /mnt/server";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-10-16T16:39:13+00:00";s:10:"updated_at";s:25:"2023-10-16T16:39:13+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:10:{i:262;a:11:{s:2:"id";i:262;s:6:"egg_id";i:30;s:4:"name";s:15:"Server Password";s:11:"description";s:68:"If specified, players must provide this password to join the server.";s:12:"env_variable";s:12:"ARK_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"nullable|alpha_dash|between:1,100";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:263;a:11:{s:2:"id";i:263;s:6:"egg_id";i:30;s:4:"name";s:14:"Admin Password";s:11:"description";s:130:"If specified, players must provide this password (via the in-game console) to gain access to administrator commands on the server.";s:12:"env_variable";s:18:"ARK_ADMIN_PASSWORD";s:13:"default_value";s:14:"PleaseChangeMe";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"required|alpha_dash|between:1,100";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:264;a:11:{s:2:"id";i:264;s:6:"egg_id";i:30;s:4:"name";s:10:"Server Map";s:11:"description";s:151:"Available Maps: TheIsland, TheCenter, Ragnarok, ScorchedEarth_P, Aberration_P, Extinction, Valguero_P, Genesis, CrystalIsles, Gen2, LostIsland, Fjordur";s:12:"env_variable";s:10:"SERVER_MAP";s:13:"default_value";s:9:"TheIsland";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:265;a:11:{s:2:"id";i:265;s:6:"egg_id";i:30;s:4:"name";s:11:"Server Name";s:11:"description";s:15:"ARK server name";s:12:"env_variable";s:12:"SESSION_NAME";s:13:"default_value";s:31:"A Pterodactyl Hosted ARK Server";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"required|string|max:128";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:266;a:11:{s:2:"id";i:266;s:6:"egg_id";i:30;s:4:"name";s:9:"Rcon Port";s:11:"description";s:33:"ARK rcon port used by rcon tools.";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:5:"27020";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:267;a:11:{s:2:"id";i:267;s:6:"egg_id";i:30;s:4:"name";s:10:"Query Port";s:11:"description";s:74:"ARK query port used by steam server browser and ark client server browser.";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"27015";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:268;a:11:{s:2:"id";i:268;s:6:"egg_id";i:30;s:4:"name";s:18:"Auto-update server";s:11:"description";s:80:"This is to enable auto-updating for servers.

Default is 0. Set to 1 to update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:269;a:11:{s:2:"id";i:269;s:6:"egg_id";i:30;s:4:"name";s:10:"Battle Eye";s:11:"description";s:60:"Enable BattleEye

0 to disable
1 to enable

default="1"";s:12:"env_variable";s:10:"BATTLE_EYE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:270;a:11:{s:2:"id";i:270;s:6:"egg_id";i:30;s:4:"name";s:6:"App ID";s:11:"description";s:68:"ARK steam app id for auto updates. Leave blank to avoid auto update.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"376030";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"nullable|numeric";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:271;a:11:{s:2:"id";i:271;s:6:"egg_id";i:30;s:4:"name";s:20:"Additional Arguments";s:11:"description";s:148:"Specify additional launch parameters such as -crossplay. You must include a dash - and separate each parameter with space: -crossplay -exclusivejoin";s:12:"env_variable";s:4:"ARGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:31;a:15:{s:2:"id";i:31;s:4:"uuid";s:36:"f28a59d2-4ac4-4c26-b238-68038e39ef88";s:4:"name";s:27:"Counter-Strike 2 (SteamRT3)";s:4:"nest";i:2;s:6:"author";s:17:"infra@gflclan.com";s:11:"description";s:215:"Counter-Strike is a multiplayer first-person shooter video game developed by Valve. This image is based on Valve's Steam Runtime 3 platform (codenamed SNIPER) and was created to run both CSGO and CS2 without issues.";s:12:"docker_image";s:39:"ghcr.io/1zc/steamrt3-pterodactyl:latest";s:13:"docker_images";a:3:{s:8:"SteamRT3";s:39:"ghcr.io/1zc/steamrt3-pterodactyl:latest";s:12:"SteamRT3-Dev";s:36:"ghcr.io/1zc/steamrt3-pterodactyl:dev";s:12:"SteamRT3-GFL";s:56:"registry.gitlab.gflclan.com/infra/cs2-pterodactyl:latest";}s:6:"config";a:6:{s:5:"files";a:1:{s:24:"game/csgo/cfg/server.cfg";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:6:{s:14:"sv_downloadurl";s:82:"sv_downloadurl "http://{{env.P_SERVER_LOCATION}}/{{env.P_SERVER_UUID}}/game/csgo/"";s:16:"sv_allowdownload";s:20:"sv_allowdownload "1"";s:14:"sv_allowupload";s:18:"sv_allowupload "0"";s:13:"rcon_password";s:37:"rcon_password "{{env.RCON_PASSWORD}}"";s:11:"sv_password";s:37:"sv_password "{{env.SERVER_PASSWORD}}"";s:8:"hostname";s:30:"hostname "{{env.SERVER_NAME}}"";}}}s:7:"startup";a:1:{s:4:"done";s:38:"Connection to Steam servers successful";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:116:"./game/cs2.sh -dedicated +ip {{SERVER_IP}} -port {{SERVER_PORT}} +map {{SRCDS_MAP}} -maxplayers {{SRCDS_MAXPLAYERS}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1334:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
## just in case someone removed the defaults.
if [ "${STEAM_USER}" == "" ]; then
STEAM_USER=anonymous
STEAM_PASS=""
STEAM_AUTH=""
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 ${SRCDS_LOGIN} ${SRCDS_LOGIN_PASS} ${STEAM_AUTH} +app_update 730 ${EXTRA_FLAGS} +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
cd /mnt/server/game/csgo/cfg
curl -sSL -o server.cfg https://download.swift-byte.de/cs2/server.cfg";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-10-16T19:41:54+00:00";s:10:"updated_at";s:25:"2023-11-03T20:02:26+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:13:{i:274;a:11:{s:2:"id";i:274;s:6:"egg_id";i:31;s:4:"name";s:3:"Map";s:11:"description";s:15:"pack.map_choose";s:12:"env_variable";s:9:"SRCDS_MAP";s:13:"default_value";s:8:"de_dust2";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|string|alpha_dash";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T20:11:18.000000Z";}i:275;a:11:{s:2:"id";i:275;s:6:"egg_id";i:31;s:4:"name";s:12:"Source AppID";s:11:"description";s:34:"NOT VISIBLE TO USERS. DO NOT EDIT.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:3:"730";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T19:41:54.000000Z";}i:276;a:11:{s:2:"id";i:276;s:6:"egg_id";i:31;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:16:"SRCDS_MAXPLAYERS";s:13:"default_value";s:2:"64";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T19:44:43.000000Z";}i:277;a:11:{s:2:"id";i:277;s:6:"egg_id";i:31;s:4:"name";s:15:"Disable Updates";s:11:"description";s:25:"Set to 1 to stop updates.";s:12:"env_variable";s:17:"SRCDS_STOP_UPDATE";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T19:41:54.000000Z";}i:278;a:11:{s:2:"id";i:278;s:6:"egg_id";i:31;s:4:"name";s:16:"Validate Install";s:11:"description";s:70:"Toggles SteamCMD validation of game server files. Set to 0 to disable.";s:12:"env_variable";s:14:"SRCDS_VALIDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-25T20:42:46.000000Z";}i:279;a:11:{s:2:"id";i:279;s:6:"egg_id";i:31;s:4:"name";s:18:"SteamCMD Beta Name";s:11:"description";s:82:"Set the ID of the beta to install and launch. Leave blank to disable Beta loading.";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:6:"max:64";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T19:44:54.000000Z";}i:280;a:11:{s:2:"id";i:280;s:6:"egg_id";i:31;s:4:"name";s:22:"SteamCMD Beta Password";s:11:"description";s:84:"If required, set the password to use to access a Beta depot. Leave blank to disable.";s:12:"env_variable";s:14:"SRCDS_BETAPASS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:6:"max:64";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-10-16T19:45:09.000000Z";}i:281;a:11:{s:2:"id";i:281;s:6:"egg_id";i:31;s:4:"name";s:23:"SteamCMD Login Username";s:11:"description";s:28:"Set SteamCMD Login Username.";s:12:"env_variable";s:11:"SRCDS_LOGIN";s:13:"default_value";s:16:"swiftbytehosting";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|max:64|string";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-11-05T15:24:51.000000Z";}i:282;a:11:{s:2:"id";i:282;s:6:"egg_id";i:31;s:4:"name";s:23:"SteamCMD Login Password";s:11:"description";s:28:"Set SteamCMD Login Password.";s:12:"env_variable";s:16:"SRCDS_LOGIN_PASS";s:13:"default_value";s:16:"TbVgCq5k9sY2tSoe";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"nullable|max:64|string";s:10:"created_at";s:27:"2023-10-16T19:41:54.000000Z";s:10:"updated_at";s:27:"2023-11-05T15:24:58.000000Z";}i:283;a:11:{s:2:"id";i:283;s:6:"egg_id";i:31;s:4:"name";s:10:"STEAM_AUTH";s:11:"description";s:10:"STEAM_AUTH";s:12:"env_variable";s:10:"STEAM_AUTH";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-10-16T20:30:08.000000Z";s:10:"updated_at";s:27:"2023-10-25T20:41:42.000000Z";}i:327;a:11:{s:2:"id";i:327;s:6:"egg_id";i:31;s:4:"name";s:13:"Rcon Password";s:11:"description";s:19:"pack.admin_password";s:12:"env_variable";s:13:"RCON_PASSWORD";s:13:"default_value";s:11:"RANDOM_TEXT";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:30";s:10:"created_at";s:27:"2023-11-03T18:29:11.000000Z";s:10:"updated_at";s:27:"2023-11-05T15:24:37.000000Z";}i:328;a:11:{s:2:"id";i:328;s:6:"egg_id";i:31;s:4:"name";s:10:"Servername";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:11:"SERVER_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:30";s:10:"created_at";s:27:"2023-11-03T19:48:45.000000Z";s:10:"updated_at";s:27:"2023-11-03T19:49:52.000000Z";}i:329;a:11:{s:2:"id";i:329;s:6:"egg_id";i:31;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-11-03T19:56:32.000000Z";s:10:"updated_at";s:27:"2023-11-03T20:05:10.000000Z";}}}i:32;a:15:{s:2:"id";i:32;s:4:"uuid";s:36:"38ab656f-0a9c-4209-8a0e-eac5533ee569";s:4:"name";s:22:"ARK: Survival Ascended";s:4:"nest";i:2;s:6:"author";s:24:"blood@darkartsgaming.com";s:11:"description";s:283:"ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!";s:12:"docker_image";s:33:"ghcr.io/parkervcp/steamcmd:proton";s:13:"docker_images";a:1:{s:33:"ghcr.io/parkervcp/steamcmd:proton";s:33:"ghcr.io/parkervcp/steamcmd:proton";}s:6:"config";a:6:{s:5:"files";a:1:{s:59:"ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:1:{s:11:"MaxPlayers=";s:43:"MaxPlayers={{server.build.env.MAX_PLAYERS}}";}}}s:7:"startup";a:1:{s:4:"done";s:15:"]Full Startup: ";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:903:"rmv() { echo "stopping server"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo "Server Closed"; exit; }; trap rmv 15 2; proton run ./ShooterGame/Binaries/Win64/ArkAscendedServer.exe "{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [  "$SERVER_PVE" == "0" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}" ( [ -z "$MOD_IDS" ] || printf %s ' -mods=' $MOD_IDS )$( [ "$BATTLE_EYE" == "1" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F ./ShooterGame/Saved/Logs/ShooterGame.log --pid=$ARK_PID & until echo "waiting for rcon connection..."; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3328:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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

## add below your custom commands if needed
## cleanup movies?
rm -rf /mnt/server/ShooterGame/Content/Movies

## touch log file
mkdir -p /mnt/server/ShooterGame/Saved/Logs
echo "--fresh install--" >> /mnt/server/ShooterGame/Saved/Logs/ShooterGame.log

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-10-29T22:48:46+00:00";s:10:"updated_at";s:25:"2023-11-02T19:39:46+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:14:{i:284;a:11:{s:2:"id";i:284;s:6:"egg_id";i:32;s:4:"name";s:10:"Server Map";s:11:"description";s:28:"Available Maps: TheIsland_WP";s:12:"env_variable";s:10:"SERVER_MAP";s:13:"default_value";s:12:"TheIsland_WP";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"required|string|max:28|in:TheIsland_WP";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T23:04:04.000000Z";}i:285;a:11:{s:2:"id";i:285;s:6:"egg_id";i:32;s:4:"name";s:11:"Server Name";s:11:"description";s:34:""Unofficial" dedicated server name";s:12:"env_variable";s:12:"SESSION_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"required|string|max:128";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T23:04:15.000000Z";}i:286;a:11:{s:2:"id";i:286;s:6:"egg_id";i:32;s:4:"name";s:18:"Auto-update server";s:11:"description";s:99:"This is to enable auto-updating for servers.

Default is 1. Set to 0 to disable automatic updates";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:287;a:11:{s:2:"id";i:287;s:6:"egg_id";i:32;s:4:"name";s:10:"Battle Eye";s:11:"description";s:60:"Enable BattleEye

0 to disable
1 to enable

default="1"";s:12:"env_variable";s:10:"BATTLE_EYE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:288;a:11:{s:2:"id";i:288;s:6:"egg_id";i:32;s:4:"name";s:6:"App ID";s:11:"description";s:68:"ARK steam app id for auto updates. Leave blank to avoid auto update.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"2430930";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"nullable|numeric";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T23:04:35.000000Z";}i:289;a:11:{s:2:"id";i:289;s:6:"egg_id";i:32;s:4:"name";s:29:"Additional Arguments (PARAMS)";s:11:"description";s:146:"params (?ServerPassword=...) are supported here but params need to be touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd";s:12:"env_variable";s:11:"ARGS_PARAMS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:290;a:11:{s:2:"id";i:290;s:6:"egg_id";i:32;s:4:"name";s:11:"Max Players";s:11:"description";s:64:"Specifies the maximum amount of players able to join the server.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"70";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:291;a:11:{s:2:"id";i:291;s:6:"egg_id";i:32;s:4:"name";s:21:"Server Admin Password";s:11:"description";s:0:"";s:12:"env_variable";s:18:"ARK_ADMIN_PASSWORD";s:13:"default_value";s:11:"RANDOM_TEXT";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:19:"required|alpha_dash";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T23:05:32.000000Z";}i:292;a:11:{s:2:"id";i:292;s:6:"egg_id";i:32;s:4:"name";s:10:"Query Port";s:11:"description";s:74:"ARK query port used by steam server browser and ark client server browser.";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:35:58.000000Z";}i:293;a:11:{s:2:"id";i:293;s:6:"egg_id";i:32;s:4:"name";s:28:"Additional Arguments (FLAGS)";s:11:"description";s:102:"flags (-UseBattleEye) are supported here without them touching. (i.e): -crossplay -mods=1234,1235,1236";s:12:"env_variable";s:10:"ARGS_FLAGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:294;a:11:{s:2:"id";i:294;s:6:"egg_id";i:32;s:4:"name";s:10:"Server PvE";s:11:"description";s:112:"Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is (1) PvE enabled; disabling (0) will enable PvP";s:12:"env_variable";s:10:"SERVER_PVE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:295;a:11:{s:2:"id";i:295;s:6:"egg_id";i:32;s:4:"name";s:15:"Server Password";s:11:"description";s:68:"required password to enter the server, leave blank for public server";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}i:296;a:11:{s:2:"id";i:296;s:6:"egg_id";i:32;s:4:"name";s:9:"RCON Port";s:11:"description";s:112:"required for console commands and proper server shutdown (saveworld/exit), doesn't have to be open to the public";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:36:06.000000Z";}i:297;a:11:{s:2:"id";i:297;s:6:"egg_id";i:32;s:4:"name";s:7:"MOD IDs";s:11:"description";s:215:"https://www.curseforge.com/ark-survival-ascended ; ProjectID is is the MOD_ID on the right-side of the mod-view page ; leave blank to disable mods ; separate only by comma ( , ) without spaces! (i.e.) 1234,1235,1236";s:12:"env_variable";s:7:"MOD_IDS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-29T22:48:46.000000Z";s:10:"updated_at";s:27:"2023-10-29T22:48:46.000000Z";}}}i:34;a:15:{s:2:"id";i:34;s:4:"uuid";s:36:"fdd38602-119b-4829-ae8f-c48cf870dd8a";s:4:"name";s:22:"ARK: Survival Ascended";s:4:"nest";i:2;s:6:"author";s:24:"blood@darkartsgaming.com";s:11:"description";s:283:"ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!";s:12:"docker_image";s:33:"ghcr.io/parkervcp/steamcmd:proton";s:13:"docker_images";a:1:{s:33:"ghcr.io/parkervcp/steamcmd:proton";s:33:"ghcr.io/parkervcp/steamcmd:proton";}s:6:"config";a:6:{s:5:"files";a:1:{s:59:"ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:1:{s:11:"MaxPlayers=";s:43:"MaxPlayers={{server.build.env.MAX_PLAYERS}}";}}}s:7:"startup";a:1:{s:4:"done";s:15:"]Full Startup: ";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:965:"rmv() { echo "stopping server"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo "Server Closed"; exit; }; trap rmv 15 2; proton run ./ShooterGame/Binaries/Win64/ArkAscendedServer.exe "{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [  "$SERVER_PVE" == "0" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z "$MOD_IDS" ] || printf %s ' -mods=' $MOD_IDS )$( [ "$BATTLE_EYE" == "1" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F ./ShooterGame/Saved/Logs/ShooterGame.log --pid=$ARK_PID & until echo "waiting for rcon connection..."; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3328:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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

## add below your custom commands if needed
## cleanup movies?
rm -rf /mnt/server/ShooterGame/Content/Movies

## touch log file
mkdir -p /mnt/server/ShooterGame/Saved/Logs
echo "--fresh install--" >> /mnt/server/ShooterGame/Saved/Logs/ShooterGame.log

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-11-02T19:04:41+00:00";s:10:"updated_at";s:25:"2023-11-02T19:04:41+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:14:{i:313;a:11:{s:2:"id";i:313;s:6:"egg_id";i:34;s:4:"name";s:10:"Server Map";s:11:"description";s:28:"Available Maps: TheIsland_WP";s:12:"env_variable";s:10:"SERVER_MAP";s:13:"default_value";s:12:"TheIsland_WP";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:314;a:11:{s:2:"id";i:314;s:6:"egg_id";i:34;s:4:"name";s:11:"Server Name";s:11:"description";s:34:""Unofficial" dedicated server name";s:12:"env_variable";s:12:"SESSION_NAME";s:13:"default_value";s:27:"A Pterodactyl Hosted Server";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"required|string|max:128";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:315;a:11:{s:2:"id";i:315;s:6:"egg_id";i:34;s:4:"name";s:18:"Auto-update server";s:11:"description";s:99:"This is to enable auto-updating for servers.

Default is 1. Set to 0 to disable automatic updates";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:316;a:11:{s:2:"id";i:316;s:6:"egg_id";i:34;s:4:"name";s:10:"Battle Eye";s:11:"description";s:60:"Enable BattleEye

0 to disable
1 to enable

default="1"";s:12:"env_variable";s:10:"BATTLE_EYE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:317;a:11:{s:2:"id";i:317;s:6:"egg_id";i:34;s:4:"name";s:6:"App ID";s:11:"description";s:68:"ARK steam app id for auto updates. Leave blank to avoid auto update.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"2430930";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"nullable|numeric";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:318;a:11:{s:2:"id";i:318;s:6:"egg_id";i:34;s:4:"name";s:29:"Additional Arguments (PARAMS)";s:11:"description";s:146:"params (?ServerPassword=...) are supported here but params need to be touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd";s:12:"env_variable";s:11:"ARGS_PARAMS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:319;a:11:{s:2:"id";i:319;s:6:"egg_id";i:34;s:4:"name";s:11:"Max Players";s:11:"description";s:64:"Specifies the maximum amount of players able to join the server.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"70";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|numeric";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:320;a:11:{s:2:"id";i:320;s:6:"egg_id";i:34;s:4:"name";s:21:"Server Admin Password";s:11:"description";s:0:"";s:12:"env_variable";s:18:"ARK_ADMIN_PASSWORD";s:13:"default_value";s:8:"changeme";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:19:"required|alpha_dash";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:321;a:11:{s:2:"id";i:321;s:6:"egg_id";i:34;s:4:"name";s:10:"Query Port";s:11:"description";s:74:"ARK query port used by steam server browser and ark client server browser.";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"27015";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|numeric|max:65535";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:322;a:11:{s:2:"id";i:322;s:6:"egg_id";i:34;s:4:"name";s:28:"Additional Arguments (FLAGS)";s:11:"description";s:102:"flags (-UseBattleEye) are supported here without them touching. (i.e): -crossplay -mods=1234,1235,1236";s:12:"env_variable";s:10:"ARGS_FLAGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:323;a:11:{s:2:"id";i:323;s:6:"egg_id";i:34;s:4:"name";s:10:"Server PvE";s:11:"description";s:112:"Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is (1) PvE enabled; disabling (0) will enable PvP";s:12:"env_variable";s:10:"SERVER_PVE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:324;a:11:{s:2:"id";i:324;s:6:"egg_id";i:34;s:4:"name";s:15:"Server Password";s:11:"description";s:68:"required password to enter the server, leave blank for public server";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:325;a:11:{s:2:"id";i:325;s:6:"egg_id";i:34;s:4:"name";s:9:"RCON Port";s:11:"description";s:112:"required for console commands and proper server shutdown (saveworld/exit), doesn't have to be open to the public";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:5:"37015";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:26:"required|numeric|max:65535";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}i:326;a:11:{s:2:"id";i:326;s:6:"egg_id";i:34;s:4:"name";s:7:"MOD IDs";s:11:"description";s:215:"https://www.curseforge.com/ark-survival-ascended ; ProjectID is is the MOD_ID on the right-side of the mod-view page ; leave blank to disable mods ; separate only by comma ( , ) without spaces! (i.e.) 1234,1235,1236";s:12:"env_variable";s:7:"MOD_IDS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-11-02T19:04:41.000000Z";s:10:"updated_at";s:27:"2023-11-02T19:04:41.000000Z";}}}i:35;a:15:{s:2:"id";i:35;s:4:"uuid";s:36:"521915bf-5b99-4e8d-8175-5c6a487720b2";s:4:"name";s:26:"ARK: Survival Ascended new";s:4:"nest";i:2;s:6:"author";s:24:"blood@darkartsgaming.com";s:11:"description";s:283:"ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!";s:12:"docker_image";s:33:"ghcr.io/parkervcp/steamcmd:proton";s:13:"docker_images";a:1:{s:6:"Proton";s:33:"ghcr.io/parkervcp/steamcmd:proton";}s:6:"config";a:6:{s:5:"files";a:1:{s:59:"ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:2:{s:11:"MaxPlayers=";s:43:"MaxPlayers={{server.build.env.MAX_PLAYERS}}";s:20:"ServerAdminPassword=";s:59:"ServerAdminPassword={{server.build.env.ARK_ADMIN_PASSWORD}}";}}}s:7:"startup";a:1:{s:4:"done";s:31:"Waiting commands for 127.0.0.1:";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:969:"rmv() { echo "stopping server"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo "Server Closed"; exit; }; trap rmv 15 2; proton run ./ShooterGame/Binaries/Win64/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName="{{SESSION_NAME}}"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [  "$SERVER_PVE" == "0" ] || printf %s '?ServerPVE=True' )?ServerPassword="{{SERVER_PASSWORD}}"{{ARGS_PARAMS}}?ServerAdminPassword="{{ARK_ADMIN_PASSWORD}}" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z "$MOD_IDS" ] || printf %s ' -mods=' $MOD_IDS )$( [ "$BATTLE_EYE" == "1" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F ./ShooterGame/Saved/Logs/ShooterGame.log --pid=$ARK_PID & until echo "waiting for rcon connection..."; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3328:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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

## add below your custom commands if needed
## cleanup movies?
rm -rf /mnt/server/ShooterGame/Content/Movies

## touch log file
mkdir -p /mnt/server/ShooterGame/Saved/Logs
echo "--fresh install--" >> /mnt/server/ShooterGame/Saved/Logs/ShooterGame.log

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-11-04T15:28:46+00:00";s:10:"updated_at";s:25:"2023-11-04T15:28:53+00:00";s:9:"nest_name";s:13:"Source Engine";s:9:"variables";a:14:{i:330;a:11:{s:2:"id";i:330;s:6:"egg_id";i:35;s:4:"name";s:10:"Server Map";s:11:"description";s:28:"Available Maps: TheIsland_WP";s:12:"env_variable";s:10:"SERVER_MAP";s:13:"default_value";s:12:"TheIsland_WP";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:64";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:331;a:11:{s:2:"id";i:331;s:6:"egg_id";i:35;s:4:"name";s:11:"Server Name";s:11:"description";s:34:""Unofficial" dedicated server name";s:12:"env_variable";s:12:"SESSION_NAME";s:13:"default_value";s:27:"A Pterodactyl Hosted Server";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"required|string|max:256";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:332;a:11:{s:2:"id";i:332;s:6:"egg_id";i:35;s:4:"name";s:18:"Auto-update server";s:11:"description";s:66:"This is to enable auto-updating for servers on restart/re-install.";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:333;a:11:{s:2:"id";i:333;s:6:"egg_id";i:35;s:4:"name";s:10:"Battle Eye";s:11:"description";s:29:"Enable BattleEye / Anti-Cheat";s:12:"env_variable";s:10:"BATTLE_EYE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:334;a:11:{s:2:"id";i:334;s:6:"egg_id";i:35;s:4:"name";s:6:"App ID";s:11:"description";s:75:"app id required for server download/updates. end users should not see this.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"2430930";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:27:"required|integer|in:2430930";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:335;a:11:{s:2:"id";i:335;s:6:"egg_id";i:35;s:4:"name";s:29:"Additional Arguments (PARAMS)";s:11:"description";s:146:"params (?ServerPassword=...) are supported here but params need to be touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd";s:12:"env_variable";s:11:"ARGS_PARAMS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:24:"nullable|string|max:1024";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:336;a:11:{s:2:"id";i:336;s:6:"egg_id";i:35;s:4:"name";s:11:"Max Players";s:11:"description";s:64:"Specifies the maximum amount of players able to join the server.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"70";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:30:"required|integer|min:1|max:200";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:337;a:11:{s:2:"id";i:337;s:6:"egg_id";i:35;s:4:"name";s:21:"Server Admin Password";s:11:"description";s:77:"Used for RCON (remote and in-browser console) as well as in-game EnableCheats";s:12:"env_variable";s:18:"ARK_ADMIN_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:27:"required|alpha_dash|max:128";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:338;a:11:{s:2:"id";i:338;s:6:"egg_id";i:35;s:4:"name";s:10:"Query Port";s:11:"description";s:74:"ARK query port used by steam server browser and ark client server browser.";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"27015";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|min:1025|max:65535";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:339;a:11:{s:2:"id";i:339;s:6:"egg_id";i:35;s:4:"name";s:28:"Additional Arguments (FLAGS)";s:11:"description";s:102:"flags (-UseBattleEye) are supported here without them touching. (i.e): -crossplay -mods=1234,1235,1236";s:12:"env_variable";s:10:"ARGS_FLAGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:24:"nullable|string|max:1024";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:340;a:11:{s:2:"id";i:340;s:6:"egg_id";i:35;s:4:"name";s:10:"Server PvE";s:11:"description";s:77:"ON = Player-vs-Environment (PvE), OFF = Player-vs-Player (PvP); Default is ON";s:12:"env_variable";s:10:"SERVER_PVE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:341;a:11:{s:2:"id";i:341;s:6:"egg_id";i:35;s:4:"name";s:15:"Server Password";s:11:"description";s:68:"required password to enter the server, leave blank for public server";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:27:"nullable|alpha_dash|max:128";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:342;a:11:{s:2:"id";i:342;s:6:"egg_id";i:35;s:4:"name";s:9:"RCON Port";s:11:"description";s:112:"required for console commands and proper server shutdown (saveworld/exit), doesn't have to be open to the public";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:5:"37015";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|min:1025|max:65535";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}i:343;a:11:{s:2:"id";i:343;s:6:"egg_id";i:35;s:4:"name";s:7:"MOD IDs";s:11:"description";s:215:"https://www.curseforge.com/ark-survival-ascended ; ProjectID is is the MOD_ID on the right-side of the mod-view page ; leave blank to disable mods ; separate only by comma ( , ) without spaces! (i.e.) 1234,1235,1236";s:12:"env_variable";s:7:"MOD_IDS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:23:"nullable|string|max:512";s:10:"created_at";s:27:"2023-11-04T15:28:46.000000Z";s:10:"updated_at";s:27:"2023-11-04T15:28:46.000000Z";}}}i:12;a:15:{s:2:"id";i:12;s:4:"uuid";s:36:"fbb8f5ad-6b93-4735-af96-b9eb1f8d9b30";s:4:"name";s:13:"Mumble Server";s:4:"nest";i:3;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:112:"Mumble is an open source, low-latency, high quality voice chat software primarily intended for use while gaming.";s:12:"docker_image";s:36:"ghcr.io/parkervcp/yolks:voice_mumble";s:13:"docker_images";a:1:{s:6:"Mumble";s:36:"ghcr.io/parkervcp/yolks:voice_mumble";}s:6:"config";a:6:{s:5:"files";a:1:{s:10:"murmur.ini";a:2:{s:6:"parser";s:3:"ini";s:4:"find";a:5:{s:8:"database";s:29:"/home/container/murmur.sqlite";s:7:"logfile";s:26:"/home/container/murmur.log";s:4:"port";s:29:"{{server.build.default.port}}";s:4:"host";s:7:"0.0.0.0";s:5:"users";s:30:"{{server.build.env.MAX_USERS}}";}}}s:7:"startup";a:1:{s:4:"done";s:19:"Server listening on";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:33:"mumble-server -fg -ini murmur.ini";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:349:"#!/bin/ash

if [ ! -d /mnt/server/ ]; then
    mkdir /mnt/server/
fi

cd /mnt/server

FILE=/mnt/server/murmur.ini
if [ -f "$FILE" ]; then
    echo "Config file already exists."
else 
    echo "Downloading the config file."
    apk add --no-cache murmur
    cp /etc/murmur.ini /mnt/server/murmur.ini
    apk del murmur
fi
echo "done"";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:13:"Voice Servers";s:9:"variables";a:1:{i:47;a:11:{s:2:"id";i:47;s:6:"egg_id";i:12;s:4:"name";s:13:"Maximum Users";s:11:"description";s:46:"Maximum concurrent users on the mumble server.";s:12:"env_variable";s:9:"MAX_USERS";s:13:"default_value";s:3:"100";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|numeric|digits_between:1,5";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:13;a:15:{s:2:"id";i:13;s:4:"uuid";s:36:"d2ffc68f-5e22-42e6-a798-64cee919954e";s:4:"name";s:17:"Teamspeak3 Server";s:4:"nest";i:3;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:169:"VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.";s:12:"docker_image";s:32:"ghcr.io/pterodactyl/yolks:debian";s:13:"docker_images";a:1:{s:32:"ghcr.io/pterodactyl/yolks:debian";s:32:"ghcr.io/pterodactyl/yolks:debian";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:21:"listening on 0.0.0.0:";}s:4:"stop";s:2:"^C";s:4:"logs";a:2:{s:6:"custom";b:1;s:8:"location";s:12:"logs/ts3.log";}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:251:"./ts3server default_voice_port={{SERVER_PORT}} query_port={{QUERY_PORT}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} query_http_port={{QUERY_HTTP}} query_ssh_port={{QUERY_SSH}} query_protocols={{QUERY_PROTOCOLS_VAR}} license_accepted=1";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:601:"#!/bin/ash
# TS3 Installation Script
#
# Server Files: /mnt/server

if [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then
    TS_VERSION=$(curl -sSL https://teamspeak.com/versions/server.json | jq -r '.linux.x86_64.version')
fi

cd /mnt/server

echo -e "getting files from http://files.teamspeak-services.com/releases/server/${TS_VERSION}/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2" 
curl -L http://files.teamspeak-services.com/releases/server/${TS_VERSION}/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar -xvj --strip-components=1
cp ./redist/libmariadb.so.2 ./";s:5:"entry";s:3:"ash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:alpine";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-07-07T15:40:27+00:00";s:9:"nest_name";s:13:"Voice Servers";s:9:"variables";a:6:{i:48;a:11:{s:2:"id";i:48;s:6:"egg_id";i:13;s:4:"name";s:14:"Server Version";s:11:"description";s:58:"The version of Teamspeak 3 to use when running the server.";s:12:"env_variable";s:10:"TS_VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:21:"required|string|max:6";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:49;a:11:{s:2:"id";i:49;s:6:"egg_id";i:13;s:4:"name";s:18:"File Transfer Port";s:11:"description";s:32:"The Teamspeak file transfer port";s:12:"env_variable";s:13:"FILE_TRANSFER";s:13:"default_value";s:5:"30033";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1025,65535";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:50;a:11:{s:2:"id";i:50;s:6:"egg_id";i:13;s:4:"name";s:10:"Query Port";s:11:"description";s:24:"The Teamspeak Query Port";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"10011";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1025,65535";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:51;a:11:{s:2:"id";i:51;s:6:"egg_id";i:13;s:4:"name";s:15:"Query Protocols";s:11:"description";s:145:"Comma separated list of protocols that can be used to connect to the ServerQuery | 
Possible values are raw, ssh and http | 
E.g.: raw,ssh,http";s:12:"env_variable";s:19:"QUERY_PROTOCOLS_VAR";s:13:"default_value";s:12:"raw,http,ssh";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:12";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:52;a:11:{s:2:"id";i:52;s:6:"egg_id";i:13;s:4:"name";s:14:"Query SSH Port";s:11:"description";s:53:"TCP Port opened for ServerQuery connections using SSH";s:12:"env_variable";s:9:"QUERY_SSH";s:13:"default_value";s:5:"10022";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1025,65535";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:53;a:11:{s:2:"id";i:53;s:6:"egg_id";i:13;s:4:"name";s:15:"Query HTTP Port";s:11:"description";s:54:"TCP Port opened for ServerQuery connections using http";s:12:"env_variable";s:10:"QUERY_HTTP";s:13:"default_value";s:5:"10080";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1025,65535";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:14;a:15:{s:2:"id";i:14;s:4:"uuid";s:36:"81ec9f2b-8f1a-4ffc-9ac4-d0f981b731e4";s:4:"name";s:4:"Rust";s:4:"nest";i:4;s:6:"author";s:22:"support@pterodactyl.io";s:11:"description";s:316:"The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.";s:12:"docker_image";s:30:"ghcr.io/pterodactyl/games:rust";s:13:"docker_images";a:1:{s:30:"ghcr.io/pterodactyl/games:rust";s:30:"ghcr.io/pterodactyl/games:rust";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:23:"Server startup complete";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:663:"./RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity "rust" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \"{{HOSTNAME}}\" +server.level \"{{LEVEL}}\" +server.description \"{{DESCRIPTION}}\" +server.url \"{{SERVER_URL}}\" +server.headerimage \"{{SERVER_IMG}}\" +server.logoimage \"{{SERVER_LOGO}}\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \"{{RCON_PASS}}\" +server.saveinterval {{SAVEINTERVAL}} +app.port {{APP_PORT}}  $( [ -z ${MAP_URL} ] && printf %s "+server.worldsize \"{{WORLD_SIZE}}\" +server.seed \"{{WORLD_SEED}}\"" || printf %s "+server.levelurl {{MAP_URL}}" ) {{ADDITIONAL_ARGS}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1418:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server

SRCDS_APPID=258550

## 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
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_update ${SRCDS_APPID} ${EXTRA_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";s:5:"entry";s:4:"bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-07T15:40:27+00:00";s:10:"updated_at";s:25:"2023-10-16T16:39:13+00:00";s:9:"nest_name";s:4:"Rust";s:9:"variables";a:17:{i:54;a:11:{s:2:"id";i:54;s:6:"egg_id";i:14;s:4:"name";s:11:"Server Name";s:11:"description";s:50:"The name of your server in the public server list.";s:12:"env_variable";s:8:"HOSTNAME";s:13:"default_value";s:13:"A Rust Server";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:60";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:56;a:11:{s:2:"id";i:56;s:6:"egg_id";i:14;s:4:"name";s:5:"Level";s:11:"description";s:31:"The world file for Rust to use.";s:12:"env_variable";s:5:"LEVEL";s:13:"default_value";s:14:"Procedural Map";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:57;a:11:{s:2:"id";i:57;s:6:"egg_id";i:14;s:4:"name";s:11:"Description";s:11:"description";s:93:"The description under your server title. Commonly used for rules & info. Use \n for newlines.";s:12:"env_variable";s:11:"DESCRIPTION";s:13:"default_value";s:22:"Powered by Pterodactyl";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:58;a:11:{s:2:"id";i:58;s:6:"egg_id";i:14;s:4:"name";s:3:"URL";s:11:"description";s:88:"The URL for your server. This is what comes up when clicking the "Visit Website" button.";s:12:"env_variable";s:10:"SERVER_URL";s:13:"default_value";s:21:"http://pterodactyl.io";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:59;a:11:{s:2:"id";i:59;s:6:"egg_id";i:14;s:4:"name";s:10:"World Size";s:11:"description";s:36:"The world size for a procedural map.";s:12:"env_variable";s:10:"WORLD_SIZE";s:13:"default_value";s:4:"3000";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:60;a:11:{s:2:"id";i:60;s:6:"egg_id";i:14;s:4:"name";s:10:"World Seed";s:11:"description";s:30:"The seed for a procedural map.";s:12:"env_variable";s:10:"WORLD_SEED";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:61;a:11:{s:2:"id";i:61;s:6:"egg_id";i:14;s:4:"name";s:11:"Max Players";s:11:"description";s:60:"The maximum amount of players allowed in the server at once.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"40";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:62;a:11:{s:2:"id";i:62;s:6:"egg_id";i:14;s:4:"name";s:12:"Server Image";s:11:"description";s:52:"The header image for the top of your server listing.";s:12:"env_variable";s:10:"SERVER_IMG";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:63;a:11:{s:2:"id";i:63;s:6:"egg_id";i:14;s:4:"name";s:9:"RCON Port";s:11:"description";s:26:"Port for RCON connections.";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:5:"28016";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:64;a:11:{s:2:"id";i:64;s:6:"egg_id";i:14;s:4:"name";s:13:"RCON Password";s:11:"description";s:21:"RCON access password.";s:12:"env_variable";s:9:"RCON_PASS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:33:"required|regex:/^[\w.-]*$/|max:64";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:65;a:11:{s:2:"id";i:65;s:6:"egg_id";i:14;s:4:"name";s:13:"Save Interval";s:11:"description";s:50:"Sets the server’s auto-save interval in seconds.";s:12:"env_variable";s:12:"SAVEINTERVAL";s:13:"default_value";s:2:"60";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:66;a:11:{s:2:"id";i:66;s:6:"egg_id";i:14;s:4:"name";s:20:"Additional Arguments";s:11:"description";s:48:"Add additional startup parameters to the server.";s:12:"env_variable";s:15:"ADDITIONAL_ARGS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:67;a:11:{s:2:"id";i:67;s:6:"egg_id";i:14;s:4:"name";s:8:"App Port";s:11:"description";s:38:"Port for the Rust+ App. -1 to disable.";s:12:"env_variable";s:8:"APP_PORT";s:13:"default_value";s:5:"28082";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:68;a:11:{s:2:"id";i:68;s:6:"egg_id";i:14;s:4:"name";s:11:"Server Logo";s:11:"description";s:43:"The circular server logo for the Rust+ app.";s:12:"env_variable";s:11:"SERVER_LOGO";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:69;a:11:{s:2:"id";i:69;s:6:"egg_id";i:14;s:4:"name";s:14:"Custom Map URL";s:11:"description";s:106:"Overwrites the map with the one from the direct download URL. Invalid URLs will cause the server to crash.";s:12:"env_variable";s:7:"MAP_URL";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-07-07T15:40:27.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:272;a:11:{s:2:"id";i:272;s:6:"egg_id";i:14;s:4:"name";s:17:"Modding Framework";s:11:"description";s:118:"The modding framework to be used: carbon, oxide, vanilla.
Defaults to "vanilla" for a non-modded server installation.";s:12:"env_variable";s:9:"FRAMEWORK";s:13:"default_value";s:7:"vanilla";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:32:"required|in:carbon,oxide,vanilla";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}i:273;a:11:{s:2:"id";i:273;s:6:"egg_id";i:14;s:4:"name";s:10:"Query Port";s:11:"description";s:60:"Server Query Port. Can't be the same as Game's primary port.";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"27017";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-16T16:39:13.000000Z";s:10:"updated_at";s:27:"2023-10-16T16:39:13.000000Z";}}}i:16;a:15:{s:2:"id";i:16;s:4:"uuid";s:36:"7dc1900d-a754-419d-8c85-4613289edff6";s:4:"name";s:20:"Rimworld: Open World";s:4:"nest";i:5;s:6:"author";s:19:"kyle@williquette.us";s:11:"description";s:236:"The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!

https://github.com/D12-Dev/OpenWorld";s:12:"docker_image";s:34:"ghcr.io/parkervcp/yolks:dotnet_3.1";s:13:"docker_images";a:2:{s:10:"Dotnet 3.1";s:34:"ghcr.io/parkervcp/yolks:dotnet_3.1";s:8:"Dotnet 6";s:32:"ghcr.io/parkervcp/yolks:dotnet_6";}s:6:"config";a:6:{s:5:"files";a:1:{s:16:"Data/Config.json";a:2:{s:6:"parser";s:4:"json";s:4:"find";a:9:{s:12:"LocalAddress";s:7:"0.0.0.0";s:10:"ServerPort";s:29:"{{server.build.default.port}}";s:10:"MaxPlayers";s:32:"{{server.build.env.MAX_PLAYERS}}";s:11:"EnforceMods";s:33:"{{server.build.env.ENFORCE_MODS}}";s:15:"UseModBlacklist";s:38:"{{server.build.env.USE_MOD_BLACKLIST}}";s:19:"UseCustomDifficulty";s:36:"{{server.build.env.USE_CUSTOM_DIFF}}";s:12:"UseWhitelist";s:30:"{{server.build.env.WHITELIST}}";s:20:"AllowCustomScenarios";s:32:"{{server.build.env.CUSTOM_SCEN}}";s:13:"PlayerVersion";s:35:"{{server.build.env.PLAYER_VERSION}}";}}}s:7:"startup";a:1:{s:4:"done";s:16:" Server Launched";}s:4:"stop";s:8:"shutdown";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:17:"./OpenWorldServer";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2118:"#!/bin/bash

#Create the server directory
mkdir -p /mnt/server
cd /mnt/server

apt update
apt -y install curl jq unzip git


#Check for latest release & download URLs
LATEST_JSON=$(curl --silent "https://api.github.com/repos/D12-Dev/OpenWorld/releases/latest")
RELEASES=$(curl --silent "https://api.github.com/repos/D12-Dev/OpenWorld/releases")
ARCH=$([[ "$(uname -m)" == "x86_64" ]] && echo "linux-x64" || echo "linux-arm64")

if [ -z "${VERSION}" ] || [ "${VERSION}" == "latest" ]; then
    DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH} | head -1)
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 -i ${ARCH} | head -1)
    else
        echo -e "defaulting to latest release"
        DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH}| head -1)
    fi
fi


#Download the Rimworld Open World server
echo -e "Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip"
curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip
echo -e "Unzipping ${ARCH}.zip"
unzip -o ${ARCH}.zip
mv ${ARCH}/* /mnt/server
chmod +x "OpenWorldServer"
rm -rf ${ARCH}.zip ${ARCH}/



cd /mnt/server
FILE=/mnt/server/Data/Config.json
if [ -f "$FILE" ]; then
    echo "config already exists."
else 
    echo "Config does not exist, making one"
    mkdir -p /mnt/server/Data
    cd /mnt/server/Data
cat << EOF > "Config.json"
{
  "LocalAddress": "0.0.0.0",
  "ServerPort": 25555,
  "MaxPlayers": 10,
  "PlayerVersion": "1.2",
  "EnforceMods": false,
  "UseModBlacklist": false,
  "UseCustomDifficulty": false,
  "UseWhitelist": false,
  "AllowCustomScenarios": false
}
EOF
fi


## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:20:"debian:bullseye-slim";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:23:42+00:00";s:10:"updated_at";s:25:"2023-07-11T15:23:42+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:8:{i:78;a:11:{s:2:"id";i:78;s:6:"egg_id";i:16;s:4:"name";s:18:"Open World Version";s:11:"description";s:0:"";s:12:"env_variable";s:7:"VERSION";s:13:"default_value";s:6:"latest";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:21:"required|string|max:8";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:42.000000Z";}i:79;a:11:{s:2:"id";i:79;s:6:"egg_id";i:16;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"10";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:12:"required|int";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:28:17.000000Z";}i:80;a:11:{s:2:"id";i:80;s:6:"egg_id";i:16;s:4:"name";s:26:"pack.rw_enforce_mods_title";s:11:"description";s:20:"pack.rw_enforce_mods";s:12:"env_variable";s:12:"ENFORCE_MODS";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:26:53.000000Z";}i:81;a:11:{s:2:"id";i:81;s:6:"egg_id";i:16;s:4:"name";s:24:"pack.rw_block_mods_title";s:11:"description";s:18:"pack.rw_block_mods";s:12:"env_variable";s:17:"USE_MOD_BLACKLIST";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:27:50.000000Z";}i:82;a:11:{s:2:"id";i:82;s:6:"egg_id";i:16;s:4:"name";s:21:"Use Custom Difficulty";s:11:"description";s:95:"Players must use the "Difficulty" file setting. Ensure all values are set or they default to 0%";s:12:"env_variable";s:15:"USE_CUSTOM_DIFF";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:27:24.000000Z";}i:83;a:11:{s:2:"id";i:83;s:6:"egg_id";i:16;s:4:"name";s:9:"Whitelist";s:11:"description";s:17:"pack.rw_whitelist";s:12:"env_variable";s:9:"WHITELIST";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:29:53.000000Z";}i:84;a:11:{s:2:"id";i:84;s:6:"egg_id";i:16;s:4:"name";s:25:"pack.rw_custom_scen_title";s:11:"description";s:19:"pack.rw_custom_scen";s:12:"env_variable";s:11:"CUSTOM_SCEN";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:32:31.000000Z";}i:85;a:11:{s:2:"id";i:85;s:6:"egg_id";i:16;s:4:"name";s:14:"Player Version";s:11:"description";s:180:"Supported Server Version
To see the latest supported version, visit https://discord.com/channels/992806266109964319/992881103071354890
For example, for v1.3, you would enter 1.3.";s:12:"env_variable";s:14:"PLAYER_VERSION";s:13:"default_value";s:3:"1.3";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:10";s:10:"created_at";s:27:"2023-07-11T15:23:42.000000Z";s:10:"updated_at";s:27:"2023-08-24T11:32:14.000000Z";}}}i:17;a:15:{s:2:"id";i:17;s:4:"uuid";s:36:"90486844-d2ca-4753-9323-ac86adb254c7";s:4:"name";s:13:"7 Days To Die";s:4:"nest";i:5;s:6:"author";s:28:"kristoffer.norman@bahnhof.se";s:11:"description";s:20:"7 days to die server";s:12:"docker_image";s:33:"ghcr.io/parkervcp/steamcmd:debian";s:13:"docker_images";a:1:{s:33:"ghcr.io/parkervcp/steamcmd:debian";s:33:"ghcr.io/parkervcp/steamcmd:debian";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:26:"Connected with 7DTD server";}s:4:"stop";s:8:"shutdown";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:690:"./7DaysToDieServer.x86_64 -configfile=serverconfig.xml -quit -batchmode -nographics -dedicated -ServerPort=${SERVER_PORT} -ServerDisabledNetworkProtocols=${SERVER_DISABLED_NETWORK_PROTOCOLS} -ServerMaxPlayerCount=${MAX_PLAYERS} -GameDifficulty=${GAME_DIFFICULTY} -ControlPanelEnabled=false -TelnetEnabled=true -TelnetPort=${TELNET_PORT} -TelnetPassword=${PASSWORD} -logfile logs/latest.log & echo -e "Checking on telnet connection" && until nc -z -v -w5 127.0.0.1 ${TELNET_PORT}; do echo "Waiting for telnet connection..."; sleep 5; done && $( [[ -z ${PASSWORD} ]] && printf %s "telnet -E 127.0.0.1 ${TELNET_PORT}" || printf %s "rcon -t telnet -a 127.0.0.1:${TELNET_PORT} -p {{PASSWORD}}" )";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3773:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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

## add below your custom commands if needed

## install end
###
echo "--------------------------------------------------"
echo ""
echo "Installation abgeschlossen..."
echo ""
echo "--------------------------------------------------"
###
echo "Überprüfe, ob die Ports unter Startup gesetzt wurden und ob die Ports unter Netzwerk gesehen oder erstellt werden müssen."
echo "Für dieses Spiel muss der Telnet-Port angegeben werden."
echo "--------------------------------------------------"
###
echo ""
echo "Installation completed..."
echo ""
echo "--------------------------------------------------"
###

echo "Checking if the ports are set under Startup and if the ports need to be seen or created under network."
echo "For this game, the Telnet port must be specified."
echo "--------------------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:23:49+00:00";s:10:"updated_at";s:25:"2023-07-11T15:23:49+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:9:{i:86;a:11:{s:2:"id";i:86;s:6:"egg_id";i:17;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"8";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:38:50.000000Z";}i:87;a:11:{s:2:"id";i:87;s:6:"egg_id";i:17;s:4:"name";s:31:"pack.7d2d_game_difficulty_title";s:11:"description";s:25:"pack.7d2d_game_difficulty";s:12:"env_variable";s:15:"GAME_DIFFICULTY";s:13:"default_value";s:1:"2";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:28:"required|integer|between:0,5";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:41:28.000000Z";}i:88;a:11:{s:2:"id";i:88;s:6:"egg_id";i:17;s:4:"name";s:12:"Source AppID";s:11:"description";s:51:"This is the app id for 7dtd please no step on snek.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"294420";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:49.000000Z";}i:89;a:11:{s:2:"id";i:89;s:6:"egg_id";i:17;s:4:"name";s:11:"Auto Update";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:41:42.000000Z";}i:90;a:11:{s:2:"id";i:90;s:6:"egg_id";i:17;s:4:"name";s:11:"ld lib path";s:11:"description";s:55:"This is really annoying that more games are doing this.";s:12:"env_variable";s:15:"LD_LIBRARY_PATH";s:13:"default_value";s:1:".";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:49.000000Z";}i:91;a:11:{s:2:"id";i:91;s:6:"egg_id";i:17;s:4:"name";s:11:"Beta Branch";s:11:"description";s:21:"pack.7d2d_beta_branch";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:43:30.000000Z";}i:92;a:11:{s:2:"id";i:92;s:6:"egg_id";i:17;s:4:"name";s:15:"Telnet Password";s:11:"description";s:133:"Telnet listens on a local interface by default without a password. However, you can specify a password if  you wish to expose telnet.";s:12:"env_variable";s:8:"PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"nullable|string|max:30";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:38:17.000000Z";}i:93;a:11:{s:2:"id";i:93;s:6:"egg_id";i:17;s:4:"name";s:11:"Telnet Port";s:11:"description";s:46:"'pack.port_request', ['port' => 'Telnet Port']";s:12:"env_variable";s:11:"TELNET_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:44:05.000000Z";}i:94;a:11:{s:2:"id";i:94;s:6:"egg_id";i:17;s:4:"name";s:17:"Network Protocols";s:11:"description";s:341:"Networking protocols that should NOT be used. Separated by comma. Possible values: LiteNetLib, SteamNetworking. Dedicated servers should disable SteamNetworking if there is no NAT router in between your users and the server or when port-forwarding is set up correctly. lets it empty if you are connecting your self hosted server behind a NAT";s:12:"env_variable";s:33:"SERVER_DISABLED_NETWORK_PROTOCOLS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:23:49.000000Z";s:10:"updated_at";s:27:"2023-08-21T07:37:36.000000Z";}}}i:18;a:15:{s:2:"id";i:18;s:4:"uuid";s:36:"dfad8a3c-56fd-4c4a-bedd-b3e42e7d6c2a";s:4:"name";s:12:"Satisfactory";s:4:"nest";i:5;s:6:"author";s:21:"rehlmgaming@gmail.com";s:11:"description";s:217:"Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven!";s:12:"docker_image";s:30:"ghcr.io/parkervcp/games:source";s:13:"docker_images";a:1:{s:30:"ghcr.io/parkervcp/games:source";s:30:"ghcr.io/parkervcp/games:source";}s:6:"config";a:6:{s:5:"files";a:3:{s:47:"FactoryGame/Saved/Config/WindowsServer/Game.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:1:{s:10:"MaxPlayers";s:43:"MaxPlayers={{server.build.env.MAX_PLAYERS}}";}}s:47:"FactoryGame/Saved/Config/LinuxServer/Engine.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:4:{s:21:"mNumRotatingAutosaves";s:56:"mNumRotatingAutosaves={{server.build.env.NUM_AUTOSAVES}}";s:13:"bImplicitSend";s:54:"bImplicitSend={{server.build.env.UPLOAD_CRASH_REPORT}}";s:21:"InitialConnectTimeout";s:63:"InitialConnectTimeout={{server.build.env.INIT_CONNECT_TIMEOUT}}";s:17:"ConnectionTimeout";s:54:"ConnectionTimeout={{server.build.env.CONNECT_TIMEOUT}}";}}s:57:"FactoryGame/Saved/Config/LinuxServer/GameUserSettings.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:2:{s:12:"mFloatValues";s:78:"mFloatValues=(("FG.AutosaveInterval", {{server.build.env.AUTOSAVE_INTERVAL}}))";s:10:"mIntValues";s:72:"mIntValues=(("FG.NetworkQuality", {{server.build.env.NETWORK_QUALITY}}))";}}}s:7:"startup";a:1:{s:4:"done";s:21:"Engine Initialization";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:236:"./Engine/Binaries/Linux/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo "-DisableSeasonalEvents"; fi)";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:4725:"#!/bin/bash

# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json
# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord
# Date: 2022/10/13
# License: MIT License

## Download and install SteamCMD
cd /tmp
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
mkdir -p /mnt/server/steamcmd
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
cd /mnt/server/steamcmd

# SteamCMD fails otherwise for some reason, even running as root.
chown -R root:root /mnt
export HOME=/mnt/server

# Install game server using SteamCMD
./steamcmd.sh +force_install_dir /mnt/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) validate +exit

# Set up 32 and 64 bit libraries
mkdir -p /mnt/server/.steam/sdk{32,64}
cp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so
cp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so

## Satisfactory setup
# Check for successful installation and make the core binary executable.
cd /mnt/server/Engine/Binaries/Linux
if [[ ! -f UE4Server-Linux-Shipping ]]; then
    echo -e "\n\nSteamCMD failed to install the Satisfactory Dedicated Server!"
    echo -e "\tTry reinstalling the server again.\n"
    exit 1
else
    chmod +x UE4Server-Linux-Shipping
fi

# Make Config directory and default .ini files (since they are not initially present before first server start)
mkdir -p /mnt/server/FactoryGame/Saved/Config/LinuxServer/ && cd "$_"
# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.
# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.
# When the patch to this limitation hits the production branch, this will be updated.
rm -f Engine.ini Game.ini GameUserSettings.ini

echo -e '\nCreating default "Engine.ini" configuration file...'
cat > Engine.ini << EOF
[/Script/FactoryGame.FGSaveSession]
mNumRotatingAutosaves=${NUM_AUTOSAVES}

[CrashReportClient]
bImplicitSend=${UPLOAD_CRASH_REPORT}

[/Script/OnlineSubsystemUtils.IpNetDriver]
InitialConnectTimeout=${INIT_CONNECT_TIMEOUT}
ConnectionTimeout=${CONNECT_TIMEOUT}
EOF

echo -e 'Creating default "Game.ini" configuration file...'
cat > Game.ini << EOF
[/Script/Engine.GameSession]
MaxPlayers=${MAX_PLAYERS}
EOF

echo -e 'Creating default "GameUserSettings.ini" configuration file...'
cat > GameUserSettings.ini << EOF
[/Script/FactoryGame.FGGameUserSettings]
mIntValues=(("FG.NetworkQuality", ${NETWORK_QUALITY}))
mFloatValues=(("FG.AutosaveInterval", ${AUTOSAVE_INTERVAL}))
mAutoDetectSettingsHandled=False
mPrimaryLanguage=
CurrentFGGameUserSettingsVersion=0
bUseVSync=False
bUseDynamicResolution=False
ResolutionSizeX=1280
ResolutionSizeY=720
LastUserConfirmedResolutionSizeX=1280
LastUserConfirmedResolutionSizeY=720
WindowPosX=-1
WindowPosY=-1
FullscreenMode=1
LastConfirmedFullscreenMode=1
PreferredFullscreenMode=1
Version=5
AudioQualityLevel=0
LastConfirmedAudioQualityLevel=0
FrameRateLimit=0.000000
DesiredScreenWidth=1280
DesiredScreenHeight=720
LastUserConfirmedDesiredScreenWidth=1280
LastUserConfirmedDesiredScreenHeight=720
LastRecommendedScreenWidth=-1.000000
LastRecommendedScreenHeight=-1.000000
LastCPUBenchmarkResult=-1.000000
LastGPUBenchmarkResult=-1.000000
LastGPUBenchmarkMultiplier=1.000000
bUseHDRDisplayOutput=False
HDRDisplayOutputNits=1000

[ScalabilityGroups]
sg.ResolutionQuality=100.000000
sg.ViewDistanceQuality=3
sg.AntiAliasingQuality=3
sg.ShadowQuality=3
sg.PostProcessQuality=3
sg.TextureQuality=3
sg.EffectsQuality=3
sg.FoliageQuality=3
sg.ShadingQuality=3

[/Script/Engine.GameUserSettings]
bUseDesiredScreenHeight=False


EOF

echo "--------------------------------------------------"
echo ""
echo "Installation abgeschlossen..."
echo ""
echo "--------------------------------------------------"
###
echo "Überprüfe, ob die Ports unter Startup gesetzt wurden und ob die Ports unter Netzwerk gesehen oder erstellt werden müssen."
echo "Für dieses Spiel muss der Query-Port und der Beacon-Port angegeben werden."
echo "--------------------------------------------------"
###
echo ""
echo "Installation completed..."
echo ""
echo "--------------------------------------------------"
###

echo "Checking if the ports are set under Startup and if the ports need to be seen or created under network."
echo "For this game, the query port and the  beacon port must be specified."
echo "--------------------------------------------------"";s:5:"entry";s:9:"/bin/bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:23:57+00:00";s:10:"updated_at";s:25:"2023-08-27T17:26:00+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:14:{i:95;a:11:{s:2:"id";i:95;s:6:"egg_id";i:18;s:4:"name";s:28:"[REQUIRED] Server Query Port";s:11:"description";s:312:"This is the port that your clients will type in and use to connect to the lobby (not the game world). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended). This is also true for the Primary/Game Port!";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-28T21:05:03.000000Z";}i:96;a:11:{s:2:"id";i:96;s:6:"egg_id";i:18;s:4:"name";s:22:"[REQUIRED] Beacon Port";s:11:"description";s:343:"This port provides a lightweight way for clients to contact a server and interact with it without committing to a normal game connection (likely used for client administration). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended).";s:12:"env_variable";s:11:"BEACON_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-28T21:05:05.000000Z";}i:97;a:11:{s:2:"id";i:97;s:6:"egg_id";i:18;s:4:"name";s:17:"Automatic Updates";s:11:"description";s:98:"Quickly checks for any server updates on startup, and updates if necessary. (1 Enable | 0 Disable)";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:7:"boolean";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:98;a:11:{s:2:"id";i:98;s:6:"egg_id";i:18;s:4:"name";s:30:"[Repair] Validate Server Files";s:11:"description";s:237:"Leave empty (no value) for OFF or type "true" or "1" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.";s:12:"env_variable";s:8:"VALIDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"string|nullable";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:99;a:11:{s:2:"id";i:99;s:6:"egg_id";i:18;s:4:"name";s:17:"Autosave Interval";s:11:"description";s:304:"How often, in seconds, the server should generate a new autosave (ex. 300 = 5 min). Keep in mind that shorter times mean that while the server will save the game more often, it also means a potential drop in server performance. NOTE: This overrides any "FG.AutosaveInterval" commands made to the console!";s:12:"env_variable";s:17:"AUTOSAVE_INTERVAL";s:13:"default_value";s:3:"300";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:100;a:11:{s:2:"id";i:100;s:6:"egg_id";i:18;s:4:"name";s:28:"Number of Rotating Autosaves";s:11:"description";s:125:"Number of session auto-saves for the server to keep before the oldest save is deleted and the others are moved down the list.";s:12:"env_variable";s:13:"NUM_AUTOSAVES";s:13:"default_value";s:1:"3";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:101;a:11:{s:2:"id";i:101;s:6:"egg_id";i:18;s:4:"name";s:20:"Upload Crash Reports";s:11:"description";s:156:"Accepted values are "true" or "false". Determines if the server should upload any crash reports to the developer to help pinpoint issues for future patches.";s:12:"env_variable";s:19:"UPLOAD_CRASH_REPORT";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:102;a:11:{s:2:"id";i:102;s:6:"egg_id";i:18;s:4:"name";s:23:"Disable Seasonal Events";s:11:"description";s:107:"Accepted values are "true" or "false". Setting to "true" will disable any currently active seasonal events.";s:12:"env_variable";s:16:"DISABLE_SEASONAL";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:103;a:11:{s:2:"id";i:103;s:6:"egg_id";i:18;s:4:"name";s:11:"Max Players";s:11:"description";s:215:"[Requires server re-install to change default value!] The server and client are currently not optimized to support more than 4 players. However, you can override this value here at your own risk of poor performance.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:23:"required|integer| min:1";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-08-10T07:27:23.000000Z";}i:104;a:11:{s:2:"id";i:104;s:6:"egg_id";i:18;s:4:"name";s:44:"[Advanced] Client Initial Connection Timeout";s:11:"description";s:103:"Time in seconds to wait for a new client connection to be established before destroying the connection.";s:12:"env_variable";s:20:"INIT_CONNECT_TIMEOUT";s:13:"default_value";s:2:"30";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:105;a:11:{s:2:"id";i:105;s:6:"egg_id";i:18;s:4:"name";s:48:"[Advanced] Client Established Connection Timeout";s:11:"description";s:254:"Time in seconds to wait before considering an established client connection timed out. Typically shorter than the time to wait on an initial connection because this connection should already have been setup and any interruption should be trapped quicker.";s:12:"env_variable";s:15:"CONNECT_TIMEOUT";s:13:"default_value";s:2:"20";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:106;a:11:{s:2:"id";i:106;s:6:"egg_id";i:18;s:4:"name";s:26:"[Advanced] Network Quality";s:11:"description";s:200:"[0 = Low, 1 = Medium, 2 = High, 3 = Ultra] Sets the network configuration for the game server (shouldn't need to be changed). NOTE: This overrides any "FG.NetworkQuality" commands made to the console!";s:12:"env_variable";s:15:"NETWORK_QUALITY";s:13:"default_value";s:1:"3";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:28:"required|integer|between:0,3";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}i:107;a:11:{s:2:"id";i:107;s:6:"egg_id";i:18;s:4:"name";s:22:"[Advanced] Branch Name";s:11:"description";s:359:"[Accepted Values: "public", "experimental", or leave empty to use the primary branch of the server] Used to download or switch to a non-primary branch of the game server. "Automatic Updates" and "Validate Server Files" must be set to "1" to switch branches if the server is already installed. NOTE: Any non-primary branches may not be fully compatible/stable!";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:6:"public";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"string|nullable|in:public,experimental";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-28T20:57:35.000000Z";}i:108;a:11:{s:2:"id";i:108;s:6:"egg_id";i:18;s:4:"name";s:47:"[Advanced] Satisfactory Dedicated Server App ID";s:11:"description";s:75:"Steam App ID used for installation and updates. Rarely needs to be changed.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"1690800";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-07-11T15:23:57.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:23:57.000000Z";}}}i:19;a:15:{s:2:"id";i:19;s:4:"uuid";s:36:"1fa6d556-f073-4c84-b639-792380875a2d";s:4:"name";s:12:"Satisfactory";s:4:"nest";i:5;s:6:"author";s:21:"rehlmgaming@gmail.com";s:11:"description";s:217:"Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven!";s:12:"docker_image";s:30:"ghcr.io/parkervcp/games:source";s:13:"docker_images";a:1:{s:30:"ghcr.io/parkervcp/games:source";s:30:"ghcr.io/parkervcp/games:source";}s:6:"config";a:6:{s:5:"files";a:3:{s:45:"FactoryGame/Saved/Config/LinuxServer/Game.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:1:{s:10:"MaxPlayers";s:43:"MaxPlayers={{server.build.env.MAX_PLAYERS}}";}}s:47:"FactoryGame/Saved/Config/LinuxServer/Engine.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:4:{s:21:"mNumRotatingAutosaves";s:56:"mNumRotatingAutosaves={{server.build.env.NUM_AUTOSAVES}}";s:13:"bImplicitSend";s:54:"bImplicitSend={{server.build.env.UPLOAD_CRASH_REPORT}}";s:21:"InitialConnectTimeout";s:63:"InitialConnectTimeout={{server.build.env.INIT_CONNECT_TIMEOUT}}";s:17:"ConnectionTimeout";s:54:"ConnectionTimeout={{server.build.env.CONNECT_TIMEOUT}}";}}s:57:"FactoryGame/Saved/Config/LinuxServer/GameUserSettings.ini";a:2:{s:6:"parser";s:4:"file";s:4:"find";a:2:{s:12:"mFloatValues";s:78:"mFloatValues=(("FG.AutosaveInterval", {{server.build.env.AUTOSAVE_INTERVAL}}))";s:10:"mIntValues";s:72:"mIntValues=(("FG.NetworkQuality", {{server.build.env.NETWORK_QUALITY}}))";}}}s:7:"startup";a:1:{s:4:"done";s:21:"Engine Initialization";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:236:"./Engine/Binaries/Linux/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo "-DisableSeasonalEvents"; fi)";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3968:"#!/bin/bash

# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json
# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord
# Date: 2022/10/13
# License: MIT License

## Download and install SteamCMD
cd /tmp
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
mkdir -p /mnt/server/steamcmd
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
cd /mnt/server/steamcmd

# SteamCMD fails otherwise for some reason, even running as root.
chown -R root:root /mnt
export HOME=/mnt/server

# Install game server using SteamCMD
./steamcmd.sh +force_install_dir /mnt/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) validate +exit

# Set up 32 and 64 bit libraries
mkdir -p /mnt/server/.steam/sdk{32,64}
cp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so
cp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so

## Satisfactory setup
# Check for successful installation and make the core binary executable.
cd /mnt/server/Engine/Binaries/Linux
if [[ ! -f UE4Server-Linux-Shipping ]]; then
    echo -e "\n\nSteamCMD failed to install the Satisfactory Dedicated Server!"
    echo -e "\tTry reinstalling the server again.\n"
    exit 1
else
    chmod +x UE4Server-Linux-Shipping
fi

# Make Config directory and default .ini files (since they are not initially present before first server start)
mkdir -p /mnt/server/FactoryGame/Saved/Config/LinuxServer/ && cd "$_"
# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.
# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.
# When the patch to this limitation hits the production branch, this will be updated.
rm -f Engine.ini Game.ini GameUserSettings.ini

echo -e '\nCreating default "Engine.ini" configuration file...'
cat > Engine.ini << EOF
[/Script/FactoryGame.FGSaveSession]
mNumRotatingAutosaves=${NUM_AUTOSAVES}

[CrashReportClient]
bImplicitSend=${UPLOAD_CRASH_REPORT}

[/Script/OnlineSubsystemUtils.IpNetDriver]
InitialConnectTimeout=${INIT_CONNECT_TIMEOUT}
ConnectionTimeout=${CONNECT_TIMEOUT}
EOF

echo -e 'Creating default "Game.ini" configuration file...'
cat > Game.ini << EOF
[/Script/Engine.GameSession]
MaxPlayers=${MAX_PLAYERS}
EOF

echo -e 'Creating default "GameUserSettings.ini" configuration file...'
cat > GameUserSettings.ini << EOF
[/Script/FactoryGame.FGGameUserSettings]
mIntValues=(("FG.NetworkQuality", ${NETWORK_QUALITY}))
mFloatValues=(("FG.AutosaveInterval", ${AUTOSAVE_INTERVAL}))
mAutoDetectSettingsHandled=False
mPrimaryLanguage=
CurrentFGGameUserSettingsVersion=0
bUseVSync=False
bUseDynamicResolution=False
ResolutionSizeX=1280
ResolutionSizeY=720
LastUserConfirmedResolutionSizeX=1280
LastUserConfirmedResolutionSizeY=720
WindowPosX=-1
WindowPosY=-1
FullscreenMode=1
LastConfirmedFullscreenMode=1
PreferredFullscreenMode=1
Version=5
AudioQualityLevel=0
LastConfirmedAudioQualityLevel=0
FrameRateLimit=0.000000
DesiredScreenWidth=1280
DesiredScreenHeight=720
LastUserConfirmedDesiredScreenWidth=1280
LastUserConfirmedDesiredScreenHeight=720
LastRecommendedScreenWidth=-1.000000
LastRecommendedScreenHeight=-1.000000
LastCPUBenchmarkResult=-1.000000
LastGPUBenchmarkResult=-1.000000
LastGPUBenchmarkMultiplier=1.000000
bUseHDRDisplayOutput=False
HDRDisplayOutputNits=1000

[ScalabilityGroups]
sg.ResolutionQuality=100.000000
sg.ViewDistanceQuality=3
sg.AntiAliasingQuality=3
sg.ShadowQuality=3
sg.PostProcessQuality=3
sg.TextureQuality=3
sg.EffectsQuality=3
sg.FoliageQuality=3
sg.ShadingQuality=3

[/Script/Engine.GameUserSettings]
bUseDesiredScreenHeight=False


EOF

echo -e "\nSatisfactory Dedicated Server successfully installed!\n"";s:5:"entry";s:9:"/bin/bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:24:16+00:00";s:10:"updated_at";s:25:"2023-07-11T15:24:16+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:14:{i:109;a:11:{s:2:"id";i:109;s:6:"egg_id";i:19;s:4:"name";s:28:"[REQUIRED] Server Query Port";s:11:"description";s:312:"This is the port that your clients will type in and use to connect to the lobby (not the game world). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended). This is also true for the Primary/Game Port!";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"15777";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1024,65536";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:110;a:11:{s:2:"id";i:110;s:6:"egg_id";i:19;s:4:"name";s:22:"[REQUIRED] Beacon Port";s:11:"description";s:343:"This port provides a lightweight way for clients to contact a server and interact with it without committing to a normal game connection (likely used for client administration). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended).";s:12:"env_variable";s:11:"BEACON_PORT";s:13:"default_value";s:5:"15000";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1024,65536";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:111;a:11:{s:2:"id";i:111;s:6:"egg_id";i:19;s:4:"name";s:17:"Automatic Updates";s:11:"description";s:98:"Quickly checks for any server updates on startup, and updates if necessary. (1 Enable | 0 Disable)";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"boolean|required";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:112;a:11:{s:2:"id";i:112;s:6:"egg_id";i:19;s:4:"name";s:30:"[Repair] Validate Server Files";s:11:"description";s:237:"Leave empty (no value) for OFF or type "true" or "1" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.";s:12:"env_variable";s:8:"VALIDATE";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"string|nullable";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:113;a:11:{s:2:"id";i:113;s:6:"egg_id";i:19;s:4:"name";s:17:"Autosave Interval";s:11:"description";s:304:"How often, in seconds, the server should generate a new autosave (ex. 300 = 5 min). Keep in mind that shorter times mean that while the server will save the game more often, it also means a potential drop in server performance. NOTE: This overrides any "FG.AutosaveInterval" commands made to the console!";s:12:"env_variable";s:17:"AUTOSAVE_INTERVAL";s:13:"default_value";s:3:"300";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:114;a:11:{s:2:"id";i:114;s:6:"egg_id";i:19;s:4:"name";s:28:"Number of Rotating Autosaves";s:11:"description";s:125:"Number of session auto-saves for the server to keep before the oldest save is deleted and the others are moved down the list.";s:12:"env_variable";s:13:"NUM_AUTOSAVES";s:13:"default_value";s:1:"3";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:115;a:11:{s:2:"id";i:115;s:6:"egg_id";i:19;s:4:"name";s:20:"Upload Crash Reports";s:11:"description";s:156:"Accepted values are "true" or "false". Determines if the server should upload any crash reports to the developer to help pinpoint issues for future patches.";s:12:"env_variable";s:19:"UPLOAD_CRASH_REPORT";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:116;a:11:{s:2:"id";i:116;s:6:"egg_id";i:19;s:4:"name";s:23:"Disable Seasonal Events";s:11:"description";s:107:"Accepted values are "true" or "false". Setting to "true" will disable any currently active seasonal events.";s:12:"env_variable";s:16:"DISABLE_SEASONAL";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:117;a:11:{s:2:"id";i:117;s:6:"egg_id";i:19;s:4:"name";s:26:"[Experimental] Max Players";s:11:"description";s:215:"[Requires server re-install to change default value!] The server and client are currently not optimized to support more than 4 players. However, you can override this value here at your own risk of poor performance.";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|integer|between:1,10";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-08-10T07:22:16.000000Z";}i:118;a:11:{s:2:"id";i:118;s:6:"egg_id";i:19;s:4:"name";s:44:"[Advanced] Client Initial Connection Timeout";s:11:"description";s:103:"Time in seconds to wait for a new client connection to be established before destroying the connection.";s:12:"env_variable";s:20:"INIT_CONNECT_TIMEOUT";s:13:"default_value";s:2:"30";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:119;a:11:{s:2:"id";i:119;s:6:"egg_id";i:19;s:4:"name";s:48:"[Advanced] Client Established Connection Timeout";s:11:"description";s:254:"Time in seconds to wait before considering an established client connection timed out. Typically shorter than the time to wait on an initial connection because this connection should already have been setup and any interruption should be trapped quicker.";s:12:"env_variable";s:15:"CONNECT_TIMEOUT";s:13:"default_value";s:2:"20";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|numeric|min:1";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:120;a:11:{s:2:"id";i:120;s:6:"egg_id";i:19;s:4:"name";s:26:"[Advanced] Network Quality";s:11:"description";s:200:"[0 = Low, 1 = Medium, 2 = High, 3 = Ultra] Sets the network configuration for the game server (shouldn't need to be changed). NOTE: This overrides any "FG.NetworkQuality" commands made to the console!";s:12:"env_variable";s:15:"NETWORK_QUALITY";s:13:"default_value";s:1:"3";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:28:"required|integer|between:0,3";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:121;a:11:{s:2:"id";i:121;s:6:"egg_id";i:19;s:4:"name";s:22:"[Advanced] Branch Name";s:11:"description";s:359:"[Accepted Values: "public", "experimental", or leave empty to use the primary branch of the server] Used to download or switch to a non-primary branch of the game server. "Automatic Updates" and "Validate Server Files" must be set to "1" to switch branches if the server is already installed. NOTE: Any non-primary branches may not be fully compatible/stable!";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:38:"string|nullable|in:public,experimental";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}i:122;a:11:{s:2:"id";i:122;s:6:"egg_id";i:19;s:4:"name";s:47:"[Advanced] Satisfactory Dedicated Server App ID";s:11:"description";s:75:"Steam App ID used for installation and updates. Rarely needs to be changed.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"1690800";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-07-11T15:24:16.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:16.000000Z";}}}i:20;a:15:{s:2:"id";i:20;s:4:"uuid";s:36:"b26110d0-c92b-41bd-9cec-2970660b4369";s:4:"name";s:18:"Sons Of The Forest";s:4:"nest";i:5;s:6:"author";s:14:"info@goover.de";s:11:"description";s:263:"Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.";s:12:"docker_image";s:36:"ghcr.io/parkervcp/yolks:wine_staging";s:13:"docker_images";a:1:{s:36:"ghcr.io/parkervcp/yolks:wine_staging";s:36:"ghcr.io/parkervcp/yolks:wine_staging";}s:6:"config";a:6:{s:5:"files";a:1:{s:32:"serverconfig/dedicatedserver.cfg";a:2:{s:6:"parser";s:4:"json";s:4:"find";a:1:{s:10:"ServerName";s:16:"{{env.SRV_NAME}}";}}}s:7:"startup";a:1:{s:4:"done";s:19:"ServerStart Success";}s:4:"stop";s:3:"^^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:461:"wine ./SonsOfTheForestDS.exe -userdatapath "/home/container/serverconfig" -dedicatedserver.IpAddress "0.0.0.0" -dedicatedserver.GamePort "{{SERVER_PORT}}" -dedicatedserver.QueryPort "{{QUERY_PORT}}" -dedicatedserver.BlobSyncPort "{{BLOBSYNC_PORT}}" -dedicatedserver.MaxPlayers "{{MAX_PLAYERS}}" -dedicatedserver.Password "{{SRV_PW}}" -dedicatedserver.GameMode "{{GAME_MODE}}" -dedicatedserver.LogFilesEnabled "true" -dedicatedserver.TimestampLogFilenames "true"";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:4197:"#!/bin/bash
# steamcmd Base Installation Script
#
clear
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}Sons of the Forrest Installscript${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}download and install steamcmd. please wait...${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

## 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
echo -e "${GREEN}..done..${NC}"

## install game using steamcmd
echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}install game using steamcmd. please wait...${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"
./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
echo -e "${GREEN}..done..${NC}"

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

## add below your custom commands if needed

mkdir -p /mnt/server/serverconfig
FILE=$HOME/serverconfig/dedicatedserver.cfg
if [ -f "$FILE" ]; then
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${GREEN}dedicatedserver.cfg found.${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
else  
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${RED}No dedicatedserver.cfg found. Downloading default...${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
  cd $HOME/serverconfig/
  curl -sSL -o dedicatedserver.cfg https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg
fi
echo -e "${GREEN}..done..${NC}"

FILE=$HOME/serverconfig/ownerswhitelist.txt
if [ -f "$FILE" ]; then
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${GREEN}ownerswhitelist.txt found.${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
else  
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${RED}No ownerswhitelist.txt found. Downloading default...${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
  cd $HOME/serverconfig/
  curl -sSL -o ownerswhitelist.txt https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt
fi
echo -e "${GREEN}..done..${NC}"

## install end
echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${GREEN}Installation completed...${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:24:25+00:00";s:10:"updated_at";s:25:"2023-07-26T10:48:14+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:13:{i:123;a:11:{s:2:"id";i:123;s:6:"egg_id";i:20;s:4:"name";s:10:"Query Port";s:11:"description";s:45:"'pack.port_request', ['port' => 'Query Port']";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:5:"27016";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:35:31.000000Z";}i:124;a:11:{s:2:"id";i:124;s:6:"egg_id";i:20;s:4:"name";s:13:"BlobSync Port";s:11:"description";s:48:"'pack.port_request', ['port' => 'BlobSync Port']";s:12:"env_variable";s:13:"BLOBSYNC_PORT";s:13:"default_value";s:4:"9700";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:35:36.000000Z";}i:125;a:11:{s:2:"id";i:125;s:6:"egg_id";i:20;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:8:"SRV_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:60";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:41:29.000000Z";}i:126;a:11:{s:2:"id";i:126;s:6:"egg_id";i:20;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:35:52.000000Z";}i:127;a:11:{s:2:"id";i:127;s:6:"egg_id";i:20;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:6:"SRV_PW";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:36:46.000000Z";}i:128;a:11:{s:2:"id";i:128;s:6:"egg_id";i:20;s:4:"name";s:8:"Gamemode";s:11:"description";s:18:"pack.sotf_gamemode";s:12:"env_variable";s:9:"GAME_MODE";s:13:"default_value";s:6:"normal";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:50:"string|in:normal,hard,hardsurvival,peaceful,custom";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:39:22.000000Z";}i:129;a:11:{s:2:"id";i:129;s:6:"egg_id";i:20;s:4:"name";s:11:"Auto Update";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-08-21T13:39:38.000000Z";}i:130;a:11:{s:2:"id";i:130;s:6:"egg_id";i:20;s:4:"name";s:11:"SRCDS_APPID";s:11:"description";s:0:"";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"2465200";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}i:131;a:11:{s:2:"id";i:131;s:6:"egg_id";i:20;s:4:"name";s:9:"WINEDEBUG";s:11:"description";s:0:"";s:12:"env_variable";s:9:"WINEDEBUG";s:13:"default_value";s:4:"-all";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}i:132;a:11:{s:2:"id";i:132;s:6:"egg_id";i:20;s:4:"name";s:8:"WINEARCH";s:11:"description";s:0:"";s:12:"env_variable";s:8:"WINEARCH";s:13:"default_value";s:5:"win64";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}i:133;a:11:{s:2:"id";i:133;s:6:"egg_id";i:20;s:4:"name";s:8:"WINEPATH";s:11:"description";s:0:"";s:12:"env_variable";s:8:"WINEPATH";s:13:"default_value";s:15:"/home/container";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}i:134;a:11:{s:2:"id";i:134;s:6:"egg_id";i:20;s:4:"name";s:14:"WINETRICKS_RUN";s:11:"description";s:0:"";s:12:"env_variable";s:14:"WINETRICKS_RUN";s:13:"default_value";s:14:"mono vcrun2019";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}i:135;a:11:{s:2:"id";i:135;s:6:"egg_id";i:20;s:4:"name";s:15:"WINDOWS_INSTALL";s:11:"description";s:0:"";s:12:"env_variable";s:15:"WINDOWS_INSTALL";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-07-11T15:24:25.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:24:25.000000Z";}}}i:23;a:15:{s:2:"id";i:23;s:4:"uuid";s:36:"9147ab47-4988-4ebe-9b87-bb3a1b78e445";s:4:"name";s:11:"Core Keeper";s:4:"nest";i:5;s:6:"author";s:25:"karsten@fiedleronline.net";s:11:"description";s:371:"Core Keeper is a survival sandbox game for single or multiplayers.

--- Drawn towards a mysterious relic, you are an explorer who awakens in an ancient cavern of creatures, resources and trinkets. Trapped deep underground will your survival skills be up to the task? Mine relics and resources to build your base, craft new equipment, survive, and power up the Core. ---";s:12:"docker_image";s:33:"ghcr.io/parkervcp/steamcmd:debian";s:13:"docker_images";a:1:{s:33:"ghcr.io/parkervcp/steamcmd:debian";s:33:"ghcr.io/parkervcp/steamcmd:debian";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:15:"Started session";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:672:"export DISPLAY=:0; rm ./GameID.txt ./CoreKeeperServerLog.txt; touch ./CoreKeeperServerLog.txt; xvfb-run -s "-screen 0 {{DISPLAY_WIDTH}}x{{DISPLAY_HEIGHT}}x{{DISPLAY_DEPTH}} -ac -nolisten tcp -nolisten unix" ./CoreKeeperServer -batchmode -logfile CoreKeeperServerLog.txt -world {{WORLD_INDEX}} -worldname "{{WORLD_NAME}}" -worldseed {{WORLD_SEED}} $([[ "{{GAME_ID}}" != "" ]] && echo -n " -gameid {{GAME_ID}}") -maxplayers {{MAX_PLAYERS}} -worldmode {{WORLD_MODE}} -port {{SERVER_PORT}} & CKPID=$!; tail -f CoreKeeperServerLog.txt | grep -e '^\[userid:[0-9]*\] player' -e '^[^\[]' & LOGPID=$!; trap "kill ${CKPID}; wait ${CKPID}; kill ${LOGPID}; wait ${LOGPID}" 15; wait $!";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2879:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} 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

## add below your custom commands if needed

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-07-11T15:25:01+00:00";s:10:"updated_at";s:25:"2023-07-11T15:25:01+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:11:{i:159;a:11:{s:2:"id";i:159;s:6:"egg_id";i:23;s:4:"name";s:11:"World Index";s:11:"description";s:37:"Which world index to use. Default: 0.";s:12:"env_variable";s:11:"WORLD_INDEX";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:20:24.000000Z";}i:160;a:11:{s:2:"id";i:160;s:6:"egg_id";i:23;s:4:"name";s:10:"Servername";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:10:"WORLD_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|max:100|min:3";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:41:33.000000Z";}i:161;a:11:{s:2:"id";i:161;s:6:"egg_id";i:23;s:4:"name";s:10:"World Seed";s:11:"description";s:12:"pack.ck_seed";s:12:"env_variable";s:10:"WORLD_SEED";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:22:11.000000Z";}i:162;a:11:{s:2:"id";i:162;s:6:"egg_id";i:23;s:4:"name";s:7:"Game ID";s:11:"description";s:14:"pack.ck_gameid";s:12:"env_variable";s:7:"GAME_ID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|min:28";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:22:22.000000Z";}i:163;a:11:{s:2:"id";i:163;s:6:"egg_id";i:23;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:30:"required|integer|min:1|max:100";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:22:43.000000Z";}i:164;a:11:{s:2:"id";i:164;s:6:"egg_id";i:23;s:4:"name";s:10:"World Mode";s:11:"description";s:16:"pack.ck_gamemode";s:12:"env_variable";s:10:"WORLD_MODE";s:13:"default_value";s:1:"0";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:22:57.000000Z";}i:165;a:11:{s:2:"id";i:165;s:6:"egg_id";i:23;s:4:"name";s:12:"Steam App ID";s:11:"description";s:44:"Steam App ID of Core Keeper Dedicated Server";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"1963720";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:26:"required|string|in:1963720";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:25:01.000000Z";}i:166;a:11:{s:2:"id";i:166;s:6:"egg_id";i:23;s:4:"name";s:11:"Auto Update";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-08-24T18:23:13.000000Z";}i:167;a:11:{s:2:"id";i:167;s:6:"egg_id";i:23;s:4:"name";s:13:"DISPLAY_WIDTH";s:11:"description";s:29:"Virtual display width. Fix:1.";s:12:"env_variable";s:13:"DISPLAY_WIDTH";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:25:01.000000Z";}i:168;a:11:{s:2:"id";i:168;s:6:"egg_id";i:23;s:4:"name";s:14:"DISPLAY_HEIGHT";s:11:"description";s:30:"Virtual display height. Fix:1.";s:12:"env_variable";s:14:"DISPLAY_HEIGHT";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:25:01.000000Z";}i:169;a:11:{s:2:"id";i:169;s:6:"egg_id";i:23;s:4:"name";s:13:"DISPLAY_DEPTH";s:11:"description";s:37:"Virtual display color depth. Fix: 24.";s:12:"env_variable";s:13:"DISPLAY_DEPTH";s:13:"default_value";s:2:"24";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-07-11T15:25:01.000000Z";s:10:"updated_at";s:27:"2023-07-11T15:25:01.000000Z";}}}i:27;a:15:{s:2:"id";i:27;s:4:"uuid";s:36:"d18c4d80-d8da-4c9e-8e57-be908bd2d589";s:4:"name";s:8:"V Rising";s:4:"nest";i:5;s:6:"author";s:21:"rehlmgaming@gmail.com";s:11:"description";s:253:"Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.";s:12:"docker_image";s:36:"ghcr.io/parkervcp/yolks:wine_staging";s:13:"docker_images";a:1:{s:36:"ghcr.io/parkervcp/yolks:wine_staging";s:36:"ghcr.io/parkervcp/yolks:wine_staging";}s:6:"config";a:6:{s:5:"files";a:1:{s:42:"save-data/Settings/ServerHostSettings.json";a:2:{s:6:"parser";s:4:"json";s:4:"find";a:22:{s:4:"Name";s:19:"{{env.SERVER_NAME}}";s:11:"Description";s:19:"{{env.DESCRIPTION}}";s:4:"Port";s:16:"{{default.port}}";s:9:"QueryPort";s:18:"{{env.QUERY_PORT}}";s:17:"MaxConnectedUsers";s:19:"{{env.MAX_PLAYERS}}";s:18:"MaxConnectedAdmins";s:18:"{{env.MAX_ADMINS}}";s:9:"ServerFps";s:11:"{{env.FPS}}";s:8:"SaveName";s:17:"{{env.SAVE_NAME}}";s:8:"Password";s:23:"{{env.SERVER_PASSWORD}}";s:6:"Secure";s:21:"{{env.SERVER_SECURE}}";s:11:"ListOnSteam";s:18:"{{env.LIST_STEAM}}";s:9:"ListOnEOS";s:16:"{{env.LIST_EOS}}";s:13:"AutoSaveCount";s:18:"{{env.SAVE_COUNT}}";s:16:"AutoSaveInterval";s:21:"{{env.SAVE_INTERVAL}}";s:17:"CompressSaveFiles";s:22:"{{env.COMPRESS_SAVES}}";s:18:"GameSettingsPreset";s:28:"{{env.GAME_SETTINGS_PRESET}}";s:20:"AdminOnlyDebugEvents";s:31:"{{env.ADMIN_ONLY_DEBUG_EVENTS}}";s:18:"DisableDebugEvents";s:20:"{{env.DEBUG_EVENTS}}";s:11:"API.Enabled";s:18:"{{env.ENABLE_API}}";s:12:"Rcon.Enabled";s:12:"{{env.RCON}}";s:13:"Rcon.Password";s:17:"{{env.RCON_PASS}}";s:9:"Rcon.Port";s:17:"{{env.RCON_PORT}}";}}}s:7:"startup";a:1:{s:4:"done";s:25:"Loaded ServerGameSettings";}s:4:"stop";s:3:"^^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:71:"wine ./VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:1845:"#!/bin/bash

## File: Pterodactyl V Rising Egg - egg-v-rising.json
## Authors: David Wolfe (Red-Thirten), Kapatheus
## Date: 2023/05/18
## License: MIT License
## Image to install with is 'ghcr.io/pterodactyl/installers:debian'

# Install required packages.
apt -y update && apt -y --no-install-recommends install dos2unix

# Download and install SteamCMD
export HOME=/mnt/server
cd /tmp
mkdir -p $HOME/steamcmd $HOME/steamapps
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C $HOME/steamcmd
cd $HOME/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

# Install game server using SteamCMD
./steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit

# Set up 32 and 64 bit libraries
mkdir -p $HOME/.steam/sdk{32,64}
cp -v linux32/steamclient.so $HOME/.steam/sdk32/steamclient.so
cp -v linux64/steamclient.so $HOME/.steam/sdk64/steamclient.so

## V Rising Setup
mkdir -p $HOME/save-data/Settings
# Check for successful installation.
cd $HOME/VRisingServer_Data/StreamingAssets/Settings
if [[ -f ServerHostSettings.json ]]; then
    # Copies default ServerHostSettings file to save-data directory.
    # Also converts the contents to use Unix newlines so Ptero's JSON parser does not fail.
    dos2unix -n ServerHostSettings.json $HOME/save-data/Settings/ServerHostSettings.json
else
    echo -e "\n\nSteamCMD failed to install the V Rising Dedicated Server!"
    echo -e "\tTry reinstalling the server again.\n"
    exit 1
fi

echo -e "\nV Rising Dedicated Server successfully installed!\n"";s:5:"entry";s:9:"/bin/bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-08-24T19:49:53+00:00";s:10:"updated_at";s:25:"2023-08-29T04:44:09+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:28:{i:206;a:11:{s:2:"id";i:206;s:6:"egg_id";i:27;s:4:"name";s:10:"Query Port";s:11:"description";s:45:"'pack.port_request', ['port' => 'Query Port']";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T21:11:03.000000Z";}i:207;a:11:{s:2:"id";i:207;s:6:"egg_id";i:27;s:4:"name";s:12:"Auto Updates";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:7:"boolean";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:50:57.000000Z";}i:208;a:11:{s:2:"id";i:208;s:6:"egg_id";i:27;s:4:"name";s:34:"pack.vr_game_settings_preset_title";s:11:"description";s:28:"pack.vr_game_settings_preset";s:12:"env_variable";s:20:"GAME_SETTINGS_PRESET";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:204:"nullable|string|in:,DuoPvP,HardcorePvP,Level30PvE,Level30PvP,Level50PvE,Level50PvP,Level70PvE,Level70PvP,SoloPvP,StandardPvE_Easy,StandardPvE_Hard,StandardPvE,StandardPvP_Easy,StandardPvP_Hard,StandardPVP";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:34:45.000000Z";}i:209;a:11:{s:2:"id";i:209;s:6:"egg_id";i:27;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:11:"SERVER_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:51:10.000000Z";}i:210;a:11:{s:2:"id";i:210;s:6:"egg_id";i:27;s:4:"name";s:25:"pack.vr_description_title";s:11:"description";s:19:"pack.vr_description";s:12:"env_variable";s:11:"DESCRIPTION";s:13:"default_value";s:40:"V Rising Server powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:51:31.000000Z";}i:211;a:11:{s:2:"id";i:211;s:6:"egg_id";i:27;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"40";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:51:58.000000Z";}i:212;a:11:{s:2:"id";i:212;s:6:"egg_id";i:27;s:4:"name";s:20:"Max Connected Admins";s:11:"description";s:70:"Max number of admins to allow connection even when the server is full.";s:12:"env_variable";s:10:"MAX_ADMINS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:52:19.000000Z";}i:213;a:11:{s:2:"id";i:213;s:6:"egg_id";i:27;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:52:42.000000Z";}i:214;a:11:{s:2:"id";i:214;s:6:"egg_id";i:27;s:4:"name";s:9:"Save Name";s:11:"description";s:17:"pack.vr_save_name";s:12:"env_variable";s:9:"SAVE_NAME";s:13:"default_value";s:6:"world1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-29T08:39:34.000000Z";}i:215;a:11:{s:2:"id";i:215;s:6:"egg_id";i:27;s:4:"name";s:15:"Auto Save Count";s:11:"description";s:28:"Number of autosaves to keep.";s:12:"env_variable";s:10:"SAVE_COUNT";s:13:"default_value";s:2:"10";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:0";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:44:07.000000Z";}i:216;a:11:{s:2:"id";i:216;s:6:"egg_id";i:27;s:4:"name";s:18:"Auto Save Interval";s:11:"description";s:42:"Interval in seconds between each autosave.";s:12:"env_variable";s:13:"SAVE_INTERVAL";s:13:"default_value";s:3:"600";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:44:17.000000Z";}i:217;a:11:{s:2:"id";i:217;s:6:"egg_id";i:27;s:4:"name";s:5:"Steam";s:11:"description";s:45:"'pack.dist_plat_request', ['dist' => 'Steam']";s:12:"env_variable";s:10:"LIST_STEAM";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:50:36.000000Z";}i:218;a:11:{s:2:"id";i:218;s:6:"egg_id";i:27;s:4:"name";s:4:"Epic";s:11:"description";s:44:"'pack.dist_plat_request', ['dist' => 'Epic']";s:12:"env_variable";s:8:"LIST_EOS";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:50:42.000000Z";}i:219;a:11:{s:2:"id";i:219;s:6:"egg_id";i:27;s:4:"name";s:30:"[Repair] Validate Server Files";s:11:"description";s:237:"Leave empty (no value) for OFF or type "true" or "1" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.";s:12:"env_variable";s:8:"VALIDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"boolean|nullable";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:00:01.000000Z";}i:220;a:11:{s:2:"id";i:220;s:6:"egg_id";i:27;s:4:"name";s:21:"[Advanced] Server FPS";s:11:"description";s:45:"How often the server refreshes. (Default: 30)";s:12:"env_variable";s:3:"FPS";s:13:"default_value";s:2:"30";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|integer|min:1";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:54:13.000000Z";}i:221;a:11:{s:2:"id";i:221;s:6:"egg_id";i:27;s:4:"name";s:30:"[Advanced] Compress Save Files";s:11:"description";s:60:"Set to true to compress world save files, else set to false.";s:12:"env_variable";s:14:"COMPRESS_SAVES";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:54:24.000000Z";}i:222;a:11:{s:2:"id";i:222;s:6:"egg_id";i:27;s:4:"name";s:21:"[Advanced] Enable API";s:11:"description";s:87:"Set to true to allow responses to public API requests to the server, else set to false.";s:12:"env_variable";s:10:"ENABLE_API";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:59:44.000000Z";}i:223;a:11:{s:2:"id";i:223;s:6:"egg_id";i:27;s:4:"name";s:22:"[Advanced] Enable RCON";s:11:"description";s:141:"See the following link for info on how to connect and use RCON: https://github.com/StunlockStudios/vrising-dedicated-server-instructions#rcon";s:12:"env_variable";s:4:"RCON";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:01:02.000000Z";}i:224;a:11:{s:2:"id";i:224;s:6:"egg_id";i:27;s:4:"name";s:24:"[Advanced] RCON Password";s:11:"description";s:54:"Password required to connect to RCON if it is enabled.";s:12:"env_variable";s:9:"RCON_PASS";s:13:"default_value";s:19:"buf78fs67fat8gf7SGf";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T20:01:18.000000Z";}i:225;a:11:{s:2:"id";i:225;s:6:"egg_id";i:27;s:4:"name";s:9:"RCON Port";s:11:"description";s:44:"'pack.port_request', ['port' => 'RCON Port']";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T21:11:12.000000Z";}i:226;a:11:{s:2:"id";i:226;s:6:"egg_id";i:27;s:4:"name";s:24:"[Advanced] Secure Server";s:11:"description";s:15:"(true or false)";s:12:"env_variable";s:13:"SERVER_SECURE";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:59:09.000000Z";}i:227;a:11:{s:2:"id";i:227;s:6:"egg_id";i:27;s:4:"name";s:34:"[Advanced] Admin Only Debug Events";s:11:"description";s:15:"(true or false)";s:12:"env_variable";s:23:"ADMIN_ONLY_DEBUG_EVENTS";s:13:"default_value";s:4:"true";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:56:55.000000Z";}i:228;a:11:{s:2:"id";i:228;s:6:"egg_id";i:27;s:4:"name";s:31:"[Advanced] Disable Debug Events";s:11:"description";s:15:"(true or false)";s:12:"env_variable";s:12:"DEBUG_EVENTS";s:13:"default_value";s:5:"false";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:29:"required|string|in:true,false";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:54:38.000000Z";}i:229;a:11:{s:2:"id";i:229;s:6:"egg_id";i:27;s:4:"name";s:43:"[Advanced] V Rising Dedicated Server App ID";s:11:"description";s:62:"Used for installation and updates. Rarely needs to be changed.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"1829350";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:49:53.000000Z";}i:230;a:11:{s:2:"id";i:230;s:6:"egg_id";i:27;s:4:"name";s:29:"[Advanced] Use Windows Branch";s:11:"description";s:162:"Tells the installer/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.";s:12:"env_variable";s:15:"WINDOWS_INSTALL";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:20:"required|string|in:1";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:49:53.000000Z";}i:231;a:11:{s:2:"id";i:231;s:6:"egg_id";i:27;s:4:"name";s:18:"[SYSTEM] WINEDEBUG";s:11:"description";s:65:"Used to suppress WINE FIXME messages. Rarely needs to be changed.";s:12:"env_variable";s:9:"WINEDEBUG";s:13:"default_value";s:4:"-all";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:49:53.000000Z";}i:232;a:11:{s:2:"id";i:232;s:6:"egg_id";i:27;s:4:"name";s:17:"[SYSTEM] WINEARCH";s:11:"description";s:42:"Used for compatibility. Cannot be changed.";s:12:"env_variable";s:8:"WINEARCH";s:13:"default_value";s:5:"win64";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:24:"required|string|in:win64";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:49:53.000000Z";}i:233;a:11:{s:2:"id";i:233;s:6:"egg_id";i:27;s:4:"name";s:17:"[SYSTEM] WINEPATH";s:11:"description";s:42:"Used for compatibility. Cannot be changed.";s:12:"env_variable";s:8:"WINEPATH";s:13:"default_value";s:15:"/home/container";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:34:"required|string|in:/home/container";s:10:"created_at";s:27:"2023-08-24T19:49:53.000000Z";s:10:"updated_at";s:27:"2023-08-24T19:49:53.000000Z";}}}i:28;a:15:{s:2:"id";i:28;s:4:"uuid";s:36:"a24b24aa-5769-4fa7-b702-b2df98f5e92e";s:4:"name";s:6:"Icarus";s:4:"nest";i:5;s:6:"author";s:18:"bolverblitz@ebg.pw";s:11:"description";N;s:12:"docker_image";s:36:"ghcr.io/parkervcp/yolks:wine_staging";s:13:"docker_images";a:1:{s:12:"Wine Staging";s:36:"ghcr.io/parkervcp/yolks:wine_staging";}s:6:"config";a:6:{s:5:"files";a:2:{s:52:"Icarus/Saved/Config/WindowsServer/ServerSettings.ini";a:3:{s:6:"parser";s:4:"file";s:4:"find";a:3:{s:12:"JoinPassword";s:36:"JoinPassword={{env.SERVER_PASSWORD}}";s:13:"AdminPassword";s:36:"AdminPassword={{env.ADMIN_PASSWORD}}";s:10:"MaxPlayers";s:30:"MaxPlayers={{env.MAX_PLAYERS}}";}s:10:"setDefault";a:4:{s:6:"prefix";s:40:"[/Script/Icarus.DedicatedServerSettings]";s:12:"JoinPassword";s:44:"JoinPassword={{env.SERVER_PASSWORD_DEFAULT}}";s:13:"AdminPassword";s:44:"AdminPassword={{env.ADMIN_PASSWORD_DEFAULT}}";s:10:"MaxPlayers";s:38:"MaxPlayers={{env.MAX_PLAYERS_DEFAULT}}";}}s:38:"Icarus/Saved/Config/ServerSettings.ini";a:3:{s:6:"parser";s:4:"file";s:4:"find";a:3:{s:12:"JoinPassword";s:36:"JoinPassword={{env.SERVER_PASSWORD}}";s:13:"AdminPassword";s:36:"AdminPassword={{env.ADMIN_PASSWORD}}";s:10:"MaxPlayers";s:30:"MaxPlayers={{env.MAX_PLAYERS}}";}s:10:"setDefault";a:4:{s:6:"prefix";s:40:"[/Script/Icarus.DedicatedServerSettings]";s:12:"JoinPassword";s:44:"JoinPassword={{env.SERVER_PASSWORD_DEFAULT}}";s:13:"AdminPassword";s:44:"AdminPassword={{env.ADMIN_PASSWORD_DEFAULT}}";s:10:"MaxPlayers";s:38:"MaxPlayers={{env.MAX_PLAYERS_DEFAULT}}";}}}s:7:"startup";a:1:{s:4:"done";s:35:"(Engine Initialization) Total time:";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:151:"wine64 ./Icarus/Binaries/Win64/IcarusServer-Win64-Shipping.exe -Log -SteamServerName="${SERVER_NAME}" -PORT="${SERVER_PORT}" -QueryPort="${QUERY_PORT}"";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2162:"#!/bin/bash

## License: MIT License
## Image to install with is 'ghcr.io/parkervcp/installers:debian'

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} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} 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

FILE=/mnt/server/Icarus/Saved/Config/ServerSettings.ini
if [ -f "$FILE" ]; then
    echo "Config already exist skipping"
else 
    echo "Config does not yet exist, making one"
    mkdir -p /mnt/server/Icarus/Saved/Config/WindowsServer
    cd /mnt/server/Icarus/Saved/Config/
    curl -sSL -o ServerSettings.ini https://raw.githubusercontent.com/RocketWerkz/IcarusDedicatedServer/main/ServerSettings.ini
    cd /mnt/server/Icarus/Saved/Config/WindowsServer
    curl -sSL -o ServerSettings.ini https://raw.githubusercontent.com/RocketWerkz/IcarusDedicatedServer/main/ServerSettings.ini
fi

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:9:"/bin/bash";s:9:"container";s:37:"ghcr.io/pterodactyl/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-08-27T09:56:41+00:00";s:10:"updated_at";s:25:"2023-08-28T09:55:25+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:12:{i:234;a:11:{s:2:"id";i:234;s:6:"egg_id";i:28;s:4:"name";s:10:"Query Port";s:11:"description";s:44:"'pack.port_request', ['port' => 'QueryPort']";s:12:"env_variable";s:10:"QUERY_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:35:"required|integer|between:1024,65536";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:57:21.000000Z";}i:235;a:11:{s:2:"id";i:235;s:6:"egg_id";i:28;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:11:"SERVER_NAME";s:13:"default_value";s:21:"Powered by Swift-Byte";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:50";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-10-26T05:42:52.000000Z";}i:236;a:11:{s:2:"id";i:236;s:6:"egg_id";i:28;s:4:"name";s:20:"Windows Install Flag";s:11:"description";s:41:"Required for windows game server installs";s:12:"env_variable";s:15:"WINDOWS_INSTALL";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:237;a:11:{s:2:"id";i:237;s:6:"egg_id";i:28;s:4:"name";s:14:"WINETRICKS_RUN";s:11:"description";s:55:"Run installs on software that is required by the server";s:12:"env_variable";s:14:"WINETRICKS_RUN";s:13:"default_value";s:19:"vcrun2019 corefonts";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:38:"required|string|in:vcrun2019 corefonts";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:238;a:11:{s:2:"id";i:238;s:6:"egg_id";i:28;s:4:"name";s:11:"SRCDS_APPID";s:11:"description";s:89:"steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:7:"2089300";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:26:"required|string|in:2089300";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:239;a:11:{s:2:"id";i:239;s:6:"egg_id";i:28;s:4:"name";s:12:"Auto Updates";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:58:03.000000Z";}i:240;a:11:{s:2:"id";i:240;s:6:"egg_id";i:28;s:4:"name";s:9:"WINEDEBUG";s:11:"description";s:0:"";s:12:"env_variable";s:9:"WINEDEBUG";s:13:"default_value";s:4:"-all";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:241;a:11:{s:2:"id";i:241;s:6:"egg_id";i:28;s:4:"name";s:8:"WINEPATH";s:11:"description";s:0:"";s:12:"env_variable";s:8:"WINEPATH";s:13:"default_value";s:15:"/home/container";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:242;a:11:{s:2:"id";i:242;s:6:"egg_id";i:28;s:4:"name";s:8:"WINEARCH";s:11:"description";s:0:"";s:12:"env_variable";s:8:"WINEARCH";s:13:"default_value";s:5:"win64";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:24:"required|string|in:win64";s:10:"created_at";s:27:"2023-08-27T09:56:41.000000Z";s:10:"updated_at";s:27:"2023-08-27T09:56:41.000000Z";}i:243;a:11:{s:2:"id";i:243;s:6:"egg_id";i:28;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-08-27T16:53:08.000000Z";s:10:"updated_at";s:27:"2023-08-27T16:53:08.000000Z";}i:244;a:11:{s:2:"id";i:244;s:6:"egg_id";i:28;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:15:"SERVER_PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:20";s:10:"created_at";s:27:"2023-08-27T16:58:39.000000Z";s:10:"updated_at";s:27:"2023-08-27T17:26:46.000000Z";}i:245;a:11:{s:2:"id";i:245;s:6:"egg_id";i:28;s:4:"name";s:14:"Admin Password";s:11:"description";s:19:"pack.admin_password";s:12:"env_variable";s:14:"ADMIN_PASSWORD";s:13:"default_value";s:11:"RANDOM_TEXT";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:32";s:10:"created_at";s:27:"2023-08-27T16:59:21.000000Z";s:10:"updated_at";s:27:"2023-08-27T16:59:21.000000Z";}}}i:29;a:15:{s:2:"id";i:29;s:4:"uuid";s:36:"cbb81f34-e118-4a39-a714-d95dba2ddb39";s:4:"name";s:7:"Valheim";s:4:"nest";i:5;s:6:"author";s:20:"magi1053@outlook.com";s:11:"description";s:126:"A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.";s:12:"docker_image";s:31:"ghcr.io/parkervcp/games:valheim";s:13:"docker_images";a:1:{s:31:"ghcr.io/parkervcp/games:valheim";s:31:"ghcr.io/parkervcp/games:valheim";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:15:"DungeonDB Start";}s:4:"stop";s:2:"^C";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:412:"./valheim_server.x86_64 -nographics -batchmode -name "{{SERVER_NAME}}" -port {{SERVER_PORT}} -world "{{WORLD}}" -password "{{PASSWORD}}" -public {{PUBLIC_SERVER}} -saveinterval {{BACKUP_INTERVAL}} -backups {{BACKUP_COUNT}} -backupshort {{BACKUP_SHORTTIME}} -backuplong {{BACKUP_LONGTIME}} $( [[ {{ENABLE_CROSSPLAY}} -eq 1 ]] && echo " -crossplay ") > >(sed -uE "{{CONSOLE_FILTER}}") & trap "{{STOP}}" 15; wait $!";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:2914:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
apt -y update
apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-09-22T22:36:26+00:00";s:10:"updated_at";s:25:"2023-09-22T22:36:26+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:16:{i:246;a:11:{s:2:"id";i:246;s:6:"egg_id";i:29;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:11:"SERVER_NAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:60";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:38:10.000000Z";}i:247;a:11:{s:2:"id";i:247;s:6:"egg_id";i:29;s:4:"name";s:15:"Server Password";s:11:"description";s:20:"pack.server_password";s:12:"env_variable";s:8:"PASSWORD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"nullable|string|max:25";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-11-05T12:43:52.000000Z";}i:248;a:11:{s:2:"id";i:248;s:6:"egg_id";i:29;s:4:"name";s:10:"World Name";s:11:"description";s:14:"pack.val_world";s:12:"env_variable";s:5:"WORLD";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-11-05T12:11:49.000000Z";}i:249;a:11:{s:2:"id";i:249;s:6:"egg_id";i:29;s:4:"name";s:13:"Public Server";s:11:"description";s:15:"pack.val_public";s:12:"env_variable";s:13:"PUBLIC_SERVER";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:7:"boolean";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-11-05T12:03:00.000000Z";}i:250;a:11:{s:2:"id";i:250;s:6:"egg_id";i:29;s:4:"name";s:6:"App ID";s:11:"description";s:38:"Valheim steam app id for auto updates.";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"896660";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"nullable|numeric";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:37:23.000000Z";}i:251;a:11:{s:2:"id";i:251;s:6:"egg_id";i:29;s:4:"name";s:15:"LD Library Path";s:11:"description";s:34:"Required to load server libraries.";s:12:"env_variable";s:15:"LD_LIBRARY_PATH";s:13:"default_value";s:9:"./linux64";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:36:26.000000Z";}i:252;a:11:{s:2:"id";i:252;s:6:"egg_id";i:29;s:4:"name";s:16:"Shutdown Command";s:11:"description";s:38:"Commands to trigger a server shutdown.";s:12:"env_variable";s:4:"STOP";s:13:"default_value";s:17:"kill -2 $!; wait;";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:36:26.000000Z";}i:253;a:11:{s:2:"id";i:253;s:6:"egg_id";i:29;s:4:"name";s:11:"Auto Update";s:11:"description";s:16:"pack.auto_update";s:12:"env_variable";s:11:"AUTO_UPDATE";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:37:54.000000Z";}i:254;a:11:{s:2:"id";i:254;s:6:"egg_id";i:29;s:4:"name";s:9:"Crossplay";s:11:"description";s:14:"pack.val_cross";s:12:"env_variable";s:16:"ENABLE_CROSSPLAY";s:13:"default_value";s:1:"1";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|boolean";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-11-05T12:06:59.000000Z";}i:255;a:11:{s:2:"id";i:255;s:6:"egg_id";i:29;s:4:"name";s:15:"Backup Interval";s:11:"description";s:76:"Change how often the world will save in seconds. Default: 1800 (30 minutes).";s:12:"env_variable";s:15:"BACKUP_INTERVAL";s:13:"default_value";s:4:"1800";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|numeric|min:0";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-11-05T12:03:19.000000Z";}i:256;a:11:{s:2:"id";i:256;s:6:"egg_id";i:29;s:4:"name";s:12:"Backup Count";s:11:"description";s:246:"Sets how many automatic backups will be kept. The first is the 'short' backup length, and the rest are the 'long' backup length. When default values are used means one backup that is 2 hours old, and 3 backups that are 12 hours apart. Default: 4.";s:12:"env_variable";s:12:"BACKUP_COUNT";s:13:"default_value";s:1:"4";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|numeric|min:0";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:39:55.000000Z";}i:257;a:11:{s:2:"id";i:257;s:6:"egg_id";i:29;s:4:"name";s:16:"Backup Shorttime";s:11:"description";s:90:"Sets the interval between the first automatic backups in seconds. Default: 7200 (2 hours).";s:12:"env_variable";s:16:"BACKUP_SHORTTIME";s:13:"default_value";s:4:"7200";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|numeric|min:0";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:40:00.000000Z";}i:258;a:11:{s:2:"id";i:258;s:6:"egg_id";i:29;s:4:"name";s:15:"Backup Longtime";s:11:"description";s:97:"Sets the interval between the subsequent automatic backups in seconds. Default: 43200 (12 hours).";s:12:"env_variable";s:15:"BACKUP_LONGTIME";s:13:"default_value";s:5:"43200";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|numeric|min:0";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:40:04.000000Z";}i:259;a:11:{s:2:"id";i:259;s:6:"egg_id";i:29;s:4:"name";s:11:"Beta Branch";s:11:"description";s:65:"Beta branch of a steam app. Leave blank to install normal branch.";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:6:"max:30";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:39:33.000000Z";}i:260;a:11:{s:2:"id";i:260;s:6:"egg_id";i:29;s:4:"name";s:13:"Beta Password";s:11:"description";s:119:"Password for a beta branch should one be required during private or closed testing phases. Leave blank for no password.";s:12:"env_variable";s:14:"SRCDS_BETAPASS";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:6:"max:30";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:39:37.000000Z";}i:261;a:11:{s:2:"id";i:261;s:6:"egg_id";i:29;s:4:"name";s:14:"Console Filter";s:11:"description";s:41:"Remove unwanted outputs from the console.";s:12:"env_variable";s:14:"CONSOLE_FILTER";s:13:"default_value";s:71:"/^\(Filename:.*Line:[[:space:]]+[[:digit:]]+\)$/d; /^([[:space:]]+)?$/d";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:6:"string";s:10:"created_at";s:27:"2023-09-22T22:36:26.000000Z";s:10:"updated_at";s:27:"2023-09-22T22:36:26.000000Z";}}}i:33;a:15:{s:2:"id";i:33;s:4:"uuid";s:36:"85925745-9b06-4e10-9f4e-a247013116c1";s:4:"name";s:12:"Rust Staging";s:4:"nest";i:5;s:6:"author";s:11:"root@smc.li";s:11:"description";s:316:"The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.";s:12:"docker_image";s:30:"ghcr.io/pterodactyl/games:rust";s:13:"docker_images";a:1:{s:30:"ghcr.io/pterodactyl/games:rust";s:30:"ghcr.io/pterodactyl/games:rust";}s:6:"config";a:6:{s:5:"files";a:0:{}s:7:"startup";a:1:{s:4:"done";s:23:"Server startup complete";}s:4:"stop";s:4:"quit";s:4:"logs";a:0:{}s:13:"file_denylist";a:0:{}s:7:"extends";N;}s:7:"startup";s:486:"./RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.identity "rust" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \"{{HOSTNAME}}\" +server.level \"{{LEVEL}}\" +server.description \"{{DESCRIPTION}}\" +server.url \"{{SERVER_URL}}\" +server.headerimage \"{{SERVER_IMG}}\" +server.worldsize \"{{WORLD_SIZE}}\" +server.seed \"{{WORLD_SEED}}\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \"{{RCON_PASS}}\" +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}";s:6:"script";a:5:{s:10:"privileged";b:1;s:7:"install";s:3115:"#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/parkervcp/installers:debian'

##
#
# Variables
# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.
# WINDOWS_INSTALL - if it's a windows server you want to install set to 1
# SRCDS_APPID - steam app id found here - https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch
# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.
# INSTALL_FLAGS - Any additional SteamCMD  flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.
# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.
#
 ##

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
#apt -y update
#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

## 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} $( [[ "${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

## add below your custom commands if needed

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"";s:5:"entry";s:4:"bash";s:9:"container";s:35:"ghcr.io/parkervcp/installers:debian";s:7:"extends";N;}s:10:"created_at";s:25:"2023-10-30T06:38:30+00:00";s:10:"updated_at";s:25:"2023-10-30T06:38:30+00:00";s:9:"nest_name";s:12:"Custom Games";s:9:"variables";a:15:{i:298;a:11:{s:2:"id";i:298;s:6:"egg_id";i:33;s:4:"name";s:11:"Server Name";s:11:"description";s:16:"pack.server_name";s:12:"env_variable";s:8:"HOSTNAME";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:40";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:41:27.000000Z";}i:299;a:11:{s:2:"id";i:299;s:6:"egg_id";i:33;s:4:"name";s:5:"Level";s:11:"description";s:31:"The world file for Rust to use.";s:12:"env_variable";s:5:"LEVEL";s:13:"default_value";s:14:"Procedural Map";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:38:30.000000Z";}i:300;a:11:{s:2:"id";i:300;s:6:"egg_id";i:33;s:4:"name";s:11:"Description";s:11:"description";s:93:"The description under your server title. Commonly used for rules & info. Use \n for newlines.";s:12:"env_variable";s:11:"DESCRIPTION";s:13:"default_value";s:24:"Powered by Swift-Byte.de";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"required|string";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:38:30.000000Z";}i:301;a:11:{s:2:"id";i:301;s:6:"egg_id";i:33;s:4:"name";s:3:"URL";s:11:"description";s:88:"The URL for your server. This is what comes up when clicking the "Visit Website" button.";s:12:"env_variable";s:10:"SERVER_URL";s:13:"default_value";s:22:"https://swift-byte.de/";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:38:30.000000Z";}i:302;a:11:{s:2:"id";i:302;s:6:"egg_id";i:33;s:4:"name";s:10:"World Size";s:11:"description";s:36:"The world size for a procedural map.";s:12:"env_variable";s:10:"WORLD_SIZE";s:13:"default_value";s:4:"3000";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T21:48:36.000000Z";}i:303;a:11:{s:2:"id";i:303;s:6:"egg_id";i:33;s:4:"name";s:10:"World Seed";s:11:"description";s:12:"pack.ck_seed";s:12:"env_variable";s:10:"WORLD_SEED";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T21:47:59.000000Z";}i:304;a:11:{s:2:"id";i:304;s:6:"egg_id";i:33;s:4:"name";s:11:"Max Players";s:11:"description";s:16:"pack.max_players";s:12:"env_variable";s:11:"MAX_PLAYERS";s:13:"default_value";s:2:"16";s:13:"user_viewable";b:1;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:42:04.000000Z";}i:305;a:11:{s:2:"id";i:305;s:6:"egg_id";i:33;s:4:"name";s:12:"Server Image";s:11:"description";s:52:"The header image for the top of your server listing.";s:12:"env_variable";s:10:"SERVER_IMG";s:13:"default_value";s:0:"";s:13:"user_viewable";b:1;s:13:"user_editable";b:1;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:38:30.000000Z";}i:306;a:11:{s:2:"id";i:306;s:6:"egg_id";i:33;s:4:"name";s:9:"RCON Port";s:11:"description";s:43:"'pack.port_request', ['port' => 'RCONPort']";s:12:"env_variable";s:9:"RCON_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:41:45.000000Z";}i:307;a:11:{s:2:"id";i:307;s:6:"egg_id";i:33;s:4:"name";s:13:"RCON Password";s:11:"description";s:21:"RCON access password.";s:12:"env_variable";s:9:"RCON_PASS";s:13:"default_value";s:11:"RANDOM_TEXT";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:33:"required|regex:/^[\w.-]*$/|max:64";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:40:19.000000Z";}i:308;a:11:{s:2:"id";i:308;s:6:"egg_id";i:33;s:4:"name";s:13:"Save Interval";s:11:"description";s:50:"Sets the server’s auto-save interval in seconds.";s:12:"env_variable";s:12:"SAVEINTERVAL";s:13:"default_value";s:2:"60";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:40:34.000000Z";}i:309;a:11:{s:2:"id";i:309;s:6:"egg_id";i:33;s:4:"name";s:6:"Branch";s:11:"description";s:57:"Select the branch to install, such as staging or workcart";s:12:"env_variable";s:12:"SRCDS_BETAID";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:15:"nullable|string";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T21:49:04.000000Z";}i:310;a:11:{s:2:"id";i:310;s:6:"egg_id";i:33;s:4:"name";s:8:"App Port";s:11:"description";s:38:"Port for the Rust+ App. -1 to disable.";s:12:"env_variable";s:8:"APP_PORT";s:13:"default_value";s:9:"AUTO_PORT";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:16:"required|integer";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T21:49:21.000000Z";}i:311;a:11:{s:2:"id";i:311;s:6:"egg_id";i:33;s:4:"name";s:11:"Server Logo";s:11:"description";s:43:"The circular server logo for the Rust+ app.";s:12:"env_variable";s:11:"SERVER_LOGO";s:13:"default_value";s:0:"";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:12:"nullable|url";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:40:47.000000Z";}i:312;a:11:{s:2:"id";i:312;s:6:"egg_id";i:33;s:4:"name";s:11:"SRCDS_APPID";s:11:"description";s:0:"";s:12:"env_variable";s:11:"SRCDS_APPID";s:13:"default_value";s:6:"258550";s:13:"user_viewable";b:0;s:13:"user_editable";b:0;s:5:"rules";s:22:"required|string|max:20";s:10:"created_at";s:27:"2023-10-30T06:38:30.000000Z";s:10:"updated_at";s:27:"2023-10-30T06:38:30.000000Z";}}}}