- Поддерживаемые версии
- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
В данной теме я хочу пролить свет на такую тему, как "множественное использование плагинов". Данное руководство предназначено в первую очередь для администраторов сетей серверов, или тех администраторов, которые готовятся к масштабированию своего проекта.
Многие знают, что Bukkit-плагины имеют такую особенность, как мультиверсионность. Однажды я задался вопросом - если плагины на столько универсальны в интеграции на почти любой сервер, то почему бы ею не воспользоваться? И придумал решение, которое назвал "база плагинов сервера". Заинтересовавшихся данной темой приглашаю продолжить чтение материала, и ознакомиться с интеграцией данной системы на свой проект, преимуществами и недостатками моего решения, которое я использую на своём проекте.
Краткая информация: данная система позволяет не закачивать плагины во все директории серверов, а загружать плагины из одного места, экономя Ваше дисковое пространство и время, отправляя изменения сразу на бесконечное количество серверов без необходимости редактирования каждого отдельного сервера.
!!! Для создания подобной системы Вам необходима установленная на Вашей VDS программа Pterodactyl Panel. Она должна быть полностью Вашей, хостинг на панельке не подойдёт !!!
[+] Плюсы данной системы:
+ | Обновление плагинов на всех серверах из единой директории -> экономия времени.
+ | Возможность создания унифицированных конфигураций и мест хранения данных для плагинов, которым это необходимо (например BungeeGuard, SafeNET, floodgate).
+ | Ощутимая экономия дискового пространства, проявляющаяся при наращивании масштабов проекта, когда на серверах стоят одни и те же плагины.
+ | Установка и удаление плагинов из существующей базы в один клик из админ - панели.
[?] Спорные моменты:
? | Защита от инжекта вредоносных плагинов (если сделать mount readonly)
? | Защита от выкачивания Ваших премиум-плагинов (если окажется, что Вы предоставили доступ к контейнеру недобросовестному администратору)
? | Потенциальная возможность создания утилиты (bash-скрипта) автообновления, функционирующая в директории созданной базы.
[-] Минусы данной системы:
- | Костыль, придуманный из существующего функционала панели.
- | Необходимость полностью ручной интеграции данной системы (возможна автоматизация создания данной базы с помощью pterodactyl API на основе bash-скрипта, тем не менее, придётся очень много работать руками) -> на подготовку подобной системы можно убить сутки. Окупится ли такое решение по времени - решать Вам.
- | В том случае, если у плагина есть определенные особенности версий (поддержка/не поддержка некоторых версий Java/Bukkit), то можно столкнуться с некоторыми проблемами, и придётся создавать больше mount'ов
- | Отсутствие возможности монтирования по принципу container -> container. Вот что говорят по этому поводу разработчики панели:
После того как Вы ознакомились с замечаниями по возможностям системы, определились с выбором: быть или не быть, для тех кто выбрал быть, прошу проследовать ниже для ознакомления с процессом установки.
I. Создание директории
Подключимся к нашему серверу по прикладному протоколу SSH, после чего определимся с директорией, в которой будет находиться наша база. Для лаконичности и более быстрого ввода назовём нашу директорию pldb и разместим её в корневом каталоге системы.
Для создания директории выполним следующую команду:
II. Заполнение контентом
После того как директория создана, мы можем подключиться по протоколу SFTP для того чтобы загрузить в неё необходимые, предварительно скачанные плагины. Рекомендуется убирать номер версии из названия плагина для того чтобы в будущем загружать плагины с помощью обычного Drag & Drop, предварительно удаляя из их названия номер версии. По итогу наша база должна выглядеть примерно вот так:
III. Создание точки подключения
Зайдём в нашу админ-панель (panel.ваш.домен/admin), после чего перейдём во вкладку "Монтирование" (Mountings):
Тыкаем со всей силы на кнопку "Создать" (Create), которая расположена справа:
Нам открывается меню, в котором мы можем
создать нашу будущую точку монтирования.
Название | Name: указываем удобное для нас название плагина. Например: Brewery
Описание | Description: на своё усмотрение, можно оставить пустым.
Источник | Source: путь до нашего плагина в системе вместе с расширением. В нашем случае
Цель | Target: точка монтирования в контейнере. Указываем
Название конечного файла можно сделать любым. Например хоть brew.jar, самое главное - правильно указать наш источник.
Только чтение: может ли наш контейнер изменять наш источник файлов. Для .jar файлов рекомендуется ставить "Да". Хуже не будет.
Доступно пользователю: если у Вас есть администраторы, которые должны иметь возможность ставить и удалять данный плагин, то ставим "Да".
После создания точки подключения необходимо указать яйца (Eggs), которые могут использовать данный плагин. Т.к. у нас обычный плагин, то укажем для него ядра, которые мы используем, и на которые он может встать, после чего указать узлы (Node). На которых будет использоваться данная точка монтирования. Точки монтирования могут использоваться только на тех нодах, к которым они привязаны.
IV. Настройка крылышек (Wings)
Для того чтобы панель "видела" нашу базу,
необходимо добавить нашу директорию в
конфигурацию Wings. Для этого выполним
следующую команду:
и добавляем в allowed_mounts нашу директорию.
У меня указано /plugins, но Вам требуется
вписать путь, который Вы ранее создали
и напихали в него плагинов.
После чего перезагружаем Wings с помощью команды
V. Подключение добавленных плагинов.
Для того чтобы посмотреть на то, что мы натворили, необходимо
вернуться в нашу админку, и зайти во вкладку "Серверы". Необходимо зайти в контейнер, который наследуется от яйца, которое Вы указали при подключении точки монтирования во вкладке яйца (Eggs).
Выбираем наш сервер, который наследуется от данного яйца, для чего необходимо нажать на его название-гиперссылку, после чего мы попадём в настройки данного сервера.
Я попал в настройки своего сервера main. Для того чтобы посмотреть список доступных нам плагинов необходимо нажать на вкладку "Установки" (Mounts), после чего мы увидим все точки подключения, которые мы добавили.
Для того чтобы подключить плагин достаточно нажать на + , а чтобы отключить - X
Подключаемые/отключаемые плагины подключаются/отключаются на сервере только при запуске контейнера. Поэтому, для того чтобы увидеть изменения, нам необходимо перезапустить целевой контейнер, с которым мы производили операцию. После начала запуска мы можем зайти в /home/container/plugins нашего контейнера, и увидеть, что там появилось что-то очень странное: наши подключенные плагины весом 0 байт. Именно так и выглядит успешное подключение. Баг это или фича - решать Вам, но при попытке скачать плагин отсюда скачается абсолютно пустой файл, который весит столько же.
Все плагины прекрасно грузятся и создают свои конфиги:
Благодарю всех за чтение данного мануала. Если у Вас остались вопросы или возникли проблемы - Вы можете задавать их в разделе "Обсуждение". Был рад помочь
Многие знают, что Bukkit-плагины имеют такую особенность, как мультиверсионность. Однажды я задался вопросом - если плагины на столько универсальны в интеграции на почти любой сервер, то почему бы ею не воспользоваться? И придумал решение, которое назвал "база плагинов сервера". Заинтересовавшихся данной темой приглашаю продолжить чтение материала, и ознакомиться с интеграцией данной системы на свой проект, преимуществами и недостатками моего решения, которое я использую на своём проекте.
Краткая информация: данная система позволяет не закачивать плагины во все директории серверов, а загружать плагины из одного места, экономя Ваше дисковое пространство и время, отправляя изменения сразу на бесконечное количество серверов без необходимости редактирования каждого отдельного сервера.
Автор не претендует на инновационность и уникальность придуманной системы, и не в курсе, придумали ли это до него, а также не является специалистом в серверостроении и отказывается от ответственности в случае причинённых в ходе рекомендуемых операций проблем. Все операции, которые представлены здесь, Вы выполняете на свой страх и риск.
!!! Для создания подобной системы Вам необходима установленная на Вашей VDS программа Pterodactyl Panel. Она должна быть полностью Вашей, хостинг на панельке не подойдёт !!!
[+] Плюсы данной системы:
+ | Обновление плагинов на всех серверах из единой директории -> экономия времени.
+ | Возможность создания унифицированных конфигураций и мест хранения данных для плагинов, которым это необходимо (например BungeeGuard, SafeNET, floodgate).
+ | Ощутимая экономия дискового пространства, проявляющаяся при наращивании масштабов проекта, когда на серверах стоят одни и те же плагины.
+ | Установка и удаление плагинов из существующей базы в один клик из админ - панели.
[?] Спорные моменты:
? | Защита от инжекта вредоносных плагинов (если сделать mount readonly)
? | Защита от выкачивания Ваших премиум-плагинов (если окажется, что Вы предоставили доступ к контейнеру недобросовестному администратору)
? | Потенциальная возможность создания утилиты (bash-скрипта) автообновления, функционирующая в директории созданной базы.
[-] Минусы данной системы:
- | Костыль, придуманный из существующего функционала панели.
- | Необходимость полностью ручной интеграции данной системы (возможна автоматизация создания данной базы с помощью pterodactyl API на основе bash-скрипта, тем не менее, придётся очень много работать руками) -> на подготовку подобной системы можно убить сутки. Окупится ли такое решение по времени - решать Вам.
- | В том случае, если у плагина есть определенные особенности версий (поддержка/не поддержка некоторых версий Java/Bukkit), то можно столкнуться с некоторыми проблемами, и придётся создавать больше mount'ов
- | Отсутствие возможности монтирования по принципу container -> container. Вот что говорят по этому поводу разработчики панели:
После того как Вы ознакомились с замечаниями по возможностям системы, определились с выбором: быть или не быть, для тех кто выбрал быть, прошу проследовать ниже для ознакомления с процессом установки.
I. Создание директории
Подключимся к нашему серверу по прикладному протоколу SSH, после чего определимся с директорией, в которой будет находиться наша база. Для лаконичности и более быстрого ввода назовём нашу директорию pldb и разместим её в корневом каталоге системы.
Для создания директории выполним следующую команду:
mkdir /pldb
II. Заполнение контентом
После того как директория создана, мы можем подключиться по протоколу SFTP для того чтобы загрузить в неё необходимые, предварительно скачанные плагины. Рекомендуется убирать номер версии из названия плагина для того чтобы в будущем загружать плагины с помощью обычного Drag & Drop, предварительно удаляя из их названия номер версии. По итогу наша база должна выглядеть примерно вот так:
III. Создание точки подключения
// TODO: Скоро здесь будет ссылка на русификацию админ-панели птеродактиля.
Зайдём в нашу админ-панель (panel.ваш.домен/admin), после чего перейдём во вкладку "Монтирование" (Mountings):
Тыкаем со всей силы на кнопку "Создать" (Create), которая расположена справа:
Нам открывается меню, в котором мы можем
создать нашу будущую точку монтирования.
Название | Name: указываем удобное для нас название плагина. Например: Brewery
Описание | Description: на своё усмотрение, можно оставить пустым.
Источник | Source: путь до нашего плагина в системе вместе с расширением. В нашем случае
/pldb/Brewery.jar
Цель | Target: точка монтирования в контейнере. Указываем
/home/container/plugins/Brewery.jar
Название конечного файла можно сделать любым. Например хоть brew.jar, самое главное - правильно указать наш источник.
Только чтение: может ли наш контейнер изменять наш источник файлов. Для .jar файлов рекомендуется ставить "Да". Хуже не будет.
Доступно пользователю: если у Вас есть администраторы, которые должны иметь возможность ставить и удалять данный плагин, то ставим "Да".
После создания точки подключения необходимо указать яйца (Eggs), которые могут использовать данный плагин. Т.к. у нас обычный плагин, то укажем для него ядра, которые мы используем, и на которые он может встать, после чего указать узлы (Node). На которых будет использоваться данная точка монтирования. Точки монтирования могут использоваться только на тех нодах, к которым они привязаны.
IV. Настройка крылышек (Wings)
Для того чтобы панель "видела" нашу базу,
необходимо добавить нашу директорию в
конфигурацию Wings. Для этого выполним
следующую команду:
nano /etc/pterodactyl/config.yml
,и добавляем в allowed_mounts нашу директорию.
У меня указано /plugins, но Вам требуется
вписать путь, который Вы ранее создали
и напихали в него плагинов.
После чего перезагружаем Wings с помощью команды
service wings restart
. Данная операция не должна повлиять на статус запущенных серверов, однако всё же рекомендуется сделать это когда на сервере нет игроков.V. Подключение добавленных плагинов.
Для того чтобы посмотреть на то, что мы натворили, необходимо
вернуться в нашу админку, и зайти во вкладку "Серверы". Необходимо зайти в контейнер, который наследуется от яйца, которое Вы указали при подключении точки монтирования во вкладке яйца (Eggs).
Выбираем наш сервер, который наследуется от данного яйца, для чего необходимо нажать на его название-гиперссылку, после чего мы попадём в настройки данного сервера.
Я попал в настройки своего сервера main. Для того чтобы посмотреть список доступных нам плагинов необходимо нажать на вкладку "Установки" (Mounts), после чего мы увидим все точки подключения, которые мы добавили.
Для того чтобы подключить плагин достаточно нажать на + , а чтобы отключить - X
Подключаемые/отключаемые плагины подключаются/отключаются на сервере только при запуске контейнера. Поэтому, для того чтобы увидеть изменения, нам необходимо перезапустить целевой контейнер, с которым мы производили операцию. После начала запуска мы можем зайти в /home/container/plugins нашего контейнера, и увидеть, что там появилось что-то очень странное: наши подключенные плагины весом 0 байт. Именно так и выглядит успешное подключение. Баг это или фича - решать Вам, но при попытке скачать плагин отсюда скачается абсолютно пустой файл, который весит столько же.
Все плагины прекрасно грузятся и создают свои конфиги:
Благодарю всех за чтение данного мануала. Если у Вас остались вопросы или возникли проблемы - Вы можете задавать их в разделе "Обсуждение". Был рад помочь