Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.
Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.
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 |
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.
| Name | Tag |
|---|---|
| games_source | ghcr.io/ptero-eggs/yolks:games_source |
The ID corresponding to the game to download and run using SRCDS.
The name corresponding to the game to download and run using SRCDS.
The default map to use when starting the server.
The maximum amount of players allowed on the server.
#!/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 "-----------------------------------------"| Installation Image | ghcr.io/ptero-eggs/installers:debian | Installation Entrypoint | bash |
|---|