Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Обучение с ИИ

OpenMAIC

Личный ИИ-преподаватель на вашем сервере: называете тему или загружаете PDF - и разбираете ее не в лоб текстом, а на живом занятии со слайдами, квизами, ИИ-педагогом и ИИ-одногруппниками. Для тех, кто хочет разобраться в предмете, а готового курса под запрос нет. Мы развернули его на своей VM в РФ, прошли занятие от и до и собрали грабли, о которых README молчит.

Сентябрь 2026 ~9 минут чтения Fatmetal Team
ИИ-репетитор Лицензия: MIT Статус: запущен у нас, v1.0.1

Вердикт

Подходит
  • преподавателю или L&D-команде - быстро собрать интерактивный курс из своих материалов
  • кто хочет свой инстанс с собственным ключом LLM вместо облачной подписки
Не подходит
  • если нужна мульти-тенантность с разграничением аккаунтов - ее в продукте нет by design
  • кто не готов держать свой ключ LLM и egress вне РФ (провайдеры из РФ отдают 403)
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: medium RAM под нагрузкой: ~128 MiB Главный риск: LLM из РФ = 403 без egress-прокси Прод-готовность: с оговорками (прокси + TLS + код доступа)
Что это

Что это и какую задачу решает

OpenMAIC (Open Multi-Agent Interactive Classroom) - проект команды из Университета Цинхуа. Вы вводите тему («Объясни Docker за 5 минут») или загружаете документ, а платформа сама строит интерактивный курс: слайды на вайтборде, квизы, PBL-задания, а ведет занятие ИИ-преподаватель с ИИ-одногруппниками, которые задают вопросы и обсуждают материал. Это закрывает боль «есть материал, но нет времени и сил превратить его в нормальный интерактивный урок».

В версии 1.0 добавили Pro-workbench: агент планирует программу, строит и правит страницы курса из ваших материалов. Продукт provider-neutral - работает с любым OpenAI-совместимым LLM (OpenAI, Anthropic, Google, OpenRouter, DeepSeek, Qwen, локальные Ollama/Lemonade). Один ключ LLM обязателен - модель вы приносите свою.

Next.js 16React 19TypeScript 5LangGraphNode 22Docker
Сравнение

Чем отличается от привычных способов разобраться в теме

Сравнение не с конструкторами курсов, а с тем, что человек реально выбирает, когда хочет во что-то вникнуть: готовый видеокурс или просто спросить ИИ в чате.

Что важно ученикуOpenMAIC (self-hosted)Готовый видеокурс / онлайн-школаПросто спросить ИИ в чате
Под ваш запроскурс строится под вашу тему или PDF здесь и сейчасфиксированная программа для всехпод запрос, но без учебной структуры
Структура занятияслайды, квизы, PBL-задания, план урокаесть, но записана заранеепростыня текста без слайдов и проверки
Интерактивпедагог спрашивает вас, ИИ-одногруппники обсуждаютодностороннее видеодиалог один на один, без «класса»
Ценасвой сервер плюс токены своего ключа LLMподписка или оплата за курсподписка на чат-сервис
Данные и приватностьна вашем сервере, свой ключв облаке вендорауходят провайдеру чата
Под капотом

Тех-стек и архитектура

