Miami RP Project СЕРВЕР MTA:SA ONLINE СЕРВЕР GTA 5 RAGE MP В РАЗРАБОТКЕ ЗАПУСК MTA RAGE MP: в разработке

Хостинг для CRMP — настройка VPS, MySQL, портов и запуска

Сегодня Обновлено: Сегодня 0.0 (0)
Хостинг для CRMP — настройка VPS, MySQL, портов и запуска
Категория Настройка хостинга для сервера CRMP Опубликовано Сегодня Обновлено Сегодня Просмотров 3

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

Для простой тестовой сборки подойдёт игровой хостинг с готовой панелью. Для полноценного Role Play проекта удобнее VPS или выделенный сервер, где владелец самостоятельно управляет операционной системой, MySQL, firewall, резервными копиями и автоматическим запуском.

В руководстве рассмотрены выбор хостинга и VPS для CRMP, подготовка Linux-сервера, загрузка игрового мода, установка плагинов, подключение MySQL, настройка UDP-порта, первый запуск и создание службы systemd.

Установка серверных файлов на Windows и Linux:

Установка сервера CRMP на Windows и Linux

Подключение базы данных:

Подключение MySQL к серверу CRMP

Настройка основной конфигурации:

Настройка файла server.cfg для CRMP

Игровой хостинг или VPS для CRMP

Оба варианта позволяют запустить сервер, но предоставляют разный уровень контроля.

Игровой хостинг

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

Преимущества игрового хостинга

  • быстрый запуск без настройки Linux;
  • готовая панель управления;
  • автоматический перезапуск;
  • встроенный файловый менеджер;
  • часто предоставляется MySQL;
  • не требуется обслуживание операционной системы;
  • удобен для тестирования и небольших проектов.

Ограничения игрового хостинга

  • нельзя устанавливать любые системные пакеты;
  • может быть закрыта загрузка собственных SO-файлов;
  • нет полноценного SSH-доступа;
  • ограничено изменение параметров процесса;
  • сложно диагностировать утечки памяти;
  • ресурсы могут делиться с другими клиентами;
  • часто ограничен размер диска и базы.

VPS

Владелец получает виртуальный сервер с операционной системой и административным доступом.

Преимущества VPS

  • полный контроль серверных файлов;
  • установка любых необходимых библиотек;
  • собственная MySQL или MariaDB;
  • настройка firewall;
  • создание служб systemd;
  • доступ к системным журналам;
  • возможность автоматизировать резервные копии;
  • удобная диагностика CPU, памяти и диска.

Недостатки VPS

  • необходимо обслуживать Linux;
  • владелец отвечает за безопасность;
  • ошибка firewall может закрыть доступ;
  • нужно самостоятельно следить за диском и обновлениями;
  • неправильная настройка способна остановить сервер.

Виды размещения сервера CRMP

Вариант Для кого подходит Уровень контроля
Игровой хостинг Тестовый или небольшой проект Ограниченный
VPS Большинство развивающихся проектов Высокий
VDS с выделенными ядрами Стабильный сервер со средним онлайном Высокий
Выделенный сервер Крупный проект и несколько сервисов Полный
Домашний компьютер Локальная разработка Полный, но слабая доступность

Для публичного сервера важны

  • круглосуточная доступность;
  • стабильный внешний IP;
  • защита UDP-трафика;
  • быстрый диск;
  • резервное питание дата-центра;
  • возможность быстро заменить VPS;
  • доступ к резервным копиям вне сервера.

Домашний сервер нежелателен для постоянной работы

Домашний интернет может использовать динамический или закрытый IP, а маршрутизатор, электропитание и канал обычно не рассчитаны на публичный игровой проект.

Какие ресурсы нужны серверу CRMP

Точные требования зависят от игрового мода, онлайна, количества объектов, MySQL-запросов и плагинов. Универсального тарифа для всех сборок не существует.

Ориентировочные начальные конфигурации

Назначение Процессор RAM Диск
Разработка и закрытый тест 1–2 быстрых vCPU 2 ГБ 20–30 ГБ SSD
Небольшой публичный сервер 2 быстрых vCPU 4 ГБ 30–50 ГБ NVMe
Средний RP-проект 3–4 быстрых vCPU 6–8 ГБ 50–100 ГБ NVMe
Крупная сборка с отдельными сервисами 4–8 производительных vCPU 8–16 ГБ 100 ГБ и больше

Оставляйте запас

  • для MySQL;
  • для резервных копий;
  • для временных файлов;
  • для роста журналов;
  • для обновлений;
  • для кратковременных пиков нагрузки.

Выбор процессора для CRMP

Основная игровая логика старых серверных ядер и Pawn-мода сильно зависит от производительности отдельного ядра.

При сравнении тарифов смотрите

  • модель процессора;
  • производительность одного ядра;
  • выделенные или общие vCPU;
  • отсутствие жёсткого ограничения частоты;
  • стабильность производительности в часы нагрузки;
  • возможность перейти на более мощный тариф.

Большое количество слабых ядер не всегда помогает

Восемь медленных общих vCPU могут работать хуже двух быстрых выделенных ядер, если основной серверный поток упирается в производительность одного ядра.

MySQL и операционная система используют другие ядра

Дополнительные ядра всё равно полезны для базы, резервных копий, системных служб и фоновых задач.

Избегайте перегруженных дешёвых VPS

У такого тарифа показатели могут быть нормальными ночью и резко ухудшаться вечером, когда другие клиенты узла создают нагрузку.

