Как мы превратили панель управления NAS в платформу для расширений, зачем туда Log Manager и для чего Plugin Template.

Вместо предисловия
Прошлой статьёй (Mini Bucket 3.6.2: от беты к релизу) я показал, как панель доросла до стабильного состояния. Закрыли дыры, разнесли базы, добавили HTTPS. Ну и что? Панель как панель.
Но меня всегда напрягало одно: в любой такой системе «из коробки» есть 80% нужного и 20% того, чего лично вам не хватает. Ну вот нету там твоего любимого инструмента для бэкапов или кастомного виджета. И ты либо страдаешь, либо лезешь в чужой код.
Я помню чудное мгновение,
передо мной явилась ты.
Отобразив Error 500
я понял, серверу кранты.
Ну примерно как то так выглядели одни из попыток поправить код того же джилпи)
Поэтому:
С версии 3.6.4 Mini Bucket становится открытой платформой для плагинов.
Теперь любой желающий может дописать то, что нужно именно ему. И поделиться с сообществом.
🚪 Двери открыты: что это значит на практике
Я не просто добавил кнопку «Установить плагин». Я переработал архитектуру так, чтобы:
✅ Плагин мог работать на локальном хосте (где стоит Mini-Bucket)
✅ Плагин мог работать на удалённых хостах через API
✅ Плагин мог быть установлен из репозитория основного сервера на удалённые серверы при первом использовании
✅ У плагина могла быть своя SQLite-база (без костылей)
✅ Плагин использовал системные API и аутентификацию — никаких дыр в безопасности
И всё это — на чистом PHP 7.0+, без фреймворков. Потому что мы помним про старый NAS на коленке.
📦 Первые плагины: Log Manager и Plugin Template
С открытием платформы я выпускаю два плагина. Один — для реальной работы. Второй — для тех, кто хочет создавать свои. Плагины реализованы по-разному, оба варианта рабочие.
🧾 Log Manager — тот, кому надоел SSH ради логов
Вы знаете эту боль: что-то упало на сервере, нужно посмотреть логи. Вы лезете в SSH, cd /var/log/, grep, tail, less… А если серверов несколько — удовольствие растягивается.
Log Manager решает это.

Что умеет:
-
Добавлять любые логи на сервере — Nginx, Apache, MySQL, vsftpd, системные, свои.
-
Искать в реальном времени — вбил слово, строки подсветились моментально.
-
Смотреть в Live-режиме — новые записи подгружаются сами.
-
Экспортировать в TXT/JSON — скинул админу, он разбирается.
-
Очищать лог одной кнопкой — когда файл уже на гигабайт.

Главный плюс: не надо помнить пути к логам. Встроенный файловый браузер показывает структуру папок — выбираешь файл и работаешь.
🧩 Plugin Template — стартовый набор для разработчика
Если вы хотите написать свой плагин — берите этот шаблон. Внутри уже есть:
-
Готовая структура файлов (
info.json, основной PHP, API-обработчик, JS, CSS). -
Авторизация и проверка API-ключа.
-
Поддержка своей SQLite-базы.
-
Примеры работы с API (
apiCall,showAlert). -
Готовый механизм удалённой установки на другие хосты.
Это как скелет, к которому остаётся приделать мясо вашей логики.
php
// Пример из API-обработчика — всё уже работаетcase 'get_plugin_status': echo json_encode(['success' => true, 'available' => true]); break;
Вы просто копируете, переименовываете по правилам (внимание, золотое правило: все имена должны совпадать!) и добавляете свои action.

🔌 Как это работает внутри (очень кратко без технички)
-
Плагин — это ZIP-архив с определённой структурой.
-
Вы загружаете его в разделе Система → Плагины → Репозиторий.
-
Нажимаете «Установить». Скрипт распаковывает архив, кладёт файлы в нужные места, даёт права.
-
Плагин появляется в меню (или в разделе Установленные плагины).
-
Если плагин поддерживает удалённые хосты — при первом обращении к удалённому серверу он предложит установку туда (через API).

Всё. Никаких ручных копирований по SSH.
Более подробно https://mini-bucket.ru/wiki/knowledge-base/dev-pugins/plugin-development/
🌐 Экосистема: документация, форум, обновления
Проект живёт не только кодом. Я подготовил три опоры для сообщества разработчиков:
📚 Документация по разработке плагинов
Полное руководство: от создания info.json до готового Todo-листа.
Что внутри:
-
Жёсткие правила именования (чтобы плагин точно работал).
-
Описание всех файлов (какой за что отвечает).
-
JavaScript API (
apiCall,showAlert,escapeHtml). -
PHP API (валидация ключей, работа с БД).
-
Пример полного плагина (Todo List).
🗣 Форум для обсуждения плагинов
Вопросы, идеи, готовые наработки, баг-репорты. Если застряли с разработкой — пишите, поможем.
📦 Страница всех плагинов
Один клик — и плагин скачан, загружен в репозиторий, готов к установке.
⚙️ Как получить эту красоту
Если у вас уже стоит Mini-Bucket (версия 3.6.2 и выше):
-
Зайдите в System → Update.
-
Нажмите «Проверить обновления».
-
Установите версию 3.6.4.
Если вы новый пользователь:
-
Скачайте установщик с официальной страницы установки.
-
Поставьте на чистый Debian 9 (инструкция есть на сайте).
-
После установки вы сразу получите версию 3.6.4 с поддержкой плагинов.
🧠 Мои мысли вслух: почему это важно
Когда я начинал Mini Bucket, я просто хотел удобные странички для SAMBA и NFS. Потом подтянулись диски, крон, фаервол, пользователи. Панель разрослась. Но я понимал, что кому-то хватит и этого, а кому-то нужна фича, которой нет.
С открытием платформы плагинов я снимаю с себя ответственность «знать все потребности». Теперь каждый администратор или разработчик может дописать то, что нужно лично ему.
-
Хотите свой бэкап на S3? Пишите плагин.
-
Хотите мониторинг температуры дисков? Плагин.
-
Хотите интеграцию с Telegram-ботом? Пожалуйста.
И не нужно ждать, пока я раскачаюсь и добавлю это в ядро. Просто берёте шаблон и делаете.
Mini Bucket превращается из продукта в платформу. А это, знаете, совсем другой уровень.
🔗 Полезные ссылки
P.S. Обратная связь и призыв
Если вы уже пишете плагин — дайте знать на форуме. Если у вас есть идея, но нет времени — напишите, может, я возьмусь.
И помните: плагины — это не только про расширение функционала. Это про то, что Mini Bucket теперь ваш. Вы можете его изменять, дополнять, адаптировать под свои сумасшедшие серверные задачи.
А я пойду дальше — готовить следующие плагины. Идеи уже есть.
P.S. Скриншоты в статье с реального сервера. Всё работает именно так, как показано.
ссылка на оригинал статьи https://habr.com/ru/articles/1045806/