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

Как поднять сервер Necesse: пошаговая инструкция

MAATRIX GAMES

Necesse затягивает именно в кооперативе: вместе рыть подземелья, отбивать нашествия и достраивать город с друзьями куда веселее, чем в одиночку. Но если сервер держится на компьютере одного из игроков — рано или поздно кто-то закрывает игру не вовремя, и весь отряд теряет прогресс сессии. Решение стандартное: dedicated-сервер на VPS, который живёт отдельно от чьего-либо ПК. Ниже — рабочая инструкция от установки до автозапуска, без теории и домыслов.

Системные требования

Necesse написана на Java и по железу не самая требовательная игра среди современных survival-песочниц, но и не игрушечная — потребление растёт вместе с исследованной картой.

Стартовый набор, с которым сервер уверенно тянет 2-4 игроков на свежем мире:

  • RAM: от 2 ГБ — этого хватает для небольшой группы и молодого мира. Как только карта разрастается (открыты далёкие острова, зачищены подземелья, активно фармят несколько игроков одновременно), потребление памяти растёт вместе с числом загруженных чанков — для 6-10 игроков на обжитом мире по опыту хостеров стоит закладывать 4-8 ГБ с запасом.
  • CPU: 2 ядра достаточно для старта, лишнее ядро не будет лишним при частых рейдах на несколько игроков сразу.
  • Диск: пары гигабайт под саму игру и сохранения хватит с запасом, плюс место под бэкапы, если храните их локально.
  • ОС: сервер официально работает и на Windows, и на Linux — Necesse кроссплатформенна и распространяется с собственным Java-рантаймом, отдельно ставить JRE обычно не нужно. Если на конкретном дистрибутиве бандл капризничает, спасает системная Java 17+.
  • Сеть: один открытый порт, по умолчанию 14159/UDP.

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

Dedicated-сервер Necesse распространяется через Steam отдельным приложением — не путайте с ID клиентской игры. У серверной версии свой App ID: 1169370.

Ставим SteamCMD на Ubuntu/Debian:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd

Заводим отдельного пользователя под сервер — так удобнее с правами и логами:

sudo useradd -m -s /bin/bash necserver
sudo su - necserver

Скачиваем и устанавливаем сам сервер:

steamcmd +force_install_dir ~/necesse +login anonymous +app_update 1169370 validate +quit

Логин anonymous — привязывать личный Steam-аккаунт не требуется, серверная сборка бесплатна и раздаётся всем. После установки в ~/necesse появятся исполняемые файлы, включая StartServer.sh и StartServer-nogui.sh (headless-версия без консольного интерфейса — она и нужна на VPS).

Поднять сервер Necesse за пару минут

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

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

Конфигурация: server.cfg и параметры запуска

Первый запуск без готового мира создаст конфиг по умолчанию и предложит сгенерировать сохранение. Проще всего сразу запустить с флагом -world, чтобы задать имя будущего мира:

cd ~/necesse
./StartServer-nogui.sh -world friends_world

При первом старте, если мира с таким именем ещё нет, сервер сгенерирует новый. Если сохранение с этим именем уже существует — загрузит его, а не создаст заново.

Основной конфиг — server.cfg, на Linux лежит в ~/.config/Necesse/cfg/server.cfg, на Windows — в %AppData%\Roaming\Necesse\cfg\server.cfg. Важный нюанс: сервер перезаписывает этот файл при старте, поэтому редактировать его нужно при остановленном сервере.

Ключевые поля внутри блока SERVER = { ... }:

ПолеЗа что отвечаетПример
portИгровой порт14159
slotsЛимит игроков, диапазон 1-25010
passwordПароль входа, пусто — без пароля""
MOTDСообщение дня в списке серверов"Добро пожаловать!"
maxClientLatencySecondsПорог допустимой задержки клиента30
pauseWhenEmptyСтавить мир на паузу без игроковtrue
giveClientsPowerКлиентская валидация попаданийtrue
loggingВести файлы логовtrue
zipSavesСжимать сохраненияtrue
languageЯзык сервера, двухбуквенный кодen

