Один процесс с root
Панель работает без привилегий. Root держит небольшой демон на Rust, и в его контракте нет операции, запускающей переданную ей программу.
Панель хостинга с открытым исходным кодом
Сайты, версии PHP, SSL, базы данных, передача файлов, резервные копии и брандмауэр — из браузера, с отдельным кабинетом для каждого клиента и API, которым управляет ваша биллинговая система.
curl -sSL https://get.maran.innovayse.com | bashОдна команда на чистом сервере. Все проверки проходят до того, как что-то изменится.
Панель работает без привилегий. Root держит небольшой демон на Rust, и в его контракте нет операции, запускающей переданную ей программу.
Домен проверяется как домен, а не экранируется в командную строку. В нём неоткуда взяться переводу строки, который завершит одну директиву и начнёт другую.
Каждый аккаунт — системный пользователь со своим домашним каталогом, своим пулом php-fpm под своим uid и своей квотой.
API провижининга создаёт, приостанавливает и удаляет аккаунты, так что биллинг ведёт хостинг без участия человека.
Статические, PHP и реверс-прокси сайты с алиасами. Агент проверяет каждый отрендеренный vhost силами самого веб-сервера и откатывает его, если перезагрузка отказала.
ACME с проверкой HTTP-01, загрузка собственных сертификатов, продление за тридцать дней до истечения и ключи в root-хранилище вне домашних каталогов.
База и ограниченный пользователь на аккаунт, SFTP в chroot с настоящим uid аккаунта, лимиты по тарифу на то и другое.
Резервные копии файлов и баз с восстановлением по одной, управляемый брандмауэр и мониторинг состояния сервера.
Только на дозапись, с каждым входом и каждым изменением, и экран, который открывается только администраторам.
Обновления подписаны, делают дамп базы до того, как что-то заменить, и откатываются одной командой.
Одна команда на чистом сервере. Предварительная проверка смотрит дистрибутив, память, диск и порты и сообщает обо всех проблемах сразу, а не по одной за запуск.
Установщик печатает ссылку, которая создаёт первого администратора. Больше её не создать ничем, и она сгорает при использовании.
Аккаунт разворачивается на хосте как настоящий пользователь Linux со своим домом, пулом и квотой — и его кабинет передаётся клиенту.
Это разделение — главное проектное решение продукта. Всё остальное на этой странице следует из него.
maran-apiСама панель
maran-agentЕдинственный процесс с root
с root
далееPostgreSQLДанные панели
Панель просит у агента именованные операции с типизированными и проверенными аргументами. Нет операции, которая запускает переданную программу, и нигде между ними нет shell-строки — поэтому множество того, что можно заставить сделать корневой процесс, конечно, записано и поддаётся ревью.
Одна команда на чистом сервере с любой из этих систем, на x86_64 или aarch64.
Ubuntu
22.04 · 24.04 LTS
Debian
12 · 13
AlmaLinux
9 · 10
Rocky Linux
9 · 10
Систему вне этого списка установщик отвергает, а не угадывает: он знает раскладку пакетов и имена служб каждого поддерживаемого семейства. В продакшене установка нативная, Docker используется только в разработке.
В активной разработке к первому функциональному релизу. Ниже — что есть, и чего нет.
Maran публикуется под Business Source License 1.1 компанией Innovayse LLC и переходит в Apache 2.0 29 августа 2030 года. Дата записана в самой лицензии, а не обещана.
Четыре свойства кода — каждое либо верно, либо нет, и каждое проверяется чтением.
Домен проверяется как домен — буквы, цифры, дефисы, точки, — а не экранируется в командную строку. В нём неоткуда взяться переводу строки, который завершит одну директиву и начнёт другую.
Каждая запись рендерится, атомарно переименовывается на место и проверяется самой службой. Если проверка или перезагрузка отказали, файл откатывается.
Учётные данные пира читаются из сокета до рассмотрения операции, поэтому демон знает, какой процесс на другом конце, а не верит тому, что ему сказали.
Запрос чужого ресурса получает «не найдено», а не «запрещено», — ошибка никогда не подтверждает, что строка существует.
Мультиарендность заложена с первого релиза, а не добавлена позже, — и это видно по тому, кому он подходит.
Кабинет на каждого клиента, тарифы, ограничивающие аккаунт, и API провижининга, которым биллинг создаёт аккаунты без участия человека.
Сайты клиентов на одном сервере, каждый — свой пользователь Linux со своей квотой и версией PHP, плюс журнал аудита, который отвечает, кто что менял.
Всё, что нужно одной машине: установка одной командой, обновления подписанными артефактами и откат ещё одной командой.
Свежий релиз и последнее написанное о том, как всё это устроено.
Maran 1.0.0-beta.1 — первый устанавливаемый выпуск
Первый выпуск, который ставится на сервер: аккаунты как настоящие пользователи Linux, сайты, версии PHP, SSL, базы данных, передача файлов и резервные копии — опубликован как бета, с честно очерченной границей.
19 сентября 2026Почему агент не принимает shell-команд
Одно проектное решение, определившее в Maran всё остальное — корневой демон принимает типизированные операции и ни одной shell-строки — и его цена.
Короткие ответы. Остальные — на странице вопросов.
Архитектура, контракт между панелью и агентом и то, что установщик делает с сервером — записано, а не пересказано.