---
title: "How to Install Don't Starve Together Server Mods"
description: "Installing Don't Starve Together server mods: the two files and two folders that have to agree, per shard."
url: "https://www.gameserverkings.com/knowledge-base/dont-starve-together/dont-starve-together-server-mods/"
category: "Don't Starve Together"
category_url: "https://www.gameserverkings.com/knowledge-base/dont-starve-together/"
published: "2026-09-12T06:30:43.134Z"
updated: "2026-09-12T06:35:54.872Z"
source_format: "markdown"
site: "GameServerKings"
---

# How to Install Don't Starve Together Server Mods

Installing a mod on a Don't Starve Together server takes **two files in two different folders**, and they do two different jobs. One downloads the mod. The other turns it on. Do only the first and the mod arrives on disk and never loads — which is exactly what happens to most people the first time.

> [!NOTE] Checked against Don't Starve Together dedicated server build **747465**
> The file contents, paths and log messages quoted below are read straight out of Klei's dedicated server (Steam app `343050`), whose shipped scripts Klei invite people to read. Verified 12 September 2026. Klei publish no separate guide to server mods; the files document themselves.

| File | Where it lives | What it does |
|---|---|---|
| `dedicated_server_mods_setup.lua` | The server install's own `mods` folder, next to `bin64` | Downloads mods from the Workshop on boot |
| `modoverrides.lua` | Inside **each** shard folder — `Master/` and `Caves/` | Enables mods and sets their options |

Note that they are nowhere near each other. `dedicated_server_mods_setup.lua` is part of the game installation; `modoverrides.lua` is part of your cluster configuration, alongside `server.ini`. On a [hosted Don't Starve Together server](/games/dont-starve-together/) both are reachable from the File Manager, and the paths below are the ones you will see there.

## Step 1: tell the server what to download

Open `mods/dedicated_server_mods_setup.lua`. Klei ship it with instructions in the comments:

> There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.
> ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
> The Workshop id can be found at the end of the url to the mod's Workshop page.

So the ID is the number after `?id=` in the Workshop URL, and it goes in as a **string**:

```lua title="mods/dedicated_server_mods_setup.lua"
ServerModSetup("350811795")
ServerModSetup("375859599")
ServerModCollectionSetup("379114180")
```

`ServerModCollectionSetup` takes a collection's ID instead and pulls everything inside it. Downloads happen at startup, so a restart is what installs a mod, and each one lands in `mods/workshop-<id>`.

> [!CAUTION] A syntax error here stops the server, it does not skip the mod
> The loader prints `#ERROR: Failure to load dedicated_server_mods_setup.lua:` followed by `#Shutting down`. A stray quote or a missing bracket in this file means the server will not boot at all, so check the console after your first edit.

## Step 2: turn the mods on, once per shard

Downloading a mod does not enable it. On a dedicated server the mod index starts by switching everything off — Klei's code comment says it plainly: *"We assume the mods will be re-enabled by the `modoverrides.lua` file"*. That file is read from each shard's own folder, so a mod enabled only on Master is simply not running in Caves.

```lua title="Master/modoverrides.lua"
return {
  ["workshop-350811795"] = { enabled = true },
  ["workshop-375859599"] = {
    enabled = true,
    configuration_options = {
      language = "english",
      max_stack = 40,
    },
  },
}
```

The key is the literal string `workshop-` followed by the Workshop ID. `enabled` and `configuration_options` are the two fields Klei's own code writes, so that shape is authoritative. Copy the finished file into `Caves/modoverrides.lua` as well unless you deliberately want the two worlds running different mods.

There is one special key: `client_mods_disabled`, which takes a boolean rather than a mod table and blocks client-side mods on the server.

## Getting the configuration options right

The names that go in `configuration_options` come from the mod itself, in its `modinfo.lua` under `configuration_options`. Use the exact `name` field, not the label shown in the mod's menu.

> [!WARNING] A mistyped option name fails silently
> The server walks your overrides looking for a matching option name, and does nothing at all when it fails to find one — no warning, no error, and the mod quietly keeps its default. The only confirmation you get is the positive one, so watch the console for lines reading `Overriding mod <name>'s option <option> with value <value>`.

Values are not validated either. You can set an option to something the mod never offers, and the mod will receive it.

## Reading the console

Four log lines tell you almost everything:

| Line | Meaning |
|---|---|
| `SUCCESS: Loaded modoverrides.lua` | The file parsed |
| `ERROR: Failed to run code from modoverrides.lua` | Valid Lua, but it did not return a table |
| `Warning: modoverrides.lua is empty, or is failing to return a table.` | Nothing was enabled |
| `applying configuration_options from modoverrides.lua to mod <name>` | Options reached the mod |

The most common mistake behind the middle two is forgetting `return` at the start of the file.

## Updates, and why players get kicked

Mods are fetched at boot, so an update only lands when the server restarts. A server left running for weeks will drift behind the Workshop, and DST does not treat that as cosmetic. Klei's own player-facing message:

> The server is running mods with an old version. The server owner must update the mods for new players to join.

Players see that under the heading "Disconnected Due To Missing Mods". If new joiners suddenly cannot connect to an otherwise healthy server, an out-of-date mod is the first thing to check — and a [scheduled restart](/knowledge-base/general/how-to-setup-schedules/) is the cheapest prevention.

A related message covers mods that are not on the Workshop at all: "This server requires mods that are not available on the Steam Workshop. You will need to manually download the missing mods." Hand-installed mods therefore need to be hand-installed by every player too, which is why Workshop IDs are worth insisting on.

## Common Questions

### Where do I put mods on a Don't Starve Together server?

You do not upload them. List the Workshop IDs in `mods/dedicated_server_mods_setup.lua` and the server downloads them on the next boot, into `mods/workshop-<id>`. Then enable them in `modoverrides.lua` in each shard folder.

### Why is my mod downloaded but not working?

Because downloading and enabling are separate. Check that `modoverrides.lua` exists in the shard folder, returns a table, and uses the `workshop-<id>` key form.

### Do I need modoverrides.lua in both Master and Caves?

Each shard reads its own copy, so anything you want active underground has to be listed in `Caves/modoverrides.lua` too. Keeping the two files identical is the simplest way to avoid surprises.

### How do I find a mod's Workshop ID?

It is the number at the end of the Workshop page URL, after `?id=`. Klei's own example in the file is `http://steamcommunity.com/sharedfiles/filedetails/?id=350811795`.

### Can I use a Steam Workshop collection?

Yes — `ServerModCollectionSetup("<collection id>")` downloads every mod in a collection. You still enable each one individually in `modoverrides.lua`.

### Do server mods update automatically?

Only at startup. Restart the server to pick up Workshop updates; leaving it running with stale mods eventually blocks new players from joining.

## What to Read Next

- [Don't Starve Together Dedicated Server Setup](/knowledge-base/dont-starve-together/dont-starve-together-dedicated-server-setup/) — the cluster folder these shard files live in.
- [Don't Starve Together World Settings and How to Regenerate a World](/knowledge-base/dont-starve-together/dont-starve-together-world-settings/) — the other pair of per-shard Lua files.
- [Don't Starve Together Console Commands](/knowledge-base/dont-starve-together/dont-starve-together-console-commands/) — remote mode, admin lists and the `c_` commands.
- [How to setup Schedules](/knowledge-base/general/how-to-setup-schedules/) — a nightly restart keeps mods current.
- [How to upload files via SFTP](/knowledge-base/general/how-to-upload-files-via-sftp/) — for editing Lua on the server.

---

Made with 💜 by GameServerKings
