Hosting

Running a dedicated server

Host games around the clock and get listed in the server browser.

halo --server runs the game as a host with no window, no sound and no local player. People join it from the LAN, with its invite link, or from the server browser. The release has a halo-server script that does the same thing.

The server needs the game data (maps/) just like the game does. Without maps/ui.map it exits straight away with code 2.

./halo --server
HALO_SERVER_ROTATION="bloodgulch:ctf, prisoner:slayer+score=25" ./halo --server
./halo --server --config /srv/opence/config.toml

On first start it writes its server.* settings into config.toml and creates a web password if there isn't one.

Getting listed in the server browser

Servers publish to the master server with a signed key, so you need to be approved once:

  1. Run ./halo --server --keygen. It writes publisher.key and prints your public key and key id.
  2. Join the master server's Discord and use the bot's /apply command. It gives you a nonce.
  3. Sign it with ./halo --server --sign <nonce> and paste the signature into the application form.
  4. Once an approver accepts it, set server.public = true and your server shows up in the list within a few seconds.

Ready-made setups

The repository's deploy/ folder has configs for systemd, Docker, Helm, Pterodactyl, PufferPanel and MCSManager.

Useful commands

Standard input, init.txt and the server's web page all take the same commands, including sv_status, sv_players, say, kick, ban <player> 2h <reason>, sv_map, sv_map_next and sv_reload.

Licence note

OpenCE is under the AGPL. If you change the game and let people play your version over a network, you need to offer them the source of your changes.