Выбор оперативной памяти

Память расходуют

  • серверный процесс CRMP;
  • нативные плагины;
  • динамические объекты;
  • игровые массивы;
  • MySQL;
  • кэш базы данных;
  • операционная система;
  • панель управления;
  • резервное копирование.

Не рассчитывайте на постоянный swap

Когда сервер начинает активно выгружать память на диск, могут появиться задержки и длительные зависания.

Проверка памяти после запуска

free -h

ps -o \
pid,%cpu,%mem,rss,vsz,etime,cmd \
-C samp03svr-cr

Название процесса необходимо заменить на имя фактического серверного файла.

Оставляйте свободную память

После запуска сервера и MySQL не следует занимать весь доступный объём. Системе нужен запас для файлового кэша и кратковременных операций.

Выбор диска для CRMP и MySQL

Предпочтительный вариант

NVMe SSD

Диск используется для

  • серверных файлов;
  • таблиц MySQL;
  • журналов;
  • дампов базы;
  • архивов сборки;
  • core-файлов после сбоев;
  • временных файлов обновления.

Проверяйте

  • общий объём;
  • реальную скорость операций;
  • лимит IOPS;
  • возможность увеличения диска;
  • наличие снимков;
  • стоимость дополнительного места.

Не храните все резервные копии на основном диске

Копия на том же VPS полезна для быстрого отката, но не защищает от удаления виртуального сервера или блокировки аккаунта провайдера.

Сеть и расположение сервера

Выбирайте дата-центр рядом с основной аудиторией

Чем короче сетевой маршрут, тем обычно ниже задержка и меньше вероятность потерь пакетов.

Перед покупкой проверьте

  • тестовый IP провайдера;
  • ping из регионов игроков;
  • маршрут через MTR;
  • потери пакетов;
  • скорость входящего и исходящего канала;
  • лимит трафика;
  • фильтрацию UDP;
  • условия замены IP.

Проверка маршрута

ping IP_ТЕСТОВОГО_СЕРВЕРА

mtr \
IP_ТЕСТОВОГО_СЕРВЕРА

Не выбирайте локацию только по цене

Дешёвый сервер на другом континенте может создавать высокий пинг даже при хорошем процессоре.

Защита хостинга от сетевых атак

CRMP использует UDP-трафик, поэтому при выборе провайдера важно уточнить поддержку защиты именно игровых UDP-сервисов.

Спросите провайдера

  • фильтруются ли UDP-атаки;
  • какой объём атаки выдерживает сеть;
  • включена ли защита постоянно;
  • блокируется ли IP при атаке;
  • можно ли быстро сменить адрес;
  • предоставляются ли журналы атаки;
  • есть ли ограничения игровых пакетов;
  • как быстро отвечает поддержка.

Локальный firewall не заменяет защиту провайдера

Если входящий канал дата-центра уже заполнен, правило внутри VPS не сможет восстановить доступность.

Выбор операционной системы

Для самостоятельного VPS обычно подходит

  • Ubuntu Server LTS;
  • Debian Stable;
  • другая поддерживаемая Linux-система, если администратор умеет её обслуживать.

Преимущества Linux

  • небольшое потребление ресурсов;
  • удобная автоматизация;
  • systemd для управления процессом;
  • SSH и SFTP;
  • простое резервное копирование;
  • доступ к системным журналам;
  • удобная установка MySQL.

Windows Server может понадобиться

  • если сборка использует только Windows-плагины;
  • если разработчик не может адаптировать мод под Linux;
  • если используется специальное Windows-приложение;
  • для временного переноса старой сборки.

Недостатки Windows VPS

  • выше потребление памяти;
  • часто дороже лицензия;
  • необходим удалённый рабочий стол;
  • автоматизация отличается от Linux;
  • нужно отдельно следить за перезапусками после обновлений.

Что проверить при заказе VPS

Обязательные параметры

  • публичный IPv4;
  • полный root или sudo-доступ;
  • выбранная операционная система;
  • достаточный объём RAM;
  • SSD или NVMe;
  • разрешённый UDP-трафик;
  • возможность открыть игровой порт;
  • доступ к аварийной консоли;
  • резервные снимки;
  • защита от DDoS.

Уточните ограничения

  • запрещены ли игровые серверы;
  • есть ли лимит CPU;
  • есть ли лимит трафика;
  • закрываются ли нестандартные порты;
  • разрешено ли размещение MySQL;
  • можно ли менять ядро и firewall;
  • можно ли увеличить тариф без смены IP.

Сохраните данные доступа

  • IP сервера;
  • SSH-порт;
  • пользователь;
  • временный пароль;
  • ссылку на аварийную консоль;
  • данные панели провайдера.

Первое подключение к VPS

Подключение из Windows PowerShell

ssh root@IP_СЕРВЕРА

При нестандартном порте

ssh \
-p 2222 \
root@IP_СЕРВЕРА

После первого входа

  • смените временный пароль;
  • проверьте операционную систему;
  • проверьте время;
  • проверьте диск;
  • проверьте память;
  • установите обновления;
  • создайте отдельного пользователя.

Проверка системы

cat /etc/os-release

uname -a

timedatectl

df -h

free -h

Обновление Linux перед установкой

Ubuntu и Debian

sudo apt update
sudo apt upgrade -y

Установка базовых инструментов

