MAATRIX GAMES / Блог / Как поднять сервер Don't Starve Together: пошаговая инструкция

Как поднять сервер Don't Starve Together: пошаговая инструкция

MAATRIX GAMES

Свой сервер DST — это не только контроль над модами и правилами, но и конец историй "хост вышел из игры и мир пропал". Ниже — рабочий маршрут от чистого VPS до запущенного мира с двумя шардами (наземный + пещеры), который переживёт перезагрузку сервера и не потребует держать открытым клиент Steam.

Что нужно перед стартом

Don't Starve Together — довольно лёгкая игра по серверным меркам, но экономить на ресурсах всё же не стоит, особенно если планируете больше 4-6 игроков или включать оба шарда (Master + Caves).

  • RAM: от 1 ГБ хватает на минимальный конфиг с одним шардом и парой игроков, но для стабильной игры с пещерами и модами комфортнее 2 ГБ.
  • CPU: 1-2 ядра — сервер не требователен к процессору, тикрейт держится ровно даже на бюджетных тарифах.
  • Диск: 5-10 ГБ свободного места — сама игра весит немного, но с модами и логами лучше иметь запас.
  • ОС: Ubuntu 20.04/22.04 или Debian — дальше все команды под них, для DST это самый предсказуемый вариант.
  • Порты: UDP 10999, 11000, 11001 по умолчанию (плюс отдельные для caves-шарда, если запускаете второй сервер — обычно 11002-11004).

Если решаете, где брать VPS под сервер — берите площадку с почасовой оплатой на старте, чтобы можно было протестировать конфиг без обязательств на месяц вперёд.

Установка через SteamCMD

Dedicated-сервер DST распространяется через Steam, даже если вы не собираетесь ставить клиент игры. Работаем от отдельного непривилегированного пользователя — запускать игровые серверы от root не стоит по соображениям безопасности.

adduser dstserver
usermod -aG sudo dstserver
su - dstserver

Ставим зависимости и сам SteamCMD:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 libcurl4-gnutls-dev:i386 steamcmd

Если пакет steamcmd недоступен в репозитории вашего дистрибутива, ставим вручную:

mkdir -p ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz

Скачиваем сам сервер DST — app id 343050:

./steamcmd.sh +force_install_dir ~/dstserver +login anonymous +app_update 343050 validate +quit

Процесс займёт пару минут в зависимости от канала сервера. Обновлять сервер в будущем — та же команда, просто повторить её ещё раз без validate, если хотите быстрее (но с validate надёжнее — проверяет целостность файлов).

Поднять сервер Don't Starve Together за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Токен сервера через аккаунт Klei

Этот шаг обязателен и часто становится камнем преткновения у новичков — без токена сервер не появится в списке и не запустится в режиме online.

  1. Идём на страницу аккаунта Klei и логинимся под своим аккаунтом Steam/Klei.
  2. Выбираем игру Don't Starve Together.
  3. Жмём "I would like to create a new server" — сервис сгенерирует токен привязанный к конкретному игровому миру.
  4. Копируем содержимое токена целиком (это длинная строка, начинающаяся обычно с eyJ...).

Токен нужен для каждого шарда отдельно, если хотите отдельные Master и Caves — Klei выдаёт по токену на каждый мир. Проще всего сгенерировать один токен и использовать его в обоих шардах кластера — DST это допускает, поскольку токен привязан к кластеру, а не к отдельному процессу.

Сохраняем токен в файл cluster_token.txt внутри папки кластера (создадим её на следующем шаге).

Структура кластера и конфиг cluster.ini

DST организует миры в кластеры: один кластер = один или два "шарда" (Master — надземный мир, Caves — пещеры, опционально). Структура папок:

~/.klei/DoNotStarveTogether/MyDediServer/
├── cluster.ini
├── cluster_token.txt
├── Master/
│   ├── server.ini
│   └── modoverrides.lua (опционально)
└── Caves/
    ├── server.ini
    └── modoverrides.lua

Создаём папки и cluster.ini:

mkdir -p ~/.klei/DoNotStarveTogether/MyDediServer/Master
mkdir -p ~/.klei/DoNotStarveTogether/MyDediServer/Caves
nano ~/.klei/DoNotStarveTogether/MyDediServer/cluster.ini

Содержимое cluster.ini:

