DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
FREEDOM251

Freedom251 › Blog › Dedicated Server

How to Run a The Forest Dedicated Server in Docker (Ports, Tokens, Saves, and Updates)

By Freedom251 Team · · 12 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run The Forest dedicated server in Docker by using a maintained image, publishing its three UDP ports, supplying the Steam server-account token required by that image, and mounting the game directory on persistent storage. The current jammsen project documents an image built around Debian, SteamCMD, Wine, and Xvfb, with /theforest as the persistent directory. A comparable Donimax image remains useful as historical reference, but its repository was archived on March 19, 2026.

This guide uses the jammsen-style deployment because its current Compose example matches the documented workflow. Image environment-variable names can change, so copy the exact names from the selected image’s current README rather than assuming that a variable shown in an older example still exists.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What you need before creating the container

A Dockerized The Forest server is a Windows game-server process running through Wine inside a Linux container. SteamCMD installs or updates the server files, Wine runs the Windows executable, and Xvfb supplies a virtual display for software that expects one. That stack is convenient, but it is not a native Linux process: provide a host with enough CPU, memory, disk space, and network capacity for your expected player count and for SteamCMD updates. The published Dockerfiles do not establish universal minimum hardware figures, so treat capacity as a sizing decision rather than a fixed requirement.

  • A Linux host with Docker Engine and the Docker Compose plugin.
  • Permission for the Docker daemon to create and write the directory you will mount as the game volume.
  • A stable host address and administrative access to its firewall and, for an Internet server, the router or NAT device.
  • A Steam Game Server Account token if the selected image requires one.
  • Several gigabytes of free disk space beyond the installed server files so updates and save data do not fill the volume.

Do not place a token in a public Compose file or commit it to source control. Keep the environment file readable only by the account that administers the server.

#1 Best Overall
Renegade Game Studios Fox in the Forest Deluxe 2 Player Trick-Taking Game
  • Strategic 2-Player Trick-Taking: Master the art of winning just enough tricks without overcommitting, using clever card play and tactical decision-making to outmaneuver your opponent
  • New Module Variations: Three game modules (special cards, goal cards, poison cards) offer endless strategic combinations, keeping gameplay fresh and exciting for repeated plays
  • Premium Deluxe Components: Foil-stamped cards, all-new fairy-tale illustrations, and acrylic scoring tokens deliver a visually stunning and tactile experience that enhances every game
  • Quick 30-Minute Gameplay: Perfect for busy couples seeking quality time together, delivering strategic depth and meaningful competition in a compact, elegant format
  • Complete Game Package: Includes 33 base cards, nine special cards, 16 goal cards, three poison cards, two reference cards, 17 scoring tokens, and comprehensive rulebook

Choose the Docker image carefully

Current jammsen workflow

The jammsen project documents jammsen/the-forest-dedicated-server:latest, a Debian-based image that combines SteamCMD, Wine, and Xvfb. Its Compose pattern mounts a host directory at /theforest, uses restart: unless-stopped, and maps the three documented ports as UDP. The project also exposes a server-token setting and identifies dedicated-server App ID 556450 in its documentation.

Donimax workflow and its status

Donimax documents a similar Docker/Wine setup with a /config mount and a token obtained through Steam’s Game Server Account Management. Its repository metadata marks the project archived on March 19, 2026. An archived image may still start, but it should not be your assumption for a new production deployment: updates, issue fixes, and compatibility with current Steam tooling are no longer assured.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What to compare before you pull an image

Check Why it matters What to record
Maintenance status Steam updates and host distributions can break old images. Latest release or commit date and whether issues are being answered.
Base stack Wine, SteamCMD, Xvfb, and the Debian or other Linux base determine startup behavior. Image documentation and supported architecture.
Persistent path Mounting the wrong directory can lose saves or generated configuration. Container path such as /theforest or /config.
Token and App ID instructions Steam authentication requirements differ between projects. Exact environment-variable names and the App ID currently stated by the project.
Network mappings Players cannot connect if the host, router, and container disagree. Protocol and host/container port for each service.
Update behavior Recreating a container is safe only when state is outside the writable container layer. How the image installs updates and where saves are stored.

Pin a tested image tag or digest for a production server instead of relying permanently on latest. The available documentation does not define a universal safe-tag policy; test an update against a copy of the persistent directory and read the image’s release notes before changing the production tag.

Get the Steam server-account token

Some images require a Steam Game Server Account token (often called a GSLT). Donimax’s instructions direct administrators to Steam’s Game Server Account Management page at https://steamcommunity.com/dev/managegameservers and to create a token using App ID 242760. The jammsen documentation instead exposes a token setting and lists dedicated-server App ID 556450. Because those values conflict, do not copy an App ID from one project into another.

  1. Open the Steam account-management page and sign in with the account that will own the server token.
  2. Read the current Steam form instructions and the selected image’s README together.
  3. Use the App ID and token variable specified for that image. If Steam rejects the value, stop and verify the image documentation and Steam’s current requirements rather than repeatedly generating tokens.
  4. Paste the token into the private environment file used by Compose. Do not put it directly in a shell command that will remain in shell history.

A token is not a substitute for port forwarding, and a valid token does not guarantee that the server will appear in the public browser. Authentication, game traffic, query traffic, and NAT reachability are separate conditions.

Rank #2
Renegade Game Studios Fox in the Forest ,2 Player Card Games, Trick-Taking Strategy Game for Adults, Compact Travel Board Game, 30 min
  • Strategic Trick-Taking Gameplay: Master unique character abilities and special powers that let you change the trump suit, lead after losing tricks, and outwit your opponent with clever card play
  • Compact Travel-Friendly Design: Perfectly portable for date nights, vacations, and weekend getaways with its small box that fits easily in bags and luggage without sacrificing quality components
  • Beautiful Illustrated Cards: Stunning fairy tale character artwork with intricate botanical details and elegant brushwork makes analyzing your options quick and enjoyable during each game
  • Quick 30-Minute Sessions: Ideal for busy adults seeking meaningful screen-free connection without long rulebook learning curves or extended play commitments on weeknights
  • Balanced 2-Player Experience: Expertly designed trick-taking mechanics ensure neither player gains unfair advantage, rewarding strategic thinking and creating intense memorable moments every game

Prepare persistent storage

Use a bind mount or named volume for the directory that contains the installed server, generated configuration, and saves. The jammsen example maps ./game on the host to /theforest in the container. Donimax uses a /config mount and explicitly warns that its setup steps are necessary for saves. The practical rule is simple: identify the image’s state directory, mount it before the first startup, and never treat the writable container layer as your only copy of a world.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Create a dedicated project directory, for example mkdir -p ~/the-forest-server/game.
  2. Place the Compose file and private environment file in the project directory.
  3. Ensure the Docker process can write the host directory. If the image runs as a non-root user, match the directory ownership or permissions to that user.
  4. Back up the mounted directory before changing image tags or editing generated files.

A bind mount makes the files visible for backup and inspection. A named volume reduces path-management work but still needs an explicit backup plan. Whichever method you choose, test recovery by stopping the container, copying the data, and starting from the copy on a non-production host.

Create the Compose deployment

The following is the documented deployment shape for the jammsen image. Keep the volume path and port protocol exactly as shown unless the image’s current README says otherwise.

services:
  the-forest:
    image: jammsen/the-forest-dedicated-server:latest
    container_name: the-forest-dedicated-server
    restart: unless-stopped
    env_file:
      - ./default.env
    ports:
      - "8766:8766/udp"
      - "27015:27015/udp"
      - "27016:27016/udp"
    volumes:
      - ./game:/theforest