Фронт и бэкенд - единое Next.js 16 приложение (React 19, TypeScript 5) с оркестрацией агентов на LangGraph. Генерация курса идет server-side через API-роуты (/api/chat, /api/generate/*): клиент отправляет тему, сервер обращается к LLM и стримит слайды и реплики агентов обратно в браузер по SSE. Это важно для РФ - наружу к провайдеру ходит сервер, а не браузер пользователя.

Один контейнер на приложение (образ на базе node:22-alpine, standalone-сборка Next.js). Персистентность опциональна: профиль с PostgreSQL включает durable-сессии, переживающие рестарт. В нашей карте мы держим легкий вариант без БД - сессии живут в браузере, ресурсов нужно минимум.

Конфигурация

Минимальная конфигурация

Реальные требования против официального минимума.

RAM для сборки из исходников8 GB+ (build Next.js 16 тяжелый)
RAM для готового образа, простой~114 MiB
RAM под генерацией курса~128 MiB
Рекомендуем тарифCPU2-RAM4-DISK50
i

Важно: сборка Next.js 16 из исходников требует 8 GB+, но у нас образ уже собран и лежит готовым - при заказе карты клиент только скачивает и запускает, поэтому под рантайм хватает CPU2-RAM4-DISK50. Тяжелая память нужна только тем, кто собирает образ сам.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий сервис на своем домене, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес

Развернуть в 1 клик →
Развертывание

Развертывание на Fatmetal

Через карту маркетплейса - одна кнопка. Ниже - что происходит внутри, если ставить руками.

  1. Взять образ и поднять контейнер

    Образ уже собран (сборка Next.js 16 тяжелая), приложение слушает только localhost - публичный вход через Caddy с TLS.

    docker load < openmaic-fatmetal-1.0.1.tgz
    docker compose up -d
  2. Прописать ключ LLM (BYOM)

    В .env.local ваш ключ и модель по умолчанию, egress-прокси уводит вызов за пределы РФ:

    OPENROUTER_API_KEY=sk-or-...
    DEFAULT_MODEL=openrouter:google/gemini-2.5-flash
    ACCESS_CODE=ваш-код-доступа
    OUTBOUND_PROXY=http://api-proxy.fatmetal.net:8080

    Применить изменения - именно up -d (пересоздает контейнер и перечитывает env), а не restart:

    docker compose up -d
  3. Открыть по HTTPS

    Caddy выпускает валидный TLS по magic-DNS. Заходите на https://ваш-домен, вводите код доступа - и создаете курс.

https://ваш-домен
Стартовый экран OpenMAIC: поле ввода темы курса и список недавних курсов
OpenMAIC v1.0.1, тариф CPU2-RAM4-DISK50 - стартовый экран
https://ваш-домен/classroom
Сгенерированный курс OpenMAIC: слайд на вайтборде, ИИ-преподаватель и ИИ-одногруппники
Сгенерированный курс: слайд, ИИ-преподаватель и ИИ-одногруппники
Замеры

Что измерили после запуска

Цифры со свежей установки, без нагрузки. Только реальные замеры.

Размер образа (сжатый)~194 MiB
Старт контейнера до 200секунды (Next standalone)
RAM в простое~114 MiB
RAM под генерацией курса~128 MiB, CPU ~3%
Отклик главной~160 мс
Генерация курса (outlines + агенты)~15-20 c до готового классрума
i

Главное: само приложение почти ничего не ест - под курсом всего ~128 MiB. Тяжелая часть не сервер, а токены LLM: чем крупнее модель, тем дольше и дороже генерация. Ресурсно OpenMAIC спокойно живет на CPU2-RAM4.

Проверено на версии v1.0.1, сентябрь 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли, на которые наткнулись при запуске.

!

Прокси не подхватывается сам. LLM-путь OpenMAIC (openai/openrouter) не читает поле proxy из конфига, а переменную HTTPS_PROXY на Node 22 undici игнорирует. Вдобавок пакет undici в standalone-сборке вообще отсутствует, поэтому штатная proxy-фича приложения падает. Лечится глобальным диспетчером: вендорим undici в образ и через NODE_OPTIONS=--import=/app/proxy-preload.mjs ставим setGlobalDispatcher(new ProxyAgent(OUTBOUND_PROXY)) - весь server-side fetch уходит за пределы РФ. В нашей карте это уже вшито.

!

Код доступа требует HTTPS. ACCESS_CODE ставит cookie с флагом Secure - по plain HTTP браузер ее не сохраняет, и все API-роуты отвечают «Access code required», генерация падает. Значит обратный прокси с TLS (Caddy) обязателен, а не опционален.

!

Смена ключа: up -d, не restart. Ключ LLM в env_file подхватывается при пересоздании контейнера. docker compose restart его НЕ перечитывает - нужен docker compose up -d.

AI_APICallError: Forbidden - "Access denied by security policy." (403 от openrouter.ai)

Причина. Запрос к провайдеру LLM ушел напрямую с российского IP - OpenRouter/OpenAI блокируют РФ.

Решение. Увести server-side fetch через egress вне РФ глобальным undici-диспетчером (см. камень про прокси выше). После этого 403 сменяется рабочим стримом генерации.

Безопасность

Безопасность и обновления

Единственный механизм защиты - ACCESS_CODE (site-level код доступа). Не задан → инстанс полностью открыт всем, кто знает адрес. Задавайте код обязательно и работайте только по HTTPS. Изоляции пользователей в продукте нет by design: все сессии в одном инстансе под общим кодом - это личный или командный инстанс, не мульти-тенант SaaS. Ключ LLM держите в .env.local (chmod 600), в UI-настройки его не вводите (клиентский путь из РФ упрется в 403).

Обновление - заменить образ на новую версию и пересоздать контейнер:

docker load < openmaic-fatmetal-НОВАЯ.tgz
docker compose up -d
Рядом

Связь с другими стеками

  • Обратный прокси - Caddy для валидного TLS (обязателен, см. про код доступа).
  • Egress-прокси - выход к LLM-провайдерам за пределами РФ, без него из РФ 403.
  • PostgreSQL - опциональный профиль для durable-сессий, переживающих рестарт.
  • Свой LLM - Ollama / Lemonade локально, если не хотите платить за облачные токены.
Честно

Когда это НЕ ваш выбор

Нужны отдельные аккаунты учеников

Мульти-тенантности и разграничения пользователей в OpenMAIC нет by design - все под одним кодом доступа. Для полноценной LMS с ролями и прогрессом учеников берите Moodle или подобное.

Не готовы возиться с ключом и egress

Продукт BYOM: без своего ключа LLM и выхода к провайдеру вне РФ генерация не поедет. Если нужен «включил и работает» без настройки - это облачный SaaS, а не self-hosted.

FAQ

Частые вопросы

Какая модель LLM нужна?

Любая OpenAI-совместимая. Разработчики рекомендуют Gemini 3 Flash; мы гоняли на google/gemini-2.5-flash через OpenRouter. Ключ свой (BYOM).

Хватит ли 4 GB RAM?

С запасом: под генерацией курса приложение ест ~128 MiB. 8 GB нужны только для сборки образа из исходников, а в карте образ уже собран.

Почему из РФ ошибка 403?

Провайдеры LLM блокируют российские IP. Нужен egress-прокси вне РФ, прошитый глобальным undici-диспетчером - в нашей карте это уже сделано.

Можно несколько учеников с разными аккаунтами?

Нет, изоляции пользователей нет by design. Это личный или командный инстанс под общим кодом доступа.

Обязателен ли код доступа?

Да. Без ACCESS_CODE инстанс открыт всем. И работать он должен строго по HTTPS - иначе cookie с флагом Secure не сохраняется.

Переживут ли курсы перезапуск?

В базовом варианте сессии живут в браузере. Для durable-хранения включите профиль с PostgreSQL.

Какая лицензия?

MIT (перелицензирован с AGPL-3.0 на v0.3.0) - можно использовать в том числе коммерчески.

Итог

OpenMAIC превращает тему или PDF в интерактивный курс с ИИ-преподавателем за пару минут и почти не ест ресурсы (~128 MiB под нагрузкой, спокойно живет на CPU2-RAM4). Главные оговорки для РФ - свой ключ LLM и egress-прокси вне России (иначе 403), обязательный TLS для кода доступа и отсутствие мульти-тенантности. Все это в нашей карте уже прошито, поэтому получаете рабочий инстанс, а не набор граблей.

Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe

Не хотите устанавливать вручную?

Запустите OpenMAIC на этой конфигурации автоматически - от 450 ₽/мес.

Запустить OpenMAIC →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.