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

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

MAATRIX GAMES

Решил поднять свой сервер Rust вместо игры на чужих — это дело на час-полтора, если ничего не упускать, и на весь вечер с матами, если пропустить один нюанс с портами или правами SteamCMD. Дальше — рабочая последовательность без воды: с чего начать, какие параметры запуска реально важны и как не потерять сервер после первой перезагрузки VPS.

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

Rust — сервер прожорливый, и экономить на RAM здесь себе дороже: карта генерируется в памяти целиком, плюс entity-кэш, плюс сборка мусора в Unity, которая любит внезапно сжирать гигабайт-другой на пустом месте.

Минимум, с которым сервер вообще стартует и не падает при первом коннекте нескольких игроков:

  • RAM: от 8 ГБ. Это нижняя граница для карты размером 3000-3500 и до 50 слотов. Если планируете карту 4500+ или 100+ слотов — закладывайте 16 ГБ.
  • CPU: 4+ ядра, частота важнее количества — Rust плохо параллелится, основной поток тикает на одном ядре.
  • Диск: SSD/NVMe обязательно. На HDD генерация карты и сохранения (save-файлы могут разрастись до нескольких гигабайт) будут подвешивать сервер на секунды.
  • Место на диске: от 15-20 ГБ под саму игру, карту, бэкапы и логи. С учётом Oxide/uMod и плагинов — закладывайте с запасом.
  • ОС: Ubuntu 22.04/24.04 LTS — самый предсказуемый вариант, под него больше готовых гайдов и меньше сюрпризов с библиотеками.

Если берёте VPS специально под Rust — сразу закладывайте 8 ГБ как стартовую точку, а не как потолок. На 4 ГБ сервер поднимется и даже пустит первого игрока, но при активном вайпе и десятке онлайн начнёт свопиться и лагать на приёме команд.

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

Rust Dedicated Server ставится через SteamCMD с анонимным логином — покупать лицензию не нужно, это отдельный dedicated-билд.

Сначала ставим зависимости и создаём отдельного пользователя (не запускайте игровые сервисы под root — это касается вообще любой игры, не только Rust):

sudo apt update && sudo apt install -y lib32gcc-s1 curl unzip
sudo useradd -m -s /bin/bash rustserver
sudo su - rustserver

Дальше ставим сам SteamCMD:

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

И качаем сам сервер Rust — app id 258550, логин анонимный:

./steamcmd.sh +force_install_dir /home/rustserver/rust +login anonymous +app_update 258550 validate +quit

Первая загрузка — это 15-20 ГБ, на средней скорости канала уйдёт от 15 минут до часа. Флаг validate в конце обязателен: он сверяет контрольные суммы файлов, без него иногда прилетает битый билд, который падает при старте без внятной ошибки в консоли.

Обновлять сервер потом — та же команда, SteamCMD сам докачает разницу:

./steamcmd.sh +force_install_dir /home/rustserver/rust +login anonymous +app_update 258550 +quit

Rust получает обновление каждый четверг (force-wipe первого четверга месяца) — держите эту команду под рукой в отдельном скрипте, ручное обновление после патча снимает половину багов совместимости с плагинами.

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

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

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

Базовая конфигурация запуска

Сервер стартует бинарником RustDedicated с набором startup-параметров через +. Вот минимальный рабочий набор, который стоит понимать построчно, а не копировать вслепую:

./RustDedicated -batchmode +server.port 28015 \
  +server.identity "my_server" \
  +rcon.port 28016 \
  +rcon.password "СЮДА_СЛОЖНЫЙ_ПАРОЛЬ" \
  +rcon.web 1 \
  +server.hostname "Мой Rust сервер" \
  +server.level "Procedural Map" \
  +server.seed 12345 \
  +server.worldsize 3500 \
  +server.maxplayers 100 \
  +server.saveinterval 300 \
  +app.port 28083

Разберём ключевые параметры, потому что тут чаще всего и путаются:

  • server.port — основной игровой порт (UDP). По умолчанию 28015, но если поднимаете несколько серверов на одном IP — раздавайте с шагом в 3-5 (28015, 28020, 28025...), у Rust есть побочные порты рядом с основным.
  • server.identity — имя папки в server/, где хранятся сейвы, конфиги и логи именно этого инстанса. Критично при нескольких серверах на одной машине: перепутаете identity — затрёте не тот сейв.
  • server.maxplayers — не ставьте с запасом "на будущее". Больше слотов, чем реально нужно — это лишняя нагрузка на тикрейт при заполнении и соблазн для гриферов набежать толпой.
  • server.worldsize — размер карты, от 1000 до 6000. 3000-3500 — комфортный баланс для 50-100 слотов, больше карта — больше RAM и дольше генерация.
  • server.seed — сид карты. Фиксируйте его в конфиге, если хотите ту же карту после рестарта, иначе при пустом значении Rust сгенерирует новую при каждом server.level "Procedural Map" без сида.
  • rcon.password — обязательно длинный и уникальный, RCON-порт открыт наружу и это первое, что сканируют боты.

Все параметры можно вынести в отдельный файл RustDedicated.cfg и запускать через +exec RustDedicated.cfg вместо портянки флагов — удобнее версионировать и не потерять при правке.

Первый запуск и проверка

Запускаем сервер вручную первый раз, чтобы увидеть все ошибки живьём, а не в systemd-логе:

