A modded Valheim server for a friend group comes down to five steps done in order: agree on a short list of mods, build one r2modman profile that everyone imports, install BepInExPack Valheim on the server and copy the profile's plugins and configs onto it, check the server log before anyone joins, and then change nothing without changing it for everyone at once. A set of 10-20 well-maintained mods runs comfortably in 4-6 GB of memory, starts in a minute or two, and stays stable for months - provided one person owns the list. Almost every broken modded server is not a broken mod. It is three slightly different copies of the same mod list.
This post walks through the whole thing as it is actually done, from an empty server to a group of six playing on the same set, with the decisions that keep it working after the first evening.
Decide what kind of modded server you are building#
Before picking a single mod, settle two questions as a group, because they decide everything that follows.
How far from vanilla do you want to go? There are roughly three tiers:
- Quality of life only. Crafting from nearby chests, sorting and quick-stacking, a better building camera, bigger inventories. The game plays the same; the chores shrink. This is the lowest-risk set and survives patches best.
- Quality of life plus rules. Everything above, plus mods that change balance: planting anything anywhere, adjusted carry weight, portal rules, creature levels. Still recognisably Valheim, but now the server has to enforce settings.
- Content. New items, enchantments, creatures, biomes or classes. Epic Loot, Valheim Legends and the large creature packs live here. These are the mods that make a world feel new, and they are also the ones that take longest to update after a game patch.
A friend group starting out is usually happiest in the second tier with one content mod at most. You can add more later; removing a content mod from a world that already uses it is much harder than never adding it, because the pieces and items it added stop existing.
Is anyone on Xbox or Game Pass on console? Console players cannot install mods. If any of your mods must be on the client, the server is PC-only, whatever the crossplay flag says. Game Pass on PC is a different case: it can run mods in principle, but r2modman and most guides assume the Steam copy, so plan on everybody playing through Steam unless someone is willing to work out their own setup.
Write the answers down in your Discord channel. "Steam only, QoL plus Plant Everything and Epic Loot, Dave owns the list" is a perfectly good spec, and it settles arguments before they start.
Picking 10-20 mods that will still work next month#
Thunderstore is where Valheim mods live, and every package there has a name in the form Author-ModName, a version, a changelog and a "last updated" date. For a group server, judge each candidate on four things before you judge how fun it looks:
- When was it last updated? A mod that has not been touched since before the last major Valheim update is a risk. It may still work - plenty of small mods do - but you will not know until patch day.
- Where does it have to be installed? The mod page says "server and clients", "client only" or "server only". This matters more than anything else on the list.
- What does it depend on? Most content mods need Jotunn, and Jotunn needs HookGenPatcher. Dependencies are fine; long chains of them are more things that must update before you can play.
- Does it overlap with something already on the list? Two mods that both change crafting, inventory or stamina will both try to patch the same game code. Pick one.
Here is a realistic starting set for a group in the second tier, the sort of list that comes out of one evening of arguing. Author names are as published on Thunderstore; check each page for current install notes, because "where it runs" occasionally changes between versions.
| Mod | Author | Does | Where it runs |
|---|---|---|---|
| BepInExPack Valheim | denikson | The mod loader | Server and clients |
| Jotunn | ValheimModding | Library many mods need | Server and clients |
| PlantEverything | Advize | Plant berries, mushrooms, trees | Server and clients |
| AzuCraftyBoxes | Azumatt | Craft from nearby chests | Server and clients |
| ComfyGizmo | ComfyMods | Finer building rotation | Client only |
| Epic Loot | RandyKnapp | Magic items, enchanting | Server and clients |
| ServerDevcommands | JereKuusela | Admin commands on a server | Clients, server for extras |
| Discord Connector | nwesterhausen | Join, leave, death messages | Server only |
That is eight entries, and with their dependencies the profile will list twelve or more packages. Add a handful of client-side interface mods that individual players like, and you are in the 10-20 range without trying.
A few rules of thumb from running these sets:
- Do not add every QoL mod at once. Each one is small, but twenty of them is twenty authors who all need to update after a patch. Pick the five chores your group actually complains about.
- Avoid the old abandoned versions. ValheimPlus in particular has existed in several forks over the years; only the maintained community fork is worth installing, and it overlaps with many smaller mods, so it is usually instead of them rather than as well as them.
- Client-only mods are a personal choice. They do not need to be in the shared profile at all. Keeping the shared list to things that must match makes everyone's life easier; players can add their own client-only extras on top, at their own risk.
Quality of life mods for groups goes through the popular QoL picks one by one, and Epic Loot on a server covers the biggest content choice in detail.
Building the shared profile in r2modman#
One person builds the profile. Everybody else only imports it. That single rule prevents most of the problems in the rest of this post.
- Install r2modman, choose Valheim, and create a new profile with a name that carries a date or number, for example
Longship-2026-10. When someone is on an old copy, the name gives it away. - Install each mod from the online tab. Dependencies arrive automatically - after the first content mod you will see BepInExPack Valheim, Jotunn and HookGenPatcher appear.
- Click "Start modded" and get to the main menu once. This is the step people skip, and it matters: it is the first start that writes every mod's config file into
BepInEx/config. An export taken before this has no configs in it. - Edit the settings the group agreed on through r2modman's config editor, or in the files directly.
- Make a throwaway world, play for ten minutes, and check every mod does what it says. Craft something from a chest, plant something odd, open the Epic Loot enchanting table.
- Remove anything you were only trying out, then export.
r2modman can export a profile as a short code or as a .r2z file. The code is convenient for the first install, but codes are uploaded to a temporary sharing service and stop working after a while. The .r2z file is a zip holding the exact mod list with versions plus a copy of the configs, and it does not expire. Post both in your group channel and pin the file. r2modman profiles for groups covers the export formats and version pinning in more depth.
Sizing the server for a modded group#
Mods cost memory and start-up time more than CPU. A vanilla Valheim server for a group is light; the same world with a content mod or two, and a dozen QoL mods, needs noticeably more headroom, mostly because of the extra prefabs, items and configs loaded at start.
| Setup | Players | RAM | CPU | Typical start time |
|---|---|---|---|---|
| Vanilla | 2-6 | 2-3 GB | 1-1.5 cores | Under a minute |
| QoL set, 10-15 mods | 2-6 | 3-4 GB | 1.5-2 cores | About a minute |
| QoL plus content, 15-20 mods | 4-10 | 4-6 GB | 2 cores | 1-3 minutes |
| Heavy content, world-gen mods | 6-10 | 6-8 GB | 2+ cores | Several minutes |
These are starting points, not promises. The real number depends on which mods and on how much of the world has been explored and built on, so watch the memory graph for the first couple of weeks and move up only if it actually runs close to the limit. How much RAM a Valheim server needs explains where the memory goes on a long-lived world.
On RE:NODE the Valheim line runs from 2 GB to 8 GB, and moving up a tier changes the limit on the same server, so starting at 4 GB and moving later costs nothing but a restart. The console graphs memory and CPU against the plan's limits, which is the easiest way to see whether the modded set fits.
Installing BepInEx and the mods on the server#
r2modman manages a game client. It does not install anything on a dedicated server, so this part is done by hand. It is not hard, because a profile folder is just a BepInEx folder.
- Stop the server. If the world already exists, take a backup first.
- Install BepInExPack Valheim on the server. Download it from Thunderstore, open the archive, and upload the contents of the
BepInExPack_Valheimfolder - not the folder itself - into the server root, next tovalheim_server.x86_64. You should end up withBepInEx/,doorstop_libs/,unstripped_corlib/andstart_server_bepinex.shbeside the server binary. - Make the server start through BepInEx. On a Linux server you run yourself, that means editing
start_server_bepinex.shwith your server name, world and password, and launching it instead of the vanilla script. On a panel host, BepInEx is switched on with environment variables or a BepInEx start option; the BepInEx server guide lists exactly which variables the script sets. - Start once, then stop. This creates the server's own
BepInEx/configandLogOutput.log, and proves the loader works before you add any mods. - Copy the mods from the profile. In r2modman, open the profile folder (Settings, then "Browse profile folder"). Zip
BepInEx/plugins,BepInEx/patchersandBepInEx/config, upload the zip into the server'sBepInExdirectory, and unpack it there. Do not copyBepInEx/coreor any Windows files such aswinhttp.dll; the server keeps its own. - Remove client-only mods from the server's
pluginsfolder. In the example set that means ComfyGizmo. Most client-only mods are harmless on a server, but some throw errors in a process with no screen or camera, and every unnecessary mod is more start-up time. - Start the server and read the log.
A healthy start lists every mod with its version:
[Info : BepInEx] Loading [Jotunn 2.x.x][Info : BepInEx] Loading [PlantEverything 1.x.x][Info : BepInEx] Loading [Epic Loot 0.x.x][Message: BepInEx] Chainloader startup completeThe version numbers above are placeholders - yours are whatever the profile installed. To compare the server's list with a client's quickly, pull the loading lines from both logs:
# From the server root$ grep -o 'Loading \[[^]]*\]' BepInEx/LogOutput.log | sort > server-mods.txtDo the same with the LogOutput.log in the profile's BepInEx folder after one modded start on a PC, and diff the two. Apart from the client-only mods you removed, they should be identical.
On RE:NODE the file manager unpacks a zip in place, so step 5 is one upload; SFTP is there for anyone who prefers a desktop client - SFTP and the file manager has the connection details. Mods are whatever you upload, with no approved list to work within.
Configs: which settings live where#
Config files are where groups drift apart without noticing, because a mismatched setting rarely produces an error. It just means one person's carry limit is different from everyone else's.
Mod settings fall into two kinds:
- Server-synced settings. Mods built on Jotunn's config sync or on the ServerSync library push these from the server to each client on connect. The server's file is the truth; a client's edits are ignored or overwritten. Many such mods have a lock setting, often named
Lock Configuration, that makes this strict. - Local settings. Everything else - keybinds, interface options, and settings in mods that do not sync at all. These are per machine.
The working rule for a group: change synced settings on the server and restart; change local settings in the profile, export a new version, and have everyone re-import. Never ask people to hand-edit files to match, because somebody always misses one. The ServerSync and config enforcement post explains how to tell which kind each setting is.
Each mod writes its own file in BepInEx/config, named after its plugin ID, and the shape is always the same - sections, then keys with their description and default written above them. A synced mod with a lock setting typically looks something like this (the file name, section and key here are illustrative):
## Settings file was created by plugin ModName[1 - General]## If on, the configuration is locked and can be changed by server admins only.# Setting type: Toggle# Default value: OnLock Configuration = OnKey names and sections differ between mods and versions, so open the generated file on your own server rather than copying keys from a forum post.
The first join#
Do the first join as a short, scheduled thing - fifteen minutes on a weekday evening - rather than the start of a long session. Problems surface in the first five minutes.
- The server goes up first. Start it, wait for
Chainloader startup completeand then the line showing the world loaded and the session active. A modded server can take a couple of minutes; do not restart it because it seems slow. - One person joins first. Ideally the profile owner, on the exact exported profile. Join by IP rather than through the community list - it is faster and removes one variable. Join by IP and Steam favourites covers every way in.
- Check the mods are live in game. Plant something, craft from a chest, check whatever your content mod adds. If it works for one player, it will work for the rest on the same profile.
- Then everyone else imports and joins. Import the
.r2zor code, click "Start modded", join by IP. - Add admins. Put the profile owner's SteamID64 in
adminlist.txtin the save directory; read it from the server log where every connection is recorded. The list files explained covers the format.
If you have no console players, consider turning crossplay off. A modded server works with it on, but nothing is gained: traffic goes through the PlayFab relay instead of straight to the server, and the list files expect platform-prefixed IDs instead of plain SteamIDs. RE:NODE ships Valheim with crossplay on, since that is what most vanilla groups want; it is a launch setting, so look for it among the variables on the Startup tab.
Write a short pinned message for the group, something like this:
Server: 203.0.113.10:2456 Password: in the pinned message aboveProfile: Longship-2026-10.r2z (pinned) Do not press "Update all"Problems: post the error text and your LogOutput.log in #serverUpdating without breaking the group#
The server stays stable as long as the mod list changes in one place and reaches everyone at once. The routine:
- The profile owner decides an update is worth doing - a bug fix, a new mod the group voted for, or a game patch.
- Back up the server, including the whole
BepInExfolder, not just the world. - Update the profile, start modded, test on a throwaway world.
- Export a new profile with a new name, and post it.
- Stop the server, replace
plugins,patchersandconfigfrom the new profile, start it, check the log. - Everyone imports the new profile before they next play.
Do not update mods mid-week one by one as notifications appear. Batch changes into a monthly "maintenance evening" unless something is actually broken.
Game patches are a separate case, because the game updates itself through Steam and you cannot stop that on your friends' PCs. The modded server has to stay on the old build until the mods catch up, and that waiting game has its own routine - a modded Valheim server after a game patch walks through a full patch day.
Backups for a modded world#
A modded world needs two things backed up together: the world files (.db and .fwl in worlds_local) and the BepInEx folder with its plugins and configs. A world restored without the mods it was played with loses whatever the missing mods added, and a mod folder without its configs is a different game.
- Take a backup before every change to the mod list, before every game update, and on a daily schedule at an hour nobody plays.
- Keep the last known-good backup from being rotated away while you sort out a problem.
- Shorten
-saveintervalto around 600 seconds on a busy modded world. A modded server crashes more often than a vanilla one, and the save interval decides how much an unclean stop loses.
On RE:NODE every Valheim plan has backup slots, a backup restores with one button, and a backup can be locked against rotation, which is the right thing to do to the last working mod set before a risky update. The Schedules tab can run the daily backup automatically. Valheim server backups and world corruption covers what the in-game backups do and do not protect.
Troubleshooting the first night#
A player is kicked straight after connecting. Almost always a mod version mismatch reported by Jotunn or ServerSync. The message names the mod; the player is on an old or edited profile. Have them re-import the pinned .r2z. Mod version mismatch kicks explains how to read each message.
"Incompatible version". That is the game, not a mod: the player's Valheim and the server's are on different builds. On a modded server this usually means a patch landed. See the patch-day post before you update anything.
Mods do nothing on the server. The server is starting through the vanilla script, so BepInEx never loads. If BepInEx/LogOutput.log is missing or not updated since the last start, that is your answer.
The server starts, then restarts over and over. A plugin is crashing the process, often a missing dependency or a client-only mod. Read the end of LogOutput.log; BepInEx log troubleshooting covers the usual lines. On RE:NODE three crash restarts in an hour put a warning on the server page and open a ticket, so a loop gets noticed even if you are asleep.
Settings differ between players. A local setting in a mod without sync. Change it in the profile and re-share, or accept it as personal.
One player lags everyone near them. Not a mod problem; it is Valheim's zone ownership and that player's connection. Valheim performance and lag explains why.
FAQ#
How many mods is too many for a friends' server?
There is no fixed number, but the cost of mods is maintenance, not performance. Ten to twenty mods is manageable for one person to keep up to date; at forty, patch days stretch into weeks because you are waiting on forty authors. Trim anything nobody would notice missing.
Do my friends need to install anything if a mod is only on the server?
No. Server-only mods, such as a Discord bridge, need nothing on the client. They can even join without BepInEx at all, as long as the server has no mods that also require a client copy.
Can we add a mod halfway through a world?
Yes, for most mods: add it to the profile, re-share, put it on the server, and restart. Content mods that change world generation only affect zones nobody has explored yet. Removing a content mod later is the risky direction, since items and pieces it added stop loading.
Should we use Thunderstore Mod Manager or Gale instead of r2modman?
Any of them works. Thunderstore Mod Manager is built on r2modman, and Gale can import r2modman codes and files. The only thing that matters is that one person builds the profile and everyone imports that exact export.
Can a Steam Deck player join the modded server?
Usually yes, because the Deck runs the Steam version of the game and r2modman has a Linux build. Setup is fiddlier than on Windows, so get that player through the first join before the group's first proper session.
What happens to modded items if someone joins without mods?
If the server requires a mod on clients, a player without it is usually refused by the version check. If not enforced, the client cannot display items it does not know, and those items can be lost from that player's inventory. Keep everyone on the profile.


