Pterohost docs

Arma 3: установка и настройка выделенного сервера

Пошаговая установка сервера Arma 3 через SteamCMD: server.cfg, basic.cfg, моды, миссии, порты и headless client.

Кратко: для запуска сервера Arma 3 нужен SteamCMD с App ID 233780, настроенный server.cfg с именем и паролями, открытый порт 2302 UDP. Моды подключаются через ключ -mod= в строке запуска, миссии кладутся в папку mpmissions.

Arma 3: установка и настройка выделенного сервера

Arma 3 - одна из самых требовательных к железу и настройке многопользовательских игр. Сервер может обслуживать от пяти человек с лёгкими сценариями до 100+ игроков в реалистичных военных операциях с десятками модов. Правильно настроенный выделенный сервер даёт стабильный пинг, управляемую нагрузку ЦП и отказоустойчивость при крашах. Эта статья охватывает полный цикл: от установки через SteamCMD до настройки headless client и разбора частых проблем с модами.

Pterohost - игровой хостинг с NVMe-дисками, DDoS-защитой и поддержкой 24/7. Если не хочется заниматься конфигурацией сервера самостоятельно - панель управления сделает это за несколько кликов. Промокод 4START даёт -20% на первый заказ. Заказать сервер Arma 3

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

Прежде чем приступить к установке, убедитесь, что сервер соответствует минимальным требованиям. Arma 3 использует один поток для основной симуляции, поэтому важна тактовая частота ЦП, а не только количество ядер.

ПараметрМинимумРекомендуется
ОСUbuntu 20.04 LTS / Windows Server 2019Ubuntu 22.04 LTS
ЦП4 ядра @ 3.0 GHz6+ ядер @ 3.5+ GHz
ОЗУ4 GB16 GB
Диск50 GB HDD100 GB NVMe SSD
Сеть10 Mbps up100 Mbps up
Порты2302-2305 UDP2302-2306 UDP

Для модпаков вроде RHS + CUP + ACE требования растут: только загрузка данных мода может занять 30-60 GB, а ОЗУ уходит под 12-14 GB при 30 игроках.

Установка SteamCMD и загрузка сервера

Linux (Ubuntu/Debian)

# Установка зависимостей
sudo apt-get update
sudo apt-get install -y lib32gcc-s1 lib32stdc++6 wget curl

# Создаём пользователя для сервера (рекомендуется)
sudo adduser --disabled-login arma3

# Скачиваем SteamCMD
mkdir -p /home/arma3/steamcmd
cd /home/arma3/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz

# Загружаем сервер (App ID 233780)
./steamcmd.sh +force_install_dir /home/arma3/arma3server \
  +login anonymous \
  +app_update 233780 validate \
  +quit

Windows

Скачайте steamcmd.exe с официального сайта Steam, распакуйте и выполните:

steamcmd.exe +force_install_dir "C:\arma3server" ^
  +login anonymous ^
  +app_update 233780 validate ^
  +quit

После загрузки в директории сервера должен появиться файл arma3server_x64 (Linux) или arma3server_x64.exe (Windows) - это и есть исполняемый файл сервера.

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

Для обновления достаточно повторно запустить SteamCMD с той же командой app_update 233780 validate. Рекомендуется добавить это в cron или планировщик Windows для автоматических обновлений.

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

Основной конфигурационный файл сервера. Создайте его в директории сервера:

nano /home/arma3/arma3server/server.cfg

Базовый рабочий конфиг:

// Основные настройки сервера
hostname = "Мой сервер Arma 3";
password = "";                    // Пароль для входа (пусто = открытый)
passwordAdmin = "adminpass";      // Пароль администратора - ОБЯЗАТЕЛЬНО СМЕНИТЬ
serverCommandPassword = "cmdpass"; // Пароль для команд через консоль

// Настройки слотов и доступа
maxPlayers = 64;
persistent = 1;                   // Сервер не выключается при пустом лобби

