Подробный гайд: Выделенный сервер Battlefield 2142 на CentOS

Настройка выделенного сервера Battlefield 2142 на CentOS через Wine: установка, конфиги, systemd, фаервол, диагностика

2026.04.27                  


Подробный гайд: Выделенный сервер Battlefield 2142 на CentOSПодробный гайд: Выделенный сервер Battlefield 2142 на CentOS

Важные примечания перед началом

  1. CentOS 7 достиг EOL в июне 2024. Для новых серверов рекомендуется использовать AlmaLinux 8/9 или Rocky Linux 8/9 (полная бинарная совместимость с CentOS, те же команды yum/dnf).
  2. Официальные серверы BF2142 были отключены EA в 2014 году. Для работы сервера в современном интернете обязательно используйте патчи от сообщества (см. раздел "Ресурсы").
  3. Официальных Linux-бинарников не существует. Запуск осуществляется через Wine с эмуляцией 32-битного окружения.
  4. Используйте только лицензионные файлы игры. Данный гайд не содержит и не поощряет распространение пиратского ПО.

Шаг 1: Подготовка ОС и создание пользователя

# Обновление системы
sudo yum update -y  # или sudo dnf update -y для CentOS 8+/Alma/Rocky

# Установка базовых утилит
sudo yum install -y wget tar unzip nano firewalld curl

# Создание отдельного пользователя для сервера (без прав root)
sudo useradd -m -s /bin/bash bf2142srv
sudo passwd bf2142srv

# Переключаемся на него
sudo su - bf2142srv

Шаг 2: Установка Wine и зависимостей

BF2142 требует 32-битного Wine, библиотек Visual C++ и DirectX.

# Включение EPEL (для CentOS 7/8)
sudo yum install -y epel-release

# Установка Wine и winetricks
sudo yum install -y wine winetricks

# Инициализация 32-битного префикса
export WINEARCH=win32
export WINEPREFIX="$HOME/.wine"
winecfg  # Во всплывающем окне выберите "Windows 7" или "Windows XP", нажмите OK

# Установка необходимых библиотек
winetricks -q vcrun2005 vcrun2008 directx9

Если winetricks жалуется на отсутствие cabextract или unzip, установите их: sudo yum install -y cabextract p7zip


Шаг 3: Развёртывание файлов сервера

1. Скопируйте папку Mods/bf2142 из вашей лицензионной установки BF2142 на сервер:
   mkdir -p $HOME/bf2142/server
   # Загрузите файлы через SFTP/SCP или распакуйте архив
   # Пример структуры:
   # ~/bf2142/server/Mods/bf2142/bf2142.exe
   # ~/bf2142/server/Mods/bf2142/...
2. Установите патч сообщества (обязательно для работы с современными мастерами):
  • Скачайте патч с BF2142Revival или PrOven Patch
  • Распакуйте содержимое в ~/bf2142/server/, заменив оригинальные файлы.
3. Настройте права:
   chmod -R 755 ~/bf2142

Шаг 4: Конфигурация сервера

Создайте файл конфигурации:

nano ~/bf2142/server/server.cfg

Пример базового конфига:

sv.serverName "BF2142 CentOS Dedicated"
sv.maxPlayers 32
sv.port 16567
sv.gameMode gpm_cq
sv.mapList conq_gaza_strikes, conq_shanghai, conq_fallofberlin
sv.password ""
sv.adminPassword "StrongAdminPass123!"
sv.rconPort 16568
sv.rconPassword "RconPass456"
sv.punkBuster 0
sv.vac 0
sv.masterServerIP "master.bf2142revival.com"
sv.dedicated 1

Примечание:

  • sv.masterServerIP зависит от используемого патча. Уточните актуальный адрес в документации выбранного проекта.

Создайте стартовый скрипт:

nano ~/bf2142/server/start.sh
#!/bin/bash
cd "$HOME/bf2142/server"
export WINEPREFIX="$HOME/.wine"
export DISPLAY=:0
exec wine Mods/bf2142/bf2142.exe +restart +dedicated 1 +configFile server.cfg
chmod +x ~/bf2142/server/start.sh

Шаг 5: Автоматизация через systemd

Создайте сервис (от root):

sudo nano /etc/systemd/system/bf2142.service
[Unit]
Description=Battlefield 2142 Dedicated Server
After=network.target

[Service]
Type=simple
User=bf2142srv
WorkingDirectory=/home/bf2142srv/bf2142/server
ExecStart=/home/bf2142srv/bf2142/server/start.sh
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable bf2142
sudo systemctl start bf2142
sudo systemctl status bf2142

Просмотр логов:

journalctl -u bf2142 -f

Шаг 6: Настройка сети и фаервола

# Открытие портов (UDP основной, TCP для RCON/веб-панели)
sudo firewall-cmd --permanent --add-port=16567/udp
sudo firewall-cmd --permanent --add-port=16568/tcp
sudo firewall-cmd --reload

# Проверка открытых портов
sudo firewall-cmd --list-ports

Если сервер находится за NAT, пробросьте UDP 16567 на внешний IP. Для работы в списке серверов часто требуется также UDP 27900 (зависит от патча).


Диагностика и типичные проблемы

Проблема Решение
wine: cannot find L"C:\\windows\\system32\\msvcr80.dll" Запустите winetricks -q vcrun2008
Сервер не виден в клиенте Проверьте sv.masterServerIP, убедитесь, что клиент использует тот же патч. Проверьте доступность портов через nc -u <IP> 16567
Segmentation fault при старте Убедитесь, что WINEARCH=win32 установлен до первого запуска. Пересоздайте префикс: rm -rf ~/.wine && winecfg
Сервер падает при смене карты Проверьте права на папку Profiles. Убедитесь, что в server.cfg указаны только карты, присутствующие в Mods/bf2142/Levels/
Высокий CPU/RAM BF2142 сервер однопоточный. Ограничьте sv.maxPlayers до 24–32. Отключите punkBuster и vac, если не нужны.

Ресурсы сообщества

Проект Описание
BF2142Revival Актуальные патчи, мастера, клиентская сборка, документация
PrOven Patch Альтернативный патч с улучшенной стабильностью и античитом
ModDB: BF2142 Server Tools Утилиты, карты, моды, конфиги
Discord: BF2142 Community Оперативная помощь, актуальные мастер-серверы, готовые образы

Юридическое примечание

  • Данный гайд описывает техническую настройку выделенного сервера.
  • Для работы требуется лицензионная копия Battlefield 2142 (Steam или физический носитель).
  • Использование пиратских файлов, обход DRM или распространение защищённого контента нарушает лицензионное соглашение EA/DICE и законодательство об авторском праве.