Running an Open Fortress Server on Linux
Full Linux setup guide for an Open Fortress dedicated server — SteamCMD install, directory structure, systemd service, and the critical /mnt/c/ warning.
Running an Open Fortress Server on Linux
Linux is the recommended OS for Open Fortress dedicated servers. The Source engine's srcds_run wrapper handles crash recovery and auto-updates natively, and most hosting environments are Linux-based.
Critical: Never Install to /mnt/c/
If you're setting up on WSL (Windows Subsystem for Linux) or a dual-boot system, do not install the server to /mnt/c/ or any Windows-mounted path. The Source engine requires POSIX-compliant file I/O for certain file operations, and Windows-mounted drives under WSL do not provide this. The result is game mount failures and the server refusing to start correctly.
Always install to a native Linux path, e.g. /home/ofserver/. This applies to both the SteamCMD install and the Open Fortress files.
Step-by-Step Linux Install
Step 1 — Create a dedicated user (recommended)
sudo useradd -m -s /bin/bash ofserver
sudo su - ofserver
Running the server as a dedicated non-root user limits the blast radius of any potential exploit.
Step 2 — Install SteamCMD dependencies
On Debian/Ubuntu:
sudo apt-get install -y lib32gcc-s1 curl
Step 3 — Download SteamCMD
mkdir -p /home/ofserver/steamcmd
cd /home/ofserver/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
Step 4 — Install TF2 DS and Source SDK 2013 MP
Create /home/ofserver/fullupdate.txt:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir /home/ofserver/tf2d
app_update 232250
force_install_dir /home/ofserver/sdk
app_update 244310 -beta previous2021
quit
Run:
/home/ofserver/steamcmd/steamcmd.sh +runscript /home/ofserver/fullupdate.txt
Step 5 — Create steam_appid.txt
echo "243750" > /home/ofserver/sdk/steam_appid.txt
Step 6 — Place Open Fortress files
Download OF from SVN or via the Beans updater (https://beans.adastral.net). Place the open_fortress/ directory at:
/home/ofserver/sdk/open_fortress/
Directory Structure
/home/ofserver/
├── steamcmd/ ← SteamCMD binary
├── tf2d/ ← TF2 Dedicated Server (AppID 232250)
└── sdk/ ← Source SDK 2013 MP (AppID 244310)
├── steam_appid.txt ← contains: 243750
├── srcds_run ← server launch binary
└── open_fortress/
├── cfg/
│ ├── server.cfg
│ └── autoexec.cfg
├── addons/
└── maps/
Launch Script
Create /home/ofserver/start.sh:
#!/bin/bash
cd /home/ofserver/sdk
./srcds_run -console -game open_fortress -port 27015 +ip "0.0.0.0" \
-nohltv -timeout 0 +maxplayers 24 +map dm_crossfire \
+sv_cheats 0 -autoupdate
Make it executable:
chmod +x /home/ofserver/start.sh
Systemd Service
To run the server as a background service that restarts on crash and starts on boot, create /etc/systemd/system/openfortress.service:
[Unit]
Description=Open Fortress Dedicated Server
After=network.target
[Service]
Type=simple
User=ofserver
WorkingDirectory=/home/ofserver/sdk
ExecStart=/home/ofserver/start.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable openfortress
sudo systemctl start openfortress
sudo systemctl status openfortress
View live server output:
sudo journalctl -u openfortress -f
Keeping the Server Updated
Re-run the SteamCMD script when OF or the SDK receives updates:
/home/ofserver/steamcmd/steamcmd.sh +runscript /home/ofserver/fullupdate.txt
Then restart the service:
sudo systemctl restart openfortress
The -autoupdate flag in the launch command handles srcds_run-level restarts between minor OF updates, but does not replace manually re-running SteamCMD for SDK updates.
Beans Updater Alternative
If you prefer the Beans updater over manual SteamCMD, Beans can be run from Linux after installing its dependencies. See https://beans.adastral.net for Linux setup instructions. Beans automates the multi-AppID download and OF file placement in a single command.