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

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

Пять режимов видимости и что они значат для курса

В документации по публикации видео в PeerTube описаны режимы public, internal, unlisted, private и доступ по паролю (PeerTube: публикация видео). Для учебной библиотеки это не просто настройки приватности, а разные модели аудитории.

  • Public подходит для открытых вводных лекций, анонсов курса, записей мероприятий, которые не жалко показать всем. Видео видно всем и может попасть в поиск и списки.
  • Internal видят пользователи инстанса. Для школы или кафедры это удобный вариант: зарегистрированный студент смотрит, посторонний нет. Но «пользователь инстанса» зависит от того, кому вы разрешили регистрацию, и об этом мы скоро скажем отдельно.
  • Unlisted открывается по ссылке и не показывается в общих списках. Это именно скрытие из выдачи, а не проверка человека.
  • Private доступно владельцу. Для раздачи группе студентов оно не годится: смотреть будет только тот, кто загрузил.
  • Доступ по паролю добавляет вопрос ключа: кто знает пароль, тот смотрит.

Почему unlisted — не замок

Самая частая ошибка — считать unlisted закрытым контентом. В документации прямо сказано: ссылка без индексации не является индивидуальным разрешением. Это значит, что система не спрашивает, кто вы. Любой, у кого оказалась ссылка, получает видео. Студент пересылает её приятелю с другого потока, ссылка остаётся в истории браузера на общем компьютере в аудитории, попадает в скриншот переписки. Ни одно из этих событий вы не увидите как нарушение, потому что формально нарушения нет: ссылка сработала так, как задумано.

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

Пароль и internal: что реально разграничивают

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

Internal привязывает доступ к учётной записи. Здесь вы получаете то, чего нет у ссылки: человек должен войти. Цена вопроса — управление регистрацией. Если регистрация на инстансе открыта для всех, то internal превращается в «любой, кто потрудился создать аккаунт». Если регистрацию вы закрыли и заводите студентов сами, граница становится осмысленной. Администратор управляет регистрацией и квотами, это его зона ответственности (PeerTube: администрирование).

Простая рабочая схема для курса получается такой: открытые лекции делаем public, основное содержание семестра — internal при закрытой регистрации либо с паролем, а unlisted оставляем для черновиков, которые нужно показать коллеге без публикации в каталоге, понимая, что это не защита.

Кто видит больше, чем вы думаете

Есть ещё один уровень, о котором стоит сказать студентам и коллегам честно. Администраторы и модераторы могут видеть private и unlisted видео, и private не означает шифрование от владельца сервера (PeerTube: администрирование). Если вы автор курса и ставите private, вы закрываетесь от других пользователей, но не от тех, кто обслуживает инстанс. Для учебного заведения это обычно нормально: администратор — свой человек. Но если вы, например, размещаете записи консультаций на чужом сервере, вопрос доверия к владельцу нужно решать до загрузки, а не после.

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

Сколько весит семестр

Теперь к цифрам. Возьмём условный курс: 30 учебных часов видео за семестр. Это 1800 минут записи, например 40 лекций примерно по 45 минут. Размер файла зависит от разрешения, кодека, битрейта и от того, что в кадре: слайды с неподвижной картинкой сжимаются иначе, чем съёмка в движении. Поэтому берём не «правильный» битрейт, а диапазон и смотрим, как он влияет на итог.

Формула проста: размер в гигабайтах ≈ битрейт в мегабитах в секунду × длительность в секундах ÷ 8 ÷ 1000. Для часа записи (3600 секунд) при условных 2 Мбит/с получится около 0,9 ГБ, при 5 Мбит/с — около 2,25 ГБ. Это арифметика, а не измерение вашего контента: реальные файлы после обработки лучше проверить на пробной загрузке.

Условная оценка исходников для 30 часов записи
Условный битрейтНа 1 часНа 30 часов
2 Мбит/соколо 0,9 ГБоколо 27 ГБ
4 Мбит/соколо 1,8 ГБоколо 54 ГБ
8 Мбит/соколо 3,6 ГБоколо 108 ГБ

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

Варианты качества умножают хранилище

