PeerTube — свободная платформа для публикации видео, которую можно развернуть на собственном сервере. Она объединяет видеохостинг, панель модерации и федерацию по протоколу ActivityPub: инстансы могут подписываться друг на друга, а зрители — смотреть ролики в браузере или через P2P. Разберём установку через Docker Compose, настройку домена и HTTPS, транскодирование, резервное копирование и правила ответственной публикации.

Как устроен самостоятельный видеохостинг

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

  • основное приложение на Node.js и PostgreSQL хранит метаданные, пользователей и настройки;
  • Redis используется для очередей и кеша, ffmpeg — для транскодирования;
  • reverse proxy с Let’s Encrypt завершает HTTPS и отдаёт статику;
  • P2P через WebTorrent снижает нагрузку на канал, но раскрывает зрителям IP-адреса друг друга;
  • протокол ActivityPub обеспечивает подписки, комментарии и федерацию.

Требования к серверу и домену

Для тестового узла без транскодирования хватит двух ядер и 2 ГБ памяти. Production-инстанс с загрузкой видео требует минимум 4 ядра и 8 ГБ ОЗУ, а лучше — выделенный сервер с быстрым диском. Место считайте по исходникам и результатам перекодирования: час видео может занимать несколько гигабайт.

  • чистая Ubuntu 24.04 или Debian 12 с root-доступом;
  • домен, например video.example.org, с A-записью на IP сервера;
  • открытые порты 80 и 443, а для прямых трансляций — 1935;
  • настроенный почтовый сервер или SMTP-релей для писем регистрации;
  • достаточное дисковое пространство и отдельный каталог для данных.

Установка через Docker Compose

Официальный production-набор уже включает приложение, PostgreSQL, Redis, Postfix, nginx и Certbot. Настраивать reverse proxy отдельно не нужно: контейнер веб-сервера сам получает сертификат.

curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
git clone https://github.com/Chocobozzz/PeerTube.git
cd PeerTube/support/docker/production

Заполните обязательные поля. Секрет генерируется командой openssl rand -hex 32, пароль базы придумайте отдельно. Домен должен совпадать с DNS-записью, иначе Let’s Encrypt не выдаст сертификат.

cp .env .env.backup
openssl rand -hex 32
nano .env
# PEERTUBE_WEBSERVER_HOSTNAME=video.example.org
# POSTGRES_PASSWORD=сложный_пароль
# PEERTUBE_SECRET=результат_openssl
# PEERTUBE_ADMIN_EMAIL=admin@example.org

Запустите контейнеры и посмотрите журнал. Первый старт занимает несколько минут: создаются таблицы и выпускается сертификат.

docker compose up -d
docker compose ps
docker compose logs -f peertube
docker compose logs -f webserver

Домен, HTTPS и первый вход

Убедитесь, что DNS обновился и порты доступны извне. Если сертификат не выдался, проверьте, что домен указывает на нужный IP, а порт 80 не занят другим веб-сервером. Логин и пароль администратора выводятся в журнале при первом запуске.

dig +short video.example.org
curl -I http://video.example.org
curl -I https://video.example.org
sudo ss -tlnp | grep -E ':80|:443|:1935'

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

Транскодирование, трансляции и хранилище

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

  • включите отложенную публикацию, чтобы проверять видео до появления в ленте;
  • ограничьте размер загрузки и длительность роликов;
  • для прямых эфиров используйте RTMP и отдельный потоковый ключ;
  • следите за свободным местом и очередью транскодирования;
  • для больших объёмов подключите S3-совместимое объектное хранилище.
df -h /var/lib/docker
docker system df
docker stats --no-stream
docker compose exec peertube ffprobe -version

Старые исходники удаляйте только после успешного перекодирования: без них повторно создать версии не получится. Для объектного хранилища в .env есть переменные PEERTUBE_OBJECT_STORAGE_*; включайте их после проверки совместимости с S3 API.

Федерация и модерация

Федерация включается в настройках. Можно подписываться на другие инстансы, но не обязательно принимать всё подряд. В панели есть блокировка доменов, скрытие комментариев и жалобы. Для публичного узла назначьте модератора и опишите правила на отдельной странице.

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

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

Ответственность за контент и авторские права

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

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

Обновление и резервное копирование

Перед обновлением сделайте дамп базы и архив. Если вы правили .env, сохраните копию: git pull может конфликтовать. Без копии откат может быть невозможен. Читайте примечания к выпуску: иногда нужна миграция PostgreSQL или правка переменных окружения.

docker compose exec postgres sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > peertube-$(date +%F).sql
tar czf peertube-data-$(date +%F).tar.gz docker-volume/data docker-volume/config
git pull
docker compose pull
docker compose up -d

Проверьте восстановление: нераспакованный архив нельзя считать надёжным. Храните копии вне сервера.

Чек-лист перед публикацией

  • домен и HTTPS работают, сертификат обновляется автоматически;
  • сменён пароль администратора, включена двухфакторная защита;
  • ограничены регистрация, размер загрузки и длительность видео;
  • опубликованы правила и контакты для жалоб;
  • настроены резервное копирование и проверка восстановления.

Итог

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

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте