avivace / ror2-server

Host your own Risk of Rain 2 dedicated server. No technical skills required. Runs everywhere.
https://hub.docker.com/r/avivace/ror2server
GNU General Public License v3.0
170 stars 29 forks source link
docker docker-image game-server risk-of-rain risk-of-rain-2 steamcmd wine xvfb

Risk of Rain 2 dockerized server

Docker Pulls

[!CAUTION] This project relies on the official 'Risk of Rain 2 Dedicated Server' Steam app. Among all the other embarassing things Hopoo/Gearbox/Take-Two did to ruin this game, they also stopped updating the dedicated server in May 26, 2022. The only way to join an hosted dedicated server now is to downgrade.

Host your Risk of Rain 2 dedicated server anywhere using Docker. Powered by Wine and the X virtual framebuffer to seamlessy run on Linux machines.

Guide on Steam.

Quickstart

You need Docker installed. On Debian systems, you can use the bootstrap_debian.sh script to set up Docker and some other dependencies.

Run the Docker container with:

docker run --rm -p 27015:27015/udp avivace/ror2server:latest

Players need to start Risk of Rain 2, open the console pressing CTRL + ALT + ` and insert this command:

connect "<SERVER_IP>:27015";

Replace SERVER_IP with the public IP of the server running the Docker Image.

By default, the server has no password and runs on UDP port 27015. Make sure you have crossplay disabled before joining.

Customize configuration

If you want to start the server on port 25000 with password hello:

docker run -p 25000:25000/udp -e R2_SV_PORT=25000 -e R2_PSW='hello' avivace/ror2server:latest

Players will then join with:

cl_password "hello"; connect "<SERVER_IP>:25000";

You can pass these additional environment variables to customise your server configuration:

You shouldn't need to change R2_QUERY_PORT and R2_SV_PORT if you are not planning on hosting more server instances on the same machine/IP.

Append one or more -e VARIABLENAME=VALUE to your Docker command to set environment variables.

To check if your server is correctly getting announced to the Steamworks network, you can use this API call:

curl http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001/?format=json&addr=<IP_ADDRESS>

Known Issues

Be aware that this version suffers from some known issues, probably caused by the executable not running natively on Windows. You should probably ask the developers for a proper Linux build.

Since the RoR2 Server will be downloaded each time the docker container is started, there could be breaking changes which require more up to date versions of wine in order to work correctly. In this case you can try forcing the installation of bleeding-edge wine versions by running:

# wine-devel
docker run ${your_parameters} -e WINE_REPLACE_REL="devel" avivace/ror2server:latest
# wine-staging
docker run ${your_parameters} -e WINE_REPLACE_REL="staging" avivace/ror2server:latest

Mod support

To install and enable mods server side, you'll need a directory containing:

Supposing your mod directory is in /path/to/directory, you can start your server as follows:

docker run -p 27015:27015/udp -v /path/to/directory:/root/ror2ds-mods -e R2_ENABLE_MODS=1 avivace/ror2server:latest

Beware that some mods requires the client to also have them installed.

FAQ

Can I run this on a VPS?

Yes, any Linux box works. For decent performance, you need 3 GB of free space and at least 2 GB of RAM.

Server crashes with "NullReferenceException"

Disable crossplay.

Server is stuck at "Unloading unused Assets"

That line is usually the last one of the initialization process. It usually means your server is working correctly, that is not a blocking error. If you can't connect to your server at that point, it's probably a network issue.

Server is stuck at "Could not load config ..."

If you see something like this:

Could not load config /Config/server_pregame.cfg: Could not find file "Z:\home\steam\ror2-dedicated\Risk of Rain 2_Data\Config\server_pregame.cfg"

Be aware that these kind of warning messages are non blocking, they are just warnings and the server initialization will proceed as normal.

Acknowledgements

Thanks to InfernalPlacebo and Vam-Jam.

Built by Manuele, Davide Casella, Fabio Nicolini, Antonio Vivace.