RE:NODE

RimWorld Together server setup: download, config, mods

By RE:NODE Team
16 min read


A RimWorld Together server is one small .NET program, one TCP port (25555 by default) and a folder of JSON files. You download the server build for your operating system from the project's GitHub releases, run it once so it writes its configs, and then the first player who connects with the matching client mod generates the planet and is made admin automatically. Mods are not configured by hand in a file: an admin uploads the list from inside the game, and every later player is checked against it on login. The two things that catch people out are both strict equality checks - the client and server versions must match exactly, and so must the mod list - and one security quirk that matters more: whoever joins an empty server first owns it.

This guide covers that setup end to end. If you are still deciding between RimWorld Together and the Zetrith Multiplayer mod, or want the full console command reference and backup rotation, the RimWorld multiplayer guide already covers that ground; this post goes deeper on getting a Together server built, configured, listed and joined.

How RimWorld Together differs from the Multiplayer mod#

The short version, because the choice decides everything else:

RimWorld TogetherMultiplayer (Zetrith / rwmt)
ColoniesOne each, shared planetOne, shared by everyone
ServerStandalone console programNone - a player hosts in-game
Mod ruleServer list, checked on loginIdentical on every machine

The Multiplayer mod runs the same simulation on every player's machine in lockstep, so there is nothing for a server to do and nothing to host. RimWorld Together does the opposite. Each player runs their own colony locally, at their own speed, and the server holds what is shared: the world map, settlements, saves, the market, guilds, sites, roads and the queue of events players send one another. It never simulates a pawn. That is why it needs so little hardware and why it keeps running when nobody is online.

The trade-off is that interaction is asynchronous by default. You trade with, gift to, spy on and raid other players' colonies, and a raid on an offline player is fought against a stored copy of their map. Real-time visits and raids exist too - the client calls it synchronous mode, and the game will not save while you are in it - but the everyday rhythm is separate colonies that affect one another, not one colony played together. If your group wants to sit in the same base, you want the other mod.

The client mod is RimWorld Together on the Steam Workshop (package id nova.rimworldtogether). At the time of writing it targets RimWorld 1.6, depends on Harmony, and declares itself incompatible with RimSaves.

Downloading the right server build#

Server files live on the project's GitHub releases page, not on Steam. Each release carries two families of archive, and picking the wrong one is the first avoidable problem.

ArchiveWhat it is
Server-<os>-<arch>.zipSelf-contained, about 30 MB. Runs anywhere
Slim-<os>-<arch>.zipUnder 1 MB. Needs the .NET 8 runtime installed

The builds come for win-x64, win-x86, linux-x64, linux-arm and linux-arm64. There is no macOS server. Unless you already maintain .NET 8 on the machine, take the Server- build: it bundles the runtime into a single executable called RTServer (RTServer.exe on Windows), so there is nothing else to install and nothing to go out of date underneath it. A Raspberry Pi or an ARM cloud instance is a perfectly reasonable home for a small world, which is what the ARM builds are for.

Release names are dates: 26.10.4.1 is the build from 4 October 2026, and a trailing _(1) marks a re-release of the same version. That version string is what the server compares against every client, character for character, which is why it matters which one you download. The rule is simple: the server and every player must run the same release.

Unpack the archive into a folder of its own. The server writes a dozen subfolders next to itself on first start, and the project warns against putting it anywhere that needs administrator rights - Program Files is a bad idea, and so is running it as root on Linux.

bash
$ mkdir -p ~/rwt && cd ~/rwt$ unzip ~/Downloads/Server-linux-x64.zip$ chmod 755 RTServer$ ./RTServer

The official container image is built from the same source on every release, tagged both latest and the release version. Pin the version tag rather than latest, so that a container restart never upgrades the server behind your players' backs:

bash
$ mkdir -p RWTData$ docker run -it -v "$PWD/RWTData:/Data" -p 25555:25555 \    ghcr.io/rimworld-together/rimworld-together:26.10.4.1

The -it matters. The server reads admin commands from standard input, and without an attached terminal you have a running server you cannot talk to. The project's example compose file sets stdin_open: true and tty: true for the same reason, so docker attach gives you the console.

