Docker version for dedicated server of Foundry
10K+
This Docker container simplifies hosting your own Foundryโ dedicated server. ๐
It has been tested and confirmed to work on Linux (Ubuntu/Debian). ๐ง
Contributions and feedback for improvements are welcome! ๐ค
docker-compose method).It's recommended to create a dedicated directory on your host machine to store server data and configuration before running the commands. For example:
mkdir ~/foundry-server
cd ~/foundry-server
The following examples will map ./server (for game files) and ./data (for persistent data like saves and backups) in your current working directory to the container.
docker rundocker run -d \
--name foundry-server \
-p 3724:3724/udp \
-p 27015:27015/udp \
-v ./server:/home/foundry/server_files \
-v ./data:/home/foundry/persistent_data \
-e TZ="Europe/Paris" \
-e SERVER_NAME=Foundry Docker by Luxusburg \
-e SERVER_PWD=change_me \
-e PAUSE_SERVER_WHEN_EMPTY=false \
-e MAX_TRANSFER_RATE=8192 \
luxusburg/docker-foundry:latest
docker-composeCreate a docker-compose.yml file:
# version: '3.8' # Uncomment if your Docker Compose version requires it
services:
foundry:
container_name: foundry-server
image: luxusburg/docker-foundry:latest
network_mode: bridge # Or 'host' if preferred, adjust ports accordingly
environment:
- TZ=Europe/Paris
- WORLD_NAME='worldname'
- SERVER_PWD=change_me_strong_password
- SERVER_NAME=Foundry Docker - by Luxusburg
- SERVER_MAX_PLAYERS=10
- SERVER_IS_PUBLIC=true
- PAUSE_SERVER_WHEN_EMPTY=false
- AUTOSAVE_INTERVAL=300
- MAX_TRANSFER_RATE=8192
- CUSTOM_CONFIG=false # Set to true to use a custom app.cfg
# Backup Settings
- BACKUPS=true
- BACKUP_INTERVAL=0 * * * * # Every hour at minute 0
- BACKUP_RETENTION=3 # Keep backups older than X days
# Mod Settings
# - ENABLE_MODS=true # Uncomment to enable mods
# PUID/PGID Settings
# - PUID=1000
# - PGID=1000
volumes:
- ./server:/home/foundry/server_files:rw
- ./data:/home/foundry/persistent_data:rw
ports:
- "3724:3724/udp"
- "27015:27015/udp" # Only needed if SERVER_IS_PUBLIC=true
restart: unless-stopped
Then run:
docker compose up -d
/home/foundry/server_files (e.g., ./server on host): Stores the main game server files installed via SteamCMD, app.cfg and mod data./home/foundry/persistent_data (e.g., ./data on host): Stores world saves and backups.[!TIP] You can customize server settings by editing the
app.cfgfile located in your server files volume (e.g.,./server/app.cfg) after the first run. Alternatively, use environment variables. For a fully customapp.cfg, setCUSTOM_CONFIG=trueand ensure yourapp.cfg ispresent in the server files directory. Refer to the official developer documentation for all possibleapp.cfgsettings: Foundry Dedicated Server Docsโ
Backups are enabled by default and stored in the backup subfolder within your persistent data volume (e.g., ./data/backup/).
To recover a backup:
docker stop foundry-server
# or for docker-compose
docker compose down
[!IMPORTANT] โ The following command will overwrite your current world save files! Ensure you have a separate copy of your current world data if you might need it.
your_persistent_data_path in our example (e.g., ./data) and the backup filename accordingly:# Example:
tar -xzvf ./data/backup/foundry-backup-YYYY-MM-DD_HH-MM-SS.tar.gz -C ./data/
This will restore the save folder into ./data/
3. Restart the container
Set the environment variable ENABLE_MODS=true in your Docker configuration.
modList.json file to be present in the Mods folder within your server files volume (e.g., ./server/Mods/modList.json) to start correctly when mods are enabled.C:\Program Files (x86)\Steam\steamapps\common\FOUNDRY\Mods\modList.json on Windows) to the server's mod directory.When ENABLE_MODS=true, the server will attempt to check for and download/update subscribed mods on each startup. ๐
your_server_files_volume/Mods/ (e.g., ./server/Mods/)your_data_volume/mod_settings/ (e.g., ./data/mod_settings/`)The container uses environment variables for configuration.
| Variable | Default / Example | Description |
|---|---|---|
TZ | Europe/Paris | Sets the timezone for the container ๐. List of tz database time zonesโ . |
WORLD_NAME | FoundryDockerWorld | Sets the server world name ๐บ๏ธ. This is the folder name within FoundryDedicatedServer/Worlds/ where save files will be stored. |
SERVER_PWD | (none) | Sets the server password ๐. Highly recommended. |
SERVER_NAME | Foundry Docker Server | Name of the server listed in the Steam server browser (if public) ๐ข. |
MAP_SEED | (game default) | Sets the map seed used to generate the world ๐ฑ. |
SERVER_MAX_PLAYERS | 10 | Sets the maximum number of players allowed on the server ๐งโ๐คโ๐ง. |
PAUSE_SERVER_WHEN_EMPTY | false | true or false. Pauses the server when no players are connected โธ๏ธ. |
AUTOSAVE_INTERVAL | 300 | Autosave frequency in seconds โฑ๏ธ. |
SERVER_IS_PUBLIC | false | true or false. Sets whether the server is listed on the Steam server browser ๐. |
SERVER_PORT | 3724 | Network port used by the game ๐. |
SERVER_QUERY_PORT | 27015 | Network port for Steam server browser queries (used if SERVER_IS_PUBLIC=true) ๐ก. |
MAX_TRANSFER_RATE | 1024 (KiB/s) | Maximum data transfer rate for clients ๐ถ. Max: 8192. |
CUSTOM_CONFIG | false | Set to true if you want the server to exclusively use a manually provided app.cfg file (located in persistent data) ๐. |
Warning
For `BACKUP_INTERVAL`, do not use double (`""`) or single (`''`) quotes around the cron schedule value.
| Variable | Default / Example | Description |
|---|---|---|
BACKUPS | true | true or false. Enables or disables the automatic backup system. |
BACKUP_INTERVAL | 0 * * * * | Cron schedule for backups (e.g., 0 * * * * for every hour at minute 0) ๐๏ธ Cron scheduleโ |
BACKUP_RETENTION | 10 (backups) | Sets how many backup files are kept. |
These variables are used to set the user and group ID for the foundry user inside the container, which helps manage file permissions on mounted volumes.
| Variable | Default | Description |
|---|---|---|
PUID | 1000 | User ID for the foundry user. |
PGID | 1000 | Group ID for the foundry user. |
To find your user's ID on Linux, you can use the command id $(whoami).
To use a beta branch of the game:
Warning
Do **not** use double ("") or single ('') quotes around the beta name or password.
| Variable | Default / Example | Description |
|---|---|---|
BETANAME | (none) | Name of the Steam beta branch to use. |
BETAPASSWORD | (none) | Password for the beta branch, if required. |
Feedback, bug reports, and pull requests are welcome! Please feel free to open an issue or submit a PR on the GitHub repositoryโ .
Content type
Image
Digest
sha256:4e9b5796fโฆ
Size
469.7 MB
Last updated
over 1 year ago
docker pull luxusburg/docker-foundry