Don't Starve Together: установка модов на сервер
Ванильный DST быстро надоедает, если играть большой компанией дольше пары недель — хочется больше слотов в инвентаре, менее злого баланса голода зимой или просто пачку косметических скинов на всех. Проблема в том, что на dedicated-сервере моды ставятся не так, как в обычном клиенте с одной кнопкой "Subscribe" в Steam — тут два отдельных файла, которые легко перепутать местами, и именно на этом спотыкается почти каждый новичок. Разберём весь путь от ID мода в Workshop до рабочего сервера с синхронизированными версиями у всех игроков.
Содержание
Два файла, которые отвечают за моды
На сервере DST моды настраиваются через связку из двух Lua-файлов, и у каждого своя зона ответственности — путать их не стоит:
dedicated_server_mods_setup.lua— лежит в папке установки самого сервера (~/dst_server/mods/dedicated_server_mods_setup.lua) и отвечает только на один вопрос: какие моды вообще нужно скачать с Steam Workshop. Этот файл общий для сервера целиком, не привязан к конкретному кластеру или шарду.modoverrides.lua— лежит внутри папки шарда (Master/modoverrides.luaиCaves/modoverrides.lua) и отвечает за то, какие из уже скачанных модов включены в конкретном мире, а также за их настройки (configuration_options).
Логика такая: сначала мод должен появиться на диске (через первый файл), потом его нужно явно включить для конкретного шарда (через второй). Скачанный, но не включённый в modoverrides.lua мод просто лежит мёртвым грузом и не влияет на игру — это первая частая причина "я всё поставил, а мод не работает".
Если сервер ещё не поднят с нуля, сначала пройдите базовую установку — она описана в статье как поднять сервер Don't Starve Together, там же про структуру папок ~/.klei/DoNotStarveTogether/, которая понадобится и здесь.
Находим ID мода в Steam Workshop
Каждый мод в Workshop имеет числовой ID — он и есть тот идентификатор, который сервер использует для скачивания. Взять его просто: открываем страницу мода в Steam Workshop и смотрим на URL в адресной строке.
https://steamcommunity.com/sharedfiles/filedetails/?id=1467214795
Число после ?id= — это и есть ID мода, в примере выше 1467214795. Никаких дефисов, префиксов и кавычек на этом этапе не нужно — просто голое число, запишите его отдельно для каждого мода, который планируете ставить.
Если ставите не один мод, а сразу целую подборку (коллекцию Workshop от кого-то из комьюнити), у коллекции тоже есть свой ID — работает похожим образом, но добавляется в конфиг другой функцией (см. ниже).
Поднять сервер Don't Starve Together за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверdedicated_server_mods_setup.lua: что скачивать
Открываем файл на сервере (если его ещё нет — создаём вручную, обычно он появляется автоматически после первой установки через SteamCMD с парой закомментированных примеров внутри):
nano ~/dst_server/mods/dedicated_server_mods_setup.lua
Добавляем строку ServerModSetup(...) на каждый мод:
ServerModSetup("1467214795")
ServerModSetup("376333686")
ServerModSetup("1145253161")
Если ставите целую коллекцию Workshop одним заходом — используйте ServerModCollectionSetup с ID коллекции вместо перечисления каждого мода отдельно:
ServerModCollectionSetup("2495620550")
Это только список "что качать" — на этом этапе моды ещё ни на что не влияют, и даже не появятся в игре, пока не пройдёт следующий шаг.
Скачиваем моды: -only_update_server_mods
DST использует не голый SteamCMD-загрузчик воркшопа, а встроенный в саму игру механизм обновления модов сервера. Останавливаем сервер (если он уже запущен) и запускаем бинарник с флагом -only_update_server_mods:
cd ~/dst_server/bin64
./dontstarve_dedicated_server_nullrenderer_x64 -only_update_server_mods -cluster MyDediServer
Процесс подключится к Steam, прочитает список из dedicated_server_mods_setup.lua и скачает (или обновит) каждый мод в подпапку ~/dst_server/mods/workshop-<ID>/. Занимает от пары секунд до пары минут в зависимости от размера модов и количества штук — тяжёлые контентные моды с кастомными текстурами качаются заметно дольше, чем мелкие QoL-твики.
Проверить, что всё скачалось, можно просто посмотрев на папку:
ls ~/dst_server/mods/ | grep workshop-
Каждый ID из вашего dedicated_server_mods_setup.lua должен появиться здесь с префиксом workshop-. Если какого-то нет — либо неверный ID (опечатка при копировании из URL), либо мод был удалён автором из Workshop, либо временные проблемы с соединением к Steam — стоит повторить команду ещё раз.
Этот же флаг — рабочий способ обновлять моды вручную, когда вы не доверяете полной автоматике: остановили сервер, прогнали -only_update_server_mods, проверили лог на ошибки, запустили сервер снова. Про то, как автоматизировать этот цикл по расписанию без ручных телодвижений, — в статье автообновление модов на сервере.
modoverrides.lua: включаем моды по шардам
Скачанные моды пока ничего не делают — их нужно явно включить в файле шарда. Открываем Master/modoverrides.lua (создаём, если файла ещё нет):
nano ~/.klei/DoNotStarveTogether/MyDediServer/Master/modoverrides.lua
Формат — Lua-таблица, ключ строится как "workshop-<ID>" (в отличие от ServerModSetup, здесь префикс обязателен):
return {
["workshop-1467214795"] = {
enabled = true,
configuration_options = {},
},
["workshop-376333686"] = {
enabled = true,
configuration_options = {
-- у каждого мода свой набор опций, смотрите на странице мода в Workshop
food_spoilage_rate = "0.5",
},
},
}
Если хотите тот же набор модов и в пещерах — нужен отдельный Caves/modoverrides.lua с тем же содержимым (общего файла на весь кластер DST не предусматривает). Проще всего не дублировать текст руками, а сделать символическую ссылку, чтобы оба шарда читали один и тот же файл:
rm ~/.klei/DoNotStarveTogether/MyDediServer/Caves/modoverrides.lua
ln -s ~/.klei/DoNotStarveTogether/MyDediServer/Master/modoverrides.lua \
~/.klei/DoNotStarveTogether/MyDediServer/Caves/modoverrides.lua
Осторожно: не все моды одинаково ведут себя в пещерах (некоторые — чисто наземный контент и в Caves просто бесполезны, но не вредны; другие рассчитаны только на надземный биом и могут криво себя вести под землёй). Если сомневаетесь — держите отдельные файлы вместо симлинка и включайте моды в Caves выборочно.
После правки modoverrides.lua перезапускаем шард(ы), чтобы изменения применились — на лету, без рестарта процесса, конфиг не подхватится.
Синхронизация с игроками и типичные ошибки
Моды на сервере — это только половина дела: игроки должны иметь тот же набор модов той же версии, иначе при подключении получат отказ. Клиент подписывается на нужные моды точно так же, как на любой одиночный мод — через Steam Workshop, кнопкой Subscribe на странице каждого мода из вашего списка. Удобно просто скинуть игрокам прямые ссылки на все моды из dedicated_server_mods_setup.lua.
Главная головная боль — рассинхрон версий. Steam обновляет подписанные моды автоматически и на сервере, и у клиентов, но не одновременно: если у игрока мод уже обновился, а сервер ещё не прогонял -only_update_server_mods (или наоборот) — версии разойдутся, и игра посчитает их разными модами, хотя физически это один и тот же Workshop-ID.
| Ошибка | Причина | Что делать |
|---|---|---|
| "This server requires mods you don't have" | Игрок не подписан на один из активных модов сервера | Скинуть игроку ссылку на мод в Workshop, подписаться, перезайти в Steam |
| "Mods do not match" / версии разошлись | Сервер и клиент скачали мод в разное время, хеши не совпадают | Прогнать -only_update_server_mods на сервере и попросить игрока перезайти в Steam, чтобы клиент тоже обновился |
| Мод скачан, но не работает в игре | Забыли добавить enabled = true в modoverrides.lua шарда | Проверить запись мода в modoverrides.lua, включить и перезапустить шард |
Мод не появляется в папке mods/ после -only_update_server_mods | Неверный ID (опечатка) или мод удалён/скрыт автором в Workshop | Свериться с URL мода в браузере, скопировать ID заново |
| Сервер падает сразу после включения нового мода | Конфликт с другим модом или несовместимость с текущей версией игры | См. подробный разбор в статье про краш сервера при загрузке мира |
Хорошая привычка — не подключать сразу пачку из десяти модов одним заходом. Добавляйте по одному-два, перезапускайте сервер, убеждайтесь что мир грузится нормально, и только потом добавляйте следующий. Если что-то ломается, вы точно знаете, какой мод виноват, а не гадаете среди десятка новых записей в modoverrides.lua.
Поднять сервер Don't Starve Together за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Можно ли поставить моды без Steam, вручную скачав файлы?
Технически да — положить распакованный мод прямой папкой в ~/dst_server/mods/ с именем workshop-<ID> и включить в modoverrides.lua тем же способом. Но тогда авто-обновления не будет вовсе, и вы отвечаете за актуальность версии сами — обычно проще довериться штатному -only_update_server_mods.
Нужно ли перезапускать сервер после каждого изменения modoverrides.lua?
Да, на лету конфиг не перечитывается — правите файл, останавливаете и заново запускаете шард (или оба, если меняли общий симлинк).
Мод работает у меня локально в клиенте, но не грузится на сервере — почему?
Часть модов написана только под клиент (косметика, UI-твики) и физически не предназначена для стороны сервера — на странице мода в Workshop обычно есть пометка "Client Only" или похожая. Такие моды не нужно и не следует добавлять в dedicated_server_mods_setup.lua.
Как отключить мод, не удаляя его с диска?
Просто enabled = false в соответствующей записи modoverrides.lua — файлы мода останутся на месте, при необходимости включите обратно без повторного скачивания.
Сколько модов можно поставить одновременно?
Формального лимита нет, но каждый дополнительный мод — это лишняя нагрузка на RAM и потенциальная точка конфликта; на практике сервер с 15-20 активными модами уже требует внимательной проверки совместимости при каждом обновлении.