sudo apt install \
unzip \
tar \
gzip \
curl \
wget \
nano \
screen \
htop \
ufw \
rsync \
ca-certificates \
-y

После обновления ядра

Проверьте, требуется ли перезагрузка:

test -f /var/run/reboot-required \
&& cat /var/run/reboot-required

Не выполняйте крупное обновление перед открытием сервера

После обновления системы необходимо проверить MySQL, SSH, firewall и работу всех серверных плагинов.

Создание отдельного пользователя CRMP

Не запускайте игровой сервер постоянно от root.

Создание пользователя

sudo adduser \
--disabled-password \
--gecos "" \
crmp

Пользователь для входа разработчика не обязателен

Служебный аккаунт может использоваться только для запуска процесса, а загрузка файлов выполняться через отдельного администратора с sudo-доступом.

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

  • ограниченный доступ к системе;
  • понятный владелец файлов;
  • безопасный запуск systemd;
  • проще ограничить права плагинов;
  • меньше ущерб при уязвимости.

Создание каталогов сервера

Основная структура

sudo mkdir -p \
/home/crmp/server \
/home/crmp/backups \
/home/crmp/uploads

Назначение владельца

sudo chown -R \
crmp:crmp \
/home/crmp

Проверка

ls -la \
/home/crmp

Назначение каталогов

  • server — рабочая сборка;
  • backups — локальные резервные копии;
  • uploads — временные загруженные архивы.

Загрузка сборки CRMP на VPS

Рекомендуемый способ

Используйте SFTP через WinSCP, FileZilla или другой клиент, поддерживающий SSH.

Параметры подключения

Протокол: SFTP
Хост: IP VPS
Порт: SSH-порт
Пользователь: crmp или администратор
Пароль или SSH-ключ: данные учётной записи

Загрузите архив в

/home/crmp/uploads/

Преимущества SFTP

  • передача через зашифрованное SSH-соединение;
  • не нужно открывать отдельный FTP-порт;
  • поддерживаются права Linux;
  • удобно просматривать журналы;
  • можно использовать SSH-ключ.

Не загружайте рабочую базу вместе с публичной сборкой

SQL-дамп может содержать аккаунты, хеши паролей, IP-адреса и экономические данные.

Распаковка серверной сборки

ZIP-архив

sudo -u crmp \
unzip \
/home/crmp/uploads/crmp-server.zip \
-d /home/crmp/server

Архив tar.gz

sudo -u crmp \
tar -xzf \
/home/crmp/uploads/crmp-server.tar.gz \
-C /home/crmp/server

Проверка содержимого

find /home/crmp/server \
-maxdepth 2 \
-type f \
| sort

Проверьте лишний вложенный каталог

После распаковки серверные файлы не должны случайно оказаться по пути:

/home/crmp/server/crmp-server/crmp-server/

Рабочий исполняемый файл и server.cfg должны находиться в одном корневом каталоге сборки.

Проверка архитектуры серверного файла

Многие классические серверные адаптации CRMP используют 32-битные исполняемые файлы.

Найдите серверный файл

find /home/crmp/server \
-maxdepth 1 \
-type f \
-print

Проверьте архитектуру

file \
/home/crmp/server/samp03svr-cr

Возможный результат

ELF 32-bit LSB executable

Проверьте плагины

