MAATRIX / Блог / Языковая школа: своя платформа занятий вместо 300 ₽ за ученика в месяц

Языковая школа: своя платформа занятий вместо 300 ₽ за ученика в месяц

MAATRIX

Почти все SaaS-сервисы для языковых школ считают счёт одинаково: берут фиксированную сумму за каждого активного ученика в месяц — условно 300 ₽ за голову. Пока в школе 15 учеников на пробном тарифе, это копейки. Когда их становится 150 или 300, та же самая функциональность — видеокласс, расписание, домашки — начинает стоить как отдельная штатная единица. При этом сервис не даёт вам ничего нового с ростом числа учеников: те же кнопки, тот же интерфейс, просто счёт длиннее. Разберём, во что это выливается на цифрах и когда честнее развернуть собственную платформу на арендованном сервере.

Что теряет языковая школа, платя «за голову» каждый месяц

Модель оплаты «за ученика» устроена так, что стоимость сервиса не привязана к тому, сколько реально ресурсов он потребляет. Один ученик, который занимается два раза в неделю по 60 минут в видеокомнате, и другой, который берёт четыре индивидуальных урока плюс групповое занятие — оба считаются «одной головой» и стоят одинаково. Растёт количество учеников — растёт счёт, линейно, без всяких бонусов за объём (если школа не выторговала скидку у конкретного провайдера, что редкость для небольших студий).

Возьмём условные 300 ₽ за ученика в месяц — именно эту цифру чаще всего называют владельцы небольших школ, которые считали свои SaaS-подписки для расписания, видеокласса и хранения материалов. Вот как это выглядит на разных масштабах:

Учеников в школеСчёт в месяцСчёт в год
309 000 ₽108 000 ₽
6018 000 ₽216 000 ₽
10030 000 ₽360 000 ₽
15045 000 ₽540 000 ₽
25075 000 ₽900 000 ₽
400120 000 ₽1 440 000 ₽

Прямая линия без изгибов. У школы на 400 учеников (несколько филиалов или крупная онлайн-студия) счёт за «просто расписание и видеокласс» переваливает за миллион рублей в год — притом что технически нагрузка на сервис выросла далеко не в 13 раз по сравнению со школой на 30 учениках: видеозвонки идут параллельно небольшими группами, база данных с профилями и домашками весит десятки, не сотни гигабайт. Плата растёт быстрее, чем реальное потребление ресурсов.

Здесь и разница подходов. У SaaS цена — это функция от числа учеников. У собственного сервера цена — это функция от вычислительной мощности и трафика, которая на масштабах небольшой и средней школы почти не меняется. Именно это и стоит честно посчитать, прежде чем решать, переезжать ли на свою платформу — это ниже, в разделе про расчёт.

Что должна уметь платформа занятий, чтобы полностью закрыть SaaS

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

  • Личные кабинеты учеников и преподавателей — профиль, уровень, группа, история занятий.
  • Видеокласс — групповые и индивидуальные уроки, желательно с доской, комнатами для парной отработки диалогов и возможностью включить запись.
  • Расписание и запись на занятия — с уведомлениями об отмене, переносе, пробном уроке.
  • Хранилище материалов — учебники, аудио, рабочие листы, разложенные по уровням и группам, доступные и ученику, и преподавателю.
  • Архив записей уроков — чтобы ученик мог пересмотреть занятие, а завуч — проконтролировать качество преподавания.
  • Учёт оплат и посещаемости — кто оплатил абонемент, у кого сколько занятий осталось, кто пропустил без предупреждения.
  • Простая CRM для лидов — заявки на пробный урок, кто с кем на связи, чтобы не терять потенциальных учеников в почте и мессенджерах.

Совсем не обязательно закрывать всё одним монолитным продуктом — на практике удобнее собрать связку из двух-трёх открытых инструментов, каждый из которых хорошо делает свою часть работы, и связать их между собой на уровне общей базы пользователей или простой интеграции.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Из чего собрать техническую основу

Ключевой узел любой языковой школы — видеокласс, и здесь есть выбор между двумя зрелыми открытыми платформами.

BigBlueButton заточен именно под учебный процесс: виртуальная доска, комнаты для групповой работы (удобно разбивать группу на пары для отработки диалогов), встроенные опросы, запись занятий с последующим доступом к архиву. Это ближе всего к тому, что ожидает от «видеокласса» преподаватель языка, привыкший к готовым SaaS-платформам.

Jitsi Meet легче по требованиям к серверу и проще в администрировании, но не имеет учебных инструментов из коробки — подходит, если школа делает акцент на индивидуальные занятия или небольшие разговорные клубы, где доска и комнаты не критичны.

