Как подключить сервер к BungeeCord

Подготовка окружения на proxify.cloud

  1. Войдите в панель proxify.cloud и выберите нужный выделенный сервер с Ubuntu.
  2. Откройте консоль (VNC/SSH) или подключитесь по SSH с вашего компьютера:
    ssh root@<IP_ВАШЕГО_СЕРВЕРА>
    
  3. Обновите систему и установите необходимые утилиты:
    apt update && apt upgrade -y
    apt install -y openjdk-21-jre-headless screen wget curl unzip ufw
    
  4. Настройте файрвол для доступа к панелям и игровым портам (пример для стандартных портов):
    ufw allow 22/tcp
    ufw allow 25565/tcp   # BungeeCord (вход игроков)
    ufw allow 25566/tcp   # Backend-сервер (Spigot/Paper)
    ufw enable
    

Установка и настройка BungeeCord

  1. Создайте отдельного пользователя для безопасности (не root):
    adduser --disabled-password --gecos "" minecraft
    su - minecraft
    
  2. Создайте директорию для BungeeCord и скачайте последнюю стабильную сборку (Waterfall — форк с улучшенной производительностью):
    mkdir -p ~/bungeecord && cd ~/bungeecord
    wget -O Waterfall.jar https://papermc.io/api/v2/projects/waterfall/versions/1.20.1/builds/582/downloads/waterfall-1.20.1-582.jar
    
    Замените версию/билд на актуальные с papermc.io.
  3. Запустите один раз для генерации конфигов:
    java -Xms512M -Xmx1G -jar Waterfall.jar
    
    После появления сообщения Done! остановите сервер Ctrl+C.
  4. Отредактируйте config.yml:
    # ~/bungeecord/config.yml
    groups:
      md_5: []
    player_limit: -1
    permissions:
      default:
        - bungeecord.command.server
        - bungeecord.command.list
    timeout: 30000
    log_commands: true
    online_mode: true
    ip_forward: true
    ip_forward_header: BungeeCord
    servers:
      lobby:
        motd: '&aLobby Server'
        address: 127.0.0.1:25566
        restricted: false
        motd_override: false
    listeners:
      - host: 0.0.0.0:25565
        max_players: 1000
        tab_list: GLOBAL_PING
        query_enabled: false
        query_port: 25565
        force_default_server: true
        default_server: lobby
        fallback_server: lobby
        bind_local_address: true
        motd: '&bBungeeCord на proxify.cloud'
        tab_size: 60
        ping_passthrough: MODERN
        priorities:
          - lobby
    
    Ключевые параметры:
    • ip_forward: true — передача реального IP игрока на бэкенд.
    • ip_forward_header: BungeeCord — заголовок для современных версий (1.13+).
    • address: 127.0.0.1:25566 — локальный адрес бэкенд-сервера.
    • host: 0.0.0.0:25565 — Bungee слушает внешний интерфейс.

Установка и настройка бэкенд-сервера (Paper/Spigot)

  1. В новой сессии (или через screen) создайте директорию для игрового сервера:
    mkdir -p ~/paper-lobby && cd ~/paper-lobby
    wget -O paper.jar https://api.papermc.io/v2/projects/paper/versions/1.20.1/builds/198/downloads/paper-1.20.1-198.jar
    
  2. Примите EULA и запустите для генерации файлов:
    echo "eula=true" > eula.txt
    java -Xms2G -Xmx4G -jar paper.jar --nogui
    
    Остановите после полной загрузки (stop в консоли).
  3. Настройте server.properties для работы за BungeeCord:
    # ~/paper-lobby/server.properties
    server-port=25566
    server-ip=127.0.0.1
    online-mode=false
    enable-query=false
    enable-rcon=false
    max-players=200
    view-distance=10
    simulation-distance=10
    network-compression-threshold=256
    
    Важно:
    • server-ip=127.0.0.1 — сервер доступен только локально.
    • online-mode=false — авторизацию выполняет BungeeCord.
    • server-port=25566 — совпадает с address в config.yml Bungee.
  4. Настройте spigot.yml (или paper-global.yml для Paper 1.20.1+):
    # ~/paper-lobby/spigot.yml
    settings:
      bungeecord: true
      sample-count: 12
      player-shuffle: 0
    
    Для Paper 1.20.1+ используйте paper-global.yml:
    # ~/paper-lobby/paper-global.yml
    settings:
      bungeecord: true
      velocity-support:
        enabled: false
        online-mode: false
        secret: ""
    
    Velocity-support отключен, так как используем BungeeCord/Waterfall.

