Деплой по протоколу. Каждый отсек — герметичен.

Airlok ставится на ваш сервер, настраивает домен, сертификат и nginx и выкатывает проект из репозитория. Вы описываете его в одном манифесте: приложение, загрузки, база и секреты живут в отдельных отсеках, а релиз выходит только после предстартового опроса — GO от каждой проверки.

airlok.yaml
# манифест проекта
project: myapp
release: 2.14.0
compartments:
app:А
runtime: node20
replicas: 2
healthcheck: /healthz
uploads:Б
gateway: quarantine
max_size: 25MB
types: [jpg, png, pdf]
db:В
engine: postgres16
migrations: dry-run-first
secrets:Г
vault: sealed
expose_to: [app]
preflight:
require: all_go
rollback: previous
Модуль «myapp» релиз 2.14.0
01 · А

Приложение

node20 · 2 репликиздоровье: /healthz

02 · Б

Шлюз загрузок

карантин≤ 25 МБ · jpg png pdf

03 · В

База

postgres16миграции: сначала копия

04 · Г

Секреты

хранилище запечатановидит: приложение

Отсчёт

Четыре отсека ждут опроса. Отсчёт можно прервать в любой момент.

4 отсека · 3 перегородки · 1 шлюз Рис. 1 — разрез модуля, вид сбоку

§2

Герметичные отсеки

Ошибка в одном отсеке не затапливает остальные.

Приложение, загрузки пользователей, база и секреты живут раздельно. Между ними — перегородки с явными проходами: приложение получает к базе ровно ту роль, что указана в манифесте, а секреты видит только свои.

Если сгенерированный код сделает что-то неожиданное, последствия останутся внутри его отсека.

ОтсекЧто внутриПерегородкаПри сбое
01 ·АПриложениеКод, рантайм, репликиК базе — только по выданной роли. К секретам — только чтение своих.Перезапуск внутри отсека. База и загрузки не затронуты.
02 ·БШлюз загрузокФайлы пользователейФайлы не попадают в каталог приложения и не исполняются.Файл остаётся в карантине, пользователь получает отказ с причиной.
03 ·ВБазаДанные, миграции, резервные копииМиграция сначала идёт на копии базы.NO GOдо старта. Рабочая база не меняется.
04 ·ГСекретыКлючи, токены, паролиНе попадают в сборку, логи и репозиторий.Найденный в коде ключ останавливает старт с указанием файла и строки.

§3

Шлюз для загрузок

Камера 1 · Приём

Файл принимается во внешнюю камеру. Рядом с кодом его нет.

Камера 2 · Карантин

Проверка типа по содержимому и размера по лимитам из манифеста.

Камера 3 · Хранилище

Приложение получает подписанную ссылку с ограниченным сроком, а не путь на диске.

Оранжевым — створки шлюза. Открыта всегда только одна. Рис. 2 — шлюз загрузок, схема прохода

Пользователи загружают аватары, документы, архивы. Шлюз проверяет каждый файл до того, как он окажется рядом с вашим приложением.

  1. 01Тип определяется по содержимому, а не по расширению.
  2. 02Лимиты размера и типов берутся из манифеста: max_size, types.
  3. 03Файл, не прошедший проверку, остаётся в карантине. В журнал пишется причина.
  4. 04Код из загрузок никогда не исполняется.

§4

Предстартовый опрос — GO / NO GO

Перед каждым выпуском сервис опрашивает отсеки по очереди. Старт — только когда ответили все.

Если хотя бы одна проверка ответила NO GO, релиз не выходит, а текущая версия продолжает работать. Вы получаете причину и команду для повтора.

№ПроверкаОтсекОтветПояснение
01Сборка воспроизводится из коммитаАGOХэш совпал
02Секреты не попали в сборку и логиГGOСовпадений нет
03Миграция прошла пробный прогон на копии базыВGO3 миграции
04Шлюз загрузок принимает тестовый файлБGOКарантин отработал
05Предыдущая версия отвечает на проверку здоровьяАNO GOОткат будет недоступен
NO GO

Итог: старт отложен. Предыдущая версия не отвечает на проверку здоровья, поэтому откат был бы недоступен. Рабочая версия не тронута. Повтор: airlok launch --retry

§5

