Как поднять сервер Don't Starve Together: пошаговая инструкция
Свой сервер 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.
- Идём на страницу аккаунта Klei и логинимся под своим аккаунтом Steam/Klei.
- Выбираем игру Don't Starve Together.
- Жмём "I would like to create a new server" — сервис сгенерирует токен привязанный к конкретному игровому миру.
- Копируем содержимое токена целиком (это длинная строка, начинающаяся обычно с
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 — без него сервер открыт для всех, кто его найдёт.