Egg Repository

Pterodactyl Community Egg Repository

Open Fortress

Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.

Read Me

Open Fortress

From their Website

Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.

Server Ports

Open Fortress servers require 1 port to be open, the SourceTV port can also be opened for spectators.

Port default
Game/rcon 27015
SourceTV 27020

Beans

Because they now use Beans to download the needed files you need increase the tempfs_size in the wings config.yml to at least a value above 6000 else the install will fail.

Yolks
NameTag
games_sourceghcr.io/ptero-eggs/yolks:games_source
Variables
NameDescriptionEnvironment VariableDefault ValueUser ViewableUser Editable
Game IDThe ID corresponding to the game to download and run using SRCDS.SRCDS_APPID244310NoNo
Game NameThe name corresponding to the game to download and run using SRCDS.SRCDS_GAMEopen_fortressYesNo
Default MapThe default map to use when starting the server.SRCDS_MAPdm_2fortYesYes
Max PlayersThe maximum amount of players allowed on the server.MAXPLAYERS24YesYes
Install Script
#!/bin/bash
# steamcmd Base Installation Script
#
# Server Files: /mnt/server
# Image to install with is 'ghcr.io/ptero-eggs/installers:debian'

# Beans need some extra packages?
apt -y update
apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates p7zip-full libstdc++6 libstdc++6:i386 libncurses5:i386 libtinfo5:i386 libcurl4-gnutls-dev:i386 screen libsdl2-2.0-0:i386 file

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

# SDK 2013
./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit 

# OF
./steamcmd.sh +force_install_dir /mnt/server/tf2 +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update 232250 ${EXTRA_FLAGS} validate +quit 

## set up 32 bit libraries
mkdir -p /mnt/server/.steam/sdk32
cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so

## set up 64 bit libraries
mkdir -p /mnt/server/.steam/sdk64
cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so

## download OpenFortress
cd /mnt/server
mv bin bin_dontdeleteme


curl -sSL -o beans https://beans.adastral.net/beans
chmod +x beans
if [ -d "open_fortress" ]; then
  echo "OF is installed. Updating."
  ./beans --update ~
else
  echo "OF is not installed. Instaling."
  mkdir -p /mnt/server/open_fortress
  # Run beans for 15 seconds to generate some random needed .dat file
  timeout 15s ./beans --install /mnt/server
  # Re-run beans now to actualy download the files
  echo "Ignore the erorrs!, this can take a wile."
  ./beans --install /mnt/server/
fi