cd /home/rustserver/rust
./RustDedicated -batchmode +server.port 28015 +server.identity "my_server" +server.seed 12345 +server.worldsize 3500 +server.maxplayers 50

Первый старт — это генерация процедурной карты, на worldsize 3500 занимает от 3 до 10 минут в зависимости от CPU. В консоли должна появиться строка про завершение генерации и открытие порта — это сигнал, что можно коннектиться.

Подключение из клиента Rust: F1 → консоль → client.connect IP:PORT, либо через прямое подключение в меню сервера по адресу.

Если сервер тихо падает сразу после старта — почти всегда одна из трёх причин: не хватает RAM (смотрите dmesg | grep -i oom), битый билд после неудачного app_update (переустановите с validate), либо занят порт другим процессом (ss -ulnp | grep 28015).

Проброс портов: игровой и RCON отдельно

Частая ошибка новичков — открыть только игровой порт и забыть про RCON, или наоборот. Это два разных порта с разным протоколом, и оба нужны для полноценной работы:

ПортПротоколНазначение
server.port (28015)UDPОсновной игровой трафик
server.port +1 (28016)UDPСлужебный, Rust резервирует автоматически
rcon.port (28016 по умолчанию)TCPУдалённое администрирование (RCON)
app.port (28083)TCPRust+ companion app

Если сервер стоит на VPS с публичным IP без NAT — обычно достаточно открыть порты в файрволе:

sudo ufw allow 28015/udp
sudo ufw allow 28016/tcp
sudo ufw allow 28083/tcp
sudo ufw enable

Если провайдер держит инстанс за NAT (бывает у бюджетных тарифов) — нужен проброс портов на уровне панели управления хостингом или роутера, одного ufw тут не хватит: пакеты просто не дойдут до внутреннего IP машины.

Проверить, что игровой порт реально открыт снаружи, а не только слушает локально — nmap -sU -p 28015 ВАШ_IP с другой машины, либо любой онлайн-сканер портов. RCON-порт лучше держать открытым только для конкретных IP через файрвол или VPN, а не для всех подряд — брутфорс RCON-паролей идёт постоянным фоновым шумом в интернете.

Автозапуск и авто-вайп по расписанию

Ручной запуск неудобен тем, что сервер умирает при обрыве SSH-сессии и не поднимается сам после ребута хоста. Решение — systemd-юнит.

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

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

[Service]
User=rustserver
WorkingDirectory=/home/rustserver/rust
ExecStart=/home/rustserver/rust/RustDedicated -batchmode +server.port 28015 +server.identity "my_server" +rcon.port 28016 +rcon.password "СЮДА_ПАРОЛЬ" +server.seed 12345 +server.worldsize 3500 +server.maxplayers 100
Restart=on-failure
RestartSec=10
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable rustserver
sudo systemctl start rustserver

Логи смотрим через journalctl -u rustserver -f — удобнее, чем гонять RustDedicated в screen/tmux вручную, хотя для быстрой отладки screen тоже никто не отменял.

Для авто-вайпа по расписанию (например, форс-вайп первого четверга месяца плюс свой карта-вайп раз в неделю) обычно пишут отдельный shell-скрипт, который останавливает сервис, чистит папку сейвов конкретной identity и рестартует юнит, а сам скрипт вешают в cron:

# /home/rustserver/wipe.sh
sudo systemctl stop rustserver
rm -f /home/rustserver/rust/server/my_server/*.map
rm -f /home/rustserver/rust/server/my_server/*.sav*
sudo systemctl start rustserver
# crontab -e, вайп каждый четверг в 15:00 по UTC
0 15 * * 4 /home/rustserver/wipe.sh >> /home/rustserver/wipe.log 2>&1

Обратите внимание: удаление .map файла форсирует генерацию новой карты (blueprint-вайп), а сохранение map-файла при удалении только .sav* даёт софт-вайп с той же картой но чистым прогрессом — выбирайте вариант в зависимости от того, что обещали игрокам в правилах сервера.

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

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

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

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

Сервер стартовал, но игроки не видят его в списке серверов?

Проверьте, что игровой порт реально проброшен и виден снаружи (см. раздел про порты), и что server.hostname задан — без него сервер иногда не отображается корректно в браузере серверов.

Можно ли поставить Rust-сервер на Windows VPS?

Технически да, RustDedicated.exe существует, но по стабильности и потреблению ресурсов Linux-сборка предпочтительнее почти всегда — плюс большинство готовых скриптов автозапуска и мониторинга пишутся под Linux.

Сколько реально нужно RAM на 100 слотов?

Ориентировочно от 12-16 ГБ при активной популяции сервера и worldsize 3500-4000 — точная цифра зависит от количества установленных плагинов и объёма entity на карте (базы игроков съедают память заметно сильнее пустой карты).

Нужен ли Oxide/uMod сразу при первой установке?

Нет, ставьте vanilla-сервер первым запуском, убедитесь что всё работает стабильно, и только потом накатывайте Oxide поверх — так проще отловить, из-за чего именно возникла проблема, если она появится.

Как часто нужно обновлять сервер?

Rust патчится каждый четверг, и если сервер не обновлён — игроки с актуальным клиентом просто не смогут подключиться (клиент и сервер должны совпадать по версии протокола).