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

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

MAATRIX GAMES

RAGE:MP — одна из самых живучих платформ для мультиплеера в GTA V: под неё до сих пор пилят RP-гейммоды, а сам сервер поднимается без Steam и без покупки лицензии — это отдельный дедик, который качается напрямую с сайта проекта. Ниже — рабочая последовательность: с чего начать на голом VPS, как не запутаться в conf.json и почему сервер молчит после первого запуска, если забыть про packages/.

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

RAGE:MP-сервер сам по себе лёгкий — это не рендер GTA V, а координатор синхронизации между клиентами плюс Node.js-движок для скриптов. Нагрузку создают не столько ядра, сколько RAM под гейммод и онлайн:

  • RAM: от 2 ГБ для теста и небольшого RP-гейммода на 20-30 слотов. Если ставите тяжёлый гейммод с базой данных (MySQL) и десятками ресурсов в packages/ — закладывайте 4 ГБ и выше.
  • CPU: 2+ ядра. Синхронизация позиций и стрельбы в RAGE:MP считается на одном потоке Node.js, поэтому частота ядра важнее их количества.
  • Диск: 5-10 ГБ достаточно под сам сервер, гейммод и логи. SSD не обязателен как для Rust, но ускоряет старт при большом количестве ресурсов в packages/.
  • ОС: Ubuntu 20.04/22.04/24.04 LTS — под неё больше готовых гейммодов и меньше проблем с зависимостями Node.js.
  • Отдельно от сервера: сама игра GTA V и RAGE:MP-лаунчер нужны только игрокам на их машинах. На сервере GTA V не устанавливается вообще — это ключевое отличие от связки "SteamCMD + игровые файлы", к которой все привыкли по другим тайтлам.

Скачивание сервера

Серверные файлы RAGE:MP качаются не из Steam, а напрямую с CDN проекта — заходите на rage.mp, раздел загрузок, и берите Linux-версию сервера (там же лежит и Windows-билд, если разворачиваете на Windows VPS). Актуальная прямая ссылка на момент написания:

mkdir -p ~/ragemp-srv && cd ~/ragemp-srv
wget https://cdn.rage.mp/updater/prerelease/server-files/linux_x64.tar.gz
tar -xzf linux_x64.tar.gz

Ссылка на CDN у RAGE:MP периодически меняется вместе с версией сборки — если wget вернул 403 или битый архив, сверьтесь с текущей ссылкой прямо на сайте rage.mp в разделе Download, там она обновляется вместе со сборкой.

После распаковки в папке появится бинарник ragemp-server, конфиг conf.json (может быть не сразу — некоторые сборки создают его только после первого запуска) и пустые папки packages/ и client_packages/. Права на исполнение бинарнику иногда нужно выставить вручную:

chmod +x ragemp-server

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

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

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

Настройка conf.json

Это главный конфиг сервера — сюда идут порт, имя, лимит игроков и десяток служебных параметров производительности. Если файла нет — запустите сервер один раз (./ragemp-server) и сразу остановите Ctrl+C: он сам создаст conf.json с дефолтными значениями, дальше просто правьте его.

Минимальный рабочий набор полей:

{
  "maxplayers": 100,
  "name": "Мой RAGE:MP сервер",
  "gamemode": "freeroam",
  "stream-distance": 500.0,
  "announce": true,
  "bind": "0.0.0.0",
  "port": 22005,
  "csharp": false,
  "language": "ru",
  "url": "https://example.com",
  "sync-rate": 40,
  "max-ping": 300,
  "disallow-multiple-connections-per-ip": false
}

Что важно понимать по ключевым полям:

ПолеНазначение
portОсновной порт сервера (UDP), по умолчанию 22005
bindIP для прослушки. 0.0.0.0 — слушать на всех интерфейсах, нужно для VPS с публичным IP
announcetrue — сервер появляется в списке серверов лаунчера RAGE:MP, false — только по прямому IP
gamemodeСтрока-метка гейммода, показывается в браузере серверов; на загрузку ресурсов из packages/ она не влияет напрямую
maxplayersЛимит слотов — как и в других играх, не ставьте с запасом "на будущее", это лишняя нагрузка на синхронизацию
stream-distanceДистанция стриминга объектов/игроков в игровых единицах, 500 — стандартное значение для RP-серверов
csharpВключает загрузку C#-модуля (CLR-бридж) вместо/вместе с JS-гейммодами, нужен только если гейммод написан на C#
sync-rateЧастота синхронизации сущностей в мс, по умолчанию около 40 — трогать имеет смысл только при явных лагах синка

bind — частая грабля: если оставить дефолтный 127.0.0.1, сервер честно поднимется, но снаружи VPS будет недоступен вообще, хотя в логах всё выглядит нормально.

Гейммод и структура packages/