Для языковой школы с групповыми занятиями и постоянной потребностью в парной отработке материала BigBlueButton обычно оправдывает более высокие требования к ресурсам. Разница между платформами и сценарии, где каждая выигрывает, подробно разобраны в статье Jitsi Meet или BigBlueButton: что выгоднее и когда — стоит прочитать перед тем, как выбирать.

Материалы уроков (учебники, аудио, рабочие листы) удобно держать в отдельном файловом хранилище с разграничением доступа по группам — это отдельная задача, не обязательно решать её тем же сервером, что и видео, если нагрузка ощутимая.

Расписание, учёт оплат и простую CRM для лидов на первом этапе вполне можно закрыть лёгкой самописной страницей поверх общей базы данных или уже готовым открытым инструментом для бронирования занятий — это не тот компонент, где стоит переусложнять архитектуру в первый месяц работы.

Пошагово: минимальный стек на одном сервере

Для школы среднего размера (до 150–200 учеников, несколько параллельных групповых занятий в пиковые часы) достаточно одного сервера с 4–8 vCPU и 8–16 ГБ RAM — точную конфигурацию стоит подбирать по количеству одновременных видеоучастников, а не по числу учеников в базе, потому что нагружает сервер именно одновременный онлайн, а не общая база профилей. Ориентировочные требования по памяти для самого BigBlueButton собраны в статье сколько RAM нужно для BigBlueButton.

Порядок развёртывания:

  1. Арендовать VPS или выделенный сервер с публичным IP и доменным именем (для видеоконференций критична стабильная связность и открытые UDP-порты для медиапотока).
  2. Установить BigBlueButton по официальному установщику или через Docker — подробный пошаговый разбор для чистого VPS есть в статье как установить и настроить BigBlueButton на VPS.
  3. Настроить TLS-сертификат и домен для видеокласса (без корректного HTTPS современные браузеры просто не дадут доступ к камере и микрофону).
  4. Поднять простую систему бронирования и расписания — отдельным лёгким сервисом или страницей, интегрированной с созданием комнат BBB через API.
  5. Настроить резервное копирование записей уроков и базы данных — если школа копит архив занятий, это быстро станет заметным объёмом, и его нужно бэкапить на отдельное хранилище, а не полагаться только на диск основного сервера.

Черновой каркас docker-compose для видеочасти и вспомогательного веб-сервиса расписания выглядит примерно так (боевой файл BigBlueButton собирается официальным инсталлятором, здесь — только иллюстрация структуры):

version: "3.8"
services:
  schedule-app:
    image: your-schedule-app:latest
    restart: unless-stopped
    environment:
      - DB_HOST=db
      - BBB_API_URL=https://class.your-school-domain.com/bigbluebutton/api
    ports:
      - "127.0.0.1:8081:8080"
    depends_on:
      - db

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      - POSTGRES_DB=school
      - POSTGRES_USER=school
      - POSTGRES_PASSWORD=change-me
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Сам BigBlueButton при этом разворачивается на том же сервере штатным путём (см. инструкцию по ссылке выше), а веб-часть расписания и учёта — рядом, как отдельный контур, обращающийся к его API для создания и запуска комнат под конкретные группы.

Честный расчёт: когда аренда сервера обгоняет плату за ученика

Это иллюстративный расчёт для прикидки порядка цифр, а не точная формула — у вас конфигурация сервера, нагрузка и цены на конкретные тарифы могут отличаться, поэтому относитесь к цифрам ниже как к ориентиру для собственных прикидок, а не как к гарантии.

Модель простая. У SaaS стоимость растёт линейно: V = 300 ₽ × N, где N — число активных учеников. У собственной инфраструктуры стоимость на разумном диапазоне масштаба почти не зависит от N: это фиксированная аренда сервера плюс разовые (или редкие) трудозатраты на настройку и поддержку, которые можно условно разложить на месяц — назовём это F.

Точка равенства — там, где 300 × N = F, то есть N = F / 300.

Возьмём для примера, что вместе — аренда достаточного по мощности сервера под BigBlueButton и вспомогательные сервисы плюс усреднённые затраты времени администратора на поддержку (обновления, бэкапы, разбор редких сбоев) — обходится школе условно в диапазоне 4 000–8 000 ₽ в месяц. Это именно иллюстративная оценка порядка величины, а не прайс конкретного тарифа — точную стоимость аренды под нужную вам конфигурацию стоит смотреть отдельно.

При F = 6 000 ₽/мес точка равенства: N = 6000 / 300 = 20 учеников.