Если сервер при обработке создаёт несколько вариантов разрешения для разных скоростей зрителей, на диске лежит не один файл, а набор. Условно: оригинал плюс несколько производных. Точный набор зависит от настроек транскодирования вашего инстанса, и его нужно посмотреть в собственной конфигурации. Для планирования разумно принять запас: если исходник занимает X, то с производными итог может оказаться заметно больше X. Закладывать, скажем, множитель от 1,5 до 2,5 к размеру исходников как рабочую гипотезу удобно, но подтвердить её нужно пробной загрузкой нескольких лекций и взглядом на реальное занятое место.

Применим множитель к нашей таблице. Для сценария «4 Мбит/с» исходники дают около 54 ГБ; с запасом 1,5–2,5 получаем примерно 80–135 ГБ на один семестр. Заметьте: это уже сопоставимо с целым диском небольшого тарифа. А если курс повторяется каждый семестр, а старые записи остаются доступными, библиотека растёт ступенями.

Что ещё занимает место

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

Если в списке тарифов смотреть на объём NVMe: у MAATRIX это 40 ГБ у Ba, 80 ГБ у Uab, 160 ГБ у Heka, 240 ГБ у Maat и 320 ГБ у Djed. Эти цифры — отправная точка для теста, а не обещание ёмкости. На нашем условном семестре с запасом до 135 ГБ нижние тарифы упрутся в диск почти сразу, а Heka окажется на грани, как только к первому курсу добавится второй. Если нужно хранить несколько семестров, стоит либо планировать диск побольше, либо заранее решить, что уходит в архив и удаляется.

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

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

АРЕНДОВАТЬ СЕРВЕР

Квоты: чтобы один автор не съел всю библиотеку

Квоты — механизм, который превращает расчёт диска в политику. Администратор управляет квотами пользователей (PeerTube: администрирование). Без них один преподаватель, который залил сырые записи всех практических занятий в максимальном качестве, может занять место, рассчитанное на весь факультет.

Как подойти к выбору значений, не опираясь на конкретные меню и названия полей, которых мы здесь не обсуждаем? Можно думать так. Берём полный объём диска под видео, вычитаем резерв на систему, базу и временные файлы обработки, а остаток делим между авторами пропорционально ожидаемой нагрузке.

Пример на условных числах. Допустим, у вас сервер на 240 ГБ диска. Резерв под систему, базу и пик обработки — 60 ГБ. Остаётся около 180 ГБ под видео. Авторов четверо: два ведут большие лекционные курсы, двое — небольшие семинары. Разумное распределение: по 60 ГБ ведущим лекторам и по 30 ГБ семинаристам. Сумма как раз 180 ГБ. Если вы готовы рисковать и считать, что не все авторы выберут квоту целиком, можно выдать суммарно больше, но тогда нужен регулярный контроль занятого места, иначе первый же загруженный массив упрётся в физический предел диска.

Квота как разговор о бюджете

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

Заранее оговорите и обратную сторону: что делать, когда квота исчерпана. Либо автор удаляет устаревшие записи, либо просит увеличить лимит, и вы смотрите, есть ли свободное место. Уведомить об этом лучше в начале семестра, а не в день, когда нужно залить лекцию к завтрашнему занятию.

Канал: когда сто студентов нажали «смотреть» одновременно

Диск отвечает на вопрос «сколько хранится», канал — на вопрос «сколько можно показать одновременно». Это разные ограничения, и семестровая библиотека может комфортно поместиться на диске, но тормозить в вечер перед зачётом.

Логика проста. Если зритель смотрит ролик в потоке с битрейтом B Мбит/с, то сервер отдаёт ему примерно B Мбит/с, пока тот смотрит. Для N одновременных зрителей суммарная исходящая нагрузка — примерно N × B. Это верхняя оценка для случая, когда все получают данные именно с вашего сервера.

Условный пример. Группа из 60 студентов собирается смотреть разбор перед экзаменом. Пусть большинство получает вариант в 2,5 Мбит/с. Тогда 60 × 2,5 = 150 Мбит/с исходящего трафика. Если часть студентов выберет вариант получше, например 5 Мбит/с, нагрузка вырастет. А если на одном сервере одновременно живёт ещё и соседний курс, цифры складываются.