RAGE:MP не идёт с гейммодом "из коробки" — пустой packages/ означает, что сервер запустится, но зайти будет некуда: игрок заспавнится в пустом мире без интерфейса и команд. Сервер сам подхватывает каждую подпапку внутри packages/, у которой есть точка входа index.js (или C#-сборка, если включён csharp) — никакого отдельного реестра ресурсов, как в некоторых других платформах, вести не нужно.

Структура простого JS-гейммода:

packages/
  freeroam/
    index.js
    package.json (опционально)
client_packages/
  freeroam/
    index.js

packages/ — серверная логика (спавн, команды, работа с БД), client_packages/ — то, что грузится и выполняется на стороне клиента (UI, CEF-браузеры, визуальные эффекты). Это два разных набора файлов, их легко перепутать местами при копировании чужого гейммода.

Для первого теста проще всего не писать логику с нуля, а взять готовый открытый фрирум-гейммод (например, freeroam-ресурсы с GitHub от сообщества RAGE:MP) и положить его содержимое в packages/ и client_packages/ соответственно. Дальше уже кастомизируете под свой RP или деатчматч-режим.

Если пишете свой гейммод — минимальный packages/freeroam/index.js для проверки, что всё грузится:

mp.events.add('playerJoin', (player) => {
  player.outputChatBox('Добро пожаловать на сервер!');
  player.spawn(new mp.Vector3(0, 0, 72));
});

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

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

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

cd ~/ragemp-srv
./ragemp-server

В консоли должна появиться строка о загрузке пакетов из packages/ и о старте на указанном порту. Если гейммод не подхватился — проверьте, что index.js лежит именно в подпапке внутри packages/, а не прямо в корне.

Подключение со стороны игрока — через официальный лаунчер RAGE:MP (устанавливается поверх уже купленной GTA V): в списке серверов ищем по имени из name, либо добавляем сервер вручную по IP:port, если announce выключен.

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

Проброс портов

RAGE:MP использует два порта с разными протоколами, и оба должны быть открыты снаружи:

ПортПротоколНазначение
22005 (значение из port)UDPОсновной игровой трафик
22006 (port + 1)TCPHTTP-запросы клиента к серверу (список ресурсов, CEF-контент)

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

sudo ufw allow 22005/udp
sudo ufw allow 22006/tcp
sudo ufw enable

Если хостинг держит инстанс за NAT — нужен проброс на уровне панели управления, одного ufw будет мало: пакеты просто не дойдут до внутреннего адреса машины. Проверить, что порт реально доступен снаружи, можно с другой машины: nmap -sU -p 22005 ВАШ_IP для UDP-порта либо любой онлайн-сканер портов.

Автозапуск и обновление

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

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

[Unit]
Description=RAGE:MP Server
After=network.target

[Service]
User=ragemp
WorkingDirectory=/home/ragemp/ragemp-srv
ExecStart=/home/ragemp/ragemp-srv/ragemp-server
Restart=on-failure
RestartSec=10
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Перед этим стоит создать отдельного пользователя под сервер (не запускайте игровые процессы под root):

sudo useradd -m -s /bin/bash ragemp
sudo chown -R ragemp:ragemp /home/ragemp/ragemp-srv

Активация:

sudo systemctl daemon-reload
sudo systemctl enable ragemp
sudo systemctl start ragemp

Логи — через journalctl -u ragemp -f. Для обновления самого сервера (не гейммода) обычно просто перекачивают свежий архив с CDN и заменяют бинарник и системные файлы, не трогая packages/, client_packages/ и conf.json — так гейммод и настройки переживают апдейт платформы. Перед заменой файлов сервис стоит остановить: sudo systemctl stop ragemp.

Если планируете держать сервер долго и активно менять гейммод, посмотрите заодно на настройку автозапуска в статье про Rust и про Garry's Mod — принцип с systemd-юнитом и отдельным пользователем универсален для любого игрового сервера на Linux, не только для RAGE:MP.

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

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

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

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

Нужна ли на сервере лицензия GTA V или Steam-аккаунт?

Нет. GTA V и RAGE:MP-лаунчер нужны только игрокам на их компьютерах — сама игра на сервер не устанавливается, серверные файлы качаются отдельно с CDN проекта.

Почему сервер запускается, но в игре пусто, а команды не работают?

Почти всегда пустой или неправильно собранный packages/ — без гейммода с index.js сервер поднимает мир, но не даёт игроку ни спавна, ни интерфейса, ни команд.

Чем RAGE:MP отличается от FiveM и SA-MP?

Все три — сторонние мультиплеер-платформы для GTA-игр, но под разные версии игры и с разной архитектурой скриптинга: RAGE:MP и FiveM — под GTA V (у FiveM своя экосистема ресурсов и Lua/C#/JS), SA-MP и MTA:SA — под GTA San Andreas. Гейммоды между платформами несовместимы напрямую.

Можно ли писать гейммод на C#, а не на JS?

Да, через встроенный CLR-бридж — включается флагом "csharp": true в conf.json, но большинство готовых открытых гейммодов и туториалов в комьюнити всё же на JavaScript/Node.js.

Что делать, если игроки видят сервер в списке, но подключение обрывается?

Проверьте оба порта — часто открывают только UDP 22005 и забывают про TCP 22006, из-за которого не грузится HTTP-часть (CEF-контент, ресурсы клиента).