For a production deployment, replace latest with the tested tag or digest you selected. Keep the Compose file free of the token; put secrets and image-specific settings in default.env. The exact variable names are image-specific, so use the names shown by the selected project’s current example rather than inventing names from a different image.

Example environment-file contents

Your environment file should contain the token variable documented by the image plus the server settings it supports. A generic shape looks like this; substitute the project’s actual variable names and values:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Trial of the Forest Board Game
  • EPIC FOREST ADVENTURE: Journey through the Ancient Forest as courageous animal heroes competing to become the next Guardian of the Green Valley in a story-driven strategy board game.
  • RICH STRATEGY & COMPONENTS: Explore a modular game board with 12 location tiles, gather resources, complete legendary deeds, encounter mysterious creatures, and use dozens of cards, tokens, and unique player boards to shape every adventure.
  • YOUR CHOICES SHAPE THE STORY: Every moral decision influences your reputation as a noble hero or cunning villain while affecting your path through the forest and your race for fame and victory.
  • HIGH REPLAYABILITY: Variable locations, encounters, expeditions, and strategic choices create a unique adventure every game, making it perfect for family game nights and tabletop gatherings.
  • FOR FANTASY & STRATEGY FANS: Designed for families, teens, and adults who enjoy adventure games, storytelling, exploration, resource management, and immersive fantasy board game experiences.
# default.env (restrict permissions; do not commit)
SERVER_TOKEN=replace-with-the-token-required-by-the-image
SERVER_NAME=My Forest Server
SERVER_PLAYERS=8
SERVER_PASSWORD=choose-a-password
SERVER_PASSWORD_ADMIN=choose-an-admin-password
ENABLE_VAC=on

The names in that illustrative file are not a promise that every image accepts those exact keys. If the README uses a different spelling or separates Steam credentials from game configuration, follow that schema. An unrecognized variable may simply be ignored, leaving the server at an unexpected default.

Configure server.cfg

The image normally generates or consumes a server configuration file in the persistent directory. The documented example fields are:

Setting Purpose Documented example
serverIP Address on which the game server listens. 0.0.0.0, or the host’s internal address when the deployment requires it.
serverSteamPort Steam communication endpoint. 8766
serverGamePort Gameplay traffic endpoint. 27015
serverQueryPort Server-browser query endpoint. 27016
serverName Name displayed to players. Your chosen public name.
serverPlayers Maximum player count. 8 in the example configuration.
enableVAC Valve Anti-Cheat switch. on or off.
serverPassword Password required to join. Your chosen join password.
serverPasswordAdmin Password for administrative actions. Your separate admin password.

The example’s eight-player value is a configuration default, not an independently established hardware capacity. Increasing it changes the workload and may affect stability; no published source in the supplied material provides a CPU, RAM, bandwidth, or uptime guarantee for a particular player count.

Set the listening address deliberately

serverIP 0.0.0.0 listens on all container interfaces and is the usual starting point when Docker publishes the ports. If your image or network design requires an internal host address, use that address instead. A public Internet address generally belongs in the router’s NAT rule, not as a guessed value inside the container. Binding to an unreachable or incorrect private address commonly produces a server that appears to run but cannot accept connections.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Open and forward the required ports

The common port assignments in the current Compose examples are all UDP:

Rank #4
Renegade Game Studios Fox in the Forest Duet 2 Player Card Game
  • Cooperative Trick-Taking Mechanics: Win together by collecting gems through strategic card play and special character abilities that let teammates exchange cards and support each other throughout the game
  • Perfect Two-Player Game: Designed specifically for 2 players aged 10 and up with 30-minute gameplay, making it ideal for couples, parents with kids, or anyone seeking meaningful one-on-one connection
  • Portable Travel Card Game: Compact design fits easily in bags, backpacks, or carry-on luggage, bringing engaging entertainment to vacations, road trips, or gatherings without bulky components
  • Beautiful Hand-Illustrated Cards: Featuring stunning artwork inspired by forest themes with quality card stock that holds up to repeated play while looking attractive displayed or stored
  • Easy to Learn, Challenging to Master: Familiar trick-taking foundation makes it instantly approachable for newcomers while unique powers and strategic decision-making keep every game fresh and engaging
