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:
- Run
./halo --server --keygen. It writespublisher.keyand prints your public key and key id. - Join the master server's Discord and use the bot's
/applycommand. It gives you a nonce. - Sign it with
./halo --server --sign <nonce>and paste the signature into the application form. - Once an approver accepts it, set
server.public = trueand 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.