First start and the first join#

The first launch creates the folder tree, writes every config file with its defaults, and then sits waiting for connections and console input. A fresh server has no world yet. That is deliberate: the planet is generated by a player's game client, not by the server.

  1. Stop the server and edit Configs/ServerConfig.json and Configs/PasswordConfig.json (both covered below). At minimum set a name and a password.
  2. Start it again.
  3. In RimWorld, enable Harmony and RimWorld Together, plus every mod the world will use, and restart the game.
  4. From the main menu open RimWorld Together and use Direct Connect with the server's address and port. On the same machine that is 127.0.0.1 and 25555.
  5. Pick a username and a password. There is no separate registration step: the first login with a new username creates the account.
  6. The server sees there is no world and asks your client for one. Create the planet as you would in single player - seed, coverage, rainfall, temperature, factions - and settle.
  7. The server saves the planet and makes you admin. The console prints a line saying it is giving first-join admin permission to your username.

Two other things follow from this design. Planet settings are fixed by the first join, so decide coverage and the mod list before you create the world, not after - the project's own advice is to have every planned mod enabled at creation. Storyteller, difficulty and scenario can still be changed later. And while the world is being set up, anyone else who connects is turned away with a message telling them to try again later.

Accounts are a username and a password stored on the server, not a Steam identity. If a player forgets their password, their colony is still on disk, but there is no reset flow - an admin has to deal with it, which usually means resetplayer and a fresh start for them. Tell players to treat the password like any other.

The config files that matter#

Everything sits under Configs/, and every file is rewritten on start with any missing keys filled in, so an old file picks up new options after an upgrade. Edit with the server stopped: several files are also saved by the server while it runs, and it will overwrite your change with what it has in memory.

Configs/ServerConfig.json
{  "Name": "RimWorld Together Server",  "Description": "",  "DiscordURL": "",  "SteamWorkshopURL": "",  "ServerImageURL": "",  "IP": "0.0.0.0",  "Port": 25555,  "MaxPlayers": 100,  "Verbosity": 0,  "DisplayChatInConsole": false,  "UseUPnP": false,  "UseClientSave": true,  "EnableServerBrowser": true,  "EnableServerTelemetry": true}

Name, Description, DiscordURL, SteamWorkshopURL and ServerImageURL are what the server browser shows, so fill them in if you want strangers to find you and leave them empty if you do not. Port must be the port players can actually reach, because it is also the port the server advertises to the browser. UseUPnP asks a home router to open the port for you; it does nothing on a hosted server and is best left off on a home network you care about too. UseClientSave decides whether the copy of a colony on the player's own machine is trusted when they log back in - leave it at the default unless you are chasing a specific save problem with the project's help.

The rest of the folder:

FileWhat it holds
PasswordConfig.jsonPassword - empty means no password
BackupConfig.jsonAutomatic backups, interval, how many kept
ChatConfig.jsonMessage of the day, join and leave notices
ModConfig.jsonThe mod list players are checked against
DifficultyConfig.jsonCustom difficulty values
StorytellerConfig.jsonEnforced storyteller
ScenarioConfig.jsonEnforced scenario

Configs/Actions/ holds one file per player interaction - Raid.json, Trade.json, Caravan.json, Aid.json, Event.json, Market.json, Guild.json, Site.json, Road.json, River.json, Pollution.json, Scenario.json and a few more. These are where you switch a mechanic off or make it cost more, and where the protection timers live that stop one player being raided or spammed with events repeatedly. Read them before you open the server: the defaults suit a friendly group and a public server usually wants longer protection and higher costs.

The world itself is not in Configs/. The planet is Assets/WorldValuesFile.json, and the shared state sits beside it: Market.json, Roads.json, Rivers.json, Leaderboard.json, IPBans.json, and folders for users, saves, maps, settlements, sites, guilds and events. That Assets/ folder is the thing to back up. If you lose Configs/ you lose an afternoon; if you lose Assets/ you lose the world.

Ports, firewalls and connecting#

PortProtocolDirection
25555TCPInbound, players connect to it
Browser serviceTCPOutbound, only if telemetry is on