Начало работы

  1. Шаг 01

    Поставьте агент

    Один бинарник или Docker-образ на вашем сервере. Он настроит домен, сертификат и nginx.

    curl -fsSL https://airlok.sh/install | sudo bash
  2. Шаг 02

    Составьте манифест

    Команда читает репозиторий и предлагает разбивку на отсеки. Пометки в файле показывают, что куда попадает; правьте обычным текстом.

    airlok init
  3. Шаг 03

    Начните отсчёт

    Опрос, штампы, выпуск. Журнал каждого старта сохраняется.

    airlok launch

§6

Одностраничник без сервера

Камера 1 · Приём

Папка с сайтом принимается во внешнюю камеру. Допускается только статика: HTML, CSS, скрипты и картинки.

Камера 2 · Проверка

Правила и проверка текста ИИ. Поля для пароля, формы на сторонние адреса и выдача себя за чужую организацию не проходят.

Камера 3 · Публикация

Сайт получает адрес на поддомене. На каждой странице плашка: размещено на Airlok, с содержанием не связано, есть кнопка «Пожаловаться».

Рис. 4 — публикация сайта, схема прохода

Нужен лендинг, визитка или страница с формой? Загрузите папку и получите адрес.

Сайт публикуется по адресу имя.user-page.airlok.ru. Условия и лимиты — в разделе §7.

  • Нужна только статика. Сервер и бэкенд не требуются.
  • Заявки с формы приходят вам в Telegram.
  • Содержимое проверяют правила и ИИ, спорные случаи смотрит человек.
  • На число публикаций с аккаунта действуют лимиты.

§7

Открытый код и подписка

Агент открыт и бесплатен. Подписка — то, что должно работать, пока вы не смотрите.

Установка, домен, сертификат, nginx и выпуск релиза из репозитория работают без подписки. Платная часть следит за проектом снаружи и сообщает, когда что-то пошло не так.

Исходники можно прочитать, собрать и запустить самостоятельно.

Бот в Telegram
Табл. 3 — состав поставки
Что входитОткрытыйПодписка
Установка на ваш сервер, домен, сертификат, nginxДаДа
Выпуск релиза из репозитория по манифестуДаДа
Предстартовый опрос: сборка, миграции, шлюз загрузокДаДа
MCP для Claude и ChatGPTДаДа
Хостинг одностраничника на поддомене (только статика)—Да
Форма заявки с уведомлением в Telegram—Да
Свой домен для сайта—Да
Проверка доступности снаружи—Да
Метрики сервера—Да
Алерты в Telegram с причиной сбоя—Да
Проверки безопасности при каждом выпуске—Да
Резервные копии с проверкой восстановления—Да
Несколько проектов—До 10, по тарифу
ЦенаБесплатноот 190 ₽ / мес.
  • Тариф

    Базовый

    190 ₽/ мес.

    1 проект

  • Тариф

    Стандартный

    490 ₽/ мес.

    До 5 проектов

  • Тариф

    Продвинутый

    990 ₽/ мес.

    До 10 проектов

14 ДНЕЙ

Первые две недели подписки — бесплатно. Карта не нужна.

§8

Вопросы и ответы

01Для кого это?

Для тех, кто собрал проект с помощью ИИ и упёрся в последние 20 %: домен, сертификат, открытые порты, база, загрузки файлов.

02Что агент делает на моём сервере?

Настраивает домен, сертификат и nginx, выпускает релиз из репозитория. Сам он только устанавливает исходящие соединения. Секреты ваших проектов мы не храним.

03Вы исправляете найденное сами?

Нет. Проверки только читают и сообщают: что найдено, чем это грозит и как исправить. Изменения вносите вы.

04GO значит, что проект безопасен?

Нет. GO значит, что пройдены проверки из списка. В отчёте всегда указано, сколько пунктов проверено и что осталось за рамками.

05Что, если я не хочу платить?

Открытая часть работает без подписки: установка, домен, сертификат, nginx и выпуск релиза. Подписку можно попробовать: первые 14 дней бесплатно, без карты.

06Почему на сайтах есть плашка?

Страницы публикуют пользователи. Плашка сообщает посетителю, что сайт размещён на Airlok и не связан с Airlok по содержанию, и даёт кнопку «Пожаловаться».

07Кто проверяет, что публикуют?

Сначала простые правила, затем проверка текста ИИ. Спорные случаи смотрит человек. На число публикаций с одного аккаунта действуют лимиты.