Foundry

games
Report Issue

Build a factory optimized to perfection or an artistic masterpiece in an infinite voxel world. Mine and harvest resources, automate your ever-growing production lines and manage complex systems while researching your way to mechanical mastery in FOUNDRY.

Contributors:
README

Foundry

Game Description

Build a factory optimized to perfection or an artistic masterpiece in an infinite voxel world. Mine and harvest resources, automate your ever-growing production lines and manage complex systems while researching your way to mechanical mastery in FOUNDRY.

Useful links

Steam: https://store.steampowered.com/app/983870/FOUNDRY/ Homepage: https://www.paradoxinteractive.com/games/foundry/about More server info: https://dedicated.foundry-game.com/

Author & Contributers

Name Github Profile Buy me a Coffee
gOOvER https://github.com/gOOvER ko-fi

Server Ports

Foundry requires up to 2 ports. You can choose every port you want.

Port default
Game 3724
Query 27015
Docker Images (1)
Name Image
ghcr.io/ptero-eggs/yolks:wine_latest ghcr.io/ptero-eggs/yolks:wine_latest
Startup Command
xvfb :0 -screen 0 1024x768x16; DISPLAY=:0.0 xvfb-run wine /home/container/FoundryDedicatedServer.exe -log
Variables (16)

[SERVER] Steam Query Port

Sets the network port used by the Steam server browser to query information about the game. This is only used if the server is set to public.

Environment:
QUERY_PORT
Default:
27015
User Viewable:
User Editable:
Rules:
required|integer|between:1024,65536

[SERVER] Server Name

This is the name of the server listed in the Steam server browser.

Environment:
SERVER_NAME
Default:
None
User Viewable:
User Editable:
Rules:
required|string|max:40

[SERVER] Server World Name

Sets the server world name. This is the folder where the save files will be stored.

Environment:
WORLD_NAME
Default:
MyFoundry
User Viewable:
User Editable:
Rules:
required|string|max:20

[SERVER] Server Password

Sets the server password.

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

[SERVER] Pause Server When Empty

Will the server pause when nobody is connected.

Environment:
PAUSE_SERVER
Default:
true
User Viewable:
User Editable:
Rules:
required|string|in:true,false

[SERVER] Autosave Interval

Sets the autosave frequency in seconds.

Environment:
AUTOSAVE_INTERVAL
Default:
300
User Viewable:
User Editable:
Rules:
required|numeric

[SERVER] Server Public

Sets whether the server is listed on the Steam server browser.

Environment:
PUBLIC_SERVER
Default:
true
User Viewable:
User Editable:
Rules:
required|string|in:true,false

[SERVER] Map Seed

Sets the map seed used to generate the world.

Environment:
MAP_SEED
Default:
42938743982
User Viewable:
User Editable:
Rules:
required|numeric

[SERVER] Server Max Players

This sets the max amount of players on a server.

Environment:
MAX_PLAYERS
Default:
32
User Viewable:
User Editable:
Rules:
required|numeric

[SERVER] Savepath

Environment:
SAVE_PATH
Default:
/home/container/serverfiles
User Viewable:
User Editable:
Rules:
required|string

[SERVER] Auto update the server

Environment:
AUTO_UPDATE
Default:
1
User Viewable:
User Editable:
Rules:
required|boolean

WINDOWS_INSTALL

Environment:
WINDOWS_INSTALL
Default:
1
User Viewable:
User Editable:
Rules:
required|in:1

[STEAM] Steam App ID

Steam App ID

Environment:
SRCDS_APPID
Default:
2915550
User Viewable:
User Editable:
Rules:
required|string|in:2915550

[WINE] WINETRICKS_RUN

Environment:
WINETRICKS_RUN
Default:
mono
User Viewable:
User Editable:
Rules:
required|string

[WINE] WINEDEBUG

Environment:
WINEDEBUG
Default:
-all
User Viewable:
User Editable:
Rules:
required|string

[WINE] XVFB

Environment:
XVFB
Default:
1
User Viewable:
User Editable:
Rules:
required|in:1
Installation Script
Container: ghcr.io/ptero-eggs/installers:debian
Entrypoint: bash
#!/bin/bash

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}Foundry Installscript${NC}"
echo -e "${YELLOW}Egg by gOOvER | 2024 MIT Licence${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 1007 +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
mkdir -p $HOME/Mods
mkdir -p $HOME/serverfiles

#ccheck for config
FILE=$HOME/App.cfg

if [ -f "$FILE" ]; then
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${GREEN}App.cfg found.${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
else  
  echo -e "${BLUE}-------------------------------------------------${NC}"
  echo -e "${RED}No App.cfg found. downloading default...${NC}"
  echo -e "${BLUE}-------------------------------------------------${NC}"
  cd $HOME
  curl -sSL -o App.cfg https://dedicated.foundry-game.com/App.cfg
  echo -e "${GREEN}..done..${NC}"
fi

## cleanup to prevent errors
echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${RED}deleting old wine dirs... please wait...${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

if [ ! -d "/mnt/server/.wine" ]; then
    rm -fR /mnt/server/.wine
    rm -fR /mnt/server/.config
    rm -fR /mnt/server/.cache
    rm -fR /mnt/server/.local
    rm -fR /mnt/server/appcache
fi
echo -e "${GREEN}..done..${NC}"

## install end
echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${GREEN}Installation completed...${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"