nolay.toml
Все поля файла настроек проекта с типами и значениями по умолчанию.
nolay.toml лежит в корне репозитория проекта. Все поля необязательны: без файла агент определит сборщик и порт сам. Файл в репозитории имеет приоритет над формой в панели, а панель никогда не умеет больше, чем этот файл.
Секреты в nolay.toml не пишутся: файл лежит в репозитории. Их задают в панели на странице Секреты.
Пример
Поля
Таблица собрана из схемы протокола nolay-toml.v1.json. Путь с [] означает элемент списка таблиц, например [[cron]]; source(git) и source(archive) это два варианта секции [source].
Как собирается образ. auto выбирает сам: свой Dockerfile, затем шаблон Nolay, затем Railpack. compose пока не поддержан, nixpacks оставлен для старых проектов и в auto не участвует.
Расписание бэкапов в ваше S3-хранилище. Нет секции, нет бэкапов. Ключи S3 здесь не пишутся: это секреты проекта NOLAY_S3_*.
Как снимать дамп базы. Нужна, если в targets есть db.
Имя переменной с паролем базы, например POSTGRES_PASSWORD. Само значение агент берёт из секретов проекта.
Имя базы для postgres и mysql.
Какая база в контейнере проекта.
Имя сервиса каталога из uses, из которого снимать дамп. Пользователь, база и пароль тогда берутся из сервиса.
Путь к файлу базы внутри контейнера, только для sqlite.
Пользователь базы для postgres и mysql. Это не секрет.
Сколько суточных копий хранить.
Сколько месячных копий хранить.
Сколько недельных копий хранить.
Расписание в формате cron, пять полей, время UTC.
Что бэкапить: тома проекта, дамп базы или оба.
Параметры сборки образа.
Аргументы сборки (ARG в Dockerfile). Ключи заглавными латинскими буквами, цифрами и _. Секретам здесь не место: файл лежит в репозитории.
Зарезервировано. Агент пока не читает это поле, подкаталог репозитория задаётся в source.subdir.
Команда сборки для Railpack, nixpacks и шаблонов, например npm run build.
Путь к Dockerfile внутри каталога проекта. По умолчанию Dockerfile.
Готовый образ для builder = "image", например nginx:alpine. Для остальных сборщиков не используется.
Только nixpacks: заменяет его шаг установки целиком. Без него nixpacks сам ставит зависимости по package.json и похожим файлам.
Каталог с уже собранной статикой для builder = "static", по умолчанию dist. Фронтенд агент не собирает.
Задачи по расписанию. Каждый срок запускает одноразовый контейнер из образа проекта. Не больше 20 задач на проект.
Команда, которая выполняется как sh -c <cmd> в контейнере задачи.
Имя задачи, уникальное в проекте: строчные латинские буквы, цифры и дефис, до 32 символов.
Расписание cron, пять полей, UTC. Если прошлый запуск ещё идёт, срок пропускается.
Сколько секунд может идти один запуск, от 1 до 21600. Потом контейнер останавливается.
Несекретные переменные окружения. Секреты задаются в панели; если ключ есть и там, и здесь, побеждает секрет.
Проверка готовности. Нет секции: проект готов, когда контейнер работает. Есть path: агент ждёт ответа 2xx или 3xx по этому пути.
Пауза между попытками проверки, секунды.
Путь HTTP-проверки, например /healthz. Без него проверяется HEALTHCHECK образа.
Сколько всего ждать готовности, секунды. Не дождались: новая версия не включается, старая продолжает работать.
Защита домена на входном прокси. Нет секции: действуют значения по умолчанию из этой таблицы.
Адреса и подсети, которым открыт домен. Пусто: доступ открыт всем. Проверка сертификата ACME не закрывается никогда.
Отвечать 403 известным сканерам по User-Agent. Поисковых роботов в списке нет.
Значение заголовка X-Frame-Options: SAMEORIGIN или DENY. Убрать поле: заголовок не ставится.
Перенаправлять HTTP на HTTPS кодом 308. Для *.localhost, *.test и IP не действует.
Предельный размер тела запроса в МиБ. Больше: ответ 413.
Лимит запросов с одного IP в виде <число>/<окно>, например 300/1m, или off.
Фильтр атак Coraza с правилами OWASP CRS. low почти без ложных срабатываний, medium строже. Стоит около 100 МиБ памяти.
Пути, на которых фильтр не работает, по префиксу, например /api/upload.
Домены проекта. Нет доменов: проект доступен только внутри сети Docker на сервере.
Домены в нижнем регистре, без *. Сертификат выпускает агент на вашем сервере.
Перенаправлять www.<домен> на <домен> кодом 308.
Лимиты контейнера проекта.
Доля процессора, например 0.5 или 2.
Лимит памяти в МиБ для контейнера и для сборки. Не задан: сборка идёт с лимитом 512 МиБ.
Как запускается проект.
Зарезервировано, агент пока не читает это поле.
Порт, на котором отвечает приложение. У шаблонов свой порт по умолчанию, задавать не обязательно.
Зарезервировано, агент пока не читает это поле.
Зарезервировано, агент пока не читает это поле. Миграции запускайте из команды запуска приложения.
Linux capability сверх базового набора, без префикса CAP_, не больше восьми. Каждая пишется в журнал агента.
Команда запуска, если сборщик не угадал её сам, например npm start.
Откуда агент берёт код. Обычно секцию пишет панель, в репозитории её держать не нужно.
Точный коммит. Проставляет панель, в репозитории это поле не пишут.
git для репозитория.
Ветка, тег или хеш коммита.
Подкаталог репозитория, из которого идёт сборка. Не задан: корень.
Адрес репозитория по HTTPS или SSH. Логин и токен в адрес не пишутся: для закрытого репозитория есть секреты NOLAY_GIT_TOKEN и NOLAY_GIT_SSH_KEY.
Формат архива. Проставляет панель при загрузке.
archive для архива, загруженного через панель.
Контрольная сумма архива. Агент сверяет её до распаковки.
Размер архива в байтах.
Номер загрузки. Проставляет панель.
Сервисы каталога сервера, к которым подключается проект, например ["db", "cache"]. Строка подключения приходит секретом DATABASE_URL, REDIS_URL или MONGO_URL.
Тома Docker для постоянных данных. Без томов содержимое контейнера пропадает при следующем деплое.
Имя тома в проекте: строчные латинские буквы, цифры и дефис.
Абсолютный путь внутри контейнера, куда монтируется том.
Фоновые процессы: контейнеры из того же образа без порта и домена. Не больше 10 на проект.
Команда запуска как sh -c <cmd>. Второе имя ключа start_cmd.
Имя процесса, уникальное в проекте.
Сколько одинаковых контейнеров держать, от 1 до 10.
Лимиты процесса. Не заданы: берутся из [resources] проекта.
Доля процессора.
Лимит памяти в МиБ.

