Администрирование MTA:SA — игроки, команды, логи и ресурсы
Администрирование сервера MTA:SA включает управление игроками, настройку прав персонала, контроль ресурсов, просмотр журналов, резервное копирование, установку обновлений и обеспечение стабильной работы проекта.
Даже полностью настроенный сервер требует регулярного обслуживания. Администратор должен контролировать ошибки Lua, состояние базы данных, свободное место на диске, работу сетевых портов, права сотрудников и последствия каждого обновления.
В этом руководстве собраны основные действия, необходимые владельцам, администраторам, модераторам и техническим специалистам серверов MTA:SA 1.6.
Установка серверной программы:
Основная конфигурация:
Что входит в администрирование сервера MTA:SA
Администрирование нельзя сводить только к выдаче наказаний игрокам. Полноценное управление сервером состоит из нескольких направлений.
Работа с игроками
- рассмотрение жалоб;
- наблюдение за игровым процессом;
- предупреждение нарушений;
- мут, кик и блокировка;
- проверка аккаунтов и serial;
- рассмотрение обжалований;
- защита игроков от злоупотреблений персонала.
Управление персоналом
- создание отдельных аккаунтов;
- распределение обязанностей;
- настройка ACL-групп;
- ограничение административных команд;
- ведение журнала действий;
- отзыв доступа у бывших сотрудников.
Техническое обслуживание
- запуск и перезапуск ресурсов;
- анализ Lua-ошибок;
- проверка подключения MySQL;
- обновление серверных файлов;
- контроль портов;
- резервное копирование;
- восстановление после сбоя;
- проверка производительности.
Безопасность
- защита административных аккаунтов;
- контроль ACL;
- проверка новых Lua-ресурсов;
- защита базы данных;
- ограничение панели управления;
- проверка журналов авторизации;
- смена скомпрометированных паролей.
Подготовка административного доступа
Для управления сервером создайте отдельный аккаунт MTA в серверной консоли:
addaccount ServerOwner СЛОЖНЫЙ_УНИКАЛЬНЫЙ_ПАРОЛЬ
После создания остановите сервер и добавьте аккаунт в нужную группу файла:
mods/deathmatch/acl.xml
Пример группы Admin
<group name="Admin">
<acl name="Moderator" />
<acl name="SuperModerator" />
<acl name="Admin" />
<acl name="RPC" />
<object name="resource.admin" />
<object name="resource.webadmin" />
<object name="user.ServerOwner" />
</group>
Убедитесь, что стандартная административная панель запускается вместе с сервером:
<resource
src="admin"
startup="1"
protected="0"
/>
Авторизация в игре
Подключитесь к серверу, откройте консоль F8 и выполните:
login ServerOwner СЛОЖНЫЙ_УНИКАЛЬНЫЙ_ПАРОЛЬ
После успешного входа нажмите клавишу:
P
Также панель можно открыть командой:
admin
Подробная настройка групп и прав рассмотрена отдельно.
Способы управления MTA Server
Серверная консоль
Консоль открывается вместе с процессом MTA Server и предоставляет прямой доступ к системным командам.
Она подходит для:
- запуска и остановки ресурсов;
- создания аккаунтов;
- просмотра ошибок;
- перезагрузки ACL;
- проверки портов;
- корректного выключения;
- диагностики базы данных.
Консоль F8 в клиенте MTA
Авторизованный администратор может выполнять разрешённые команды из игры. Доступ зависит от его ACL-группы.
Стандартная панель admin
Графическая панель позволяет:
- видеть подключённых игроков;
- применять наказания;
- наблюдать за игроками;
- изменять отдельные игровые параметры;
- просматривать ресурсы;
- выполнять доступные действия без ручного ввода команд.
Панель игрового хостинга
Панель хостинга обычно предоставляет:
- запуск и остановку процесса;
- серверную консоль;
- файловый менеджер;
- резервные копии;
- управление MySQL;
- графики нагрузки;
- планировщик заданий.
SSH на Linux
SSH используется для управления VPS, обновления пакетов, просмотра процессов и работы с файлами.
Ежедневная проверка сервера
Перед началом активной работы персонала рекомендуется выполнить короткую проверку.
Проверьте
- доступность сервера из браузера MTA;
- количество подключённых игроков;
- ошибки в серверной консоли;
- работу авторизации и создания персонажа;
- подключение к MySQL;
- запуск основных ресурсов;
- свободное место на диске;
- журнал неудачных административных входов;
- наличие свежей резервной копии;
- жалобы игроков после последнего обновления.
Быстрые команды
sver
debuguptime
openports
list
Проверка основного ресурса
info roleplay
Проверка базы данных
debugdb 1
После проверки отключите лишнее журналирование:
debugdb 0
Управление игроками
Работа администратора с игроком должна начинаться с проверки ситуации, а не с немедленного наказания.
Стандартный порядок
- Получите жалобу или обнаружьте нарушение.
- Определите точного игрока.
- Проверьте историю и доступные доказательства.
- Понаблюдайте за игровым процессом.
- Сопоставьте действие с правилами проекта.
- Выберите минимально достаточное наказание.
- Укажите понятную причину.
- Запишите действие в административный журнал.
Основные меры
| Мера | Когда применяется |
|---|---|
| Предупреждение | Незначительное или первое нарушение. |
| Mute | Спам, оскорбления, флуд и нарушения чата. |
| Freeze | Временная остановка игрока во время проверки. |
| Kick | Отключение без длительной блокировки. |
| Временный ban | Серьёзное нарушение с ограниченным сроком. |
| Постоянный ban | Критическое или систематическое нарушение. |
Проверка игрока перед наказанием
Просмотр данных подключённого игрока
whois НикИгрока
Команда помогает проверить IP подключённого пользователя. Для полноценного журнала проекта желательно сохранять также:
- аккаунт;
- serial;
- IP-адрес;
- имя персонажа;
- время подключения;
- версию клиента;
- историю наказаний;
- связанные аккаунты.
Почему нельзя ориентироваться только на ник
- ник можно изменить;
- разные игроки могут использовать похожие имена;
- цветовые коды усложняют поиск;
- игровой ник может отличаться от аккаунта;
- после переподключения пользователь может выбрать другое имя.
Перед блокировкой
- проверьте правильность выбранного игрока;
- зафиксируйте причину;
- сохраните доказательства;
- уточните срок наказания;
- убедитесь, что сотрудник имеет нужные полномочия.
Как отключить игрока от сервера
Команда стандартного ресурса admin:
kick НикИгрока Причина
Пример
kick PlayerName Помеха проведению мероприятия
Kick отключает игрока, но не запрещает ему подключиться повторно.
Когда подходит kick
- игрок мешает проверке;
- необходимо сменить некорректный ник;
- возникла ошибка персонажа;
- игрок игнорирует предупреждение;
- требуется повторная загрузка ресурсов;
- нарушение не требует длительной блокировки.
Когда kick недостаточен
- игрок сразу возвращается и продолжает нарушение;
- используются запрещённые модификации;
- совершена попытка взлома;
- нарушение предусматривает временную или постоянную блокировку.
Как заблокировать игроку чат
Синтаксис стандартной команды:
mute НикИгрока Причина СрокВСекундах
Пример на 10 минут
mute PlayerName Спам 600
Повторное применение команды к уже заглушённому игроку может снять ограничение.
Mute применяется за
- флуд;
- спам;
- оскорбления;
- провокации;
- рекламу;
- злоупотребление голосовым или текстовым чатом.
Для собственного Role Play режима лучше использовать отдельную систему наказаний, сохраняющую срок и причину в MySQL.
Как заблокировать игрока
Синтаксис стандартной команды admin:
ban НикИгрока Причина СрокВСекундах Serial
Временная блокировка на один час
ban PlayerName Нарушение правил 3600
Постоянная блокировка
ban PlayerName Использование запрещённого ПО 0
Нулевой срок означает постоянную блокировку.
Перед постоянным ban
- перепроверьте доказательства;
- проверьте serial и аккаунт;
- исключите ошибку синхронизации;
- зафиксируйте нарушение;
- укажите точную причину;
- сохраните данные для возможного обжалования.
Перезагрузка списка блокировок
reloadbans
Команда повторно загружает данные из файла блокировок после ручного изменения.
Наблюдение и временные ограничения
Заморозка игрока
freeze НикИгрока
Команда временно блокирует движение игрока или его транспортного средства.
Когда использовать freeze
- во время административной проверки;
- при разборе конфликта;
- для остановки помехи мероприятию;
- до устранения ошибки персонажа;
- перед телепортацией в административную зону.
Наблюдение
Стандартная административная панель позволяет наблюдать за игроками при наличии соответствующих прав. Собственная система наблюдения должна:
- скрывать администратора от обычных игроков;
- не изменять положение наблюдаемого;
- корректно восстанавливать камеру;
- записывать начало и конец проверки;
- не раскрывать служебные данные клиенту.
Правила выдачи наказаний
На сервере должен существовать единый регламент, одинаковый для всех сотрудников.
В регламенте указываются
- перечень нарушений;
- минимальные и максимальные сроки;
- основания для постоянной блокировки;
- необходимые доказательства;
- порядок рассмотрения жалобы;
- срок хранения доказательств;
- полномочия каждой должности;
- ответственность за ошибочное наказание.
Хорошая причина
Использование стороннего ПО: телепортация транспорта
Плохая причина
Пока
Нарушение
Админ решил
123
Понятная причина помогает игроку, старшему администратору и службе поддержки разобраться в ситуации.
Структура персонала сервера
Права персонала лучше разделять по обязанностям.
| Роль | Пример полномочий |
|---|---|
| Помощник | Ответы на репорты и консультации. |
| Модератор | Mute, kick, наблюдение и предупреждения. |
| Старший модератор | Временные блокировки и контроль младшего состава. |
| Администратор | Расширенное управление игроками и игровыми системами. |
| Технический администратор | Ресурсы, база данных, логи и обновления. |
| Владелец | ACL, сервер, хостинг, безопасность и финальные решения. |
Модератору не требуется доступ к MySQL, VPS, ACL и остановке ресурсов. Разработчику не обязательно выдавать право блокировать игроков.
Отдельные аккаунты для сотрудников
Каждый сотрудник должен иметь собственный серверный аккаунт.
Создание
addaccount ModeratorAlex СЛОЖНЫЙ_ПАРОЛЬ
Смена пароля
chgpass ModeratorAlex НОВЫЙ_ПАРОЛЬ
Удаление аккаунта
delaccount ModeratorAlex
Запрещено
- использовать один аккаунт всей командой;
- передавать пароль через общий чат;
- совмещать пароль MTA с паролем VPS;
- оставлять доступ у бывшего сотрудника;
- использовать короткие и повторяющиеся пароли.
Отдельные аккаунты позволяют определить, кто выполнил действие, и отозвать права только у одного сотрудника.
Настройка прав персонала через ACL
Не добавляйте весь персонал в стандартную группу Admin. Создайте отдельные роли.
Группа модераторов
<group name="ProjectModerators">
<acl name="ProjectModeratorRights" />
<object name="user.ModeratorAlex" />
<object name="user.ModeratorMaria" />
</group>
Ограниченный список прав
<acl name="ProjectModeratorRights">
<right name="general.adminpanel" access="true" />
<right name="general.tab_players" access="true" />
<right name="general.tab_resources" access="false" />
<right name="command.mute" access="true" />
<right name="command.kick" access="true" />
<right name="command.freeze" access="true" />
<right name="command.ban" access="false" />
<right name="command.start" access="false" />
<right name="command.stop" access="false" />
<right name="command.shutdown" access="false" />
</acl>
После ручного изменения выполните:
reloadacl
Защита административных аккаунтов по serial
В mtaserver.conf можно включить дополнительную защиту важных ACL-групп:
<auth_serial_groups>Admin,SuperModerator</auth_serial_groups>
Для HTTP-авторизации:
<auth_serial_http>1</auth_serial_http>
Управление привязанными serial
authserial ServerOwner list
Удаление последней авторизации:
authserial ServerOwner removelast
Дополнительные меры
- отдельный пароль для каждого аккаунта;
- защищённая электронная почта;
- ограничение доступа к панели хостинга;
- подключение к VPS по SSH-ключам;
- запрет общего доступа к webadmin;
- проверка журнала входов.
Основные команды серверной консоли
Справка
help
Версия сервера
sver
Время непрерывной работы
debuguptime
Проверка сетевых портов
openports
Сообщение всем игрокам
say Сервер будет перезапущен через 10 минут
Информация о подключённом игроке
whois НикИгрока
Перезагрузка ACL
reloadacl
Перезагрузка списка блокировок
reloadbans
Корректное выключение
shutdown Плановое техническое обслуживание
Управление паролем подключения
При запущенном стандартном ресурсе admin:
setpassword ТЕХНИЧЕСКИЙ_ПАРОЛЬ
Удаление пароля:
setpassword
Эта команда полезна при закрытом тестировании и технических работах.
Управление ресурсами сервера
Просмотр списка ресурсов
list
Обнаружение новых ресурсов
refresh
Обновление сведений обо всех ресурсах
refreshall
Информация о ресурсе
info vehicle_system
Запуск
start vehicle_system
Остановка
stop vehicle_system
Перезапуск
restart vehicle_system
Остановка всех ресурсов
stopall
Правильный порядок перезапуска
Если изменён отдельный интерфейс или работа:
restart taxi_job
Если изменён общий ресурс базы или ядра, сначала остановите зависимые системы:
stop roleplay
stop vehicles
stop inventory
stop accounts
restart database
restart server_core
start accounts
start inventory
start vehicles
start roleplay
Точный порядок зависит от зависимостей конкретной сборки.
Как обновлять ресурсы MTA
Перед обновлением
- прочитайте список изменений;
- проверьте совместимость с версией MTA;
- сравните
meta.xml; - проверьте изменения структуры MySQL;
- сохраните старую папку ресурса;
- создайте SQL-дамп;
- проведите тест на отдельной копии.
Проверка встроенного обновления
check название_ресурса
Для всех ресурсов:
check all
Применение базового обновления
upgrade название_ресурса
Либо:
upgrade all
Ручное обновление Lua-ресурса
- Остановите ресурс.
- Создайте копию старой версии.
- Замените изменённые файлы.
- Выполните
refreshall. - Запустите ресурс.
- Включите
debugscript 2. - Проверьте основные функции.
- Просмотрите серверные журналы.
Обновление с SQL-миграцией
Последовательность должна быть такой:
- Закрыть вход новым игрокам.
- Сохранить текущие игровые данные.
- Остановить зависимые ресурсы.
- Создать дамп базы.
- Выполнить SQL-миграцию.
- Установить новые файлы.
- Запустить ресурсы в правильном порядке.
- Проверить ошибки.
- Открыть сервер для игроков.
Проведение технических работ
Заранее предупредите игроков
say Технические работы начнутся через 15 минут
Повторите уведомление за 5 и 1 минуту.
Установите временный пароль
setpassword Maintenance2026
Либо заранее измените:
<password>Maintenance2026</password>
Остановите важные операции
- регистрацию новых аккаунтов;
- покупку имущества;
- торговлю между игроками;
- аукционы;
- автоматические выплаты;
- фоновые SQL-задачи;
- массовые игровые мероприятия.
Корректно сохраните данные
Используйте предусмотренные сборкой команды сохранения, затем корректно остановите ресурсы или сервер.
После обслуживания
- проверьте авторизацию;
- создайте тестового персонажа;
- проверьте баланс и инвентарь;
- загрузите транспорт;
- проверьте дома и бизнесы;
- выполните тестовую покупку;
- проверьте административные команды;
- удалите временный пароль.
Основные журналы MTA Server
Пути журналов задаются в mtaserver.conf.
Главный журнал
<logfile>logs/server.log</logfile>
Содержит сообщения запуска, подключения игроков, ресурсов и системные события.
Журнал авторизации
<authfile>logs/server_auth.log</authfile>
Помогает отслеживать успешные и неуспешные попытки входа в серверные аккаунты.
Журнал базы данных
<dbfile>logs/db.log</dbfile>
Журнал Lua-ошибок
<scriptdebuglogfile>logs/scripts.log</scriptdebuglogfile>
<scriptdebugloglevel>2</scriptdebugloglevel>
Рекомендуемая структура
mods/deathmatch/logs/
├── server.log
├── server_auth.log
├── db.log
└── scripts.log
Что искать в server.log
- неожиданные остановки ресурсов;
- ошибки загрузки файлов;
- неудачные подключения;
- повторяющиеся предупреждения;
- неизвестные административные команды;
- частые переподключения одного IP;
- ошибки модулей;
- сообщения перед аварийным завершением.
Что искать в server_auth.log
- много неудачных входов;
- вход администратора с нового IP;
- использование удалённого сотрудника;
- подбор паролей;
- авторизацию в необычное время.
Поиск ошибок Lua
Только ошибки
debugscript 1
Ошибки и предупреждения
debugscript 2
Ошибки, предупреждения и информация
debugscript 3
Закрытие отладочного окна
debugscript 0
Очистка
cleardebug
Структура типичного сообщения
ERROR: resource_name/server.lua:125: attempt to index a nil value
Сообщение содержит:
- уровень ошибки;
- название ресурса;
- имя файла;
- номер строки;
- описание проблемы.
Не перезапускайте ресурс вслепую
Сначала зафиксируйте:
- точный текст ошибки;
- момент её появления;
- действие игрока;
- последнее изменение кода;
- значения связанных переменных;
- состояние зависимых ресурсов.
Собственные сообщения
outputDebugString(
"[VEHICLES] Началась загрузка транспорта",
3
)
Запись важного события в главный журнал
outputServerLog(
"[ADMIN] ServerOwner перезапустил vehicle_system"
)
Подробная установка и диагностика Lua-скриптов рассмотрена в отдельном руководстве.
Контроль базы данных MySQL
Включение журнала ошибок запросов
debugdb 1
Полное журналирование запросов
debugdb 2
Отключение
debugdb 0
Режим debugdb 2 не следует оставлять включённым надолго на активном сервере: файл может быстро увеличиваться.
Регулярно проверяйте
- ошибки соединения;
- медленные запросы;
- повторные запросы в циклах;
- отсутствующие таблицы;
- дублирующиеся записи;
- переполнение столбцов;
- ошибки кодировки;
- размер базы;
- успешность резервного копирования.
Проверка службы на Linux
sudo systemctl status mysql
Для MariaDB:
sudo systemctl status mariadb
Проверка подключения
mysql \
-h 127.0.0.1 \
-P 3306 \
-u mta_user \
-p \
mta_server
Подробное подключение и диагностика базы рассмотрены отдельно.
Контроль состояния сервера
На уровне MTA проверяйте
- время непрерывной работы;
- состояние основных ресурсов;
- доступность портов;
- частоту ошибок Lua;
- время выполнения SQL-запросов;
- число подключённых игроков;
- скорость загрузки клиентских файлов.
На уровне операционной системы
- нагрузку процессора;
- использование оперативной памяти;
- свободное место;
- скорость сети;
- состояние диска;
- работу MySQL;
- время работы процесса MTA;
- неожиданные перезапуски.
Linux: просмотр процесса
ps aux | grep mta-server
Использование памяти
free -h
Свободное место
df -h
Размер журналов
du -sh \
/home/mtasa/mta-server/mods/deathmatch/logs/
Открытые порты
sudo ss -lntup
Резервное копирование сервера
Что необходимо сохранять
- папку
resources; mtaserver.conf;acl.xml;settings.xml;internal.db;registry.db;- SQL-дамп MySQL;
- серверные модули;
- файлы запуска;
- служебные конфигурации;
- список используемых версий.
Создание SQL-дампа
mysqldump \
--single-transaction \
-h 127.0.0.1 \
-u mta_user \
-p \
mta_server \
> mta_server_backup.sql
Пример структуры копий
backups/
├── daily/
│ ├── 2026-07-29/
│ ├── 2026-07-30/
│ └── 2026-07-31/
├── weekly/
│ └── 2026-week-31/
└── before-updates/
└── vehicle-system-2.0/
Правило хранения
- одна копия на сервере;
- одна на другом физическом сервере;
- одна локальная или в защищённом облаке.
Обязательно проверяйте восстановление
Наличие файла ещё не гарантирует, что копия рабочая. Периодически разворачивайте её на тестовом сервере и проверяйте:
- запуск MTA;
- импорт SQL;
- авторизацию;
- загрузку персонажей;
- целостность имущества;
- права ACL;
- клиентские файлы.
Как безопасно обновить MTA Server
Обновление самой серверной программы отличается от обновления отдельного Lua-ресурса.
Перед обновлением
- проверьте текущую версию командой
sver; - прочитайте список изменений;
- сохраните весь каталог сервера;
- создайте дамп MySQL;
- сохраните конфигурацию и ACL;
- проверьте совместимость модулей;
- подготовьте тестовую копию.
Не заменяйте бездумно
mtaserver.conf;acl.xml;- папку ресурсов;
- внутренние базы;
- собственные модули;
- файлы с паролями.
Безопасная последовательность
- Сообщите о технических работах.
- Закройте сервер паролем.
- Сохраните игровые данные.
- Корректно выключите MTA Server.
- Создайте полную резервную копию.
- Обновите серверные бинарные файлы.
- Сравните новый шаблон конфигурации со старым.
- Проверьте новые обязательные параметры.
- Запустите тестовый экземпляр.
- Проверьте ресурсы, MySQL, ACL и порты.
- Только после проверки откройте публичный доступ.
Особое внимание модулям
Нативные файлы .dll и .so могут перестать работать после смены архитектуры или серверной версии.
При ошибке модуля:
- проверьте его версию;
- проверьте архитектуру;
- проверьте системные библиотеки;
- не скачивайте замену с неизвестного сайта;
- временно отключите модуль на тестовой копии.
Безопасность администрирования
Разделяйте доступ
- аккаунт MTA — для игровых команд;
- SSH — для операционной системы;
- MySQL — для базы данных;
- панель хостинга — для управления услугой;
- почта — для восстановления доступа.
Для каждого сервиса используйте отдельный пароль.
Ограничьте опасные права
Обычному модератору не требуются:
command.shutdown
command.start
command.stop
command.stopall
general.tab_acl
general.tab_resources
function.aclSetRight
function.removeAccount
Проверяйте новые ресурсы
Особое внимание уделяйте функциям:
fetchRemote
loadstring
load
addAccount
setAccountPassword
removeAccount
aclSetRight
aclGroupAddObject
startResource
stopResource
restartResource
shutdown
Наличие такой функции не доказывает вредоносность, но требует проверки назначения и ACL-доступа.
Ограничьте MySQL
- не используйте root в Lua-коде;
- разрешайте вход только с IP MTA Server;
- не открывайте порт 3306 всему интернету;
- регулярно меняйте пароль;
- не храните его в клиентском Lua-файле;
- создавайте отдельного пользователя проекта.
Ограничьте webadmin
- используйте сложный пароль;
- не публикуйте адрес панели;
- ограничьте доступ сетевым экраном;
- используйте VPN или доверенный IP;
- проверяйте журнал авторизации;
- отключите ресурс, если он не используется.
Не передавайте рабочую сборку целиком
Перед передачей разработчику удалите:
- пароли базы;
- реальные пользовательские данные;
- административные аккаунты;
- ключи API;
- токены ботов;
- закрытые сертификаты;
- резервные копии ACL.
Что делать при взломе или серьёзном сбое
1. Ограничьте доступ
- закройте сервер паролем;
- отключите подозрительный ресурс;
- заблокируйте неизвестный IP;
- отключите webadmin;
- отзовите скомпрометированный аккаунт.
2. Не уничтожайте доказательства
Сохраните копии:
server.log;server_auth.log;scripts.log;db.log;acl.xml;- подозрительных ресурсов;
- последних SQL-изменений;
- списка процессов и подключений.
3. Смените доступы
- пароли административных аккаунтов MTA;
- пароль панели хостинга;
- пароль MySQL;
- пароли электронной почты;
- SSH-ключи и токены;
- ключи сторонних API.
4. Проверьте ACL
Ищите новые строки:
<object name="user.UnknownAccount" />
<object name="resource.unknown_resource" />
Проверьте также неизвестные права:
<right
name="general.ModifyOtherObjects"
access="true"
/>
5. Сравните ресурсы с чистой копией
- найдите недавно изменённые файлы;
- проверьте добавленные серверные скрипты;
- проверьте
meta.xml; - найдите внешние запросы;
- проверьте новые модули;
- проверьте планировщик операционной системы.
6. Восстановите чистую версию
Не продолжайте работу на потенциально заражённой сборке. Разверните проверенную резервную копию, примените безопасные изменения и только затем возвращайте сервер в публичный режим.
Журнал действий персонала
Собственный игровой режим должен сохранять важные действия администраторов.
Рекомендуемые поля
- дата и время;
- аккаунт администратора;
- serial администратора;
- действие;
- целевой игрок или аккаунт;
- значение или срок;
- причина;
- сервер или режим;
- результат выполнения.
Пример серверной функции
local function stripColorCodes(text)
return tostring(text):gsub("#%x%x%x%x%x%x", "")
end
function logAdminAction(admin, actionName, target, reason)
local adminName = "Server Console"
local adminSerial = "console"
if isElement(admin)
and getElementType(admin) == "player" then
adminName = stripColorCodes(getPlayerName(admin))
adminSerial = getPlayerSerial(admin)
end
local targetName = "none"
if isElement(target)
and getElementType(target) == "player" then
targetName = stripColorCodes(getPlayerName(target))
elseif target then
targetName = tostring(target)
end
local logLine = string.format(
"[ADMIN ACTION] admin=%s serial=%s action=%s target=%s reason=%s",
adminName,
adminSerial,
tostring(actionName),
targetName,
tostring(reason or "not specified")
)
outputServerLog(logLine)
outputDebugString(logLine, 3)
return true
end
Пример вызова
logAdminAction(
player,
"kick",
targetPlayer,
"Repeated rule violation"
)
Для крупного проекта
Дополнительно сохраняйте действия в MySQL и создайте отдельную панель просмотра. Не разрешайте обычным администраторам удалять записи журнала.
График обслуживания сервера
Каждый день
- проверить доступность сервера;
- просмотреть последние ошибки;
- проверить MySQL;
- проверить жалобы игроков;
- убедиться в создании резервной копии;
- проверить свободное место.
Каждую неделю
- проверить все административные аккаунты;
- просмотреть журнал авторизации;
- проверить размер логов;
- проверить медленные SQL-запросы;
- обновить тестовую копию;
- проверить основные игровые системы;
- проверить восстановление последней копии.
Каждый месяц
- провести аудит ACL;
- удалить неиспользуемые аккаунты;
- проверить права ресурсов;
- проверить актуальность MTA Server;
- проверить модули;
- очистить устаревшие логи;
- проверить состояние диска;
- обновить документацию проекта.
Перед крупным обновлением
- подготовить план отката;
- создать полную копию;
- протестировать миграции;
- назначить ответственного;
- предупредить игроков;
- подготовить список проверок;
- зафиксировать точное время работ.
Распространённые ошибки администрирования
Сотруднику сразу выдали Admin
Вместо этого создайте ограниченную группу с необходимыми командами.
У всей команды один аккаунт
Невозможно определить автора действия и безопасно отозвать доступ только у одного человека.
Ресурс перезапускается без анализа ошибки
Перезапуск временно скрывает проблему, но не исправляет повреждение данных, утечку памяти или неправильный запрос.
Обновление выполняется на рабочем сервере
Сначала применяйте его на тестовой копии с отдельной базой данных.
Перед обновлением нет дампа MySQL
Изменение таблиц может оказаться необратимым. Всегда создавайте копию до миграции.
Сервер выключают принудительно
Используйте команду:
shutdown Причина выключения
debugdb 2 оставлен навсегда
Полный журнал запросов быстро занимает дисковое пространство и может содержать чувствительные данные.
Удаляются журналы сразу после сбоя
Сначала сохраните их отдельно. Без логов трудно определить причину аварии или взлома.
Порт MySQL открыт всему интернету
Ограничьте TCP-порт 3306 точным IP сервера MTA или используйте локальное подключение.
Один пароль используется везде
Утечка одного сервиса приведёт к потере MTA, базы, VPS и панели хостинга.
Ресурсу выдаются полные права Admin
Разрешите только конкретные функции через ACL или aclrequest.
Нет плана отката
Перед изменением должно быть понятно, какие файлы, таблицы и параметры нужно вернуть при неудаче.
Частые вопросы по администрированию MTA:SA
Как создать администратора?
Создайте аккаунт командой addaccount и добавьте объект user.ЛОГИН в нужную ACL-группу.
Как войти в административный аккаунт?
Откройте F8 и выполните login логин пароль.
Как открыть стандартную панель?
Запустите ресурс admin, авторизуйтесь и нажмите P либо выполните команду admin.
Как отключить игрока?
Используйте kick ник причина.
Как выдать mute?
Используйте mute ник причина срок_в_секундах.
Как заблокировать игрока?
Используйте команду ban стандартного ресурса admin или систему наказаний игрового режима.
Как посмотреть IP игрока?
Для подключённого игрока используйте whois ник.
Как отправить сообщение всем игрокам?
Введите say текст сообщения.
Как проверить порты?
В серверной консоли выполните openports.
Как проверить время работы?
Выполните debuguptime.
Как посмотреть версию сервера?
Используйте sver.
Как найти новый ресурс?
Скопируйте его в папку resources и выполните refresh.
Как применить изменения ресурса?
Обычно достаточно restart название. После изменения meta.xml выполните refreshall.
Как посмотреть Lua-ошибки?
Используйте debugscript 2 или debugscript 3.
Где находится серверный лог?
Обычно в mods/deathmatch/logs/server.log.
Где находится журнал авторизации?
Обычно в mods/deathmatch/logs/server_auth.log.
Как включить журнал MySQL?
Используйте debugdb 1 для ошибок или debugdb 2 для всех запросов.
Как отключить журнал MySQL?
Введите debugdb 0.
Как перезагрузить ACL?
Выполните reloadacl.
Как перезагрузить блокировки?
Выполните reloadbans.
Как корректно выключить сервер?
Используйте shutdown причина.
Как закрыть сервер на технические работы?
Предупредите игроков, установите временный пароль, сохраните данные и корректно остановите сервер.
Как часто создавать резервные копии?
Базу и критические данные желательно сохранять ежедневно, а дополнительную копию создавать перед каждым обновлением.
Нужно ли перезапускать сервер каждый день?
Обязательного ежедневного перезапуска нет. Стабильный сервер может работать дольше, если ресурсы корректно освобождают память и не накапливают ошибки.
Можно ли обновлять ресурс без остановки сервера?
Можно перезапустить отдельный ресурс, но обновления ядра, базы, аккаунтов и имущества безопаснее проводить во время технических работ.
Почему сервер тормозит при небольшом онлайне?
Причиной могут быть частые Lua-таймеры, тяжёлые циклы, синхронизация большого числа элементов или медленные SQL-запросы.
Как безопасно выдать права модератору?
Создайте отдельную ACL-группу и разрешите только необходимые команды.
Можно ли дать разработчику доступ к рабочему серверу?
Безопаснее предоставить отдельный тестовый сервер. Доступ к публичному проекту должен быть строго ограничен.
Что делать после ухода администратора?
Удалите его из ACL, заблокируйте аккаунт и отзовите доступ к VPS, MySQL, панели хостинга и внутренним сервисам.
Что делать после взлома?
Ограничьте доступ, сохраните журналы, смените пароли, проверьте ACL и ресурсы, затем восстановите проверенную резервную копию.
Заключение
Администрирование MTA:SA включает не только модерацию игроков, но и контроль ресурсов, ACL, базы данных, журналов, резервных копий и серверной инфраструктуры.
Каждому сотруднику создавайте отдельный аккаунт и отдельную роль с минимально необходимыми правами. Не добавляйте весь персонал и неизвестные ресурсы в группу Admin.
Для управления ресурсами используйте команды refresh, refreshall, start, stop и restart. Перед любым обновлением сохраняйте рабочие файлы и SQL-дамп.
Ошибки Lua проверяйте через debugscript и scripts.log, запросы базы — через debugdb и db.log, а попытки входа — через server_auth.log.
Регулярное обслуживание, проверенные резервные копии и ограниченные права персонала значительно снижают риск потери данных, взлома и продолжительного простоя сервера.
Настройка главного конфигурационного файла:
Управление правами:
Ресурсы и Lua-скрипты:
База данных:
Комментарии к инструкции
Обсудите решение, задайте вопрос или дополните инструкцию