Отработал ли ночной скрипт? Веб-панель для cron на сервере
Выгрузки из 1С, копии баз и рассылки запускает cron, а отработали ли они сегодня, не знает никто. Разбираем открытую веб-панель cronmaster: журнал запусков, API, вход через SSO, и главный риск, права на сервере.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
DevOps и сопровождение серверовКто знает, что скрипт сегодня упал
Подрядчик три года назад настроил выгрузку остатков из 1С на сайт. Скрипт стартует в 3:10. Однажды у него сменился пароль к базе, и файл перестал обновляться. Сайт продаёт товар, которого нет, менеджеры извиняются перед покупателями, причину находят через две недели.
Cron устроен просто: запустил команду и забыл, результат он никому не показывает. Если вы не перенаправили вывод в файл и не настроили почту на сервере, ошибка уходит в никуда. Чтобы посмотреть расписание, нужен SSH и команда crontab -l, а чтобы понять строку 0 3 * * 1-5, надо уметь её читать.
Что такое cronmaster
Это веб-интерфейс к обычному cron сервера. Автор fccview, репозиторий github.com/fccview/cronmaster. Он создан в августе 2025 года, последний релиз 2.4.0 вышел 4 октября 2026 года, то есть проект живой. По счётчику GitHub у него около 1,4 тысячи звёзд и 37 форков. Разработкой занимаются в основном два аккаунта, у остальных участников по одному-три коммита, так что проект небольшой, без команды и платной поддержки.
Что умеет, по документации:
- показывает все задания сервера с расписанием и комментариями, позволяет создавать, клонировать и удалять их;
- даёт быстрые шаблоны расписаний, а в зависимостях проекта есть библиотека cronstrue, которая переводит запись вроде
0 3 * * 1-5в обычную фразу; - по желанию ведёт журнал каждого запуска: что вывела команда, как долго работала, с каким кодом завершилась;
- хранит скрипты и позволяет запустить любое задание вручную кнопкой;
- имеет REST API: список заданий, правка, удаление, запуск, потоки логов;
- пускает по паролю или через OIDC (Authentik, Keycloak, Okta, Auth0 проверены автором);
Четыре ситуации, где это окупается
Ночные выгрузки. Задание с включённым журналом оставляет запись на каждый запуск: время старта, длительность, код завершения. Утром видно, что вчера скрипт завершился с ошибкой, и сказано, на чём именно. По умолчанию панель хранит до 50 записей на задание и 30 дней, значения меняются переменными окружения.
Упавшая рассылка. Рассылка по базе клиентов ушла наполовину, потому что сервис почты вернул ошибку. В журнале сохранён весь вывод скрипта с текстом ошибки, а задание перезапускается одной кнопкой.
Передача сервера новому админу. Новый человек открывает панель и видит все регулярные задачи сразу, с вашими комментариями к ним. Без панели он читает crontab каждого пользователя и ищет скрипты по диску.
Скрипты подрядчика. Если на сервере крутится чужой код, панель показывает, что и когда запускается. Владелец видит по журналу, что копия базы шла вчера, а последняя удачная была месяц назад. Отдельной роли «только просмотр» у панели нет, об этом ниже.
Как ставится и что при этом открывается
Ставится через Docker Compose, образ ghcr.io/fccview/cronmaster. Контейнер получает доступ к cron хоста так. В примере из документации стоят user: root, privileged: true, pid: host, и в контейнер примонтирован сокет Docker. Автор прямо пишет, что root нужен для работы с cron и обойти это нельзя. Файлы crontab читаются и пишутся напрямую, а кнопка запуска вручную (Run now) входит в пространство хоста через nsenter и переключается на пользователя задания.
Проще говоря, контейнер получает почти полный доступ к серверу. Кто попал в панель, может выполнить на машине любую команду.
Что важно учесть
Панель с правом запускать команды это ключ от сервера, и защищать её нужно как ключ. Минимальный набор такой.
- Задайте
AUTH_PASSWORD, длинный и уникальный. Если у вас есть SSO, подключите OIDC и ограничьте вход нужными группами черезOIDC_USER_GROUPS. По умолчанию войти может любой, кто вошёл бы у провайдера. - Не открывайте порт в интернет. Лучше доступ из закрытой сети, через VPN или через обратный прокси с HTTPS.
- Ключ
API_KEYзащищает только REST-маршруты, веб-интерфейс он не закрывает. Если ключ не задан, по документации API открыт всем. На живом сервере задавайте оба.
Ролей вроде «только просмотр» в описанных настройках нет: вошёл, значит можешь править. Уведомлений о падении задания в документации я не нашёл, панель работает как журнал и сама вам ничего не напишет. Недостающее закрывается связкой: в Uptime Kuma есть монитор типа Push, который поднимает тревогу, если скрипт перестал присылать сигнал, а копии баз удобно вести по схеме из статьи про GoBackup. Общая картина разобрана в материале про мониторинг и бэкапы.
Лицензия AGPL-3.0: для своего бизнеса запускать можно свободно, а если вы доработаете код и откроете доступ другим людям по сети, придётся опубликовать изменённые исходники. Официальных переводов шесть (белорусский, немецкий, английский, французский, итальянский, китайский), русского среди них нет, его делают своим файлом.
Что можно сделать уже сейчас
- Зайдите на сервер и выполните crontab -l под каждым пользователем. Выпишите все задания и рядом напишите, что оно делает и кто за него отвечает.
- Поднимите cronmaster сначала на тестовой машине и проверьте, как он видит ваши задания и что показывает журнал. Сразу задайте пароль.
- Включите журнал для самых важных заданий: выгрузки, копии, рассылки. Остальным он не нужен.
- Добавьте в конец критичных скриптов запрос на push-адрес в Uptime Kuma: если сигнал не пришёл, вам придёт оповещение. Панель потом покажет, что именно случилось.
Если сервером занимается кто-то другой и вы не уверены, что на нём происходит, начните с аудита. Как мы работаем с серверами, описано на странице DevOps и сопровождение, ориентиры по бюджету лежат в прайсе.
Частые вопросы
Cronmaster заменяет cron?
Нет. Задания остаются в обычном crontab, а панель их читает и правит. В документации написано, что задания продолжают работать, даже когда сама панель выключена.
Он сообщит в Telegram, если задание упадёт?
В документации, которую я смотрел, такой функции нет. Статус и код завершения вы увидите в журнале, а оповещение придётся делать отдельно, например через мониторинг или добавив отправку в сам скрипт.
Безопасно ли держать его на сервере с клиентскими данными?
Только если панель закрыта паролем или SSO, не торчит в интернет и стоит за HTTPS. Права root и сокет Docker у контейнера остаются в любом случае, поэтому сначала проверьте установку на тестовой копии.
Коротко о главном
Cron хорош тем, что его не замечаешь, и поэтому его падения тоже не заметны. Cronmaster показывает расписания и историю запусков в браузере, репозиторий живой, вход настраивается паролем или SSO. Цена вопроса в широких правах на сервере, поэтому панель прячут за паролем и закрытой сетью.
Хотите понять, какие скрипты у вас крутятся по расписанию и что будет, если они молча остановятся? Напишите мне в Telegram слово «КРОН». Посмотрим сервер, расставим журналы и оповещения.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