file \
/home/crmp/server/plugins/*.so

Архитектура должна совпадать

32-битное серверное ядро не сможет загрузить 64-битный SO-плагин.

Установка зависимостей Linux

Для 32-битного серверного ядра

sudo dpkg \
--add-architecture i386

sudo apt update

sudo apt install \
libc6:i386 \
libstdc++6:i386 \
libgcc-s1:i386 \
libatomic1:i386 \
-y

Пакеты зависят от сборки

Некоторые плагины требуют дополнительные версии OpenSSL, C++ Runtime или другие библиотеки.

Проверка серверного файла

ldd \
/home/crmp/server/samp03svr-cr

Проверка плагина

ldd \
/home/crmp/server/plugins/mysql.so

Отсутствующая библиотека

libexample.so => not found

Настройка владельца и прав

Назначение владельца

sudo chown -R \
crmp:crmp \
/home/crmp/server

Права каталогов

find /home/crmp/server \
-type d \
-exec chmod 750 {} \;

Права обычных файлов

find /home/crmp/server \
-type f \
-exec chmod 640 {} \;

Исполняемый серверный файл

chmod 750 \
/home/crmp/server/samp03svr-cr

Конфигурация с паролями

chmod 600 \
/home/crmp/server/server.cfg

Не используйте

chmod -R 777 /home/crmp/server

Полные права всем пользователям не исправляют ошибки запуска и ухудшают безопасность.

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

Типичная структура

/home/crmp/server/
├── gamemodes/
├── filterscripts/
├── plugins/
├── scriptfiles/
├── pawno/
├── server.cfg
├── samp03svr-cr
└── server_log.txt

В gamemodes должны находиться

roleplay.amx
roleplay.pwn

Для запуска требуется AMX. PWN нужен для изменения и повторной компиляции.

В plugins должны находиться Linux-версии

mysql.so
streamer.so
sscanf.so
crashdetect.so

В scriptfiles могут находиться

  • конфигурация подключения к базе;
  • INI-файлы;
  • внутренние настройки мода;
  • кэшированные данные;
  • служебные каталоги.

Учитывайте регистр Linux

RolePlay.amx
roleplay.amx

Это два разных имени файла.

Загрузка игрового мода

Скопируйте AMX

/home/crmp/server/gamemodes/roleplay.amx

Исходник можно хранить отдельно

На рабочем сервере наличие PWN не обязательно. Однако владельцу необходимо сохранить исходный код в защищённом репозитории и резервной копии.

Настройка server.cfg

gamemode0 roleplay 1

Расширение AMX не указывается

Неправильно:

gamemode0 roleplay.amx 1

После замены мода

  • проверьте дату AMX;
  • проверьте размер файла;
  • сохраните старую версию;
  • проверьте совместимость плагинов;
  • проверьте изменения структуры MySQL;
  • запустите тестовую сборку.

Подробная установка игрового мода CRMP

Загрузка серверных плагинов на VPS

На Linux используются SO-файлы

plugins/
├── crashdetect.so
├── streamer.so
├── sscanf.so
└── mysql.so

Строка подключения

plugins crashdetect.so streamer.so sscanf.so mysql.so

Windows DLL на Linux не работают

Неправильно:

plugins crashdetect.dll streamer.dll mysql.dll

Проверка библиотек

for plugin in \
/home/crmp/server/plugins/*.so
do
 echo "=== $plugin ==="
 file "$plugin"
 ldd "$plugin" \
 | grep "not found" \
 || true
done

После обновления плагина

  • обновите соответствующий include;
  • повторно скомпилируйте PWN;
  • загрузите новый AMX;
  • проверьте Runtime Error 19;
  • сохраните предыдущую версию.

Установка и настройка плагинов CRMP

Настройка server.cfg на хостинге

Базовый пример

echo Executing CRMP Server Config...

lanmode 0

rcon 1
rcon_password ЗАМЕНИТЕ_НА_СЛУЧАЙНЫЙ_ПАРОЛЬ

maxplayers 100
port 8904

hostname CRMP Role Play Server
gamemode0 roleplay 1

filterscripts
plugins crashdetect.so streamer.so sscanf.so mysql.so

announce 1
query 1
weburl gta-miami.online
language Russian

timestamp 1
logtimeformat [%d/%m/%Y %H:%M:%S]

onfoot_rate 30
incar_rate 30
weapon_rate 30
stream_distance 300.0
stream_rate 1000
sleep 5

Обязательно измените

  • RCON-пароль;
  • игровой порт;
  • название сервера;
  • игровой мод;
  • список плагинов;
  • максимальное количество игроков;
  • адрес сайта.

Если RCON не используется

rcon 0

Не копируйте параметры производительности вслепую

Сначала используйте рабочие значения сборки, а затем проверяйте изменения на тестовом сервере.

Полная настройка файла server.cfg

Локальная или удалённая MySQL

MySQL на том же VPS

Подходит большинству небольших и средних серверов.

Преимущества

  • минимальная сетевая задержка;
  • порт 3306 не нужно открывать интернету;
  • простая настройка;
  • нет зависимости от внешнего маршрута;
  • удобное резервное копирование.

Недостатки

  • база использует RAM и CPU игрового VPS;
  • сбой одного сервера затрагивает игру и базу;
  • копии обязательно нужно выносить наружу.

Удалённая MySQL

Может использоваться на крупном проекте или игровом хостинге с отдельной услугой базы.

Дополнительные требования

  • стабильный закрытый канал;
  • ограничение IP;
  • TLS или VPN;
  • резервирование базы;
  • контроль сетевой задержки;
  • защита от потери соединения.

Установка MySQL на Ubuntu или Debian

Установка сервера

sudo apt update

sudo apt install \
mysql-server \
-y

Запуск и автоматическая загрузка

sudo systemctl \
enable \
--now \
mysql

Проверка службы

sudo systemctl \
status \
mysql \
--no-pager

Проверка порта

sudo ss -lntp \
| grep 3306

Для локальной базы предпочтителен адрес

127.0.0.1:3306

Не открывайте MySQL наружу без необходимости

Игровой мод на том же VPS должен подключаться к локальному адресу.

Создание базы и пользователя MySQL

Открытие консоли

sudo mysql

Создание базы

CREATE DATABASE `crmp_server`
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Создание отдельного пользователя

CREATE USER
'crmp_runtime'@'127.0.0.1'
IDENTIFIED BY 'СЛОЖНЫЙ_УНИКАЛЬНЫЙ_ПАРОЛЬ';

Права рабочего игрового мода

GRANT
 SELECT,
 INSERT,
 UPDATE,
 DELETE
ON `crmp_server`.*
TO 'crmp_runtime'@'127.0.0.1';

Проверка прав

SHOW GRANTS
FOR 'crmp_runtime'@'127.0.0.1';

Завершение

EXIT;

Не подключайте игровой мод под root

Ошибка или уязвимость мода в таком случае сможет затронуть все базы и системные таблицы.

Импорт SQL-файла игрового мода

Загрузите файл в защищённый каталог

/home/crmp/uploads/crmp-database.sql

Импорт

mysql \
-u root \
-p \
crmp_server \
< /home/crmp/uploads/crmp-database.sql

Или через sudo

sudo mysql \
crmp_server \
< /home/crmp/uploads/crmp-database.sql

Проверка таблиц

sudo mysql \
-e "USE crmp_server; SHOW TABLES;"

Проверка структуры аккаунтов

sudo mysql \
-e "DESCRIBE crmp_server.accounts;"

После импорта

  • проверьте ошибки команды;
  • проверьте таблицы;
  • проверьте кодировку;
  • удалите открытый дамп с рабочего VPS, если он не нужен;
  • сохраните зашифрованную резервную копию.

Подробное подключение и импорт MySQL

Настройка подключения MySQL в игровом моде

Реквизиты могут находиться в PWN, INI-файле, JSON-конфигурации или отдельном модуле.

Локальное подключение

Host: 127.0.0.1
Port: 3306
Database: crmp_server
User: crmp_runtime
Password: СЛОЖНЫЙ_ПАРОЛЬ

Не путайте localhost и 127.0.0.1

MySQL рассматривает имя пользователя вместе с Host. Учётная запись:

'crmp_runtime'@'127.0.0.1'

может отличаться от:

'crmp_runtime'@'localhost'

Защитите конфигурационный файл

chmod 600 \
/home/crmp/server/scriptfiles/mysql.ini

sudo chown \
crmp:crmp \
/home/crmp/server/scriptfiles/mysql.ini

Не публикуйте реквизиты

  • в статье;
  • в архиве сборки;
  • в server_log;
  • в публичном репозитории;
  • в клиентских файлах;
  • в скриншоте панели.

Настройка удалённой MySQL

Создание пользователя для IP игрового VPS

CREATE USER
'crmp_runtime'@'IP_ИГРОВОГО_VPS'
IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';

GRANT
 SELECT,
 INSERT,
 UPDATE,
 DELETE
ON `crmp_server`.*
TO 'crmp_runtime'@'IP_ИГРОВОГО_VPS';

Firewall базы

sudo ufw allow \
from IP_ИГРОВОГО_VPS \
to any port 3306 \
proto tcp

Нежелательное правило

sudo ufw allow 3306/tcp

Оно разрешает попытки подключения с любых адресов.

Предпочтительно использовать

  • приватную сеть провайдера;
  • VPN;
  • TLS MySQL;
  • фиксированный IP игрового сервера;
  • резервное соединение;
  • контроль задержки.

Проверка с игрового VPS

mysql \
-h IP_БАЗЫ \
-P 3306 \
-u crmp_runtime \
-p \
crmp_server

Настройка игрового порта CRMP

Порт задаётся в server.cfg

port 8904

Для игрового сервера используется UDP

В firewall необходимо разрешить выбранный порт:

8904/udp

Для второго сервера используйте другой порт

Сервер 1: 8904/udp
Сервер 2: 8905/udp
Тестовый сервер: 8906/udp

Два процесса не могут слушать один адрес и порт

При конфликте сервер сообщит об ошибке привязки или не запустит сетевую часть.

Не открывайте диапазон портов без необходимости

Разрешайте только реально используемые игровые и административные сервисы.

Открытие порта в панели провайдера

Некоторые облачные VPS используют два уровня фильтрации:

  • firewall внутри Linux;
  • сетевые правила в панели провайдера.

В панели создайте входящее правило

Protocol: UDP
Port: 8904
Source: 0.0.0.0/0
Action: Allow

SSH лучше ограничить

Protocol: TCP
Port: 22
Source: IP_АДМИНИСТРАТОРА
Action: Allow

Если IP администратора меняется

Сначала сохраните аварийный доступ через консоль провайдера. Слишком строгое правило может заблокировать SSH.

Настройка UFW для CRMP

Разрешите SSH до включения firewall

sudo ufw allow OpenSSH

Разрешите игровой порт

sudo ufw allow \
8904/udp

Базовые политики

sudo ufw default \
deny incoming

sudo ufw default \
allow outgoing

Включение

sudo ufw enable

Проверка

sudo ufw status \
verbose

Ожидаемые правила

22/tcp ALLOW
8904/udp ALLOW

Проверка игрового порта

Сначала запустите сервер

Закрытый процессом порт не появится в списке прослушивания, даже если firewall настроен правильно.

Проверка UDP-портов

sudo ss -lunp \
| grep 8904

Ожидаемый результат

0.0.0.0:8904

Проверьте

  • серверный процесс работает;
  • в server.cfg указан правильный порт;
  • UFW разрешает UDP;
  • панель провайдера разрешает UDP;
  • другой процесс не использует порт;
  • сервер слушает внешний интерфейс.

Онлайн-проверка UDP может быть неточной

UDP не устанавливает соединение так же, как TCP. Надёжнее проверить сервер игровым клиентом и запросом списка серверов.

Первый запуск сервера CRMP на VPS

Перейдите в рабочий каталог

cd /home/crmp/server

Запустите от пользователя crmp

sudo -u crmp \
./samp03svr-cr

Первый запуск выполняйте в открытой консоли

Так можно сразу увидеть:

  • ошибки отсутствующих библиотек;
  • Plugin Failed;
  • Unknown Gamemode;
  • Runtime Error 19;
  • ошибки MySQL;
  • конфликт порта;
  • отказ в доступе к файлам.

Не запускайте первый тест сразу через автоматический рестарт

Служба может скрыть момент ошибки постоянными повторными запусками.

Проверка журнала запуска

Основной файл

/home/crmp/server/server_log.txt

Последние строки

tail -n 150 \
/home/crmp/server/server_log.txt

Просмотр в реальном времени

tail -f \
/home/crmp/server/server_log.txt

Поиск ошибок

grep -iE \
"error|failed|runtime|denied|unknown|not found" \
/home/crmp/server/server_log.txt \
| tail -n 100

Нормальный запуск должен показать

  • успешную загрузку плагинов;
  • загрузку AMX;
  • подключение к MySQL;
  • запуск игрового порта;
  • отсутствие runtime-ошибок;
  • выполнение инициализации мода.

Создание службы systemd для CRMP

Создайте файл службы

sudo nano \
/etc/systemd/system/crmp.service

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

[Unit]
Description=CRMP Game Server
After=network-online.target mysql.service
Wants=network-online.target

[Service]
Type=simple

User=crmp
Group=crmp

WorkingDirectory=/home/crmp/server

ExecStart=/home/crmp/server/samp03svr-cr

Restart=on-failure
RestartSec=5

TimeoutStopSec=30
KillSignal=SIGINT

LimitNOFILE=65535

NoNewPrivileges=true
PrivateTmp=true

StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Замените имя исполняемого файла

В строке ExecStart должно быть указано точное имя серверной адаптации.

Проверьте путь

ls -la \
/home/crmp/server/samp03svr-cr

Права на запуск

chmod 750 \
/home/crmp/server/samp03svr-cr

Включение автоматического запуска

Перечитайте конфигурацию systemd

sudo systemctl \
daemon-reload

Запустите службу

sudo systemctl \
start \
crmp

Проверьте состояние

sudo systemctl \
status \
crmp \
--no-pager

Включите запуск после перезагрузки VPS

sudo systemctl \
enable \
crmp

Проверьте статус автозагрузки

systemctl \
is-enabled \
crmp

Полная команда запуска и включения

sudo systemctl \
enable \
--now \
crmp

Управление сервером через systemd

Запуск

sudo systemctl start crmp

Остановка

sudo systemctl stop crmp

Перезапуск

sudo systemctl restart crmp

Состояние

sudo systemctl \
status \
crmp \
--no-pager

Последние сообщения

sudo journalctl \
-u crmp \
-n 150 \
--no-pager

Наблюдение в реальном времени

sudo journalctl \
-u crmp \
-f

Отключение автозагрузки

sudo systemctl \
disable \
crmp

Корректная остановка сервера

Перед перезапуском игровой мод должен сохранить аккаунты и важные данные.

Рекомендуемый порядок

  1. Предупредить игроков.
  2. Закрыть вход на время обслуживания.
  3. Сохранить авторизованные аккаунты.
  4. Дождаться критических MySQL-запросов.
  5. Корректно остановить процесс.
  6. Создать резервную копию.
  7. Установить обновление.
  8. Запустить и проверить сервер.

Остановка службы

sudo systemctl stop crmp

Не используйте без необходимости

kill -9 PID

Принудительное завершение не даёт игровому моду обработать нормальную остановку.

Проверьте поведение сборки

Некоторые старые серверные ядра не обрабатывают SIGINT так, как ожидается. Протестируйте остановку на отдельной базе и убедитесь, что процесс завершается, а данные сохраняются.

Защита от бесконечных перезапусков

Параметр:

Restart=on-failure

перезапускает сервер после аварийного завершения, но не после штатной остановки.

Задержка

RestartSec=5

не позволяет запускать процесс десятки раз в секунду.

Дополнительные ограничения

StartLimitIntervalSec=300
StartLimitBurst=5

Их можно добавить в раздел Unit

[Unit]
Description=CRMP Game Server
After=network-online.target mysql.service
Wants=network-online.target

StartLimitIntervalSec=300
StartLimitBurst=5

После превышения лимита

Systemd остановит повторные попытки. Исправьте ошибку и сбросьте состояние:

sudo systemctl reset-failed crmp
sudo systemctl start crmp

Мониторинг VPS и сервера CRMP

Процессор и процессы

top
htop

Память

free -h

ps -o \
pid,%cpu,%mem,rss,vsz,etime,cmd \
-C samp03svr-cr

Диск

df -h
df -i

du -sh \
/home/crmp/server/*

Порты

sudo ss -lunp
sudo ss -lntp

MySQL

sudo systemctl \
status \
mysql \
--no-pager

sudo journalctl \
-u mysql \
-n 100 \
--no-pager

CRMP

sudo systemctl \
status \
crmp \
--no-pager

sudo journalctl \
-u crmp \
-n 100 \
--no-pager

Следите за

  • устойчивым ростом памяти;
  • постоянной загрузкой одного ядра;
  • активным использованием swap;
  • уменьшением свободного места;
  • частыми рестартами;
  • ошибками MySQL;
  • повторяющимися Plugin Failed;
  • ростом времени авторизации.

Резервное копирование VPS с CRMP

Остановите сервер перед полной файловой копией

sudo systemctl stop crmp

Архив серверных файлов

sudo tar -czf \
/home/crmp/backups/server-$(date +%F-%H%M).tar.gz \
-C /home/crmp \
server

Запустите сервер

sudo systemctl start crmp

Дамп MySQL

mysqldump \
--single-transaction \
-u root \
-p \
crmp_server \
| gzip \
> /home/crmp/backups/database-$(date +%F-%H%M).sql.gz

Проверка архива базы

gzip -t \
/home/crmp/backups/database-*.sql.gz

Скопируйте архивы наружу

  • на другой VPS;
  • в защищённое облачное хранилище;
  • на компьютер владельца;
  • в офлайн-хранилище;
  • в систему с защитой от удаления.

Храните несколько поколений

Последняя копия может быть создана уже после повреждения данных. Полезно иметь ежедневные, недельные и месячные версии.

Защита сервера и резервных копий CRMP

Перенос сервера CRMP на другой VPS

Перед переносом сохраните

  • полный каталог сервера;
  • дамп MySQL;
  • server.cfg;
  • плагины;
  • исходный PWN;
  • systemd-службу;
  • правила firewall;
  • версии системных библиотек;
  • список cron-заданий;
  • служебные пароли.

Безопасный порядок

  1. Подготовьте новый VPS.
  2. Установите зависимости.
  3. Разверните серверные файлы.
  4. Создайте новую базу.
  5. Импортируйте дамп.
  6. Настройте отдельного MySQL-пользователя.
  7. Откройте новый игровой порт.
  8. Запустите сервер под паролем.
  9. Проверьте аккаунты и имущество.
  10. Остановите старый сервер.
  11. Создайте финальный дамп.
  12. Перенесите последние изменения.
  13. Откройте новый сервер для игроков.

Не держите два рабочих сервера на одной базе

Одновременное сохранение одних аккаунтов может привести к конфликтам и потере последних данных.

После переноса

  • смените MySQL-пароль;
  • смените RCON-пароль при необходимости;
  • обновите мониторинг;
  • обновите DNS и страницы проекта;
  • удалите старые доступы;
  • сохраните копию старого сервера до проверки нового.

Распространённые ошибки хостинга CRMP

Permission denied

Permission denied

Проверьте право выполнения и владельца файла:

chmod 750 \
/home/crmp/server/samp03svr-cr

sudo chown -R \
crmp:crmp \
/home/crmp/server

No such file or directory при существующем файле

Частая причина — отсутствующий 32-битный загрузчик или библиотека.

file \
/home/crmp/server/samp03svr-cr

ldd \
/home/crmp/server/samp03svr-cr

Plugin Failed

  • загружена DLL вместо SO;
  • не совпадает архитектура;
  • отсутствует библиотека;
  • неверный регистр имени;
  • плагин повреждён;
  • используется несовместимая версия.

Unknown Gamemode

  • AMX отсутствует;
  • не совпадает имя;
  • AMX лежит не в gamemodes;
  • указано расширение;
  • ошибка регистра;
  • мод не загрузился из-за native-функций.

Run time error 19

Игровой мод не нашёл функцию обязательного плагина или использует несовместимую версию API.

Address already in use

Address already in use

Порт уже занят другим процессом:

sudo ss -lunp \
| grep 8904

Сервер работает, но подключиться нельзя

  • порт закрыт в UFW;
  • порт закрыт в панели провайдера;
  • разрешён TCP вместо UDP;
  • указан другой порт;
  • процесс слушает только локальный адрес;
  • защита провайдера фильтрует пакеты.

Access denied for user

  • неправильный пароль;
  • не совпадает Host пользователя;
  • не выданы права;
  • мод подключается к другому адресу;
  • конфигурационный файл не прочитан.

Unknown database

Создайте базу или исправьте её имя в конфигурации.

Служба systemd постоянно перезапускается

Проверьте:

sudo systemctl \
status \
crmp \
--no-pager

sudo journalctl \
-u crmp \
-n 200 \
--no-pager

Служба не запускается после перезагрузки

systemctl is-enabled crmp

sudo systemctl enable crmp

Контрольный список настройки хостинга CRMP

Тариф

  • выбран быстрый процессор;
  • есть запас RAM;
  • используется SSD или NVMe;
  • предоставляется публичный IPv4;
  • разрешён UDP-трафик;
  • есть защита от сетевых атак;
  • дата-центр находится рядом с игроками.

Linux

  • система обновлена;
  • создан отдельный пользователь;
  • сервер не запускается от root;
  • установлены 32-битные зависимости;
  • архитектура плагинов совпадает;
  • права файлов ограничены.

Сборка

  • AMX находится в gamemodes;
  • SO-файлы находятся в plugins;
  • server.cfg находится рядом с серверным файлом;
  • названия совпадают с учётом регистра;
  • старые версии сохранены;
  • неизвестные файлы проверены.

MySQL

  • служба работает;
  • создана отдельная база;
  • создан отдельный пользователь;
  • игровой мод не использует root;
  • SQL-файл импортирован;
  • таблицы существуют;
  • Host подключения совпадает;
  • порт 3306 не открыт всему интернету.

Сеть

  • в server.cfg указан правильный порт;
  • порт разрешён по UDP;
  • настроен UFW;
  • настроен firewall провайдера;
  • порт слушается серверным процессом;
  • SSH-доступ сохранён.

Автоматический запуск

  • создан файл crmp.service;
  • правильно указан WorkingDirectory;
  • правильно указан ExecStart;
  • служба работает от пользователя crmp;
  • включён Restart=on-failure;
  • служба включена в автозагрузку;
  • проверена перезагрузка VPS.

Резервные копии

  • копируются серверные файлы;
  • копируется MySQL;
  • есть внешняя копия;
  • хранятся несколько версий;
  • проверяется целостность архивов;
  • выполнено тестовое восстановление.

Частые вопросы по хостингу и VPS для CRMP

Что лучше для CRMP: игровой хостинг или VPS?

Для быстрого теста удобен игровой хостинг. Для полноценного проекта с собственными плагинами, MySQL и автоматизацией лучше VPS.

Сколько оперативной памяти нужно?

Для закрытого теста может хватить 2 ГБ. Для небольшого публичного проекта разумнее начинать с 4 ГБ и проверять реальное потребление.

Сколько ядер нужно?

Важна не только численность vCPU, но и производительность одного ядра. Для небольшого сервера обычно начинают с двух быстрых vCPU.

Нужен ли NVMe?

Он полезен для MySQL, журналов и резервных копий. Обычный SSD тоже может работать, но медленный перегруженный диск способен создавать задержки.

Какую операционную систему выбрать?

Для VPS обычно подходит актуальная Ubuntu Server LTS или Debian Stable.

Можно ли установить Windows-сборку на Linux?

Не напрямую. Потребуются Linux-версия серверного ядра и SO-версии плагинов.

Почему DLL не загружается на VPS?

Большинство VPS используют Linux. Для него нужны плагины с расширением .so.

Почему SO показывает Failed?

Проверьте архитектуру, системные зависимости, имя файла и совместимость версии.

Как загрузить сервер на VPS?

Через SFTP загрузить архив, распаковать его в рабочий каталог и назначить правильного владельца.

Куда загружать игровой мод?

AMX помещается в папку gamemodes.

Куда загружать плагины?

SO-файлы помещаются в каталог plugins.

Какой протокол используется для игрового порта?

Для классического сервера CRMP используется UDP.

Нужно ли открывать TCP на игровом порту?

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

Почему порт открыт, но сервер недоступен?

Проверьте, запущен ли процесс, слушает ли он порт и разрешён ли UDP одновременно в Linux и панели провайдера.

Можно ли использовать порт 7777?

Можно, если он свободен и разрешён провайдером. Допускается выбрать другой свободный UDP-порт.

Можно ли установить два CRMP-сервера на один VPS?

Да. Используйте отдельные каталоги, порты, службы systemd и желательно отдельные базы данных.

Нужно ли устанавливать MySQL на тот же VPS?

Для небольшого и среднего проекта это обычно самый простой вариант.

Можно ли открыть MySQL всему интернету?

Не следует. Для удалённой базы ограничьте соединения IP игрового VPS и используйте защищённый канал.

Почему MySQL сообщает Access denied?

Проверьте логин, пароль, Host учётной записи и выданные права.

Можно ли подключить игровой мод под root?

Нет. Создайте отдельного пользователя с правами только на базу CRMP.

Как запустить сервер после перезагрузки VPS?

Создать службу systemd и выполнить systemctl enable crmp.

Что делает Restart=on-failure?

Systemd повторно запускает процесс после аварийного завершения, но не после штатной остановки.

Почему не стоит использовать screen для постоянного сервера?

Screen удобен для ручного теста, но systemd лучше контролирует автозапуск, состояние, журналы и аварийные перезапуски.

Где смотреть ошибки службы?

sudo journalctl \
-u crmp \
-n 200 \
--no-pager

Где смотреть ошибки игрового мода?

В server_log.txt и выводе совместимого CrashDetect.

Нужно ли перезапускать сервер каждый час?

Нет. Частые рестарты могут скрывать утечку памяти или ошибку игрового мода.

Как часто создавать резервные копии?

Регулярно, а также перед обновлением мода, плагинов, базы и операционной системы.

Можно ли хранить копии только на VPS?

Нет. Минимум одна актуальная копия должна находиться вне рабочего сервера.

Как проверить готовность сервера?

Перезагрузите VPS, проверьте автоматический запуск, подключение MySQL, игровой порт, вход тестового аккаунта и сохранение данных.

Официальные и технические источники

Заключение

Для тестовой сборки CRMP можно использовать готовый игровой хостинг, но полноценному проекту обычно удобнее VPS с самостоятельным управлением Linux, MySQL, firewall и резервными копиями.

При выборе тарифа обращайте внимание на производительность одного ядра, реальный объём RAM, NVMe-диск, расположение дата-центра и поддержку защиты игрового UDP-трафика.

Серверные файлы следует запускать от отдельного пользователя Linux. Проверьте архитектуру исполняемого файла, установите необходимые 32-битные библиотеки и используйте SO-версии серверных плагинов.

Игровой мод помещается в каталог gamemodes, плагины — в plugins, а их точные названия указываются в server.cfg. На Linux необходимо учитывать регистр букв и расширение .so.

Для MySQL создайте отдельную базу и отдельного пользователя с минимальными правами. Локальную базу не нужно открывать интернету, а удалённое соединение следует ограничивать IP игрового VPS и защищать TLS или VPN.

Игровой порт открывается по UDP как в firewall Linux, так и в сетевых правилах провайдера. После запуска проверьте, что процесс действительно слушает выбранный порт.

Для автоматического запуска создайте службу systemd с отдельным пользователем, рабочим каталогом и параметром Restart=on-failure. Не используйте автоматические рестарты для сокрытия ошибок мода или плагинов.

Регулярно контролируйте CPU, память, свободное место, MySQL и журналы systemd. Резервные копии серверных файлов и базы должны храниться не только на рабочем VPS.

Установка серверных файлов:

Установка CRMP на Windows и Linux

Настройка игрового режима:

Установка игрового мода CRMP

Настройка базы данных:

Подключение MySQL к CRMP

Настройка безопасности VPS:

Защита сервера CRMP

Контроль работы и журналов:

Администрирование сервера CRMP

RSS инструкций
0 комментариев 0.0 из 0 оценок
MIAMI RP COMMUNITY

Комментарии к инструкции

Обсудите решение, задайте вопрос или дополните инструкцию

Всего: 0
Страница: /
Показано: 0
Добавление комментариев сейчас недоступно для текущего пользователя.