> ## Documentation Index
> Fetch the complete documentation index at: https://nexohub.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Быстрый старт

> Переведите свою сеть на единый общий пак Nexo примерно за десять минут.

Вам понадобится прокси Velocity, BungeeCord или Waterfall и хотя бы один бэкенд на Paper
или Folia с уже установленным и работающим [Nexo](https://nexomc.com).

<Steps>
  <Step title="Установите NexoHub на прокси">
    Поместите jar для вашего прокси в его папку `plugins/` и запустите его:
    `NexoHubVelocity.jar` на Velocity, `NexoHubBungee.jar` на BungeeCord или Waterfall.

    При первом запуске он создаёт `plugins/nexohub/config.yml` и генерирует в нём секрет.
    На BungeeCord папка называется `plugins/NexoHub/`; всё остальное одинаково, и далее
    на этом сайте она записывается как `plugins/nexohub/` для обоих случаев. Скопируйте
    это значение; оно понадобится на каждом бэкенде.

    ```
    [nexohub]: Generated a hub secret and stored it in config.yml.
    [nexohub]: Put this in each backend's plugins/NexoHubBridge/config.yml: secret: "..."
    ```
  </Step>

  <Step title="Решите, где размещается пак — или не решайте">
    На свежей установке здесь делать ничего не нужно. Пак загружается на Hermes,
    собственный хостинг Nexo, и каждый бэкенд выдаёт игрокам эту ссылку, так что не
    нужно открывать порт и не нужно правильно указывать адрес.

    ```yaml theme={null}
    packs:
      host: hermes
    ```

    Чтобы вместо этого раздавать пак с самого прокси, установите `host: proxy` и укажите
    адрес, который будут использовать игроки:

    ```yaml theme={null}
    http:
      public_address: "http://your.proxy.address:8085"
    ```

    <Warning>
      При `host: proxy` этот адрес попадает в ссылку на ресурспак, отправляемую каждому
      игроку, поэтому он должен быть доступен из интернета, а порт должен быть открыт в
      вашем файрволе. Если оставить поле пустым, NexoHub откатится на localhost, что
      подходит только для тестирования на вашей собственной машине.
    </Warning>

    О других вариантах хостинга и о том, что нужно для мультипака, см.
    [где размещается пак](/ru/guides/hosting).
  </Step>

  <Step title="Установите мост на каждый бэкенд">
    Поместите `NexoHubBridge.jar` в папку `plugins/` каждого бэкенда, рядом с Nexo.

    В `plugins/NexoHubBridge/config.yml`:

    ```yaml theme={null}
    hub:
      address: "http://your.proxy.internal:8085"
      secret: "the secret from step 1"
    server_name: auto
    ```

    Это единственный файл, который вы редактируете. Собственный параметр Nexo
    `Pack.server.type` устанавливается в `HUB` за вас при первом запуске, который
    обнаружит `settings.yml`, до того как Nexo его прочитает.

    Перезапустите бэкенды. Хаб пока пуст и никто ещё не заходил, поэтому каждый бэкенд
    сообщает об этом и ждёт:

    ```
    [NexoHubBridge] Set Pack.server.type: HUB in plugins/Nexo/settings.yml, so this backend uses the hub.
    [NexoHubBridge] This backend's name is not known yet, so nothing was pulled. Set server_name in config.yml, or leave it on auto and the proxy will teach it on the first player join.
    [NexoHubBridge] Registered the HUB pack server with Nexo.
    Nexo | PackServer set to HUB
    ```

    <Note>
      Записывается один раз, а затем не трогается. Если вы в любой момент вернёте значение
      вручную, этот бэкенд выйдет из сети, и мост не станет это отменять. На бэкенде, где
      Nexo ещё ни разу не запускался, пока нет `settings.yml`, куда можно было бы писать,
      поэтому мост сообщает, что сделает это при следующем запуске, — и делает.
    </Note>

    <Note>
      Оставьте `server_name: auto`. Прокси сообщает каждому бэкенду его имя при первом
      заходе игрока, поэтому имя хранится только в собственном списке серверов вашего
      прокси: в `velocity.toml` или в `config.yml` BungeeCord.
    </Note>
  </Step>

  <Step title="Заполните хаб с одного бэкенда">
    Зайдите в сеть, затем на прокси укажите бэкенд, из чьей папки `plugins/Nexo/` должна
    собираться вся сеть:

    ```
    /nexohub adopt lobby
    ```

    ```
    [NexoHub] Asked lobby for its plugins/Nexo/ folder.
    [NexoHub] Watch the console. Generated output is left behind, so run /nexohub validate afterwards.
    ```

    Этот бэкенд отправляет свою папку наверх:

    ```
    [NexoHubBridge] Sending 118 file(s), 2412 KiB, to the hub as 'lobby'.
    [NexoHubBridge] The hub took these files; they are what the whole network builds from now.
    ```

    ```
    [nexohub]: Adopted 118 file(s) from lobby into _shared/.
    ```

    <Warning>
      Зайдите в сеть, прежде чем выполнять эту команду. При `server_name: auto` бэкенд не
      знает собственного имени, пока не зайдёт игрок, а пока он его не знает, принять от
      него файлы нельзя. Запрос истекает через пять минут.
    </Warning>

    <Note>
      Принятие файлов перезаписывает `_shared/` файлами этого одного бэкенда, так что все
      остальные бэкенды вот-вот их получат. Если ваши серверы разошлись между собой,
      решите, какой из них указать первым: см.
      [перенос существующей сети](/ru/guides/migrating).
    </Note>

    <Accordion title="Или скопируйте файлы наверх сами">
      Вместо этого вы можете в любой момент заполнить `nexo-data/` по SFTP. Скопируйте
      содержимое папки `plugins/Nexo/` одного бэкенда в
      `plugins/nexohub/nexo-data/_shared/`, сохранив ту же структуру:

      ```
      plugins/nexohub/nexo-data/
      └── _shared/
          ├── items/
          ├── glyphs/
          ├── recipes/
          ├── pack/assets/
          └── settings.yml
      ```

      Пропустите всё сгенерированное: `pack/pack.zip`, всё содержимое
      `pack/external_packs/` и скрытые папки вроде `.assetCache/`. Паки плагинов NexoHub
      обрабатывает отдельно, см. [паки плагинов](/ru/guides/plugin-packs).
    </Accordion>
  </Step>

  <Step title="Убедитесь, что каждый бэкенд всё подхватил">
    Хаб отправляет файлы, как только они у него появляются, поэтому все остальные
    бэкенды получают их без перезапуска:

    ```
    [NexoHubBridge] Applied bundle a1b2c3d4, 118 file(s) into plugins/.
    [NexoHubBridge] Uploaded pack 5e6f7a8b (153 KiB) to the hub.
    ```

    На втором и последующих бэкендах загрузка превращается в пропуск:

    ```
    [NexoHubBridge] Hub already holds pack 5e6f7a8b, skipping upload.
    ```

    Затем выполните `/nexohub status` на прокси:

    ```
    [NexoHub] NexoHub, pack hosting delegated to HERMES
      lobby [3p] bundle a1b2c3d4 in sync
          pack 5e6f7a8b  Nexo 1.26.0/26.2  (last heard 12s ago)
      pvp [1p] bundle a1b2c3d4 in sync
          pack 5e6f7a8b  Nexo 1.26.0/26.2  (last heard 8s ago)
    [NexoHub] 1 pack(s) stored, keeping 5.
    ```
  </Step>

  <Step title="Проверьте всё остальное">
    ```
    /nexohub doctor
    ```

    Эта команда проверяет то, что вы не можете увидеть с того места, где находитесь.
    При `host: proxy` самое важное из этого — отвечает ли адрес в вашей ссылке на
    ресурспак извне вашей собственной сети; при делегированном хостинге по умолчанию у
    вас нет своего адреса для проверки, и команда так и сообщает.

    ```
    [NexoHub] Checking...
      ok   everything under nexo-data/ parses
      note pack hosting is delegated to HERMES, so public_address is unused
      ok   no port here needs to face the internet; players fetch the pack from HERMES
      ok   all 2 backend(s) have reported in
      ok   no backend reports a failed reload
      ok   backends agree on their Nexo and Minecraft versions
      ok   every backend on the same files serves the same pack
      note plugins/nexohub/ uses 4 MiB (1 pack(s), 1 snapshot(s))
    [NexoHub] No problems found.
    ```
  </Step>
</Steps>

## Что дальше

Отредактируйте любой файл в `nexo-data/` и сохраните его. В течение нескольких секунд
каждый бэкенд подтянет изменение, перезагрузит Nexo, и игроки получат обновлённый пак.
Не нужно запускать команду или что-либо перезапускать.

<Check>
  Ничего не отправляется, пока не пройдёт разбор. Если вы опечатаетесь в строке, ваши
  бэкенды останутся на последних рабочих файлах, а ошибка попадёт в вашу консоль, а не к
  игрокам. См. [как не сломать свою сеть](/ru/guides/safety).
</Check>

Бэкенду, на котором никого нет, невозможно отправить сообщение, поэтому он сам
запрашивает изменения у хаба каждую минуту. В том же запросе он сообщает, что у него
есть, так что пустой сервер всё равно корректно отображается в `/nexohub status`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.