Short answer. You can host a Half-Life: Opposing Force server yourself for free: download the Half-Life Dedicated Server (Steam app 90) with SteamCMD and the gearbox mod, start hlds_run with -game gearbox and open UDP port 27015. Or rent a Half-Life: Opposing Force server and skip the install and the firewall.
Players join from their own copy of Opposing Force on Steam, using your server's IP address and port. The server hosts the multiplayer mode; the single-player campaign is not something a server runs.
Checked on 5 November 2026 against the newest Opposing Force update Valve has announced on Steam, the one of 8 October 2019.
This guide uses three sources: Valve's developer documentation for SteamCMD and the Half-Life Dedicated Server (HLDS), the Opposing Force page and update notes on Steam, and the install and start-up settings we run on every Opposing Force server we host. To skip to the rental route, go to Option 2.
What you need
The server software: there is no separate Opposing Force server app. Valve's list of dedicated servers gives Opposing Force the app id of the Half-Life Dedicated Server, 90, with one extra setting: app_set_config "90 mod gearbox". gearbox is also the name of the mod folder; Gearbox Software is the studio that made the expansion. It downloads with an anonymous Steam login and costs nothing.
A machine that stays on: a spare PC, a home server or a cloud virtual machine. This guide uses 64-bit Linux, which is what we run. HLDS is a 32-bit program, so it needs 32-bit libraries.
RAM and CPU: very little. Valve's HLDS page says most modern systems can easily run the server, and that CPU and bandwidth grow with the number of players.
Network: UDP 27015 for the game, reachable from the internet. Valve's HLDS page also lists TCP 27015 for RCON, UDP 27020 for HLTV and UDP 26900 for VAC (Valve Anti-Cheat). Steam lists Opposing Force as VAC enabled.
Players: everyone who joins needs Half-Life: Opposing Force in their Steam library. Steam sells it for Windows, macOS and Linux. The server itself needs no Steam account.
Option 1: host it yourself
These steps are for Debian or Ubuntu. The SteamCMD commands are the ones our install script uses.
Install SteamCMD and run it once on its own. Valve's SteamCMD page says it updates itself on its first run. We let that finish before downloading the server, because on our installs a download started in that same first run can fail.
mkdir -p ~/steamcmd ~/server
cd ~/steamcmd
curl -sSL -o steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
Download HLDS with the gearbox mod. The mod is set with app_set_config before app_update:
Check that Opposing Force really arrived. Valve's SteamCMD page warns that a GoldSrc mod download can bring only the engine files and not the mod, and that you may need several runs. We also see Steam answer "Failed to install app (Missing configuration)" while SteamCMD still ends with "success". So do not trust the last line. Check both:
ls ~/server/steamapps/appmanifest_90.acf
ls ~/server/gearbox/maps
If either is missing, run the step 4 command again. Do not create an empty steamapps folder yourself beforehand: on our installs that alone can trigger the same error. Valve's page also notes that Counter-Strike is always installed as well, so a cstrike folder next to gearbox is expected.
Link the Steam client library into your home folder, where Valve's SteamCMD page puts it. Valve's page says a Linux server can otherwise fail to start with SteamAPI_Init() failed.
Game: allow UDP 27015 on the machine's firewall (for example sudo ufw allow 27015/udp) and forward it on your router to this machine.
VAC: UDP 26900. Our start line passes it explicitly with -sport.
Start it and join
Pick a starting map. The maps the install brought are the .bsp files in ~/server/gearbox/maps. Use a name without the .bsp ending in place of MAPNAME below.
Start the server from the server folder. This is the start line we run, with the values filled in for an 8-player server:
-game gearbox loads Opposing Force instead of Half-Life, and -maxplayers sets the slot count. Valve's own example needs less: ./hlds_run -game gearbox +maxplayers 8 +map MAPNAME. The other options are the ones our panel adds. Run it under systemd or inside screen so it keeps running after you log out.
Watch for the ready line. Our panel treats the server as started when the console prints Connection to Steam servers successful.
Tune it. Your server settings go in server.cfg in the gearbox folder. Create the file if it is not there.
Join it. Players start Half-Life: Opposing Force from Steam and connect to your server's IP address and port.
Update by stopping the server and running the step 4 command again, then the step 5 check. Valve no longer actively updates HLDS; its page says it only receives occasional engine and security updates.
On Windows
Valve documents the same route on Windows: download SteamCMD from https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip, run the step 4 command with steamcmd and a Windows folder, then start the server with hlds.exe -console -game gearbox +maxplayers 8 +map MAPNAME. Allow UDP 27015 through Windows Firewall. We have not run Opposing Force on Windows ourselves.
Option 2: host it on PlayNHost
Renting takes care of the install, the ports and the start line. You still choose your map and your settings.
Pick a plan. Open the Half-Life: Opposing Force server hosting page and compare the plans: WRENCH (8 players), ROACH (16) and DISPLACER (32) at the time of writing. Press Create Server (Customize Plan on DISPLACER) and finish the order. Prices change, so check them on that page.
Wait for the install. The server appears in the panel with the gearbox mod already selected. Its Console prints Connection to Steam servers successful when it is ready.
Choose the starting map. On the Settings tab, under Game Settings, the Map field is the map our start line loads every time the server starts. To switch while it runs, use the Change Map quick task with a map name: it sends changelevel and loads the new map without restarting the server.
Tune the rules. Open the Files tab or connect over SFTP, edit server.cfg in the gearbox folder (create it if it is not there) and restart.
Invite your players. Give them your server's IP address and port from the panel. Each one needs Opposing Force on Steam.
What the panel does for you
The manifest check from step 5 is built in. Our install runs SteamCMD once on its own first, never pre-creates steamapps, and tries the download up to three times. It counts the install as done only when steamapps/appmanifest_90.acf exists, not when SteamCMD says "success". It does not list the gearbox folder for you: if the Console reports a missing map after an install, open the Files tab and check gearbox/maps.
The start line is built for you, with your server's own port in -port, VAC on 26900 and your plan's slot count in -maxplayers. The Game Name field holds gearbox: it is fixed for this product and you cannot change it.
Plain HLDS, nothing added. The server runs Valve's HLDS with the gearbox mod, without Metamod or AMX Mod X. You have full SFTP access to the gearbox folder if you want to try your own setup.
Auto Update is off by default, so the server keeps the build it was installed with. It sits under Show advanced in Game Settings. Switch it on and the server asks Steam for a newer HLDS build every time it starts.
Self-hosting or renting: an honest comparison
Cost: the server software is free and Opposing Force needs very little hardware, so modest hardware is enough. You pay in power, bandwidth and your time. Renting is a monthly fee set by the plan.
Uptime: a home server is up only while your PC, power and internet are. A rented server runs on the host's hardware.
Exposure: at home, players connect to your public IP address and you look after the firewall and the router. A rented server keeps your home IP out of it.
Setup: self-hosting means the command line, 32-bit libraries, port forwarding and checking that the gearbox files really downloaded. Renting means choosing a map.
Control: self-hosting gives you the whole machine. On our servers you still get the Files tab and SFTP for server.cfg, maps and your own files.
We use cookies to keep the site working, to understand how it is used, and to measure our marketing. You can accept all, accept essential cookies only, or choose per category.We use cookies to keep the site working, to understand how it is used, and to measure our marketing. They are on by default here. You can switch off anything you do not want.Read our privacy policy