[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty_for = 3

[NETWORK]
cluster_description = Мой уютный сервер DST
cluster_name = MyDediServer
cluster_intention = cooperative
cluster_password = mysecretpassword
cluster_language = ru

[MISC]
console_enabled = true

[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10888
cluster_key = someRandomSecretKeyHere

Пара нюансов из практики:

  • game_mode может быть survival, endless (без смерти навсегда — возрождение на месте) или wilderness (хардкор без портала).
  • cluster_intention влияет на то, в каком разделе браузера серверов Klei ваш мир будет показан игрокам — cooperative, social, competitive или madness.
  • shard_enabled = true нужен, только если планируете второй шард (Caves). Для одного Master-мира без пещер эту секцию можно опустить целиком.

Конфиг server.ini для каждого шарда

В Master/server.ini:

[NETWORK]
server_port = 10999

[SHARD]
is_master = true

[STEAM]
master_server_port = 27018
authentication_port = 8766

[ACCOUNT]
encode_user_path = true

В Caves/server.ini — то же самое, но с другими портами и is_master = false:

[NETWORK]
server_port = 10998

[SHARD]
is_master = false
name = Caves

[STEAM]
master_server_port = 27019
authentication_port = 8767

[ACCOUNT]
encode_user_path = true

Копируем токен в оба места — либо кладём один cluster_token.txt в корень кластера (DST подхватит его для обоих шардов), либо генерируем отдельный на каждый, если хотите строгую изоляцию миров.

Запуск master и caves шардов

Если хотите играть только на поверхности — достаточно запустить один Master-процесс. Для полноценного кластера с пещерами запускаем оба шарда, порядок важен: сначала Master, затем Caves.

cd ~/dstserver/bin64
./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Master &
./dontstarve_dedicated_server_nullrenderer_x64 -console -cluster MyDediServer -shard Caves &

Если запускаете только один мир без пещер — флаг -shard не нужен вовсе, достаточно -cluster MyDediServer.

Для комфортной работы лучше сразу поднимать сервер внутри screen или tmux, чтобы не терять сессию при обрыве SSH:

sudo apt install -y tmux
tmux new -s dst-master
# запускаем Master в этой сессии, затем Ctrl+B, D для отсоединения
tmux new -s dst-caves
# аналогично для Caves

Логи при первом запуске стоит внимательно прочитать — если токен неверный или не совпадает cluster_key между шардами, сервер сразу напишет об этом в консоль и не подключит шарды друг к другу.

Проброс портов и подключение игроков

Открываем нужные UDP-порты в фаерволе (пример для ufw):

sudo ufw allow 10999/udp
sudo ufw allow 10998/udp
sudo ufw allow 27018/udp
sudo ufw allow 27019/udp
sudo ufw allow 8766/udp
sudo ufw allow 8767/udp
sudo ufw enable

Если сервер арендован у хостинг-провайдера (а не крутится дома за роутером), обычно достаточно открыть порты на самом VPS — NAT и проброс с роутера тут не нужны, это отдельная головная боль только для тех, кто держит сервер на домашнем железе.

Игроки находят сервер двумя способами:

  • Через браузер серверов в игре — если cluster_intention подходящий и сервер online, он появится в списке (может занять пару минут).
  • Напрямую по IP — в главном меню DST выбираем "Direct Connect" и вводим IP:порт (обычно порт Master-шарда, 10999 по умолчанию).

Автозапуск через systemd

Чтобы сервер поднимался сам после перезагрузки VPS и перезапускался при падении процесса, оформляем его как systemd-сервис. Создаём юнит для Master:

sudo nano /etc/systemd/system/dst-master.service
[Unit]
Description=Don't Starve Together Master Shard
After=network.target

[Service]
Type=simple
User=dstserver
WorkingDirectory=/home/dstserver/dstserver/bin64
ExecStart=/home/dstserver/dstserver/bin64/dontstarve_dedicated_server_nullrenderer_x64 -cluster MyDediServer -shard Master
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target

Аналогичный юнит dst-caves.service с -shard Caves. Включаем и запускаем:

sudo systemctl daemon-reload
sudo systemctl enable dst-master dst-caves
sudo systemctl start dst-master
sleep 10
sudo systemctl start dst-caves

Небольшая задержка перед стартом Caves важна: Master должен успеть поднять сетевой сокет для шардинга, иначе Caves не всегда подключится с первой попытки при холодном старте системы. Проверить статус и логи:

sudo systemctl status dst-master
journalctl -u dst-master -f

Поднять сервер Don't Starve Together за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Можно ли запустить сервер вообще без пещер?

Да, достаточно одного Master-шарда без секции [SHARD] в cluster.ini и без флага -shard при запуске — портал в пещеры в мире просто не будет работать.

Где менять моды на сервере?

В файле modoverrides.lua внутри папки каждого шарда (или общий на уровне кластера, если хотите одинаковый набор модов и на поверхности, и в пещерах) — формат Lua-таблицы с id мода из Steam Workshop и его настройками.

Почему сервер не виден в браузере серверов игры?

Чаще всего — не открыт UDP-порт мастер-сервера (27018 по умолчанию) или неверный/просроченный токен Klei. Также проверьте, что cluster_intention соответствует тому разделу, где вы его ищете.

Как обновить сервер до новой версии игры?

Останавливаем сервис (systemctl stop dst-master dst-caves), повторяем команду app_update 343050 через SteamCMD, запускаем сервис обратно.

Нужен ли отдельный VPS под каждый шард?

Нет, Master и Caves прекрасно работают как два процесса на одной машине — они общаются между собой локально через bind_ip = 127.0.0.1.

Как задать пароль на вход для друзей?

Параметр cluster_password в cluster.ini — без него сервер открыт для всех, кто его найдёт.