Подробный гайд: Выделенный сервер Battlefield 2142 на CentOS
Важные примечания перед началом
- CentOS 7 достиг EOL в июне 2024. Для новых серверов рекомендуется использовать AlmaLinux 8/9 или Rocky Linux 8/9 (полная бинарная совместимость с CentOS, те же команды yum/dnf).
- Официальные серверы BF2142 были отключены EA в 2014 году. Для работы сервера в современном интернете обязательно используйте патчи от сообщества (см. раздел "Ресурсы").
- Официальных Linux-бинарников не существует. Запуск осуществляется через Wine с эмуляцией 32-битного окружения.
- Используйте только лицензионные файлы игры. Данный гайд не содержит и не поощряет распространение пиратского ПО.
Шаг 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 и законодательство об авторском праве.