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

Гайд по установке выделенного сервера Battlefield 2142 на Arch Linux: настройка, systemd, фаервол, обновление и решение проблем.

2026.04.27                  


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

Важно:

  • Battlefield 2142 выпущен в 2006 году. Официальные мастер-серверы EA давно отключены, сервер работает в локальной сети или через комьюнити-браузеры. Все инструкции адаптированы под современный Arch Linux (2024–2026).

1. Подготовка системы

1.1. Включение репозитория multilib

Сервер использует 32-битный бинарник.

В Arch Linux необходимо раскомментировать multilib:

sudo nano /etc/pacman.conf

Найдите и раскомментируйте строки:

[multilib]
Include = /etc/pacman.d/mirrorlist

Обновите списки пакетов:

sudo pacman -Syu

1.2. Создание системного пользователя

Никогда не запускайте игровой сервер от root.

sudo useradd -r -s /usr/bin/nologin -d /srv/bf2142 bf2142
sudo mkdir -p /srv/bf2142
sudo chown -R bf2142:bf2142 /srv/bf2142

2. Установка зависимостей

sudo pacman -S steamcmd wget curl lib32-glibc lib32-libstdc++6 lib32-zlib lib32-ncurses

Если сервер падает с ошибкой GLIBCXX_3.4.x not found, установите lib32-libstdc++5 из AUR:

yay -S lib32-libstdc++5

3. Загрузка серверных файлов через SteamCMD

AppID выделенного сервера BF2142: 24960

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

nano /tmp/install_bf2142.sh
#!/bin/bash
STEAMCMD="/usr/bin/steamcmd"
TARGET="/srv/bf2142"

$STEAMCMD +login anonymous +force_install_dir "$TARGET" +app_update 24960 validate +quit
chmod +x /tmp/install_bf2142.sh
sudo -u bf2142 /tmp/install_bf2142.sh

Файлы будут загружены в /srv/bf2142. Основной бинарник: bf2142_lnxded.


4. Базовая настройка сервера

Перейдите в директорию мода:

cd /srv/bf2142/mods/bf2142

4.1. ServerSettings.con

Отредактируйте конфигурацию сервера:

nano ServerSettings.con

Пример минимального рабочего конфига:

sv.hostName "BF2142 Arch Server"
sv.maxPlayers 32
sv.port 16567
sv.gameMode Conquest
sv.startMap GAZ-17
sv.password ""
sv.rconPassword "YourStrongRconPass123!"
sv.masterServer 0
sv.allowVoice 1
sv.autoRecord 1

sv.masterServer 0 отключает попытку подключения к мертвым оффлайн-мастерам. Для отображения в комьюнити-браузерах используйте патчи от сообщества (см. раздел 9).

4.2. maplist.txt

Список карт для ротации (полные названия карт):

nano maplist.txt
GAZ-17
Shanghai
Tangier
Cape Canaveral
Fall_of_Berlin

4.3. Права

cd /srv/bf2142
chmod +x bf2142_lnxded
sudo chown -R bf2142:bf2142 /srv/bf2142

5. Первый запуск и проверка

sudo -u bf2142 bash -c 'cd /srv/bf2142 && ./bf2142_lnxded +restartoncrash 1 +game mods/bf2142 +config ServerSettings.con'

Ожидаемый вывод:

Initializing BF2142 Dedicated Server...
Loading mod bf2142...
Map GAZ-17 loaded.
Server started on port 16567.

Нажмите Ctrl+C для остановки. Логи пишутся в mods/bf2142/logs/.


6. Автоматизация через systemd

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

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

[Service]
Type=simple
User=bf2142
Group=bf2142
WorkingDirectory=/srv/bf2142
ExecStart=/srv/bf2142/bf2142_lnxded +restartoncrash 1 +game mods/bf2142 +config ServerSettings.con
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
# Ограничение ресурсов (опционально)
MemoryMax=1G
CPUQuota=80%

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable --now bf2142-server
sudo systemctl status bf2142-server

7. Настройка фаервола

Для nftables (дефолт в Arch):

sudo nft add rule inet filter input udp dport 16567 accept comment "BF2142 Game"
sudo nft add rule inet filter input udp dport 27905 accept comment "BF2142 Query"
sudo nft add rule inet filter input tcp dport 27905 accept comment "BF2142 RCON"

Для ufw:

sudo ufw allow 16567/udp
sudo ufw allow 27905/udp
sudo ufw allow 27905/tcp

Убедитесь, что ваш роутер пробрасывает эти порты при работе за NAT.


8. Обновление и резервное копирование

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

sudo -u bf2142 steamcmd +login anonymous +force_install_dir /srv/bf2142 +app_update 24960 validate +quit
sudo systemctl restart bf2142-server

Бэкап конфигов:

tar czf /backup/bf2142_$(date +%F).tar.gz /srv/bf2142/mods/bf2142/ServerSettings.con /srv/bf2142/mods/bf2142/maplist.txt

9. Типичные проблемы и решения

Симптом Причина Решение
bash: ./bf2142_lnxded: No such file or directory Отсутствует 32-битный интерпретатор sudo pacman -S lib32-glibc
Сервер не виден в браузере Мастер-серверы EA отключены Используйте комьюнити-патчи (см. ниже) или играйте по IP
Падение при загрузке карты Нехватка памяти / старый бинарник Увеличьте MemoryMax в systemd, проверьте логи
Ошибка GLIBCXX Версия libstdc++ несовместима Установите lib32-libstdc++5 из AUR
RCON не подключается Блокировка фаерволом / неверный порт Откройте TCP 27905, проверьте sv.rconPassword

Комьюнити-поддержка

  • Мастер-серверы: Проект BF2142 Revival - github.com/bf2142 или BF2142 Server Browser - bf2142.com предоставляет патчи для отображения в современных браузерах.
  • Патчи совместимости: Если бинарник крашится на новых ядрах, используйте patchelf или запускайте в systemd-nspawn с контейнером на базе Debian 10.
  • RCON-клиенты: bf2cc, Battlelog RCON, или любой TCP-клиент (порт 27905).

Чек-лист перед запуском в продакшен

  • [ ] Сервер запущен от пользователя bf2142
  • [ ] ServerSettings.con настроен, пароль RCON установлен
  • [ ] Фаервол открыт (UDP 16567, 27905; TCP 27905)
  • [ ] maplist.txt содержит валидные названия карт
  • [ ] Сервис bf2142-server включён и работает
  • [ ] Логи пишутся в mods/bf2142/logs/ и не содержат ERROR

Источники и ссылки:

  • SteamCMD: https://developer.valvesoftware.com/wiki/SteamCMD
  • BF2142 Server Docs (архив): https://web.archive.org/web/20071001000000*/http://www.ea.com
  • Arch Wiki: https://wiki.archlinux.org/title/Systemd, https://wiki.archlinux.org/title/Nftables