// Безопасность
BattlEye = 1;                     // Включить BattlEye (рекомендуется)
verifySignatures = 2;             // Проверять подписи модов (2 - строгий режим)
allowedFilePatching = 0;          // 0 - никому, 1 - только admins, 2 - всем
kickDuplicate = 1;                // Выгонять дубликаты

// Миссии - список доступных в ротации
class Missions {
    class Mission1 {
        template = "co10_example.Altis";  // Имя файла миссии без .pbo
        difficulty = "Regular";
        class Params {};
    };
};

// Логирование
logFile = "server_console.log";
timeStampFormat = "short";

Важные параметры verifySignatures:

  • 0 - не проверять (опасно, позволяет читы через моды)
  • 1 - проверять только подписи v1 (устаревший)
  • 2 - строгая проверка v2 (рекомендуется)

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

Файл basic.cfg управляет сетевыми параметрами. Создайте его рядом с server.cfg:

// Настройки сети (basic.cfg)
MaxMsgSend = 128;          // Максимум пакетов в очереди отправки
MaxSizeGuaranteed = 512;   // Максимальный размер гарантированного пакета
MaxSizeNonguaranteed = 256; // Максимальный размер негарантированного пакета
MinBandwidth = 131072;     // Минимальная пропускная способность (байт/с)
MaxBandwidth = 104857600;  // 100 Mbps - максимум для сервера
MinErrorToSend = 0.001;    // Точность синхронизации
MinErrorToSendNear = 0.01; // Точность для близких объектов
MaxCustomFileSize = 160;   // Максимальный размер пользовательских файлов (kB)
adapter = -1;              // -1 = все адаптеры

Для высоконагруженных серверов с хорошим каналом:

MaxMsgSend = 256;
MaxSizeGuaranteed = 1024;
MaxSizeNonguaranteed = 512;
MaxBandwidth = 524288000;  // 500 Mbps

Открытие портов и запуск

Открытие портов (Linux/UFW)

sudo ufw allow 2302:2306/udp
sudo ufw reload

Открытие портов через iptables

iptables -A INPUT -p udp --dport 2302:2306 -j ACCEPT
iptables-save > /etc/iptables/rules.v4

Строка запуска сервера

Базовый запуск:

./arma3server_x64 \
  -config=server.cfg \
  -cfg=basic.cfg \
  -port=2302 \
  -profiles=/home/arma3/profiles \
  -name=server \
  -nosound

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

./arma3server_x64 \
  -config=server.cfg \
  -cfg=basic.cfg \
  -port=2302 \
  -profiles=/home/arma3/profiles \
  -name=server \
  -nosound \
  -limitFPS=50 \
  -cpuCount=4 \
  -exThreads=7 \
  -enableHT \
  -noLogs

Пояснения ключевых параметров:

  • -limitFPS=50 - ограничение FPS сервера снижает нагрузку на ЦП
  • -cpuCount=N - количество ядер для сервера
  • -exThreads=7 - дополнительные потоки (рекомендуется для 8-поточных ЦП)
  • -enableHT - включить Hyper-Threading
  • -noLogs - отключить подробное логирование (снижает нагрузку на диск)

Systemd-сервис (Linux)

# /etc/systemd/system/arma3.service
[Unit]
Description=Arma 3 Dedicated Server
After=network.target

[Service]
Type=simple
User=arma3
WorkingDirectory=/home/arma3/arma3server
ExecStart=/home/arma3/arma3server/arma3server_x64 \
  -config=server.cfg \
  -cfg=basic.cfg \
  -port=2302 \
  -profiles=/home/arma3/profiles \
  -name=server \
  -nosound
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable arma3
sudo systemctl start arma3
sudo systemctl status arma3

Добавление модов

Загрузка модов через SteamCMD

Для загрузки модов Steam Workshop необходимо использовать аккаунт Steam с купленной игрой:

./steamcmd.sh +login вашлогин вашпароль \
  +workshop_download_item 107410 <mod_id> \
  +quit

