# Обслуживание Сервера

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

## Как установить

Инструкции по установке см. в разделе [Установка сервера](create-a-server.md).

## Файл ServerConfig

Конфигурация сервера, представляющая собой файл `ServerConfig.toml`, использует [формат TOML](https://toml.io/en/).

*ПРИМЕЧАНИЕ*: *Старый* файл конфигурации сервера назывался `Server.cfg`, но он больше не используется, и сервер выдаст предупреждение, если он все еще присутствует. Также обратите внимание, что два формата конфигурации **несовместимы** друг с другом.

По умолчанию в конфигурации есть один раздел, называемый `[General]`, который содержит следующие значения:

Ключ | Тип значения | Описание
--- | --- | ---
Порт | 1024-65535 | Сетевой порт, по которому сервер будет доступен. (Должен быть уникальным и не использоваться другим сервисом на том же хосте).
AuthKey | Формат AuthKey `xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` где все x — буквенно-цифровые символы (цифры и буквы) | Используется для идентификации публичного сервера в бэкенде.
AllowGuests | правда/ложь | Определяет, разрешено ли гостям подключаться к серверу или нет.
LogChat | правда/ложь | Если включено (true), сообщения чата записываются в файл server.log.
Отлаживать | правда/ложь | При включении (true) будет отображаться больше сообщений в журнале и предоставляться больше информации. Включите это, если у вас возникнут проблемы. Включение этого параметра значительно увеличит размер файла журнала.
Частный | правда/ложь | Если включено (true), ваш сервер не будет отображаться в списке серверов. Любой с правильным IP и портом все равно сможет подключиться.
InformationPacket | правда/ложь | Если включено (true), сервер будет позволять неаутентифицированным клиентам получать ту же информацию, что и в списке серверов, но напрямую с сервера.
Имя | Любой "текст" | Отображается как имя/заголовок вашего сервера в списке серверов. Вы можете использовать специальные символы для форматирования с помощью цветов и стилей.
Tags | См. список разрешённых тегов ниже. | Теги для поиска, например: Police, Racing и т.д.
МаксКарс | Любое число ≥ 1 | Максимальное количество машин на игрока. Любые дополнительные машины, которые игрок попытается создать, будут мгновенно удалены.
MaxPlayers | Любое число ≥ 1 | Максимальное количество игроков на сервере. Это не влияет на количество транспортных средств.
Карта | Допустимое местоположение на карте, например `/levels/gridmap_v2/info.json` | Карта, которую будет размещать ваш сервер. Должна быть установлена либо по умолчанию (список можно найти ниже), либо как серверный мод.
Описание | Любой "текст" | Отображается как описание сервера в списке серверов (если сервер публичный). Вы можете использовать специальные символы для форматирования с помощью цветов и стилей.
ResourceFolder | Корректный путь к папке, например: "D:\Server\BeamMP\Resources" | Полезно хранить сервер и папку ресурсов отдельно.
ImScaredOfUpdates | правда/ложь | Определяет, будет ли сервер автоматически обновляться при выходе новой версии.
UpdateReminderTime | Любое число с суффиксом s, min, h или d (например, 30s). | Задаёт интервал напоминаний об обновлении, выводимых в терминал.

Другие разделы могут и должны использоваться серверными плагинами (скоро появится API Lua), например: `[MyMod]`.

AuthKey **ДОЛЖЕН** быть установлен вами. Он будет пустым по умолчанию и должен быть заполнен вашим AuthKey с шага установки ранее. Не делитесь этим ключом ни с кем и на снимках экрана полностью размывайте его.

### Все названия ванильных карт

Вот все карты акций:

- /levels/gridmap_v2/info.json
- /levels/johnson_valley/info.json
- /levels/automation_test_track/info.json
- /levels/восточное_побережье_США/info.json
- /levels/hirochi_raceway/info.json
- /уровни/италия/info.json
- /levels/jungle_rock_island/info.json
- /уровни/промышленный/info.json
- /levels/маленький_остров/info.json
- /уровни/smallgrid/info.json
- /levels/юта/info.json
- /levels/западное_побережье_США/info.json
- /уровни/обучение_водителей/info.json
- /levels/derby/info.json

### Настройте внешний вид имени вашего сервера

Используйте эти специальные символы перед текстом, и к этому тексту в списке серверов будет применен эффект:

Ценить | Описание
:-: | ---
`^r` | Перезагрузить
`^p` | Новая строка (только описания)
`^n` | Подчеркнуть
`^l` | Смелый
`^m` | Зачеркивание
`^o` | Курсив
`^0` | Черный
`^1` | Синий
`^2` | Зеленый
`^3` | светло-голубой
`^4` | Красный
`^5` | Розовый
`^6` | Апельсин
`^7` | Серый
`^8` | Темно-серый
`^9` | Светло-фиолетовый
`^a` | Светло-зеленый
`^b` | светло-голубой
`^c` | Темно-оранжевый
`^d` | светло-розовый
`^e` | Желтый
`^f` | Белый

### Настройте теги вашего сервера

Теги могут использоваться для того, чтобы позволить людям искать определенный тип сервера. Ваш serverConfig.toml будет сгенерирован с тегом freeroam `Tags = "Freeroam"`.

Вы можете добавить несколько тегов, разделенных запятой `Tags = "Events,Offroad,lang:english"`, регистр не учитывается.

Вы можете выбрать из следующего списка:

- Возраст/Содержание:

    - `Mature/18+`

- Типы игрового процесса:

    - `Freeroam`
    - `Roleplay`
    - `Economy`
    - `Traffic`

- Категории гонок:

    - `Racing`
    - `Racing:NASCAR`
    - `Racing:Track`
    - `Racing:Drag`
    - `Racing:Rally`
    - `Touge`

- Бездорожье и испытания:

    - `Offroad`
    - `Crawling`
    - `Dakar`
    - `Challenge`

- События разрушения:

    - `Derby`
    - `Arena`

- Погодные и временные условия:

    - `Snow/Ice`
    - `Rain`
    - `Night`
    - `Weather`

- Режимы игры:

    - `Gamemode`
    - `Gamemode:Racing`
    - `Gamemode:Rally`
    - `Gamemode:Drag`
    - `Gamemode:Derby`
    - `Gamemode:Infection`
    - `Gamemode:Cops-Robbers`
    - `Gamemode:Delivery`
    - `Gamemode:Sumo`

- Сообщество и события:

    - `Scenarios`
    - `Events`
    - `Leaderboard`

- Модификации:

    - `Modded`
    - `Mod:BeamPaint`
    - `Mod:BeamJoy`
    - `Mod:CEI`

- Языки:

    - `Lang:English`
    - `Lang:Russian`
    - `Lang:French`
    - `Lang:Spanish`
    - `Lang:Portuguese`
    - `Lang:German`
    - `Lang:Polish`
    - `Lang:Arabic`

- Другой:

    - `Vanilla`
    - `Moderated`

Если тег отсутствует в этом списке, вы можете отправить запрос на его добавление [здесь](https://forum.beammp.com/t/introducing-server-tags/1320081)

## Файл Server.log

Этот файл будет сгенерирован при запуске сервера. Это зеркало сообщений, которые вы видите в консоли при запуске сервера. Вам следует прикреплять этот файл каждый раз, когда вам нужна поддержка от нашей службы поддержки, и он никогда не покажет ваш AuthKey, поэтому вы обычно можете отправить его без изменений.

Формат следующий (префикс $ означает «переменная», пояснение ниже):

```
[$DATE $TIME] $CONTEXT [$LOG_LEVEL] $MESSAGE
```

Где:

- `$DATE` — дата сообщения, например 21/07/2021
- `$TIME` — время сообщения, например 11:05:23
- `$CONTEXT` (виден только в режиме отладки и в основном актуален для разработчиков) — контекст сообщения, который может быть:
    - `(Player ID) “Player Name”`, где ID игрока полезен для модерации
    - Короткое имя, например «HeartbeatThread»
- `$LOG_LEVEL` — один из уровней важности сообщения:
    - `DEBUG`: отображается только в режиме отладки, обычно является спамом и важен только для разработчиков.
    - `INFO`: Общая информация
    - `LUA`: Сообщение от плагина Lua
    - `WARN`: Описывает то, что не должно происходить, обычно
    - `ERROR`: Что-то пошло не так или произошло очень неожиданно.
    - `FATAL`: Произошло что-то, что привело к отключению сервера.
- `$MESSAGE` само сообщение, обычно то, на что следует обратить внимание и что следует понять. В некоторых случаях это может быть зашифровано, но общее правило заключается в том, что пока нет видимых проблем с сервером и нет ОШИБОК, все хорошо.

## Обновление сервера

### Зачем обновлять

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

Чтобы получать новости об обновлениях по мере их выхода, подпишитесь на канал «обновления» сервера Discord, ищите его на форумах или посетите/спросите на [странице релизов GitHub](https://github.com/BeamMP/BeamMP-Server/releases).

### Как обновить

#### Если вы пользуетесь услугами хостинг-провайдера, являющегося партнером BeamMP

Если вы используете хостинг-провайдера, партнера BeamMP, инструкции ниже, скорее всего, не сработают. Мы рекомендуем дождаться более подробной информации от вашего хостинг-провайдера или связаться с ним для получения помощи.

#### Самостоятельное управление сервером

Сервер обновляется путем замены старого исполняемого файла на новый. Если вы не уверены, как это сделать, ниже приведены пошаговые инструкции для Windows и Linux.

Если вы собрали из исходников, просто пересоберите. Убедитесь, что выполнили `git submodule update --init --recursive` перед пересборкой.

#### В Windows

1. Для запуска сервера убедитесь, что у вас установлены [Visual C++ Redistributables](https://aka.ms/vs/17/release/vc_redist.x64.exe).
2. Перейдите на [BeamMP.com](https://beammp.com/) и нажмите кнопку «Загрузить сервер».
3. После загрузки вы должны увидеть один файл с именем `BeamMP-Server.exe`. Мы назовем его «новый исполняемый файл».
4. Перейдите в папку, где находится ваш текущий исполняемый файл `BeamMP-Server.exe` (обычно это та же папка, где находится ваш `ServerConfig.toml`). Мы будем называть его «старым исполняемым файлом».
5. Замените старый исполняемый файл новым исполняемым файлом (например, скопировав или переместив новый исполняемый файл в папку).

#### На Линуксе

1. Перейдите на [BeamMP.com](https://beammp.com/) и нажмите кнопку «Загрузить сервер», вы будете перенаправлены на страницу релиза сервера на Github.
2. Загрузите правильную версию для вашего дистрибутива. Для простоты теперь он будет называться `BeamMP-Server-xxx`, где `xxx` обозначает версию для используемого вами дистрибутива.
3. После загрузки вы должны увидеть один файл с именем `BeamMP-Server-xxx` в зависимости от версии, которую вы скачали. Мы назовем его «новый исполняемый файл».
4. Перейдите в папку, где находится ваш текущий исполняемый файл `BeamMP-Server-xxx` (обычно это та же папка, где находится ваш `ServerConfig.toml`). Мы будем называть его «старым исполняемым файлом».
5. Замените старый исполняемый файл новым исполняемым файлом (например, скопировав или переместив новый исполняемый файл в папку).
6. Откройте терминал в той папке, где вы только что заменили исполняемый файл, и выполните `sudo chmod +x BeamMP-Server-xxx`. Это позволит убедиться, что сервер может быть запущен.

### Автоматические обновления

Сервер не поддерживает автоматические обновления или уведомления об обновлениях (пока).

Однако вы можете запросить API GitHub для получения последней версии, проверив версию сервера по тегам. Вы можете получить это с помощью GET из `https://api.github.com/repos/BeamMP/BeamMP-Server/git/refs/tags`.