Из полезных флагов запуска, кроме -world, стоит знать -owner <SteamName> — автоматически выдаёт правами владельца игроку с указанным именем при подключении, без ручной раздачи прав через консоль, и -localdir — заставляет сервер держать конфиги и сохранения рядом с исполняемым файлом, а не в системной пользовательской папке (удобно, если на VPS несколько независимых инстансов сервера под разными пользователями).

Проброс порта и сетевые настройки

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

На самой машине откройте порт в файрволе. Для UFW на Ubuntu:

sudo ufw allow 14159/udp
sudo ufw reload

Если хостинг использует облачный файрвол поверх системного (security group в панели управления), откройте тот же порт и там — это частая причина, по которой в UFW правило вроде бы есть, а игроки всё равно получают таймаут при подключении.

Игроку для подключения нужны публичный IP сервера и порт — вводятся в игровом меню Multiplayer → Join by IP в формате IP:PORT. Уточнить публичный IP можно любым сервисом вроде whatismyipaddress.com — приватные адреса вида 192.168.x.x для внешнего подключения не годятся.

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

Запуск через SSH-сессию неудобен для постоянного сервера: закрыли терминал без nohup или screen — сервер упал вместе с сессией. Правильный вариант — systemd-юнит, который держит процесс живым и поднимает его заново после перезагрузки VPS или сбоя.

Создаём /etc/systemd/system/necesse.service:

[Unit]
Description=Necesse Dedicated Server
After=network.target

[Service]
Type=simple
User=necserver
WorkingDirectory=/home/necserver/necesse
ExecStart=/home/necserver/necesse/StartServer-nogui.sh -world friends_world -owner Telim
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Применяем и включаем:

sudo systemctl daemon-reload
sudo systemctl enable necesse
sudo systemctl start necesse

Проверить статус и логи:

sudo systemctl status necesse
journalctl -u necesse -f

Теперь сервер переживёт перезагрузку хоста и сам перезапустится при аварийном завершении процесса — например, если памяти вдруг не хватило под резко разросшийся мир.

Обновление и бэкапы мира

Necesse получает обновления регулярно, и серверную часть нужно обновлять отдельно от клиентов — если версии разойдутся, игроки просто не смогут подключиться.

Обновление через SteamCMD:

sudo systemctl stop necesse
steamcmd +force_install_dir /home/necserver/necesse +login anonymous +app_update 1169370 validate +quit
sudo systemctl start necesse

Сохранения миров хранятся в ~/.config/Necesse/saves/ в виде .zip-архивов (имя файла = имя мира, заданное через -world), внутри каждого — свой worldSettings.cfg с настройками конкретной карты, отдельными от общего server.cfg. Перед каждым обновлением стоит бэкапить:

mkdir -p ~/backups
tar -czf ~/backups/necesse-$(date +%Y%m%d-%H%M).tar.gz -C /home/necserver/.config/Necesse saves

Повесьте эту команду на cron раз в день — потерять недельный прогресс из-за неудачного патча куда обиднее, чем потратить пару минут на настройку бэкапа.

Похожая логика установки через SteamCMD и systemd пригодится и для других кооперативных песочниц — например, для Core Keeper или Terraria, если у вашей компании несколько любимых игр и захочется держать пару серверов параллельно. А если после недель в Necesse захочется сменить обстановку на более суровое выживание — тот же принцип разворачивания сработает и для Valheim.

Поднять сервер Necesse за пару минут

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

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

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

Сколько игроков поддерживает сервер Necesse?

Лимит задаётся полем slots в server.cfg, технический максимум — 250, но реальный потолок упирается в RAM и CPU вашей VPS: для 10+ игроков закладывайте запас памяти, а не гонитесь за цифрой в конфиге.

Нужен ли отдельный Steam-аккаунт для сервера?

Нет, установка идёт через +login anonymous, привязка к личному аккаунту не требуется.

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

Да, меняется полем port в server.cfg при остановленном сервере — не забудьте открыть новый порт в файрволе и сообщить игрокам новый адрес подключения.

Что делать, если игроки видят «version mismatch»?

Версии клиента и сервера разошлись — обновите серверную часть через app_update и убедитесь, что игроки играют на актуальном клиенте Steam.

Как проверить, что сервер реально слушает порт?

Выполните ss -tulnp | grep 14159 на самой VPS — если процесс слушает порт, строка появится в выводе; если нет — проблема в самом запуске, а не в сети.