Running an Operation: Harsh Doorstop Server on Linux
Install OHD server on Linux with SteamCMD, create a launch script, configure LinuxServer/Game.ini, and run it as a systemd service.
Prerequisites
You need SteamCMD installed. On Debian/Ubuntu:
sudo apt-get install steamcmd
On other distros, follow the SteamCMD installation guide at https://developer.valvesoftware.com/wiki/SteamCMD.
It is strongly recommended to run the server as a dedicated non-root user:
sudo useradd -m -s /bin/bash ohd
sudo su - ohd
Step 1 — Download the Server Files
Run SteamCMD as your server user:
steamcmd +login anonymous +force_install_dir /home/ohd/OHDServer +app_update 950900 validate +quit
This downloads the dedicated server using AppID 950900 into /home/ohd/OHDServer.
Step 2 — Create the Launch Script
Create /home/ohd/OHDServer/start.sh:
#!/bin/bash
cd /home/ohd/OHDServer
./HarshDoorstop/Binaries/Linux/HarshDoorstopServer \
AAS-TestMap?MaxPlayers=32?BluforNumTickets=200?OpforNumTickets=200 \
-log \
-SteamServerName="My OHD Server"
Make it executable:
chmod +x /home/ohd/OHDServer/start.sh
The Linux executable path is:
HarshDoorstop/Binaries/Linux/HarshDoorstopServer
URL options and dash flags follow the same syntax as Windows. See Operation: Harsh Doorstop Server Configuration for the full options reference.
Step 3 — First Launch and Config Generation
Run the script once to generate the config directory:
/home/ohd/OHDServer/start.sh
After a few seconds the server will create:
/home/ohd/OHDServer/HarshDoorstop/Saved/Config/LinuxServer/
Stop the server (Ctrl+C) and edit Game.ini in that directory.
Step 4 — Configure Game.ini
[/Script/RCON.RCONServerSystem]
bEnabled=True
ListenPort=7779
Password="YourRCONPassword"
MaxActiveConnections=5
MaxAuthAttempts=3
[/Script/Engine.GameSession]
MaxPlayers=32
Step 5 — Open Firewall Ports
sudo ufw allow 7777/udp
sudo ufw allow 27005/udp
sudo ufw allow 7779/tcp
sudo ufw reload
Step 6 — Create a systemd Service
Create /etc/systemd/system/ohd.service:
[Unit]
Description=Operation Harsh Doorstop Dedicated Server
After=network.target
[Service]
Type=simple
User=ohd
WorkingDirectory=/home/ohd/OHDServer
ExecStart=/home/ohd/OHDServer/start.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable ohd
sudo systemctl start ohd
Check status:
sudo systemctl status ohd
View live logs:
sudo journalctl -u ohd -f
Updating the Server
To update, stop the service, run SteamCMD, then restart:
sudo systemctl stop ohd
steamcmd +login anonymous +force_install_dir /home/ohd/OHDServer +app_update 950900 validate +quit
sudo systemctl start ohd