Можно скачать через клиент Steam или SteamCMD как для Windows, так и для Linux.
Расширенная версия создания выделенного сервера для Linux находится в этой статье.
Требования[]
У администратора сервера должна быть установлена копия Don't Starve Together, чтобы запустить выделенный сервер. При этом можно запустить много копий серверной части, имея лишь одну копию DST.
Выделенный сервер использует другой способ соединения, в отличие от обычной DST. Необходимо правильно настроить проброску портов на сетевом оборудовании. По умолчанию сервер использует порт:
- UDP 10999
Для администрирования под Windows необходимо знать навигацию по файловой системе и уметь работать с текстовыми редакторами.
Для администрирования под Linux нужно уметь работать с пакетным менеджером текущей системы и текстовыми редакторами (например, Vim или nano ), знать навигацию по файловой системе и основы управления доступами к файлам (chmod).
Для создания надежного/производительно сервера администратору нужно убедиться, что серверное оборудование удовлетворяет следующим требованиям:
- Интернет (на отдачу) - 8Kb на игрока в секунду
- ОЗУ - 400Mb для самого сервера (+ ещё 400Mb если мир с пещерами) + около 65Mb на каждого игрока
- Установленный VCRedist_2008 (x86) (для сервера на Windows)
Требования к процессору не указаны, но на Intel Xeon 2.4 GHz, в игре со всеми настройками мира по умолчанию, были небольшие лаги . Когда начинался дождь из лягушек играть было невозможно - сервер просто не справлялся с нагрузкой.
Установка[]
На данный момент поддерживается три способа загрузки сервера:
Скачивание через SteamCMD[]
Узнать больше о SteamCMD можно по ссылке.
SteamCMD для Windows[]
Загрузите архив со SteamCMD.
Извлеките его содержимое, например, по пути: C:\dst.
cd C:\dst steamcmd login anonymous force_install_dir C:\dst\server_dst app_update 343050 validate
SteamCMD для Linux[]
Для начала необходимо установить нужные для работы сервера пакеты. Для каждой операционной системы они могут быть разными, они перечислены ниже.
64-битная Ubuntu/Debian:
dpkg—add-architecture i386 apt-get update apt-get install screen lib32gcc1 libcurl4-gnutls-dev:i386 apt-get install lib32stdc++6 apt-get install libgcc1 apt-get install libcurl4-gnutls-dev:i386
32-битная RedHat/CentOS:
yum install glibc libstdc++
64-битная RedHat/CentOS:
yum install glibc.i686 libstdc++.i686
Далее потребуется создать пользователя для работы с сервером:
adduser dst
Теперь зайдем под созданным пользователем, скачаем и распакуем SteamCMD:
su - dst wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -xvzf steamcmd_linux.tar.gz mkdir server_dst
Скачиваем и устанавливаем сервер Don't Starve Together:
./steamcmd.sh login anonymous force_install_dir /home/dst/server_dst app_update 343050 validate quit
Сервер установлен. Осталась конфигурация.
Загрузка через клиент Steam[]
Работает только для Windows и “Desktop Linux” (требует графического интерфейса ОС).
Если у вас есть Don't Starve Together, то зайдите в Библиотека -> Инструменты. Найдите там "Don't Starve Together Dedicated Server". Далее установите и запустите его.
Для данного метода не будет рассматриваться детальная настройка, так как он достаточно прост и почти не используется для выделенных серверов.
Установка через Docker контейнер[]
Docker контейнер уже содержит в себе SteamCMD и скрипт для запуска обычного мира + мира пещер. Подробнее о контейнере вы можете узнать по ссылке.
Для Windows[]
Установка WSL 2[]
Данный способ работает только для новых версий Windows.
Вам следует использовать Windows 10 версии 2004 и выше (сборка 19041 и выше) или Windows 11.
Устанавливаем WSL 2 (В Power Shell от Администратора)
wsl—install
Перезагружаем пк
Устанавливаем Ubuntu в WSL (В Power Shell от Администратора)
wsl—install -d Ubuntu
Перезагружаем пк
Для более старых версий Windows установка проходит по данному гайду.
Установка Docker[]
Скачиваем и устанавливаем Docker Desktop.
Перезагружаем пк
Для Linux[]
Если вы хотите сделать всё руками можете следовать гайду.
Устанавливаем Docker с помощью скрипта
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Перезагружаем пк
Добавляем пользователя в группу docker
sudo usermod -aG docker ${USER}
Перезагружаем пк
Для Linux (ARM) []
Полный гайд, а также последующие способы оптимизации Docker представлены по данной ссылке.
Устанавливаем пакеты для работы с репозиториями по HTTPS
$ sudo apt-get update $ sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg
Добавляем официальный ключ Docker репозитория для GPG
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg—dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Узнаем разрядность процессора
uname -a
Пример ответа
Linux cubietruck 5.10.12-sunxi #21.02.1 SMP Wed Feb 3 20:39:30 CET 2021 armv7l armv7l armv7l GNU/Linux
Для ARM32, ARMv7, aarch32, armhf
$ echo \ "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Для ARM64, ARMv8, aarch64
$ echo \ "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Устанавливаем Docker Engine
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
В случае ошибки установки
$ sudo apt-get install -y docker.io
Устанавливаем docker-compose
$ sudo apt-get install -y docker-compose
Запуск сервера[]
docker run -itd—name=dst -v "Путь к папке где будет храниться сервер:/data"—net=host—restart unless-stopped jamesits/dst-server:latest
Команды для работы с контейнером[]
Остановка контейнера
docker stop dst
Запуск контейнера
docker strat dst
Войти в консоль сервера в контейнере (выйти можно сочетанием клавиш ctr+p + ctr+q)
docker attach dst
Рестарт контейнера
docker restart dst
После полной загрузки нужных компонентов (смотрите логи в docker attach dst) можете остановить контейнера и приступить к правке конфигов.
Серверные токены[]
Чтобы запустить публичный выделенный сервер "Неголодайки", нужно ввести так называемый "кластерный токен". Это ключ, который подтверждает владение вами купленной копии DST и позволяет компании Клей модерировать сервера, которые нарушают лицензию.
Чтобы сгенерировать токен, нужно сделать следующее:
- Запустить Don't Starve Together. Нажать "Играть".
- Нажать на тильду (~), чтобы открыть консоль, и набрать: TheNet:GenerateClusterToken()
- Серверный токен будет записан в файл server_token.txt, который находится по адресу:
- Windows: %HOMEPATH%\Documents\Klei\DoNotStarveTogether\cluster_token.txt
- Linux: ~/.klei/DoNotStarveTogether/cluster_token.txt
Оставьте полученный токен на виду, он понадобится на этапе конфигурации.
Типы серверов[]
На данный момент возможна реализация сервера в различных вариациях:
- Сервер с обычным миром, без пещер
- Сервер, на котором есть только пещеры
- Два зависимых сервера: с обычным миром и с пещерами
Подробнее о пещерах вы можете прочитать в соответствующей статье.
В последнем случае игрок будет перемещаться между серверами при входе/выходе из пещер. Стоит заметить, что для содержания двух серверов понадобится больше мощностей.
Пока в статье рассматриваются только первый и второй варианты. Но идет активная работа, и вскоре будет доступен и третий. Пока статья дорабатывается, подробнее о запуске с третьим вариантом вы можете прочитать на форуме Klei (ссылка не активна!!!) .
Конфигурация и запуск для обычного мира (первый вариант)[]
В данном случае понадобятся два основных каталога сервера:
- Каталог с исполняемым файлом сервера
- Каталог с настройками и файлами сохранений
Каталоги с исполняемым файлом имеют следующие пути:
- Windows: C:\dst\server_dst\bin
- Linux: /home/dst/server_dst/bin
Каталоги с настройками позже получат следующие пути:
- Windows: %HOMEPATH%\Documents\Klei\DST_Overworld
- Linux: ~/.klei/DST_Overworld
Для создания каталогов с настройками создадим в каталоге с исполняемым файлом заведомо неработающий скрипт для запуска сервера (start.sh). Это можно сделать через nano (linux) или другой текстовый редактор:
nano start.sh ./dontstarve_dedicated_server_nullrenderer -conf_dir DST_Overworld
Далее необходимо его запустить:
sh start.sh
Серверу не удастся запуститься, но будет создан каталог с настройками.
Скопируйте в созданный каталог полученный ранее файл server_token.txt.
Для изменения настроек мира потребуется создать файл worldgenoverride.lua в том же каталоге. Работа с ним описывается в отдельном пункте.
Далее необходимо указать основные настройки сервера. Сделать это можно путем редактирования файла settings.ini. Зададим ему примерно такое содержание:
[network] default_server_name = My Don't Starve Server default_server_description = Welcome game_mode = survival max_players = 10 tick_rate = 15 server_port = 10999 server_intention = competitive
Кроме этих параметров, вы можете указать и другие, например, чтобы ограничить доступ к серверу по паролю, ассоциировать сервер с группой и т.д. Пропущенные параметры будут использовать значения по умолчанию.
Теперь, если у вас Linux, модифицируем ранее созданный файл start.sh для работы через screen:
cd /home/dst/server_dst/bin nano start.sh screen -S "DST" ./dontstarve_dedicated_server_nullrenderer -conf_dir DST_Overworld -console
Здесь, помимо всего, мы добавили параметр запуска «-console», позволяющий использовать консоль сервера для выполнения игровых консольных команд. Вы можете использовать и другие параметры для запуска, они представлены ниже.
Теперь сервер готов для запуска:
sh start.sh
Затем, вы можете нажать Ctrl+A, затем D, чтобы скрыть сессию работы сервера. Открыть её повторно можно так:
screen -r DST
Конфигурация и запуск для мира пещер (второй вариант)[]
Этот вариант практически повторяет предыдущий, нужно внести только несколько изменений.
Работа будет происходить с теми же каталогами, что и в первом случае, но каталог с настройками, для удобства, будет носить имя DST_Caves.
Вместо файла start.sh создадим файл start_caves.sh и заполним его:
nano start_caves.sh ./dontstarve_dedicated_server_nullrenderer -conf_dir DST_Caves
Скопируем в каталог DST_Caves ранее полученный файл с серверным токеном.
Там же создадим файл worldgenoverride.lua. Он будет аналогичен этому же файлу для обычного мира, но нужно добавить в него следующую строку после «return»:
return { preset="DST_CAVE",
Теперь проделайте следующие шаги в соответствии с первым вариантом конфигурации, но не забывайте, что каталог настроек теперь носит имя DST_Caves.
Параметры файла settings.ini[]
Настройки разделены на различные категории, которые обозначаются в файле в квадратных скобках. Убедитесь, что заносите настройки под правильную категорию.
[network][]
Название сервера (на английском)
cluster_name = ...
Описание сервера (на английском)
cluster_description = ...
Порт, используемый сервером (от 1024 до 65535, стандартный - 10999)
server_port = 10999
Пароль для входа на сервер
cluster_password = ...
Максимальное количество игроков (от 1 до 64)
max_players = ...
Включить режим PvP
pvp = [ true | false ]
Режим игры
game_mode = [ endless | survival | wilderness ]
Снапшоты (snapshots) позволяют вернуть сервер к более раннему состоянию. Эта фича довольно новая, так что используйте с опаской
enable_snapshots = [ true | false ]
Делать сохранения в начале каждого игрового дня
enable_autosaver = [ true | false ]
Tick rate - качество вашего сервера. Чем выше, тем больше потребление ЦПУ, но тем более плавно и гладко выглядит игра для пользователей.
tick_rate = [ 10 | 15 | 30 | 60 ]
Время в миллисекундах, которое нужно выждать, прежде чем отключать пользователя, который "повис" (не отвечает на сетевые запросы сервера)
connection_timeout = 8000
Какую игровую ячейку использовать (1-5)
server_save_slot = ...
Когда нет администратора, игроки могут кикать вандалов путем голосования
enable_vote_kick = [ true | false ]
Ставить ли сервер на паузу, когда он совсем пустой
pause_when_empty = [ true | false ]
Идея сервера (кооператив, социальный, соревновательный, безумие)
server_intention = [ cooperative | social | competitive | madness ]
Привязать сервер к группе в Steam. Участники этой группы будут отображаться вверху списка игроков, если зайдут на ваш сервер (см. подробнее)
steam_group_id = GroupID
Разрешить вход на сервер только для участников группы в Steam
steam_group_only = [ true | false ]
[account][]
Позволить играть только по локальной сети. В этом случае серверу не требуется токен для авторизации, и он не будет указан в списке серверов
dedicated_lan_server = [ true | false ]
Установить серверный токен (аналог server_token.txt)
server_token = ...
Параметры запуска[]
Какой порт использовать
-port [ 1024 .. 65535 ]
Перезаписать значение tick rate
-tick [ 15 .. 60 ]
Изменить максимальное количество игроков
-players [ 1 .. 64 ]
Указать серверу возможность игры только по локальной сети
-lan
Указать серверу другую папку с настройками
-conf_dir ...
Установить другой каталог для хранилища данных. Например, в Windows стандартно хранилище находится в папке Documents/Klei. Используется совместно с параметром -conf_dir для генерации пути, по которому будут храниться файлы
-persistent_storage_root ...
Включить использование консольных команд прямо в окне сервера
-console
При запуске только обновить серверные моды
-only_update_server_mods
Пропустить обновление серверных модов при запуске сервера
-skip_update_server_mods
Изменение настроек мира[]
Для генерации изменённого мира в выделенном сервере, как уже говорилось ранее, необходимо создать файл в директории настроек сервера с названием «worldgenoverride.lua». Он должен сдержать параметр «override_enabled», к которому присвоено значение true или false, и другие параметры содержащие настройки мира.
Пример:
return { override_enabled = true, misc = { season = "shortboth", world_size = "huge", season_start = "summer" }, resources = { flint = "never", grass = "never", sapling = "never", trees = "never" } }
Полная таблица параметров мира:
return { override_enabled = true, animals = { -- "never", "rare", "default", "often", "always" alternatehunt = "default", angrybees = "default", beefalo = "default", beefaloheat = "default", bees = "default", birds = "default", butterfly = "default", buzzard = "default", catcoon = "default", frogs = "default", hunt = "default", lightninggoat = "default", moles = "default", penguins = "default", perd = "default", pigs = "default", rabbits = "default", tallbirds = "default" }, misc = { boons = "default", -- "never", "rare", "default", "often", "always" branching = "default", -- "never", "least", "default", "most" day = "default", --"onlyday", "onlydusk", "onlynight", "default", "longday", "longdusk", "longnight" frograin = "default", -- "never", "rare", "default", "often", "always" lightning = "default", -- "never", "rare", "default", "often", "always" loop = "default", -- "never", "default", "always" season = "default", -- "onlysummer", "onlywinter", "default", "longsummer", "longwinter", "longboth", "shortboth" season_start = "autumn", -- "default", "winter", "spring", "summer", "random" touchstone = "default", -- "never", "rare", "default", "often", "always" weather = "default", -- "never", "rare", "default", "often", "always" world_size = "default", -- "default", "medium", "large", "huge" wildfires = "default" -- "never", "rare", "default", "often", "always" }, monsters = { -- "never", "rare", "default", "often", "always" bearger = "default", chess = "default", deciduousmonster = "default", deerclops = "default", dragonfly = "default", goosemoose = "default", hounds = "default", krampus = "default", liefs = "default", lureplants = "default", merm = "default", spiders = "default", tentacles = "default", walrus = "default" }, resources = { -- "never", "rare", "default", "often", "always" flint = "default", flowers = "default", grass = "default", marshbush = "default", meteorshowers = "default", meteorspawner = "default", reeds = "default", rock = "default", rocks = "default", sapling = "default", trees = "default", tumbleweed = "default" }, unprepared = { -- "never", "rare", "default", "often", "always" berrybush = "default", cactus = "default", carrot = "default", mushroom = "default" } }
Несколько серверов на одной машине[]
Для запуска нескольких выделенных серверов на одной машине, нужно указать альтернативную директорию с настройками, для этого при запуске сервера следует указать параметр запуска «-conf_dir».
Чтобы указать параметр запуска в Steam, необходимо открыть свойства ранее установленного инструмента «Don’t Starve Together Dedicated Server» и нажать кнопку «Установить параметры запуска».
Пример использования:
- -conf_dir YourServerName
Соответствующие каталоги с настройками серверов будут храниться:
- В Windows: %HOMEPATH%\Documents\Klei\DST_Overworld
- В Linux: ~/.klei/DST_Overworld
Также не стоит забывать о необходимости наличия файла server_token.txt в каждом из таких каталогов.
Моды[]
Выделенный сервер также поддерживает модификации и может устанавливать их автоматически с помощью файла dedicated_server_mods_setup.lua, расположенного в каталоге mods. Этот файл используется при старте сервера и осуществляет загрузку модификаций или их коллекций, указанных в файле.
Пример файла:
ServerModSetup("345692228") ServerModSetup("346968521") ServerModSetup("352373173") ServerModCollectionSetup("379114180")
При изменении версии модификации в Мастерской, выполняется только обновление, что позволяет сократить время запуска сервера. Все скачанные модификации устанавливаются на сервер, но по умолчанию они не включены.
Есть два параметра командной строки, которые служат для выбора типа управления файла dedicated_server_mods_setup.lua. Они предназначены для использования хостами, на которых запущено несколько выделенных серверов.
- -skip_update_server_mods — пропускает обновление модификаций и их коллекций
- -only_update_server_mods — обновляет установленные моды
Существует два варианта включения модификаций на выделенных серверах. Первый способ заключается в изменении файла modsettings.lua в директории модификаций сервера. Пример включения модификаций:
ForceEnableMod("workshop-345692228") ForceEnableMod("workshop-346968521") ForceEnableMod("workshop-352373173")
Примечание: для того что бы пользователи имели возможность скачать недостающие моды, названия директорий модификаций должны оставаться без изменений.
Второй способ заключается в использовании файла modoverrides.lua. Данный файл необходимо создать в папке с настройками сервера. Пример содержания файла:
return { ["workshop-350811795"] = { enabled = true }, ["workshop-387028143"] = { enabled = true }, ["workshop-361336115"] = { enabled = true, configuration_options = { hunt_time = 6, ["String Phrase Option Name"] = "some value", } }, ["workshop-336882447"] = { enabled = true } }
Перенос локального мира на сервер[]
В случае если ваша сохраненная игра запускалась на своем компьютере\компьютере друга, и вам необходимо перенести все сохраненные данные на сервер, выполните следующие действия:
- Осуществите первый запуск сервера в обычном режиме без пещер. После создания папки с настройками (Cluster_1) поместите туда cluster_token.txt
- В папку Cluster_1/Master перенесите modoverrides.lua (не обязательно, если на вашем сервере не стояли моды) и leveldataoverride.lua. Эти файлы вы можете найти в папке с сохранениями DoNotStarveTogether\Cluster_1\Master на вашем компьютере. Если переносился файл modoverrides.lua, установите моды в папке с игрой на сервере, как описано в этой статье
- В папке DoNotStarveTogether\Cluster_1\Master\save\session вы можете найти папку с айди вашего мира (0C554872A1719623, например). Её нужно целиком перенести в директорию Cluster_1/Master/save/session на сервере
- На вашем компьютере скопируйте файл saveindex из DoNotStarveTogether\client_save в папку Cluster_1/Master/save на сервере
- Запустите сервер командой sh start.sh
Разное[]
Если после запуска ваш сервер не видно другим пользователям в интернете и вам в списке локальных серверов, однако он виден на сайте https://dstserverlist.appspot.com/, попробуйте следующее:
- Отключите брандмауэр или добавьте DST в список исключений для входящих и исходящих на порт 10999 (или тот порт, который указали в настройках сервера);
- Если у вас стоит роутер, сделайте проброс портов в нём. Например, для роутера D-Link это делается так: заходим на роутер, Расширенные настройки --> Межсетевой экран --> DMZ. Ставим галочку напротив "Включено". В выпадающем меню IP адрес выбираем IP своего компьютера. Нажимаем кнопку Изменить. Сохраняем изменения и перезагружаем роутер.
- Если все вышеописанное не помогло, возможно ваш провайдер закрыл порт 10999. Пробуйте другие порты.
- При просмотре игр дождитесь появления Онлайн серверов, а потом переходите в LAN.
- Если сервер не был зарегистрирован в лобби игры, но работает, вы можете подключиться к нему с помощью команды в консоли:
c_connect("[ip сервера]", порт, "[пароль, если имеется]")
Администрирование[]
Выделенные серверы могут удаленно управляться через клиент игры. Пользователь, который генерирует токен сервера, автоматически получает права администратора. Администратор имеет возможность кикать и банить пользователей в игре, а также удаленно использовать команды на сервере.
Don't Starve Together, которая предназначена для продолжительной работы без графического интерфейса пользователя. Другими словами, эта версия нужна только для создания сервера, чтобы к нему присоединялись другие игроки. ВНИМАНИЕ: Предоставляйте права администратора только тем, кому бы вы доверили полный доступ к своему серверу/компьютеру. Разработчик может добавить режим "модератора" с ограниченными полномочиями в будущем.
Dedicated Server (Выделенный сервер) - это оптимизированная версияЧтобы иметь возможность предоставлять права администратора другим пользователям, владелец сервера должен создать файл adminlist.txt в директории:
- Windows: %HOMEPATH%\Documents\Klei\DST_Overworld\Save
- Linux: ~/.klei/DST_Overworld/Save
Чтобы предоставить права администратора пользователям, нужно добавить идентификаторы пользователей в созданный файл. Перечислите каждый KU_ идентификатор в новой строке.
Будучи администратором, можно отправлять удаленные команды на сервер, выполнив следующие действия:
- Подключиться к миру через клиент
- Открыть консоль (~)
- Нажать левую клавишу CTRL, чтобы войти в режим удаленного управления (удаленно: появляется слева)
- Команда будет отправлена на сервер и выполнена, если пользователь имеет права администратора
- Для получения полного списка консольных команд см. консоль
FAQ[]
- Возможно ли запустить сервер в LAN режиме?
Да, LAN режим может быть переключен в settings.ini, если добавить строку в модуль [account]:
dedicated_lan_server = true
Помните, локальный сервер не отображается в онлайн серверах. Но владелец МОЖЕТ видеть его в опции "LAN" в просмотре серверов Don't Starve Together.
- Как узнать KU_ идентификатор?
В главном меню игры нажать на пункт "Учетная запись", Откроется оверлей steam с информацией о вашем аккаунте (Klei). Где будет поле UserID формата KU_********. Также, KU_ идентификаторы заходящих игроков записываются в лог и консоль сервера.