Подробный гайд: Выделенный сервер Battlefield 2142 на AlmaLinux
Важно:
Официальные мультиплеер-серверы EA были отключены в 2014 году. Запуск сервера возможен только с использованием патчей и инфраструктуры, поддерживаемой сообществом (наиболее активный проект: BF2142 Reclaim / reclaim.bf2142.eu). Данный гайд описывает установку на базе актуальных на 2024–2026 гг. методов сообщества.
Содержание
- Подготовка AlmaLinux
- Загрузка и установка серверных файлов
- Настройка конфигурации
- Первый запуск и проверка
- Автоматизация через systemd
- Сетевая настройка и фаервол
- Обновления и взаимодействие с сообществом
- Диагностика и типичные ошибки
- Юридическое примечание
1. Подготовка AlmaLinux
Гайд протестирован на AlmaLinux 8/9 (x86_64). Сервер BF2142 является 32-битным приложением, поэтому потребуется установка совместимых библиотек.
# Обновление системы
sudo dnf update -y
# Установка необходимых 32-битных зависимостей
sudo dnf install glibc.i686 libstdc++.i686 zlib.i686 \
ncurses-libs.i686 libgcc.i686 wget tar -y
# Опционально: если сервер требует libpng12 (редко на современных сборках)
# Подключите EPEL/CRB при необходимости:
# sudo dnf config-manager --set-enabled crb
# sudo dnf install epel-release -y
# sudo dnf install libpng12.i686 -y
Создание выделенного пользователя
Никогда не запускайте игровые серверы от root.
sudo useradd -m -s /bin/bash bf2142srv
sudo su - bf2142srv
2. Загрузка и установка серверных файлов
- Перейдите на официальный ресурс сообщества (например,
reclaim.bf2142.euили их GitHub) и скачайте последнюю версию Linux Dedicated Server Package.
2. В домашней директории пользователя создайте папку и распакуйте архив:
mkdir -p ~/bf2142 && cd ~/bf2142
wget "https://<community-domain>/releases/bf2142-server-linux-latest.tar.gz"
tar -xzf bf2142-server-linux-latest.tar.gz
rm bf2142-server-linux-latest.tar.gz
Ожидаемая структура:
bf2142/
├── bf2142ded # бинарник сервера
├── start.sh # скрипт запуска (если предоставлен)
├── settings/ # конфигурационные файлы
├── mods/ # папка для модов/карт
├── logs/ # логи сервера
└── ...
3. Настройка конфигурации
Основные параметры задаются в settings/server.cfg или bf2142/Settings/ServerSettings.con. Синтаксис движка Frostbite-предшественника: ключ значение.
Пример базового конфига (settings/server.cfg):
sv.maxPlayers 64
sv.gamePort 16567
sv.queryPort 27900
sv.rconPort 48888
sv.rconPassword "YourStrongRCONPass"
sv.serverName "[RU] AlmaLinux BF2142 | Reclaim"
sv.password ""
sv.countryCode RU
sv.mapRotation "conquest_large_01 conquest_large_02 conquest_small_01 titan_01 titan_02"
sv.maxSpectators 8
sv.voteEnabled 1
sv.friendlyFire 0
sv.timelimit 60
Важные нюансы:
- Сообщество предоставляет свой мастер-сервер и античит. Обычно требуется добавить в конфиг строку вида
sv.masterServer "<community-master-ip>:<port>". Уточните актуальные значения на сайте проекта. - Карты должны находиться в
mods/bf2142/Levels/<имя_карты>/. - Для поддержки расширенных модов распакуйте их в
mods/и укажите вsv.mods(если поддерживается вашей сборкой).
4. Первый запуск и проверка
Запустите сервер вручную для отладки:
cd ~/bf2142
chmod +x bf2142ded
./bf2142ded +exec settings/server.cfg +startserver 1
Признаки успешного запуска:
- В консоли появится
Server started on port 16567 - Загрузятся карты без ошибок
Failed to load level - Лог пишется в
logs/server.logили выводится в stdout
Остановите сервер комбинацией Ctrl+C или командой quit в консоли.
5. Автоматизация через systemd
Создайте сервис для автозапуска и восстановления при падении:
sudo tee /etc/systemd/system/bf2142.service > /dev/null <<EOF
[Unit]
Description=Battlefield 2142 Dedicated Server (Reclaim)
After=network.target
[Service]
Type=simple
User=bf2142srv
Group=bf2142srv
WorkingDirectory=/home/bf2142srv/bf2142
ExecStart=/home/bf2142srv/bf2142/bf2142ded +exec settings/server.cfg +startserver 1
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
Активируйте сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now bf2142
sudo systemctl status bf2142
Полезные команды:
journalctl -u bf2142 -f– просмотр логов в реальном времениsudo systemctl restart bf2142– перезапуск после изменения конфигаsudo systemctl stop bf2142– корректная остановка
6. Сетевая настройка и фаервол
AlmaLinux по умолчанию использует firewalld.
Откройте необходимые порты:
sudo firewall-cmd --permanent --add-port=16567/udp
sudo firewall-cmd --permanent --add-port=27900/udp
sudo firewall-cmd --permanent --add-port=48888/tcp # RCON, опционально
sudo firewall-cmd --reload
Если сервер находится за NAT:
- Настройте порт-форвардинг на роутере:
16567/UDPи27900/UDP→ внутренний IP сервера - Убедитесь, что провайдер не блокирует входящие UDP-пакеты
- Для динамического IP используйте DDNS или статический адрес
SELinux:
Обычно не мешает при работе от непривилегированного пользователя. Если наблюдаются отказы в логах (audit.log), временно проверьте с setenforce 0 и настройте контексты при необходимости.
7. Обновления и взаимодействие с сообществом
- Сообщество регулярно выпускает патчи безопасности, фиксы карт и обновления античита.
- Подпишитесь на официальный Discord / форум проекта для получения уведомлений.
- Перед обновлением делайте резервную копию:
tar -czf ~/bf2142-backup-$(date +%F).tar.gz -C /home/bf2142srv bf2142/settings bf2142/mods
- Заменяйте только бинарники и системные файлы сообщества, оставляя ваши конфиги и пользовательские моды нетронутыми.
8. Диагностика и типичные ошибки
| Симптом | Причина | Решение |
|---|---|---|
error while loading shared libraries: libstdc++.so.6 |
Отсутствует 32-битная библиотека | sudo dnf install libstdc++.i686 |
| Сервер запускается, но не виден в списке | Не настроен мастер-сервер сообщества | Добавьте sv.masterServer в конфиг, проверьте актуальные данные на сайте проекта |
Permission denied при записи логов |
Права на папку logs/ |
chmod 755 ~/bf2142/logs && chown bf2142srv:bf2142srv ~/bf2142/logs |
| Падение при загрузке карты | Файлы карты повреждены или несовместимы | Проверьте целостность архива, используйте только карты из официального пакета сообщества |
| RCON не подключается | Порт закрыт или неверный пароль | Проверьте firewalld, убедитесь, что sv.rconPort и sv.rconPassword совпадают с клиентом |
Проверка зависимостей:
ldd ~/bf2142/bf2142ded | grep "not found"
Установите отсутствующие .i686 пакеты через dnf.
9. Юридическое примечание
- Для подключения к серверу игроки должны использовать лицензионную копию BF2142 (физическую или цифровую через EA/Steam). Сервер не распространяет и не обходит DRM.
- Проект сообщества распространяет только серверные бинарники, патчи совместимости и инфраструктуру мастер-серверов.
- Соблюдайте правила сообщества и не размещайте модифицированные клиентские файлы на сервере.
Итог
Вы подняли выделенный сервер BF2142 на AlmaLinux, настроили его через конфиг, завернули в systemd и открыли сетевые порты. Сервер готов принимать игроков через инфраструктуру сообщества. Для поддержки стабильности регулярно следите за обновлениями проекта, мониторьте логи и делайте бэкапы конфигов.