That is the whole list. There is no UDP, no query port and no RCON. Change Port in ServerConfig.json if you need to, and then make sure the firewall, the container mapping and what players type all say the same number - game server ports explained covers why "the process is running" and "the port is reachable" are separate claims to check.

On a home connection you need a port forward from the router to the machine running the server, and you need a public address that is actually yours; carrier-grade NAT makes inbound connections impossible no matter what you forward. Port forwarding vs hosted servers is the honest comparison. On Linux, open the port explicitly:

bash
$ sudo ufw allow 25555/tcp

Players connect from the RimWorld Together menu by Direct Connect with an address and port, through the Server Browser, or with a join code. The client remembers the last server and offers to reconnect to it on the next launch. The connect dialog has a separate field for the server password, which is asked for before the account login.

On RE:NODE, a RimWorld plan comes with one port allocation, which is exactly what this server needs: set Port to the allocated port and players connect to the address the panel shows. Starter is 1 GB of memory and 0.75 of a core, from $5 a month, which is plenty for this server - it is not running the game. See RimWorld server plans for the rest of the ladder.

Mod sync: how the server checks a player's mods#

This is where RimWorld Together is most often misunderstood, because it changed. Older guides describe three columns in a config file - required, optional, forbidden. In current releases ModConfig.json is written by the game, not by you, and the rules are:

  • Required mods must be present on the client.
  • Optional mods may be present or not.
  • Anything not on the list is refused. There is no separate forbidden column any more; a mod the server has never heard of is forbidden by default.
  • Mod settings can be enforced: when the admin turns this on, the settings of each required mod are compared by hash and a player with different settings is refused.
  • Load order can be enforced the same way, by a hash of the whole order. A refused client is offered the server's order and asked whether to apply it.
  • Admins bypass every check, which is useful for testing and is also how an admin ends up "proving" a broken list works for everyone.
  • Nothing is checked until the world exists, so the first join is never refused on mods.

The list is set from inside the game. An admin loads the mods they want the server to use, opens the in-game admin tools (dev mode, then the admin menu in the top right while connected) and uploads the list, choosing which mods are required and which optional and whether to enforce configs. The server saves it and pushes it to everyone online. A non-admin who manages to send a mod list after the world exists is banned on the spot.

When a player is refused, their client shows "Your mod list conflicts with the server" along with the server's list, and in recent versions it can subscribe to and download the missing Steam Workshop mods for them, as long as Steam is running. That automatic download is new and the release notes still call it a first implementation, so for a private group the reliable method is unchanged: publish one Steam Workshop collection, put its URL in SteamWorkshopURL, and tell everyone to subscribe to that and nothing else. Steam Workshop mods on dedicated servers covers why a collection beats a list in a message.

Practical rules that save a world:

  1. Settle the list before the planet is created. Mods that add biomes, factions or world features change generation, and the planet is generated once.
  2. Keep optional for things that touch only the player's own screen - UI, sorting, quality-of-life. Anything that adds items, pawns, factions or events belongs in required, because it travels between colonies in trades, gifts and raids.
  3. Enforce load order once the group is bigger than a few people. RimWorld is very sensitive to order; mod load order explained covers why.
  4. Change the list deliberately. Adding a required mod locks out everyone until they update; removing one leaves its items in colonies and on the market. Announce it, back up first, then upload.

If you need everyone in while you sort a list out, togglemodbypass on the console turns all mod checks off and on again. It is a diagnostic switch, not a setting to leave on.

Finding public RimWorld Together servers#

The in-game Server Browser is the directory. A server with EnableServerBrowser on is listed with its name, description, image, Discord and workshop links, version, player count against MaxPlayers, whether it has a password, its mod list and the names of the players online. Recent releases added a reputation score to the listings and a way to report a server.

What to look at before joining one:

  • Version. It must match your client exactly. The client offers a version switcher on Windows, so you can step to the server's release instead of waiting for the owner to update.
  • The mod list. It is in the listing, so you can see whether you are about to subscribe to eighty mods.
  • The workshop link. A server that publishes a collection is run by someone who has thought about mod sync.
  • Discord. A public world is a community, and its rules about raids, griefing and wipes live there, not in the game.