То есть уже на масштабе в 20–30 постоянных учеников совокупная стоимость подписки «за голову» сравнивается или обгоняет стоимость своей инфраструктуры, а на 100+ учениках разница становится ощутимой:

УчениковSaaS (300 ₽/мес)Свой сервер (условно ~6 000 ₽/мес)Разница в год
206 000 ₽~6 000 ₽около нуля
6018 000 ₽~6 000–8 000 ₽*~120 000–144 000 ₽
15045 000 ₽~8 000–12 000 ₽*~396 000–444 000 ₽
30090 000 ₽~12 000–18 000 ₽*~864 000–936 000 ₽

\* На больших масштабах фиксированная стоимость всё же немного растёт ступеньками — сервер побольше под пиковую нагрузку одновременных видеоуроков, чуть больше времени администратора. Но это ступени, а не линия «плюс 300 ₽ за каждую новую голову» — рост кардинально более пологий.

Важная оговорка: в этом расчёте фиксированная часть F учитывает не только аренду железа, но и время на администрирование — а это реальный ресурс, который у маленькой школы может стоить дороже, чем кажется, если считать его не «бесплатным трудом директора по вечерам», а по рыночной ставке специалиста. Честный расчёт должен закладывать эти часы, а не игнорировать их — иначе сравнение получится нечестным в другую сторону.

Что не проходит гладко: ограничения и подводные камни

Своя платформа — это не бесплатный сыр, и здесь стоит быть откровенным, потому что переход, сделанный без учёта этих моментов, может разочаровать больше, чем счёт от SaaS.

  • Нужен человек, который умеет администрировать сервер. Обновления безопасности, мониторинг диска (архив видеозаписей уроков растёт быстро), разбор редких сбоев видеосвязи — эта работа не исчезает, она просто переходит от службы поддержки SaaS-провайдера к вам.
  • Нет SLA и круглосуточной поддержки вендора. Если видеокласс упадёт за 10 минут до группового урока, чинить будете вы или ваш подрядчик, а не тикет в саппорт.
  • Качество связи зависит от локации сервера. Для школы, где ученики и преподаватели географически разбросаны, стоит выбирать локацию сервера с разумной задержкой до основной аудитории — это отдельная настройка, а не то, что решается само.
  • Миграция данных из старого SaaS требует времени. Перенос профилей учеников, истории занятий, архива материалов редко проходит одной кнопкой «экспорт-импорт» — закладывайте на переезд отдельный проект, а не выходные.
  • Резервное копирование — ваша ответственность. В SaaS бэкапы чаще всего входят в подписку по умолчанию; на своём сервере это отдельно настроенный процесс, который нужно регулярно проверять, а не просто включить один раз и забыть.

Ничего из этого не перечёркивает экономику расчёта выше — но всё это стоит заложить в фиксированную часть F, когда вы будете считать свою реальную точку окупаемости, а не только цену аренды сервера.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

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

С какого числа учеников вообще имеет смысл думать о переходе?

По иллюстративному расчёту выше — уже от 20–30 постоянных учеников совокупная стоимость подписки сравнивается со стоимостью своей инфраструктуры. Но если у школы нет технического человека под рукой, разумнее сначала оценить, кто будет администрировать сервер, а уже потом смотреть на цифры.

Можно ли постепенно переезжать, а не всё и сразу?

Да, и это разумный путь: начните с видеокласса на своём сервере, оставив расписание и оплаты в привычном инструменте, а затем переносите остальное по мере готовности — это снижает риск для текущих групп.

Что если один сервер не выдержит пиковую нагрузку в вечерние часы, когда идёт больше всего групповых уроков?

Тогда стоит либо распределить занятия по времени плотнее, либо взять сервер с запасом по ресурсам под пиковые часы — благо стоимость апгрейда конфигурации всё равно остаётся кратно ниже, чем плата «за голову» на растущем числе учеников.

Нужен ли отдельный сервер под хранилище учебных материалов, или можно всё на одной машине?

Для школы до пары сотен учеников обычно достаточно одной машины с общим диском, размеченным под видеосервис, базу данных и файлы материалов отдельно — разносить на отдельные серверы имеет смысл, когда архив записей уроков и материалов начинает измеряться сотнями гигабайт и заметно конкурирует за ресурсы с видеоконференциями в реальном времени.

Что делать с записями уроков, если их накапливается очень много?

Держать свежие записи (последний месяц-два) на быстром диске сервера, а более старые — переносить в отдельное архивное хранилище с более дешёвым объёмом; это тот случай, когда стоит сразу продумать политику хранения, а не разбираться с этим постфактум, когда диск заполнится.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →