Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025)

Материал из 0x1.tv

Версия от 13:21, 24 января 2026; StasFomin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Докладчик
Руслан Рахманбердиев.jpg
Руслан Рахманбердиев

Cockpit — это открытый веб-интерфейс, который предоставляет возможность удалённого доступа и настройки Linux сервера.

В докладе рассматривается выбор решения Cockpit, его архитектура и возможность расширения функционала с актуальными примерами.

Видео[править вики-текст]

Презентация[править вики-текст]

Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025).pdf

Thesis[править | править вики-текст]

Ключевые слова: Администрирование, Cockpit, Linux, разработка.

Зачастую в Linux системах для удобства могут потребоваться графические утилиты для выполнения того или иного функционала. Как правило это настройка или управление каким-либо компонентом системы.

После ознакомления с Cockpit, тестовых проб, были выявлены несколько преимуществ, которые склонили решение в пользу Cockpit:

  • полноценная многофункциональная платформа, которую можно доработать и добавить необходимый функционал;
  • понятное пользователю поведение и расположение;
  • целостный вид интерфейса в едином стиле;
  • в основе WEB-технологии;
  • можно использовать разнообразные инструменты в качестве бекенда;
  • возможность использовать как локально, так и удалённо;
  • пакеты уже присутствуют в системе, достаточно установить и запустить сокет;
  • процесс не занимает память постоянно, запускается для каждой сессии пользователя.

Cockpit позволяет посмотреть на свой сервер в обычном веб-браузере и выполнить системные задачи с помощью нескольких кликов мышки. Некоторые из основных возможностей приложения:

  • проверять и изменять сетевые настройки;
  • управлять хранилищем (включая RAID и разделы LUKS);
  • создавать виртуальные машины и управлять ими;
  • загружать и запускать контейнеры;
  • проверять аппаратное обеспечение системы;
  • обновлять программное обеспечение;
  • управлять пользователями;
  • терминал;
  • даже подключаться к удалённым машинам.
Главная страница Cockpit.

Одна из важных черт панели управления Cockpit — он модульный. Что само собой подразумевает возможность расширения с помощью плагинов или даже исправлять его «родной» функционал. Cockpit предоставляет достаточно внушительный API для взаимодействия с системой:

  • работа с файлами;
  • вызов исполняемых файлов;
  • взаимодействие с DBUS;
  • HTTP клиент;
  • локализация;
  • чтение данных о пользователе и текущей сессии.

Для разработчика плагина предоставлена документация на ресурсе проекта, есть примеры в самом репозитории проекта. И достаточно хорошая стартовая точка в виде репозитория starter-kit, который может полноценно использоваться как шаблон для будущего плагина.

В целом разработка плагина выглядит относительно просто. Плагин с точки зрения Cockpit — каталог в определённом месте, с определённым названием и наполнением. Для написания используется JS фреймворк React и CSS фреймворк PatternFly. В файле метаданных (в формате JSON) описываются дополнительные настройки и указывается наименование html файла, с которого начнётся подключение плагина.

Рассмотрим более детально структуру плагина на базе репозитория starter-kit:

/usr/share/cockpit/cockpit-starter-kit
|– index.css
|– index.css.map
|– index.html
|– index.js
|– index.js.LEGAL.txt
|– index.js.map
|– manifest.json
|– po.de.js
|– po.manifest.de.js

Также покажу чуть более сложный пример — наш плагин для управления настройками загрузчика. Можно управлять настройками по умолчанию и аргументами каждого из ядер загрузчика. UI получается в общем стиле Cockpit, в качестве бекенда — обращение к скрипту, написанному на Python, для изменения настроек и чтения конфигов. Результат возвращается в JSON формате, читается в UI и отображается пользователю в привычном ему виде.

Пример плагина Bootloader в Cockpit.

На текущий момент так выглядит основная страница плагина, и у нас реализованы такие плагины, как:

  • Aide;
  • Bootloader;
  • Multi-seat;
  • Quota;
  • USBGuard;
  • LibreOffice;
  • Виртуальные терминалы.

Все плагины в открытом доступе.

Страница с плагинами от МСВСфера в Cockpit.


Разработка решений на базе Cockpit (Руслан Рахманбердиев, OSSDEVCONF-2025)!.jpg

Примечания и ссылки[править вики-текст]