Условная исходящая нагрузка при одновременном просмотре
Зрителей одновременноПоток 1,5 Мбит/сПоток 2,5 Мбит/сПоток 5 Мбит/с
2030 Мбит/с50 Мбит/с100 Мбит/с
6090 Мбит/с150 Мбит/с300 Мбит/с
150225 Мбит/с375 Мбит/с750 Мбит/с

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

Пик, а не среднее

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

Заодно нагрузку создают не только зрители. Пока сервер обрабатывает новые загрузки, процессор занят транскодированием. Если в этот момент начинается пиковый просмотр, ресурсы делятся между задачами. Поэтому тяжёлые загрузки удобно планировать заранее, а не за час до трансляции записи студентам. Для такой работы значение имеют и vCPU: у тарифов MAATRIX от 1 vCPU у Ba до 16 vCPU у Djed, и снова это стартовая точка для замера, а не гарантия скорости обработки.

Выдача и федерация: сколько можно утверждать

PeerTube — часть федеративной сети, и поэтому у читателя возникает вопрос: что происходит с учебными видео за пределами вашего сервера? Здесь стоит держаться того, что известно. Режимы видимости из документации описывают, кому доступно видео: публичные доступны всем, internal — пользователям инстанса, unlisted — по ссылке, private — владельцу (PeerTube: публикация видео). Для курса отсюда следует практическое правило: всё, что вы не готовы показать посторонним, не должно быть public, а о видео в unlisted нужно помнить, что ссылка работает у любого, кто её получил.

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

Для закрытых учебных материалов вопрос и вовсе снимается: курс, который вы держите в internal или под паролем, строится как внутренняя библиотека. А открытую часть, вводные лекции и анонсы, вы публикуете как public осознанно, понимая, что она доступна всем.

Где разместить такую библиотеку

Если свести расчёт воедино, для семестрового курса из нашего примера нужны три вещи: достаточный объём быстрого диска с запасом на обработку, процессор для транскодирования и канал под пик просмотров. VPS MAATRIX — это NVMe-диск, процессоры AMD EPYC и root-доступ, а значит, вы сами настраиваете PeerTube, квоты и регистрацию. Доступны локации UK, US, RU и FR; оплата картой РФ и через СБП, VPS создаётся автоматически за пару минут после оплаты (аренда VPS MAATRIX). Тарифы по ресурсам идут от Ba (1 vCPU, 2 ГБ RAM, 40 ГБ NVMe) до Djed (16 vCPU, 32 ГБ RAM, 320 ГБ NVMe); для нашего условного курса с запасом до 135 ГБ ориентиром служат тарифы с диском от 160 ГБ, но это начало теста, а не готовый вердикт. Точную доступность образов и ОС в нужной локации проверяйте в форме заказа.

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

Политика курса одним абзацем на каждого

Расчёты и режимы нужно превратить в правила, которые можно показать студентам и коллегам. Вот как это может выглядеть для нашего условного семестра.

  • Кто добавляет. Видео загружают только преподаватели и назначенные ассистенты, у каждого своя квота: бюджет на семестр делится по ожидаемой нагрузке, а исчерпанный лимит решается удалением устаревшего или запросом увеличения. Регистрация на инстансе закрыта, студентов добавляет администратор.
  • Кто смотрит. Открытые вводные материалы — public. Основной курс — internal при закрытой регистрации, а отдельные записи для небольшой группы — с паролем, который меняется после окончания семестра. Unlisted используем только для рабочих показов коллегам и не считаем защитой.
  • Кто видит всё. Администраторы и модераторы могут видеть private и unlisted, и студентам стоит знать об этом заранее.
  • Сколько хранится. Записи текущего семестра остаются в полном качестве. По окончании курса администратор вместе с автором решает: оставить в доступе, перевести в другой режим или удалить. Решение принимается до начала следующего семестра, чтобы новая библиотека не вытеснила старую по диску.
  • Сколько можно смотреть одновременно. Пиковая нагрузка считается по формуле «зрители × битрейт» и проверяется нагрузочным тестом на реальной конфигурации до начала семестра, а не в вечер зачёта.

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