Outside the game, the project's Discord is where most communities advertise, and server lists on hosting companies' sites are mostly their own customers. There is no official web listing.

For your own server, the browser has a cost worth knowing. With EnableServerTelemetry on, the server makes an outbound connection to the project's browser service, looks up its public IPv4 through api.ipify.org, and sends that address and port along with the details above, including the names of connected players. With EnableServerBrowser off and telemetry on, it still reports but is marked private and not listed. Turn both off if you want the server to make no outbound reports at all; togglebrowser and toggletelemetry do this from the console. The address the browser gets is whatever ipify sees, so a server behind a VPN or a proxy can advertise an address players cannot reach.

Running it day to day#

The console is the admin interface, and the full command list is in the multiplayer guide. A few newer commands are worth knowing:

CommandWhat it does
banip <ip>Bans an address and kicks anyone using it
pardonip <ip>Lifts an IP ban
getipPrints the server's public IPv4
togglebrowserBrowser listing on or off
toggletelemetryBrowser reporting on or off
togglemodbypassAll mod checks on or off
toggleclientsaveFlips UseClientSave

To make somebody else admin, use op <username>. In older releases this took a user ID found with deeplist; current ones take the username. Admins see an admin button in-game and skip the mod checks.

Backups are hourly by default, six kept, written as archives of Assets/, Configs/ and Logs/ to Backups/Servers and per player in Backups/Users. They sit on the same disk as the world, so copy them somewhere else as well - backups that actually restore explains why that matters. On RE:NODE every RimWorld plan includes backup slots stored off the machine and restored with a button, and the config files are edited in the browser file manager or over SFTP.

Updating is a group event. Stop the server, back up, replace RTServer with the new build (your Configs/ and Assets/ stay where they are), start it, and tell everyone to update the client mod, because until they do, every login is refused on version.

Troubleshooting the errors people actually hit#

"This server requires version ..." The client and server releases differ. Update whichever is behind, or use the client's version switcher. Steam updates the client mod on its own schedule, so this is the most common error after any release.

"Handshake failed! Verify client version" Same family of problem, earlier in the connection. Check versions before anything else.

"Your mod list conflicts with the server" A required mod is missing, or the player has a mod that is neither required nor optional. The server's list is shown in the dialog; compare it, including the mods players forget they have, such as a local copy of a workshop mod.

Refused on mod configs or mod order Enforcement is on and the player's settings or order differ. Apply the server's order when offered. For settings, the player needs the same settings files for the required mods, which in practice means the admin shares them.

Connection times out The port is not reachable: process stopped, firewall, wrong port, no port forward, or carrier-grade NAT. Test from outside your network.

"Server is currently being set up! Join again later!" The first player has connected and the planet does not exist yet. Wait for them to finish creating it.

A stranger is admin They joined first. Stop the server, delete Assets/WorldValuesFile.json and the generated folders under Assets/ (or restore a backup from before they joined), set a password, and start again.

FAQ#

Is RimWorld Together free to host?

Yes. The server is free, its source is on GitHub, and it needs no licence or Steam login. Each player needs their own copy of RimWorld and the client mod; the server machine does not.

Can I play RimWorld Together and the Multiplayer mod together?

No. They are separate systems with different networking, and you connect to one or the other. Enable only the one your group is using, because both patch a lot of the game.

Does the server need a powerful machine?

No. It does not run the simulation, so 1 GB of memory and a fraction of a core serve a small group comfortably. Bandwidth and disk for saves and backups matter more than CPU.

Can I move an existing RimWorld Together world to another machine?

Yes. Stop the server, copy the whole folder - Assets/ and Configs/ together - to the new machine, run the same release there, and point players at the new address. Accounts and colonies travel with Assets/.

Why does my server not appear in the browser?

Either EnableServerBrowser or EnableServerTelemetry is off, the server cannot make outbound connections, or the advertised port is not reachable from outside. The console says at start-up whether discovery is enabled.

Do players need DLCs to join?

Only what the server's world and mods need. A player with fewer expansions than the host can run into trouble with content that crosses between colonies, and the client warns about optional DLCs on connect. Agree the DLC set the same way you agree the mod list.