Enshrouded: сервер не запускается — диагностика
Запустили сервер Enshrouded, а он либо сразу падает, либо консоль мигает и закрывается без единого вменяемого сообщения — знакомая ситуация. У Enshrouded не самая длинная история дедикейтед-серверов, и типичных причин отказа на самом деле немного: их можно перебрать по порядку и найти виновника за 10-15 минут, не гадая наугад. Ниже — рабочий чек-лист диагностики от простого к сложному, с реальными командами и путями к файлам.
Содержание
Первым делом — читаем лог, а не гадаем
Прежде чем что-либо менять, откройте лог. Даже если консоль закрылась мгновенно, файл logs/ в папке сервера (путь задаётся полем logDirectory в enshrouded_server.json, по умолчанию ./logs) почти всегда успевает что-то записать до падения. Смотрим последние строки:
tail -n 100 ~/enshrouded-server/logs/enshrouded_server.log
Если сервер запущен через systemd — лог смотрится через journalctl, там же видно код завершения процесса:
journalctl -u enshrouded -n 100 --no-pager
Обратите внимание на код выхода в конце — Main process exited, code=exited, status=1/FAILURE говорит, что процесс упал сам, а не был убит извне (OOM killer, к примеру, оставляет другую запись — signal=KILL). Это сразу отсекает половину версий: если процесс убит по памяти, проблема не в конфиге, а в нехватке RAM под текущий slotCount.
Если лог вообще пустой или файла logs/ нет — значит, процесс упал ещё до инициализации логгера, и дело почти наверняка в самом бинарнике или окружении, а не в игровых настройках. Переходим к следующему пункту.
exec format error и Permission denied: не хватает Proton
Самая частая причина падения на Linux-VPS — попытка запустить enshrouded_server.exe напрямую, без прослойки. Сервер Enshrouded собран под Windows, и на голом Linux без Wine/Proton вы получите одно из двух:
bash: ./enshrouded_server.exe: cannot execute binary file: Exec format error
или
bash: ./enshrouded_server.exe: Permission denied
Второе сообщение вводит в заблуждение — кажется, что дело в chmod, но на самом деле ядро просто не понимает формат PE-исполняемого файла и подставляет более общую ошибку доступа. Проверить, что перед вами именно это, можно командой file:
file enshrouded_server.exe
# enshrouded_server.exe: PE32+ executable (console) x86-64, for MS Windows
Раз это Windows PE — chmod +x тут не поможет вообще. Нужен Proton (из состава Steam) или связка Wine + Winetricks. Рабочий вариант запуска через Proton:
STEAM_COMPAT_DATA_PATH="$HOME/.proton_enshrouded" \
STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.steam" \
~/.steam/steam/steamapps/common/Proton\ -\ Experimental/proton run \
~/enshrouded-server/enshrouded_server.exe
Если Proton не установлен вообще, самый простой путь на Debian/Ubuntu — поставить headless Steam и один раз запустить steamcmd с любым Windows-приложением, чтобы подтянулся Proton-рантайм, либо вручную скачать proton-ge-custom и распаковать в ~/.steam/steam/compatibilitytools.d/. Подробный разбор установки и первого запуска — в статье как поднять сервер Enshrouded с нуля, там же описана специфика Proton на Linux.
Если возиться с прослойкой в принципе не хочется — практичнее сразу взять Windows-VPS: там enshrouded_server.exe запускается нативно, без риска специфичных для Proton багов и без лишнего слоя, который может отвалиться после обновления дистрибутива.
Поднять сервер Enshrouded за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверБитая установка: недокачанные или повреждённые файлы
Если бинарник запускается (Proton отработал), но сервер падает через несколько секунд с сообщением про отсутствующий ассет, повреждённый архив или просто вылетает без текста ошибки — вероятная причина в неполной установке через SteamCMD. Это случается при обрыве соединения во время app_update, нехватке места на диске в момент распаковки или прерванном обновлении.
Лечится принудительной проверкой целостности и докачкой недостающего:
steamcmd +force_install_dir ~/enshrouded-server +login anonymous +app_update 2278520 validate +quit
Флаг validate заставляет SteamCMD сверить контрольные суммы всех файлов приложения и перекачать те, что не совпали — это не переустановка с нуля, а именно точечный ремонт, обычно занимает меньше времени, чем свежая загрузка. Перед запуском проверьте, что на диске реально есть свободное место:
df -h ~/enshrouded-server
15 ГБ — комфортный минимум под сам сервер плюс сохранения; если место кончилось прямо во время распаковки, часть файлов SteamCMD оставляет в незавершённом виде, и без validate это никак не диагностировать по одним только именам файлов.
Если validate не помогает и ошибка повторяется — удалите папку установки целиком и скачайте заново, это надёжнее, чем гадать, какой конкретно файл повреждён:
rm -rf ~/enshrouded-server
mkdir -p ~/enshrouded-server
steamcmd +force_install_dir ~/enshrouded-server +login anonymous +app_update 2278520 validate +quit
Подробнее про механику SteamCMD, ключи запуска и типичные грабли при обновлении дедиков в целом — в статье про установку и обновление серверов через SteamCMD.
Порт уже занят: Address already in use
Если в логе есть строка вида bind: Address already in use или сервер запускается, но в браузере серверов и по прямому подключению недоступен — скорее всего, порт 15636 или 15637/UDP занят другим процессом. Такое бывает после аварийного рестарта: старый процесс enshrouded_server.exe завис в памяти (в том числе внутри Proton-обёртки) и держит порт, пока новый пытается на него же забиндиться.
Проверяем, кто слушает нужные порты:
sudo ss -ulnp | grep -E '15636|15637'
Если процесс висит — либо штатно останавливаем через systemd (sudo systemctl stop enshrouded), либо, если сервис завис намертво, убиваем вручную по PID из вывода ss и перезапускаем заново. Не помогает kill обычным сигналом — добавьте -9, но это крайний случай, а не привычная практика: регулярные зависшие процессы обычно значат, что где-то не хватает Restart=on-failure в systemd-юните или сервер убивают по памяти раньше, чем он успевает корректно завершиться.
Второй вариант конфликта — два разных сервера Enshrouded (или Enshrouded и другая игра) на одной машине с одинаковыми портами по умолчанию. Тут решение простое: меняем queryPort во втором enshrouded_server.json на свободный, например 15639, и не забываем открыть его в firewall отдельно. Общая механика проброса портов и диагностика firewall — в статье настройка портов и файрвола для игрового сервера.
Права на файлы и папку сохранений
Отдельная категория падений — сервер стартует, но тут же валится с ошибкой записи, либо вообще не создаёт savegame/ и logs/. Обычно это следствие того, что установка делалась под одним пользователем (например, root через sudo steamcmd ...), а запуск сервиса настроен от имени другого — как в примере с systemd-юнитом, где указан User=enshrouded.
Проверяем владельца папки сервера:
ls -la ~/enshrouded-server | head
Если владелец не тот пользователь, от которого запускается процесс — пересобираем права рекурсивно:
sudo chown -R enshrouded:enshrouded /home/enshrouded/enshrouded-server
Отдельно стоит проверить сам исполняемый файл на предмет флага исполнения — хотя для .exe под Proton это редко бывает причиной (Proton сам умеет запускать файл без x-флага), но обёрточный shell-скрипт запуска (start-enshrouded.sh, если используете такой) обязан быть исполняемым:
chmod +x ~/enshrouded-server/start-enshrouded.sh
Если сервер запущен в Docker или LXC-контейнере — проверьте ещё и то, что том с папкой сервера примонтирован без noexec и что UID пользователя внутри контейнера совпадает с владельцем файлов на хосте, иначе типичный симптом — сервер стартует, но не может писать сохранения, хотя визуально прав как будто достаточно.
Ошибки в enshrouded_server.json
Отдельно частая причина: сервер запускается, лог не показывает явных ошибок, но настройки (имя, пароли, slotCount) откатились к значениям по умолчанию — или сервер вовсе не поднимается, тихо завершаясь через пару секунд. Это почти всегда невалидный JSON: лишняя запятая после последнего поля, незакрытая скобка, кавычка внутри пароля без экранирования.
Проверяйте файл валидатором до перезапуска, а не после:
python3 -m json.tool ~/enshrouded-server/enshrouded_server.json
Если синтаксис сломан, команда сразу покажет строку и позицию ошибки. Частая ловушка — редактирование конфига через Windows-блокнот с последующей загрузкой на Linux: иногда попадают "умные" кавычки вместо обычных " при копировании текста из другого документа, и JSON-парсер такие символы не принимает вовсе, при этом визуально в редакторе они выглядят как обычные.
Ниже — таблица симптом → вероятная причина, для быстрой сверки:
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
Exec format error / Permission denied при запуске .exe | Нет Proton/Wine | file enshrouded_server.exe, наличие Proton-рантайма |
| Падение через пару секунд, лог пустой | Проблема окружения, не конфига | journalctl, свободное место на диске |
| Сервер стартует, но не виден в браузере серверов | Порт занят или не открыт в firewall | ss -ulnp, правила ufw/iptables |
| Настройки откатываются к дефолту | Невалидный JSON в конфиге | python3 -m json.tool |
| Ошибка записи сохранений | Права на папку/владелец процесса | ls -la, chown |
| Периодические падения без видимой причины | Нехватка RAM, OOM killer | journalctl на signal=KILL, free -h |
Если после конфига сервер стартует, но игроки жалуются, что не видят его в списке при рабочих портах — проверьте общую диагностику по недоступности сервера в статье сервер не отвечает на пинг: общая диагностика, там разобраны сетевые причины отдельно от игровых.
Если ничего из этого не помогло
Когда лог пуст, порт свободен, JSON валиден, а сервер всё равно не встаёт — проверьте два менее очевидных момента. Во-первых, версию Proton: иногда конкретный билд Enshrouded после патча разработчиков (Keen Games) требует более свежий Proton, чем стоит на машине. Обновление через Steam Client (или замена proton-ge-custom на актуальный релиз) снимает вопрос в большинстве случаев.
Во-вторых — антивирус на Windows-VPS: некоторые сборки Enshrouded триггерят ложные срабатывания Windows Defender на первом запуске, сразу после установки через SteamCMD, пока файл ещё не в кэше репутации. Если бинарник попал в карантин, добавьте папку сервера в исключения и переустановите через validate.
И последнее: если сервер падает именно при высокой нагрузке (много игроков зашло одновременно, активная стройка баз) — это уже не баг запуска, а нехватка ресурсов под текущий slotCount. Смотрите таблицу требований в статье про установку сервера и не экономьте на RAM: Enshrouded держит весь мир и все структуры игроков целиком в памяти.
Поднять сервер Enshrouded за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер работал неделями, а потом перестал запускаться сам по себе — что изменилось?
Чаще всего это автообновление Steam/Proton на хосте или патч самой игры, который поменял требования к рантайму. Проверьте лог на конкретную ошибку и версию Proton — обновление рантайма обычно решает вопрос.
Можно ли понять причину падения без доступа к консоли, только по логам?
Да, в 90% случаев лога enshrouded_server.log (или journalctl при systemd) достаточно — там либо явная ошибка, либо код выхода процесса, который сразу сужает круг причин.
Стоит ли переустанавливать сервер полностью при первой же ошибке?
Нет, начните с validate через SteamCMD — это чинит повреждённые файлы без потери сохранений, так как savegame/ не пересоздаётся при обновлении. Полное удаление — крайняя мера.
Помогает ли простая перезагрузка VPS, если сервер завис?
Иногда снимает симптом (освобождает занятые порты, сбрасывает завёрнутые процессы), но не решает первопричину — если проблема в Proton, конфиге или правах, после ребута она вернётся на следующем запуске.
Нужно ли что-то менять в firewall при переносе сервера на новый VPS?
Да, обязательно откройте 15636/UDP и 15637/UDP заново на новой машине — правила firewall не переезжают вместе с файлами сервера, это отдельная настройка на каждом хосте.