1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Velocity - прокси сервер нового поколения! | Гайд по Velocity

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Overwrite, 3 апр 2022.

  1. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Как мы все, вероятно, знаем, BungeeCord более не является перспективным и развивающемя прокси сервером. Его форки поддерживаются с куда более меньшей активностью, а Paper перешел на поддержку более развитого в этом плане прокси сервера - Velocity.
    По этому настало время создать гайд по Velocity и его настройке, в котором будут описаны все основные правила его использования, а также будет рассказано, как подключить к нему антибот систему, которая встроена во всеми известный форк банжи - BotFilter, а также о важных аспектах при работе с данным прокси сервером.​

    ⦁ Пункт 1 - устанавливаем и запускаем

    Тут проблем возникнуть не должно, т.к. тут процесс схож с установкой обычного ядра сервера или банжи.
    1) Качаем Velocity с сайта PaperMС.
    2) Положите скачанный вами .jar файл в определенную папку, после чего создайте в ней файл start.txt, в котором напишите следующее:
    java -Xmx2G -Xms2G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar
    (Учтите, что ваш jar файл должен называться именно velocity! А также вам потребуется Java версии 17 или выше!)
    3) Переименуйте start.txt в start.bat и запустите его. После этого дождитесь, когда все папки и файлы будут созданы и после сообщения по типу "Done (2,2s)!" закрывайте открывшееся окно консоли. Запустите его вновь уже после полной настройки.

    ⦁ Пункт 2 - настройка Velocity

    Velocity имеет один файл конфигурации - velocity.toml. Его можно открыть при помощи любого текстового редактора, но я рекомендую Notepad++.

    Специально для вас перевел данный файл. Ознакомиться со всеми его значениями можете ниже:
    Код:
    # Версия конфигурации. Не изменяйте это
    config-version = "2.7"
    # К какому порту должен быть привязан прокси? По умолчанию привязывается ко всем адресам на порту 25565.
    bind = "0.0.0.0:25565"
    # Какое сообщение MOTD должно отображаться? Это показывается, когда игрок добавляет ваш сервер в список.
    # Поддерживается только формат MiniMessage.
    motd = "<#09add3>A Velocity Server"
    # Какое максимальное количество игроков отображать? (Velocity не поддерживает ограничение на количество игроков.)
    show-max-players = 500
    # Нужно ли аутентифицировать игроков через Mojang? По умолчанию включено.
    online-mode = true
    # Должен ли прокси применять новый стандарт безопасности с публичными ключами? По умолчанию включено.
    force-key-authentication = true
    # Если ISP/AS клиента, отправленный этим прокси, отличается от того, что получен от сервера аутентификации Mojang,
    # игрок будет кикнут. Это блокирует некоторые VPN и прокси-соединения, но является слабой защитой.
    prevent-client-proxy-connections = false
    # Должен ли прокси передавать IP-адреса и другие данные на backend-серверы?
    # Доступные варианты:
    # - "none":        Передача не выполняется. Все игроки будут отображаться как подключённые
    #                  через прокси и получат оффлайн-UUID.
    # - "legacy":      Передача IP и UUID в формате, совместимом с BungeeCord. Используйте это,
    #                  если у вас серверы на Minecraft 1.12 или ниже.
    # - "bungeeguard": Передача IP и UUID в формате, поддерживаемом плагином BungeeGuard.
    #                  Используйте, если у вас серверы на 1.12 или ниже и нет возможности
    #                  настроить сетевой фаервол (на shared-хостинге).
    # - "modern":      Передача IP и UUID как часть процесса входа, используя нативный
    #                  механизм Velocity. Только для Minecraft 1.13 и выше.
    player-info-forwarding-mode = "NONE"
    # Если используется modern или BungeeGuard, укажите файл с уникальным секретным ключом.
    # Файл должен быть в UTF-8 и не пустым.
    forwarding-secret-file = "forwarding.secret"
    # Сообщать ли о поддержке Forge? Если у вас модифицированный сервер, рекомендуется включить.
    #
    # Если у вас один модпак, лучше использовать ping-passthrough = "mods" для красивого отображения в списке серверов.
    announce-forge = false
    # Если включено (по умолчанию выключено) и прокси в online-режиме, Velocity будет кикать
    # любого онлайн-игрока при попытке дублирующего подключения.
    kick-existing-players = false
    # Должен ли Velocity передавать запросы пинга сервера на backend-сервер?
    # Доступные варианты:
    # - "disabled":    Без передачи. Ответ формируется на основе velocity.toml и server-icon.png.
    # - "mods":        Передаёт только список модов из backend-сервера.
    #                  Используется первый сервер из списка try (или forced host) с модами.
    # - "description": Использует описание и список модов из backend-сервера.
    # - "all":         Полностью использует ответ backend-сервера. Если серверы недоступны, используется конфиг Velocity.
    ping-passthrough = "DISABLED"
    # Если включено (по умолчанию выключено), в списке серверов будет отображаться пример игроков онлайн
    # при наведении на количество игроков. Не работает при ping-passthrough = "description" или "all".
    sample-players-in-ping = false
    # Если выключено (по умолчанию включено), IP-адреса игроков в логах заменяются на <ip address withheld>.
    enable-player-address-logging = true
    [servers]
    # Настройте серверы здесь. Ключ — название сервера, значение — IP для подключения.
    lobby = "127.0.0.1:30066"
    factions = "127.0.0.1:30067"
    minigames = "127.0.0.1:30068"
    # Порядок подключения к серверам при входе или кике.
    try = [
        "lobby"
    ]
    [forced-hosts]
    # Настройка forced hosts.
    "lobby.example.com" = [
        "lobby"
    ]
    "factions.example.com" = [
        "factions"
    ]
    "minigames.example.com" = [
        "minigames"
    ]
    [advanced]
    # Минимальный размер пакета для сжатия. 0 — сжимать всё, -1 — отключить сжатие.
    compression-threshold = 256
    # Уровень сжатия (0-9). По умолчанию -1 (уровень 6).
    compression-level = -1
    # Задержка (в миллисекундах) между подключениями. По умолчанию 3 секунды. 0 — отключить.
    login-ratelimit = 3000
    # Таймаут подключения (по умолчанию 5 секунд).
    connection-timeout = 5000
    # Таймаут чтения (по умолчанию 30 секунд).
    read-timeout = 30000
    # Совместимость с PROXY-протоколом HAProxy. Не включайте, если не уверены.
    haproxy-protocol = false
    # Поддержка TCP Fast Open (требуется Linux).
    tcp-fast-open = false
    # Поддержка каналов плагинов BungeeCord.
    bungee-plugin-message-channel = true
    # Показывать запросы ping от клиентов.
    show-ping-requests = false
    # Пытаться переподключать игроков при неожиданном разрыве (кроме таймаутов).
    failover-on-unexpected-server-disconnect = true
    # Сообщать клиентам 1.13+ о командах прокси.
    announce-proxy-commands = true
    # Логировать выполнение команд.
    log-command-executions = false
    # Логировать подключения, переходы между серверами и отключения игроков.
    log-player-connections = true
    # Разрешать трансфер игроков с других хостов через пакет Transfer (Minecraft 1.20.5).
    accepts-transfers = false
    
    # Поддержка SO_REUSEPORT для лучшей масштабируемости (требуется Linux/macOS).
    enable-reuse-port = false
    
    # Ограничение скорости отправки команд (по умолчанию 50 мс = 20 команд/сек).
    command-rate-limit = 50
    
    # Передавать команды на сервер при превышении лимита?
    forward-commands-if-rate-limited = true
    
    # Сколько команд можно отправить после превышения лимита до кика? 0 — отключить.
    kick-after-rate-limited-commands = 0
    
    # Ограничение скорости автодополнения команд (по умолчанию 10 мс).
    tab-complete-rate-limit = 10
    
    # Сколько автодополнений можно отправить до кика? 0 — отключить.
    kick-after-rate-limited-tab-completes = 0
    
    [query]
    # Включить ответы на запросы GameSpy 4.
    enabled = false
    
    # Порт для query-протокола.
    port = 25565
    
    # Название карты для query-сервисов.
    map = "Velocity"
    
    # Показывать ли плагины в ответах query.
    show-plugins = false
    

    Теперь перейдем непосредственно к настройке.

    В первую очередь давайте определимся с типом "пересылки IP адресов"
    Если вы держите сервер на версиях 1.13+ - то как и указано, используйте режим player-info-forwarding-mode = "modern".
    Если же вы держите сервер на версиях 1.12 и ниже - вам НАСТОЯТЕЛЬНО рекомендуется использовать режим player-info-forwarding-mode = "bungeeguard".
    Указываем это значение соответственно тому, что для вас подходит.
    Далее нам нужно придумать ключ и указать его в файле, который указан в графе forwarding-secret = "forvarding.secret"
    (по умолчанию там уже будет сгенерирован ключ, но я рекомендую ставить свой)

    Если вы выбрали режим modern, то данный ключ нужно будет выставить в paper.yml (paper-global.yml для новых версий), найдя поле velocity-support, после чего активировав его, поставив enabled: true, после чего найти поле secret:, в нем поле default: '' и вставить в кавычки придуманный вами ключ.
    Если вы выбрали режим bungeeguard - вам необходимо будет скачать плагин BungeeGuard, установить его на игровые сервера и вставить придуманный вами код в его конфиг в поле allowed-tokens:

    Важное примечание:
    В файле spigot.yml есть строка bungeecord: false
    Если вы настроили player-info-forwarding-mode = "modern" и в paper.yml (paper-global.yml для новых версий) включили поддержку велосити - данное поле должно оставаться false.
    Если же вы имеете значение bungeeguard - оно должно стоять на true!

    Далее нам нужно настроить сервера. Тут всё просто. В разделе servers у вас есть примеры настроенных серверов. Вам лишь нужно подставить свои значения и при необходимости переименовать сервера под себя. Просто укажите имя_сервера = "IP сервера:порт сервера" (порт сервера находится в server.properties и его можно менять).
    После того как добавили все нужные вам сервера - укажите сервер, на который будет подключать игрока сразу после захода в графе try =

    Теперь разберемся с некоторыми настройками, которые вы вероятно будете менять.
    1) announce-proxy-commands = true - поставьте на false, если не хотите, чтобы табкомплит выдавал игрокам команды вашего прокси.
    2) ping-passthrough = "description" - поставьте значение на DISABLED, если хотите увидеть зеленую галочку совместимости с модами на клиенте. Я не знаю как это точно работает, но у меня работает.
    3) force-key-authentication = true - поставьте его на false если ваш сервер на оффлайн моде (тоесть без лицензии).

    Пункт 3 - Команды Velocity.

    По умолчанию Velocity имеет 4 команды:
    /velocity (version|plugins|reload|dump) - показывает версию велосити|плагины велосити|перезагружает прокси|выгружает дамп с информацией о прокси соответственно
    /end - выключает прокси
    /glist - показывает, сколько игроков находится на прокси. /glist all - показывает, сколько игроков где находятся
    /server - позволяет перемещаться между серверами

    Права можете посмотреть тут:
    https://docs.papermc.io/velocity/built-in-commands

    Пункт 4 - Полезные утилиты:

    Тут я хочу рассказать о том какие утилиты вам практически необходимы при работе с Velocity и зачем они вам нужны.

    1) Наверное самой важной частью является защита от ботов. Данную функцию может взять на себя такой плагин как Sonar.
    Там имеется как и стандартная капча, так и продвинутые проверки, коих нет в других анти-ботах, что поможет для защиты от ботов, способных обходить капчи.

    2) Важно задуматься об ограничении игроков в использовании команд прокси сервера, т.к. если вы будете невнимательны - ваша авторизация будет пройдена а вы взломаны!
    Всем игрокам по умолчанию на Velocity доступна команда /server. Заблокировать её так просто не получится, по этому вам нужно будет снять права с игроков на её использование. С этим справляется плагин LuckPermsVelocity. Как только установите его на прокси сервер - Пропишите /lpv group default permission set velocity.command.server false. Эта команда выдаст отрицательное право на команду /server всем игрокам и тем самым запретит её использование.

    3) Довольно полезным может оказаться для вас плагин CommandSync. С недавних пор в него добавили поддержку велосити, что сделало его вновь актуальным. Если кратко - он нужен для того, чтобы выполнять с прокси команды на серверах. Очень удобно, если вы не можете использовать базу данных, но у вас есть несколько игровых режимов.

    4) Также стоит задуматься о блокировке команд. Если вам необходимо ограничить прочие команды на прокси сервере - вам рекомендуется использовать плагин CommandWhitelist. По названию, как я думаю, ясно, что он делает.

    Пункт 5 - Полезные ссылки.

    https://docs.papermc.io/velocity - оф. вики велосити

    ⦁ Видео-гайд. Спасибо _MrJaycob_



    ⦁ Заключение.

    Думаю теперь вам стало понятно, как настроить велосити и про то как с ним работать. Если вы решаете, что выбрать - Bungee или Velocity...
    То лично я бы посоветовал NullCordX :3
     
    Последнее редактирование: 27 июл 2025
  2. kefavova

    kefavova Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Afek
    Неплохо:good:, пункт 3 раздел 2 про настройку прав нужно прям жирным шрифтом выделить
     
  3. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    О хороший гайд. А можешь рассказать кто такой этот ваш forced hosts?
     
  4. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Я предпочел это не трогать когда настраивал себе. На самом деле это не особо нужная часть
     
  5. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
  6. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Ачо
     
  7. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Насколько я понял он позволяет сделать так, что если ты заходишь с определённого поддомена, то тебя кидает на определённый сервер. Т. е. например:
    "test.example.com" = ["test"]
    При заходе на test.example.com кинет на серв test.
    Как-то так
     
  8. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Хороший гайд. Видел твои статьи про защиту серверу и мусорные плагины, ожидал когда напишешь про Велосити) А то самому разбираться как-то лень было... Но пора бы уже, ведь появились всякие LimboFilter / LimboAuth и т. д.
    Хотя и непривычно чуток. Но пора переходить со старого на новое, ведь оно лучше. Со Спигота на Пейпер и его форки, с Сашка на Гравит и теперь с Банджи на Велосити...
     
    Последнее редактирование: 7 апр 2022
  9. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    о. это же отличная замена плагину на промокоды чтобы оценивать эффективность опередеденной рекламы
     
  10. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    Это ещё на банджи было как бы...
     
  11. cactus888

    cactus888 Активный участник Пользователь

    Баллы:
    76
    да, знаю. но меня там смущал поддомен pvp
     
  12. Typo_Kill

    Typo_Kill Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Typo_Kill
    просто пример
     
  13. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
    Сорян, не тот смайлик отправил :good::good::good::good::good:
     
  14. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Бывает :creeper:
     
  15. Sanya321222

    Sanya321222 Активный участник Пользователь

    Баллы:
    66
    Серьёзно без обид)
     
  16. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    > В новом Dev билде Velocity была исправлена значительная уязвимость связанная с пакетами, что позволяла без труда крашнуть прокси. Настоятельно рекомендую обновиться.
    > Добавил инфу про VelocityTools, добавляющий на прокси команды /send /find /alert и прочая.
    > Переместил пункт 4 и 3 местами
     
  17. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
  18. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Добавлена информация про CommandSync. Наконец-то поддержка велосити!
     
  19. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Обновил данные статьи (еще вчера). Велосити.томл обновилось, так что теперь, если хотите обновиться, вам придется пересоздавать файлик.
     
  20. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Важное замечание по поводу данной настройки.
    Как оказалась она отвечает не просто за какие-то там лицензионные фишки, а за отправку на сервер вашего ключа моджанг, для проверки отправки сообщений (я не знаю как это сказать павильнее). Это нужно для функционирования функции репортов.
    Если эта функция включена - игроки смогут репортить сообщение в чате от других игроков, а уже моджанги решат, что с этим делать.
    За это дают реальные баны в самой игре (что равняется бану на всех серверах сразу, как лицензионных, так и пиратских, если конечно вы авторизуетесь как лицензионный игрок). При том навечно. И скорее всего без возможности разбана.
    Теперь это даже не просто рекомендуется, а черт возьми обязательно отключать, если вы не хотите лишить своих игроков лицензий.
     

Поделиться этой страницей