РазделКак устроено
ДокументацияУстройство
Как устроено
Один бинарник monopanel (он же mp) работает в нескольких ролях:
| Роль | Права | Зачем |
|---|---|---|
api | обычный пользователь monopanel | HTTPS :8443, unix-сокет для CLI, очередь задач, планировщики |
agent | root | закрытый набор типизированных операций по unix-сокету (никаких строк с командами) |
helper | setuid, необратимый сброс прав | файловые операции от имени клиента |
fsop | права клиента | сама файловая операция |
Состояние живёт в SQLite. Изменение сайта — это не правка файла на диске, а запись в
базу, из которой рендерятся конфиги: шаблон → валидация (nginx -t, apachectl -t,
php-fpm -t) → атомарная запись всех файлов сразу → reload. Любая неудача на этом
пути откатывает весь набор файлов и возвращает текст ошибки.
Принципы, коротко:
- Один бинарник Go, без рантайма на хосте.
- Разделение привилегий: непривилегированный API-процесс ↔ root-агент с allow-list операций и путей.
- Один API для Web, CLI, TUI и интеграций.
- Декларативное состояние → рендер → валидация → атомарное применение → reload, с откатом.
- Панель слушает свой порт и не зависит от системного nginx.
- Один php-fpm master на версию, пул на сайт; Apache только через
mod_proxy_fcgi.