Function Port Container mapping Where to allow it
Steam communication 8766/udp 8766:8766/udp Host firewall and router/NAT, when Internet access is required.
Game communication 27015/udp 27015:27015/udp Host firewall and router/NAT.
Query communication 27016/udp 27016:27016/udp Host firewall and router/NAT.

Historical examples sometimes show TCP or a different protocol. Use the selected image’s current Compose file and configuration as authoritative; do not add TCP mappings merely because an old post lists them. If you change a port, change it consistently in server.cfg, the Compose mapping, the host firewall, and the router rule.

Router and host-firewall sequence

  1. Give the Docker host a stable internal address, preferably through a DHCP reservation.
  2. Forward UDP 8766, 27015, and 27016 from the router’s public interface to that internal address.
  3. Allow the same UDP ports through the host firewall. Docker’s published-port rule does not eliminate a separate firewall policy.
  4. If the host is behind more than one router, forward the ports through every NAT layer or place the inner router in the appropriate bridge or DMZ configuration.
  5. For a LAN-only server, skip public forwarding but allow the ports between the clients and the Docker host, and use an address reachable from those clients.

The jammsen documentation specifically calls for port forwarding or NAT for the ports in its Docker Compose file. A server can be healthy inside the container and still be invisible externally when any one of those layers is missing.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Start the server and read its logs

  1. Change into the directory containing your Compose file and environment file.
  2. Run docker compose config to catch malformed YAML and confirm that the service, port mappings, and volume are present. Avoid displaying the rendered output where it could expose secrets.
  3. Start in the background with docker compose up -d.
  4. Follow startup output with docker compose logs -f the-forest. Look for SteamCMD installation or update messages, Wine startup, configuration generation, and the game-server process reaching its ready state.
  5. Check the container state with docker compose ps. A repeated restart indicates a startup failure, missing variable, permission problem, or incompatible image.

The published projects document the deployment commands and startup workflow, but they do not publish one authoritative health-check command or a performance benchmark. Treat log review, browser visibility, and an actual connection test as operational verification rather than as a substitute for a documented health endpoint.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verify from LAN and from the Internet

LAN test

From a client on the same network, search for the configured server name in the in-game browser or use the game’s normal direct-connection workflow. If it is not listed, confirm that the server process is listening, the internal serverIP is appropriate, and the host firewall permits the three UDP ports.

Internet test

Test from a network that is not the server’s LAN, such as a phone hotspot. Confirm the router forwards to the correct host address and that the ISP is not placing the connection behind carrier-grade NAT. Query visibility can fail even when game traffic works if UDP 27016 is blocked, so test both finding the server and joining it.

Best Value
AWAKENING The Red Leaf Forest + The Golden Age Hidden Object PC Game DVD-ROM
  • Beautiful Hidden Object scenes
  • Lushly detailed and unique landscapes to discover
  • Meet characters that explore the world along with you
  • Use your unique magical ability to solve puzzles and uncover clues

When the server is LAN-only

  • Check that the Compose host port is not bound only to loopback.
  • Use the host’s reachable private address in the game workflow.
  • Verify that client and host VLANs or Wi-Fi isolation rules permit UDP traffic.
  • Do not diagnose a missing public listing until a same-LAN connection works.

Keep saves when the container updates

Stop the service before making a backup or changing image versions: docker compose down. Copy the mounted game directory (or the equivalent named volume) to separate storage, then update the image reference and run docker compose pull followed by docker compose up -d. Because the state lives outside the container’s writable layer, recreating the container should retain saves and generated configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Announce downtime and stop the service.
  2. Archive the persistent directory, preserving file ownership and permissions.
  3. Review the new image’s release notes and confirm its expected mount path.
  4. Pull the tested tag or digest.
  5. Start the service and watch logs until SteamCMD and the game process finish updating.
  6. Join with an administrator account and confirm the expected world, settings, and player data.