Установка плагина для передачи IP (BungeeGuard / IPForward)

  1. На бэкенд-сервере обязательно установите плагин для проверки подлинности пакетов IP Forwarding, иначе любой сможет подделать IP.
    • Скачайте BungeeGuard (современная замена BungeeCord-IPForward):
      cd ~/paper-lobby/plugins
      wget -O BungeeGuard.jar https://github.com/Redempt/BungeeGuard/releases/download/1.3.0/BungeeGuard-1.3.0.jar
      
    • Запустите сервер, он сгенерирует токен в plugins/BungeeGuard/token.yml.
    • Скопируйте token из этого файла.
  2. Настройте BungeeCord (Waterfall) для отправки токена. В config.yml добавьте в секцию сервера lobby:
    servers:
      lobby:
        motd: '&aLobby Server'
        address: 127.0.0.1:25566
        restricted: false
        motd_override: false
        bungeeguard_token: 'ВАШ_ТОКЕН_ОТ_BUNGEEGUARD'
    
    Waterfall поддерживает bungeeguard_token нативно с недавних билдов.
  3. Перезапустите BungeeCord и бэкенд-сервер.

Автозапуск через systemd (рекомендуется на proxify.cloud)

  1. Выйдите от пользователя minecraft (exit) и создайте сервисы от root.
  2. Файл /etc/systemd/system/bungeecord.service:
    [Unit]
    Description=BungeeCord (Waterfall) Proxy
    After=network.target
    
    [Service]
    User=minecraft
    WorkingDirectory=/home/minecraft/bungeecord
    ExecStart=/usr/bin/java -Xms1G -Xmx2G -XX:+UseG1GC -jar Waterfall.jar
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    
  3. Файл /etc/systemd/system/paper-lobby.service:
    [Unit]
    Description=Paper Lobby Server
    After=network.target bungeecord.service
    Requires=bungeecord.service
    
    [Service]
    User=minecraft
    WorkingDirectory=/home/minecraft/paper-lobby
    ExecStart=/usr/bin/java -Xms2G -Xmx4G -XX:+UseG1GC -jar paper.jar --nogui
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    
  4. Включите и запустите:
    systemctl daemon-reload
    systemctl enable bungeecord paper-lobby
    systemctl start bungeecord
    systemctl start paper-lobby
    
  5. Проверьте статус и логи:
    systemctl status bungeecord
    journalctl -u bungeecord -f
    

Проверка подключения

  1. Запустите клиент Minecraft (версия 1.20.1).
  2. В поле «Адрес сервера» введите IP вашего выделенного сервера на proxify.cloud (порт 25565 по умолчанию не указывать).
  3. Вы должны попасть на сервер lobby.
  4. В консоли бэкенда (journalctl -u paper-lobby -f) проверьте строку входа:
    [User Authenticator #1/INFO]: UUID of player TestPlayer is 123e4567-e89b-12d3-a456-426614174000
    [Server thread/INFO]: TestPlayer[/127.0.0.1:XXXXX] logged in with entity id 123 at (world, 0, 64, 0)
    
    IP в логах должен быть реальным IP игрока, а не 127.0.0.1 (благодаря BungeeGuard и ip_forward).

Добавление дополнительных серверов (Survival, Creative, Minigames)

  1. Повторите шаги 9–12 для каждого нового режима (измените порт: 25567, 25568... и директорию).
  2. Установите BungeeGuard на каждый бэкенд, сгенерируйте уникальные токены.
  3. Добавьте серверы в ~/bungeecord/config.yml:
    servers:
      lobby:
        address: 127.0.0.1:25566
        bungeeguard_token: 'TOKEN_LOBBY'
      survival:
        motd: '&2Survival'
        address: 127.0.0.1:25567
        restricted: false
        bungeeguard_token: 'TOKEN_SURVIVAL'
      creative:
        motd: '&bCreative'
        address: 127.0.0.1:25568
        restricted: true  # доступ по пермишну bungeecord.command.server.creative
        bungeeguard_token: 'TOKEN_CREATIVE'
    
  4. Перезагрузите конфиг BungeeCord без рестарта (в консоли Bungee):
    alert Перезагрузка конфигурации...
    end
    reload
    
    Или перезапустите сервис: `systemctl