Замените <mod_id> на ID мода из URL страницы Workshop. Например, для ACE3:

./steamcmd.sh +login вашлогин вашпароль \
  +workshop_download_item 107410 463939057 \
  +quit

Моды загружаются в ~/.steam/SteamApps/workshop/content/107410/<mod_id>/.

Структура папок для модов

/home/arma3/arma3server/
├── @ACE/
│   ├── addons/
│   │   └── *.pbo
│   └── keys/
│       └── *.bikey
├── @RHS_AFRF/
│   ├── addons/
│   └── keys/
└── @CBA_A3/
    ├── addons/
    └── keys/

Папка keys/ содержит файлы .bikey - ключи подписи мода. Их нужно скопировать в директорию keys/ сервера:

cp /home/arma3/arma3server/@ACE/keys/*.bikey /home/arma3/arma3server/keys/
cp /home/arma3/arma3server/@RHS_AFRF/keys/*.bikey /home/arma3/arma3server/keys/

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

./arma3server_x64 \
  -config=server.cfg \
  -cfg=basic.cfg \
  -port=2302 \
  -profiles=/home/arma3/profiles \
  -name=server \
  -nosound \
  -mod=@CBA_A3;@ACE;@RHS_AFRF \
  -serverMod=@Achilles

Разница между -mod= и -serverMod=:

  • -mod= - моды, которые должны быть у ВСЕХ клиентов (синхронизируются)
  • -serverMod= - моды только на сервере, клиенты их не видят (например, административные утилиты)

Настройка миссий

Добавление миссий

Файлы миссий (.pbo) кладутся в папку mpmissions в директории сервера:

/home/arma3/arma3server/mpmissions/
├── co10_assault.Altis.pbo
├── tvt20_combat.Stratis.pbo
└── coop_30_zeus.Tanoa.pbo

Формат имени файла: <имя>.<карта>.pbo

Стандартные карты Arma 3: Altis, Stratis, Tanoa, Malden, VR.

Конфигурация ротации миссий в server.cfg

class Missions {
    class Mission1 {
        template = "co10_assault.Altis";
        difficulty = "Regular";
        class Params {
            timelimit = 120;  // Ограничение по времени в минутах
        };
    };
    class Mission2 {
        template = "tvt20_combat.Stratis";
        difficulty = "Regular";
        class Params {};
    };
    class Mission3 {
        template = "coop_30_zeus.Tanoa";
        difficulty = "Veteran";
        class Params {};
    };
};

Доступные значения difficulty: Recruit, Regular, Veteran, Custom.

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

Чтобы сервер сразу запускал миссию без ожидания в лобби, добавьте в server.cfg:

autoSelectMission = 1;    // Автоматически выбирать миссию
skipLobby = 1;            // Пропустить лобби (только для persistent серверов)

Headless Client

Headless client (HC) - мощный инструмент для разгрузки основного сервера. Он берёт на себя вычисление ИИ, что критично для миссий с десятками или сотнями юнитов.

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

// Список IP-адресов headless client (локальные подключения)
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};

Запуск headless client

./arma3_x64 \
  -client \
  -connect=127.0.0.1 \
  -port=2302 \
  -password="" \
  -profiles=/home/arma3/hc_profiles \
  -name=HC1 \
  -nosound \
  -noGUI \
  -hugePages

Ключ -hugePages значительно повышает производительность HC на Linux-системах с настроенными HugePages:

# Настройка HugePages (добавить в /etc/sysctl.conf)
vm.nr_hugepages = 512

Распределение ИИ на HC в миссии

В скриптах миссии добавьте логику передачи групп:

// SQF-скрипт для передачи ИИ на headless client
private _HC = headlessClients select 0;
if (!isNull _HC) then {
    [_HC, group _enemyGroup] remoteExec ["setGroupOwner", 2];
};

Для автоматического распределения используйте готовые решения типа HC_manager от сообщества Arma 3.

Частые проблемы и решения

Клиенты не видят сервер в списке

Проверьте, что:

  1. Порт 2302 UDP открыт в файрволе
  2. Сервер запустился без ошибок (проверьте server_console.log)
  3. IP в запросе указан правильно
  4. BattlEye успешно инициализирован (строка BattlEye Server: Initialized в логе)
# Проверка открытых портов
sudo ss -ulnp | grep 2302

Ошибка “Bad version” или “Wrong version”

Клиент и сервер должны быть одной версии. Обновите сервер через SteamCMD:

./steamcmd.sh +force_install_dir /home/arma3/arma3server \
  +login anonymous \
  +app_update 233780 validate \
  +quit

Ошибки подписей модов (“Bad key”)

Если клиент получает “You cannot play/remain on the server… (bad key)”:

  1. Убедитесь, что .bikey файлы модов скопированы в папку keys/ сервера
  2. Клиент должен использовать точно такую же версию мода, что и сервер
  3. Временно снизьте verifySignatures = 1 для диагностики (не для продакшена)

Сервер не запускается или вылетает

# Проверка логов
tail -100 /home/arma3/arma3server/server_console.log

# Частые причины:
# "Cannot open file 'server.cfg'" - неверный путь к конфигу
# "Error compiling ..." - синтаксическая ошибка в .cfg файле
# "ADDON: ACE_... not found" - мод указан в -mod= но папка не найдена

Высокая нагрузка на ЦП

  • Снизьте maxPlayers до реального числа игроков
  • Добавьте -limitFPS=40 в строку запуска
  • Используйте headless client для разгрузки ИИ
  • Отключите подробное логирование через -noLogs

Моды загружаются слишком долго

Если при запуске сервер долго инициализирует моды, это нормально для тяжёлых модпаков. Время загрузки RHS + CUP + ACE может достигать 5-10 минут. Использование NVMe SSD значительно ускоряет этот процесс.

Безопасность сервера

Защита от взлома и читов

// В server.cfg
BattlEye = 1;              // Обязательно включить
verifySignatures = 2;      // Строгая проверка модов
allowedFilePatching = 0;   // Запретить file patching всем
kickUnflocked = 1;         // Кикать незащищённых игроков

Административный доступ

Войти в режим администратора в игре: #login adminpass

Основные консольные команды:

  • #missions - список доступных миссий
  • #mission <имя> - сменить миссию
  • #restart - перезапустить миссию
  • #kick <имя> - кикнуть игрока
  • #ban <имя> - забанить игрока
  • #shutdown - выключить сервер

Лог-файлы

По умолчанию логи пишутся в директорию профиля:

/home/arma3/profiles/server/
├── server.rpt          # Основной лог ошибок
├── arma3server.log     # Консольный лог
└── BattlEye/
    ├── BEServer.cfg    # Конфиг BattlEye
    └── bans.txt        # Список банов

Связанные материалы

Если вас интересуют другие выживательные игры с выделенными серверами, читайте наши гайды. Полная настройка зомби-апокалипсиса описана в статье Project Zomboid: создание сервера. Для любителей постапокалиптической выживалки есть руководство 7 Days to Die: настройка сервера. А для скандинавского выживания с налётами - Valheim: настройка выделенного сервера.

Заключение

Настройка сервера Arma 3 требует больше усилий, чем большинство игровых серверов, но результат того стоит. Правильно сконфигурированный сервер с headless client, оптимизированным basic.cfg и проверкой подписей модов даёт стабильную работу на десятки часов игровых сессий. Ключевые моменты: всегда открывайте порты 2302-2305 UDP, копируйте .bikey файлы для всех модов, и используйте headless client при работе с тяжёлыми миссиями. При проблемах первым делом смотрите в server.rpt - там фиксируются все ошибки запуска и работы.

Pterohost - выделенные игровые серверы с DDoS-защитой, NVMe-дисками и живой поддержкой 24/7 для самых требовательных игр. Промокод 4START даёт -20% на первый заказ. Заказать сервер Arma 3