Never delete the host directory as part of routine cleanup. Removing the container is normally safe; removing the mounted directory is what destroys the state. If an update fails, stop the new container, restore the backup, and return to the previously tested image reference.

Troubleshooting by symptom

The container exits immediately

  • Read the complete log, not only the last line. Missing token variables, invalid configuration syntax, and Wine errors often appear earlier.
  • Run the image’s documented shell or diagnostic command only if the project provides one; do not assume a particular shell path.
  • Check that the mounted directory is writable and contains no partially generated configuration from a failed first run.
  • Confirm the host architecture is supported by the image.

The server starts but is not visible

  • Confirm all three mappings are UDP and match the configuration values.
  • Check host-firewall rules and router forwarding to the current internal address.
  • Verify serverIP is not bound to an address that exists only outside the container.
  • Test from outside the LAN to distinguish a browser-query problem from a local-network problem.

Players can see it but cannot join

  • Check UDP 27015 first, then Steam communication on UDP 8766.
  • Ensure another service is not already using the host ports.
  • Check that the server password and player limit are what you intended.
  • Review NAT rules for an accidental forward to an old host address.

Saves disappear after recreation

  • Inspect the Compose volume mapping and verify it points to the directory the image actually uses.
  • Check the host directory after shutdown for recently modified save files.
  • Do not switch between images with different state paths without copying data and following that image’s migration instructions.
  • Restore the last backup before attempting further updates.

The token is rejected

Recheck the image-specific variable name and App ID. The documented values differ: Donimax cites 242760, while jammsen lists 556450. Verify the current Steam account-management form and regenerate a token only after confirming which application the selected image expects.

Operate the server securely

  • Use a separate, strong join password and administrator password; never reuse the Steam account password.
  • Restrict the environment file’s permissions and remove tokens from shell history, screenshots, and issue reports.
  • Expose only the documented UDP ports. Do not publish an administrative shell or unrelated container ports to the Internet.
  • Back up saves before every image change and retain at least one copy off the Docker host.
  • Monitor disk usage because SteamCMD updates and log growth can fill the persistent filesystem.
  • Pin versions, test updates on a copy, and keep a rollback tag recorded with the backup.

Operational limits of the published documentation

The available project material specifies the Docker components, volume patterns, configuration fields, ports, and startup commands. It does not provide a universal CPU or RAM minimum, bandwidth requirement, uptime figure, or independent benchmark. Do not advertise a guaranteed player capacity or performance level based solely on the example’s eight-player setting. Measure your own workload after deployment and increase host resources when logs, latency, or operating-system pressure show that the current host is insufficient.

A repeatable deployment checklist

  • Choose a maintained image and record its tag or digest.
  • Confirm its persistent container path and exact environment-variable names.
  • Create the host directory and verify Docker write permission.
  • Create the Steam token using the App ID required by that image, checking Steam’s current instructions.
  • Set the server name, passwords, player limit, VAC choice, and three port values.
  • Map UDP 8766, 27015, and 27016 in Compose.
  • Forward those UDP ports through the router and allow them in the host firewall when public access is needed.
  • Start with docker compose up -d and inspect logs.
  • Test from the LAN, then from an external network.
  • Back up the mounted directory and verify that a stop-and-start preserves the world.

The Bottom Line

A reliable Docker deployment is mostly a matter of preserving state and keeping every network and configuration value aligned: use a maintained image, mount its documented data directory, supply the correct Steam token for that image, publish UDP 8766, 27015, and 27016, and verify the server after every update.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Dedicated ServerDockerGame HostingLinux serverSteamCMDThe ForestWine

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.