mv bin_dontdeleteme bin
## add fixed gameinfo
cd /mnt/server/open_fortress
rm -rf gameinfo.txt
cat >> gameinfo.txt << EOF
"GameInfo"
{
game "Open Fortress"
title ""
title2 ""
gamelogo "1"
developer "https://github.com/AgitationSkeleton/open_fortress/blob/master/credits.txt"
developer_url	"https://github.com/KaidemonLP/Open-Fortress-Source"
manual ""
type "multiplayer_only"
hasportals "0" // gameui.dll
hashdcontent	"0" // gameui.dll
nomodels "0" // gameui.dll
nohimodel "0" // gameui.dll
nocrosshair "0" // gameui.dll
advcrosshair "1" // gameui.dll
nodifficulty	"1" // gameui.dll
supportsvr "0" // engine.dll + gameui.dll
bots "0" // gameui.dll
nodegraph "1" // engine.dll
perfwizard "0" // unused
SupportsDX8 "0" // unused
SupportsDX9 "1" // unused
SupportsDX10	"0" // unused
SupportsDX11	"0" // unused
SupportsXbox	"0" // unused
SupportsXbox360	"0" // unused
SupportsXboxOne	"0" // unused
SupportsPS3 "0" // unused
SupportsPS4 "0" // unused
icon "resource/game"
GameData "ofd_fic2.fgd"
InstancePath	"maps/instances/"
hidden_maps
{
"test_speakers" 1
"test_hardware" 1
"background01" 1
"background02" 1
"background03" 1
"background04" 1
"background05" 1
"background06" 1
"background07" 1
"background08" 1
"background09" 1
"background12" 1
"background15" 1
"ep1_c17_00" 1
"ep1_c17_00a" 1
"ep1_c17_01" 1
"ep1_c17_01a" 1
"ep1_c17_02" 1
"ep1_c17_02a" 1
"ep1_c17_02b" 1
"ep1_c17_05" 1
"ep1_c17_06" 1
"ep1_citadel_00"	1
"ep1_citadel_00_demo" 1
"ep1_citadel_01"	1
"ep1_citadel_02"	1
"ep1_citadel_02b"	1
"ep1_citadel_03"	1
"ep1_citadel_04"	1
"ep1_background01"	1
"ep1_background01a"	1
"ep1_background02"	1
"ep2_outland_01"	1
"ep2_outland_01a"	1
"ep2_outland_02"	1
"ep2_outland_03"	1
"ep2_outland_04"	1
"ep2_outland_05"	1
"ep2_outland_06"	1
"ep2_outland_06a"	1
"ep2_outland_07"	1
"ep2_outland_08"	1
"ep2_outland_09"	1
"ep2_outland_10"	1
"ep2_outland_10a"	1
"ep2_outland_11"	1
"ep2_outland_11a"	1
"ep2_outland_11b"	1
"ep2_outland_12"	1
"ep2_outland_12a"	1
"ep2_background01"	1
"ep2_background02"	1
"ep2_background02a"	1
"ep2_background03"	1
"credits" 1
"vst_lostcoast" 1
"test" 1
"sdk_vehicles" 1
}
FileSystem
{
SteamAppId 243750
SearchPaths
{
game+mod |gameinfo_path|custom/*
game+game_write+mod+mod_write+default_write_path |gameinfo_path|.
gamebin |gameinfo_path|bin
// The lines below until the BREAK comment are responsible for the game resources to work properly
// in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,
// Source SDK and OF) in the same drive letter/partition. If you have a different storage configuration,
// feel free to modify the paths below between quotes (example: D:\Steam\steamapps\common\Team Fortress 2\tf).
game "/home/container/tf2/tf/tf2_misc.vpk"
game "/home/container/tf2/tf/tf2_sound_misc.vpk"
game "/home/container/tf2/tf/tf2_sound_vo_english.vpk"
game "/home/container/tf2/tf/tf2_textures.vpk"
game "/home/container/tf2/tf"
game "/home/container/tf2/hl2/hl2_textures.vpk"
game "/home/container/tf2/hl2/hl2_sound_vo_english.vpk"
game "/home/container/tf2/hl2/hl2_sound_misc.vpk"
// The hl2 folder here is from Source SDK Base 2013 Multiplayer.
game "|all_source_engine_paths|hl2\hl2_misc.vpk"
game "|all_source_engine_paths|hl2"
// ========== BREAK ==========
platform |all_source_engine_paths|platform/platform_misc.vpk
platform |all_source_engine_paths|platform
game+download |gameinfo_path|download
}
}
}
EOF
## fix issue /w symlink
cd /mnt/server/bin
ln -s datacache_srv.so datacache.so
ln -s dedicated_srv.so dedicated.so
ln -s engine_srv.so engine.so
ln -s materialsystem_srv.so materialsystem.so
ln -s replay_srv.so replay.so
ln -s scenefilecache_srv.so scenefilecache.so
ln -s shaderapiempty_srv.so shaderapiempty.so
ln -s soundemittersystem_srv.so soundemittersystem.so
ln -s studiorender_srv.so studiorender.so
ln -s vphysics_srv.so vphysics.so
## more symlink fixes
cd /mnt/server/open_fortress/bin
ln -s server.so server_srv.so
## fix issue with libstdc++.so
rm -rf /mnt/server/bin/libstdc++.so.6

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"