Хостинг для CRMP — настройка VPS, MySQL, портов и запуска
Хостинг для сервера CRMP должен обеспечивать стабильную работу игрового мода, MySQL, серверных плагинов и сетевого порта. При выборе тарифа важно учитывать не только количество оперативной памяти, но и производительность одного ядра процессора, качество сети, тип диска, наличие защиты от сетевых атак и возможность устанавливать необходимые системные библиотеки.
Для простой тестовой сборки подойдёт игровой хостинг с готовой панелью. Для полноценного Role Play проекта удобнее VPS или выделенный сервер, где владелец самостоятельно управляет операционной системой, MySQL, firewall, резервными копиями и автоматическим запуском.
В руководстве рассмотрены выбор хостинга и VPS для CRMP, подготовка Linux-сервера, загрузка игрового мода, установка плагинов, подключение MySQL, настройка UDP-порта, первый запуск и создание службы systemd.
Установка серверных файлов на Windows и Linux:
Подключение базы данных:
Настройка основной конфигурации:
Игровой хостинг или 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;
- запустите тестовую сборку.
Загрузка серверных плагинов на 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;
- сохраните предыдущую версию.
Настройка 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
Не копируйте параметры производительности вслепую
Сначала используйте рабочие значения сборки, а затем проверяйте изменения на тестовом сервере.
Локальная или удалённая 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 в игровом моде
Реквизиты могут находиться в 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
Корректная остановка сервера
Перед перезапуском игровой мод должен сохранить аккаунты и важные данные.
Рекомендуемый порядок
- Предупредить игроков.
- Закрыть вход на время обслуживания.
- Сохранить авторизованные аккаунты.
- Дождаться критических MySQL-запросов.
- Корректно остановить процесс.
- Создать резервную копию.
- Установить обновление.
- Запустить и проверить сервер.
Остановка службы
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 на другой VPS
Перед переносом сохраните
- полный каталог сервера;
- дамп MySQL;
- server.cfg;
- плагины;
- исходный PWN;
- systemd-службу;
- правила firewall;
- версии системных библиотек;
- список cron-заданий;
- служебные пароли.
Безопасный порядок
- Подготовьте новый VPS.
- Установите зависимости.
- Разверните серверные файлы.
- Создайте новую базу.
- Импортируйте дамп.
- Настройте отдельного MySQL-пользователя.
- Откройте новый игровой порт.
- Запустите сервер под паролем.
- Проверьте аккаунты и имущество.
- Остановите старый сервер.
- Создайте финальный дамп.
- Перенесите последние изменения.
- Откройте новый сервер для игроков.
Не держите два рабочих сервера на одной базе
Одновременное сохранение одних аккаунтов может привести к конфликтам и потере последних данных.
После переноса
- смените 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.
Установка серверных файлов:
Настройка игрового режима:
Настройка базы данных:
Настройка безопасности VPS:
Контроль работы и журналов:
Комментарии к инструкции
Обсудите решение, задайте вопрос или дополните инструкцию