Гид по технологиям

Как установить и запустить PeerTube на Ubuntu

8 min read Infrastructure Обновлено 05 Dec 2025
Установка PeerTube на Ubuntu
Установка PeerTube на Ubuntu

Человек за настольным компьютером редактирует видео.

Содержание

  • Почему стоит использовать PeerTube
  • Подготовка сервера
  • Установка зависимостей и PeerTube
  • Настройка Nginx и SSL
  • Конфигурация PeerTube и запуск
  • Использование и первый вход
  • Критерии приёмки
  • Безопасность и резервное копирование
  • Роли и чек-листы
  • Отладка и план инцидента
  • Часто задаваемые вопросы

Почему стоит использовать PeerTube

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

Ключевые преимущества:

  • Контроль данных и модерации. Вы управляете политикой хранения и модерации.
  • Федерация. Можно смотреть видео, размещённые на других инстансах PeerTube.
  • Открытость. Код доступен для проверки и изменений.

Скриншот браузера с воспроизведением удалённого видео в PeerTube.

Важно: PeerTube не просто «клон YouTube». Это инструмент для сообществ, организаций и тех, кто ценит контроль над своим контентом.

Подготовка сервера

Требования перед установкой:

  • Сервер с Ubuntu 20.04/22.04 (VPS или физический сервер).
  • Доменное имя с корректной A/AAAA записью на ваш сервер.
  • Резервное место: минимум 20–50 ГБ для ОС и базовых сервисов; хранилище для видео зависит от ваших нужд.
  • Открытые порты: 80 и 443 (для HTTPS), 9000 внутренне для PeerTube (рекомендуется только через localhost + reverse proxy).

Совет: используйте отдельный пользовательский аккаунт для PeerTube и храните файлы под /var/www/peertube.

Установка зависимостей и PeerTube

Все команды выполняйте от пользователя с sudo-привилегиями. Замените версии и пути при необходимости.

  1. Создайте пользователя для PeerTube:
sudo useradd -m -d /var/www/peertube -s /bin/bash peertube
sudo passwd peertube
sudo usermod -aG sudo peertube
  1. Переключитесь на созданного пользователя (по необходимости):
su - peertube
  1. Установите системные зависимости (приведённый список — минимальный набор для большинства инстансов):
sudo apt update
sudo apt install -y cron wget curl unzip python3-dev python-is-python3 certbot nginx python3-certbot-nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git
  1. Установите Node.js (пример для Node 16 с NodeSource):
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt update
sudo apt install -y nodejs
  1. Установите Yarn (репозиторий Yarn):
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y yarn
  1. Включите и запустите PostgreSQL и Redis:
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl enable redis-server
sudo systemctl start redis-server
  1. Создайте PostgreSQL-пользователя и базу данных для PeerTube:
cd $HOME
sudo -u postgres createuser -P peertube
sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_run
sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_run
sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_run
  1. Создайте структуру директорий для PeerTube и установите права:
mkdir -p /var/www/peertube/{config,storage,versions}
sudo chown -R peertube:peertube /var/www/peertube
chmod 750 /var/www/peertube/config
  1. Скачайте релиз PeerTube и распакуйте (пример на релиз v5.0.1 — замените ссылку на актуальную):
cd /var/www/peertube/versions
sudo -u peertube wget https://github.com/Chocobozzz/PeerTube/releases/download/v5.0.1/peertube-v5.0.1.zip
sudo -u peertube unzip peertube-v5.0.1.zip
cd /var/www/peertube
  1. Создайте символьную ссылку на текущую версию:
ln -s /var/www/peertube/versions/peertube-v5.0.1 /var/www/peertube/peertube-latest
  1. Установите зависимости Node.js для PeerTube (в каталоге peertube-latest):
cd /var/www/peertube/peertube-latest
sudo -u peertube yarn install --production --pure-lockfile

Примечание: при проблемах с памятью во время установки Yarn используйте swap или временно увеличьте OOM-лимиты.

Терминал с установкой зависимостей PeerTube.

Настройка Nginx и SSL

PeerTube по умолчанию слушает на 127.0.0.1:9000. Рекомендуем организовать reverse proxy через Nginx и обслуживать трафик по стандартным портам 80/443.

  1. Скопируйте шаблон конфигурации Nginx и удалите default-конфиг:
sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
sudo rm /etc/nginx/sites-enabled/default
  1. Отредактируйте файл конфигурации:
sudo nano /etc/nginx/sites-available/peertube

В файле замените переменные ${WEBSERVER_HOST} на ваше FQDN (например, peertube.example.com), а ${PEERTUBE_HOST} замените на 127.0.0.1:9000. Сохраните и закройте.

  1. Активируйте конфигурацию и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Получение SSL-сертификата

Рекомендуемый способ — Let’s Encrypt через Certbot с плагином nginx. Certbot автоматически обновит конфигурацию.

sudo certbot --nginx

Если вы управляете несколькими поддоменами и хотите wildcard, используйте DNS-плагин для вашего провайдера и создайте wildcard-сертификат.

После получения сертификата проверьте автоматическое обновление (cron/systemd timer certbot). Полезная команда для проверки SSL:

sudo certbot renew --dry-run

Копирование шаблона Nginx для PeerTube.

Конфигурация PeerTube и запуск

  1. Скопируйте шаблоны конфигов в директорию конфигурации:
cd /var/www/peertube
cp /var/www/peertube/peertube-latest/config/default.yaml /var/www/peertube/config/default.yaml
cp /var/www/peertube/peertube-latest/config/production.yaml.example /var/www/peertube/config/production.yaml
  1. Откройте production.yaml и отредактируйте ключевые параметры:
sudo nano /var/www/peertube/config/production.yaml

Измените:

  • hostname: установите ваш FQDN (peertube.example.com). Крайне важно для федерации.
  • peertube.secret: сгенерируйте случайную строку и вставьте (см. ниже).
  • database.suffix: поставьте _run (как было создано ранее для базы peertube_run).
  • database.password: пароль, который вы задали при создании пользователя PostgreSQL.
  • smtp.hostname, smtp.username, smtp.password, from_address: настройки почты для уведомлений и восстановления пароля.
  1. Сгенерируйте секрет и вставьте его в конфиг:
openssl rand -hex 32

Скопируйте вывод и вставьте в production.yaml в поле peertube.secret.

  1. Скопируйте systemd-сервис и перезагрузите демон systemd:
sudo cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable peertube
sudo systemctl start peertube

Проверьте статус сервиса:

sudo systemctl status peertube

Если служба не стартует — просмотрите лог:

sudo journalctl -u peertube -b --no-pager

Терминал с запущенным сервисом PeerTube.

Использование и первый вход

Откройте ваш домен в браузере. При первичной настройке система сгенерирует root-пароль. Узнать его можно в журнале:

sudo journalctl -u peertube | grep "User password:"

Зайдите на страницу, нажмите “Login” и используйте имя пользователя root и найденный пароль. После входа смените пароль и настройте двухфакторную аутентификацию для учётной записи администратора.

Скриншот страницы входа в PeerTube.

Критерии приёмки

Перед тем как считать установку завершённой, проверьте следующие пункты:

  • Домен доступен по HTTPS и сертификат валиден.
  • Сервис peertube активен и работает: sudo systemctl status peertube.
  • Можно войти под root и изменить пароль.
  • Загрузка видео проходит и задействуется ffmpeg для транскодирования.
  • Видео воспроизводятся в браузере и доступны для федерации (если включена федерация).
  • Резервное копирование конфигурации и базы данных настроено.

Безопасность и эксплуатация

Рекомендации по повышению безопасности и надёжности:

  • Файервол: закройте неиспользуемые порты. Разрешите 80/443 и порт для SSH.
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
  • SSH: отключите вход по паролю, используйте ключи и измените порт, если хотите.
  • Обновления: держите систему и зависимости в актуальном состоянии. Планируйте окно техподдержки для обновлений PeerTube.
  • Мониторинг: настраивайте логи и мониторинг (Prometheus, Grafana или другие средства).
  • Резервное копирование: регулярно сохраняйте /var/www/peertube/config, базу PostgreSQL и каталог storage.

Пример базового сценария резервного копирования:

# дамп базы данных
sudo -u postgres pg_dump -Fc peertube_run > /var/backups/peertube_run.$(date +%F).dump
# архив конфигурации и пользовательских данных
tar -czf /var/backups/peertube_files.$(date +%F).tar.gz /var/www/peertube/config /var/www/peertube/storage

Роли и чек-листы

Администратор (DevOps):

  • Установить и обновлять сервер.
  • Настроить SSL и Nginx.
  • Настроить резервное копирование.
  • Мониторить ресурсы и логи.

Модератор контента:

  • Проверять загружаемый контент на соответствие правилам.
  • Управлять жалобами и метаданными видео.
  • Настраивать категории и плейлисты.

Пользователь:

  • Создать аккаунт и привязать почту.
  • Загружать и описывать видео.
  • Настраивать приватность и доступы к видео.

Отладка: частые проблемы и решения

Проблема: пустая страница в браузере.

  • Проверьте права на /var/www/peertube: Nginx должен иметь доступ к файлам. Решение:
sudo chmod -R 755 /var/www/peertube
sudo chown -R peertube:www-data /var/www/peertube
  • Проверьте логи Nginx: /var/log/nginx/error.log
  • Проверьте логи PeerTube: sudo journalctl -u peertube

Проблема: видео не транскодируется.

  • Убедитесь, что ffmpeg установлен и доступен для пользователя peertube.
  • Проверьте права на каталог storage и достаток свободного места.

Проблема: федерация не работает.

  • Проверьте корректность hostname в production.yaml.
  • Убедитесь, что порты и сертификаты настроены и домен доступен извне.

План действий при инциденте (Runbook)

  1. Сервис недоступен по HTTPS
  • Проверить статус Nginx: sudo systemctl status nginx
  • Проверить статус Peertube: sudo systemctl status peertube
  • Проверить свободное место на диске: df -h
  • Перезапустить службы (Nginx, peertube). Если проблема остаётся — вернуть последний рабочий конфиг из бэкапа.
  1. Коррупция базы данных или ошибки миграции
  • Отключить службу peertube: sudo systemctl stop peertube
  • Восстановить дамп базы из резервной копии:
sudo -u postgres pg_restore -d peertube_run /var/backups/peertube_run..dump
  • Запустить сервис и проверить логи.
  1. Скомпрометирован сервер
  • Отключить сервер от сети.
  • Сменить все секреты и ключи, которые хранились на сервере.
  • Провести аудит логов и, при необходимости, восстановить систему из чистого образа и бэкапов.

Модели принятия решений и альтернативные подходы

Модель «контроля vs удобства»: если вам нужен полный контроль и приватность — хостинг у себя. Если вам важна простота и масштабируемость — используйте управляемые инстансы PeerTube или внешние провайдеры хостинга.

Альтернативы PeerTube:

  • Использовать готовые хостинги, если вам не нужна федерация или контроль над инфраструктурой.
  • Сочетать PeerTube с CDN для масштабирования видео-контента.

Когда PeerTube не подойдёт:

  • Если вам нужна глобальная мгновенная доставка контента для миллионов пользователей (в этом случае лучше комбинировать с CDN и кластерами).
  • Если ваша организация не готова управлять инфраструкурой и безопасностью самостоятельно.

Мини-глоссарий (1 строка на термин)

  • Federation: механизм обмена контентом между инстансами PeerTube.
  • FQDN: полностью квалифицированное доменное имя (например, peertube.example.com).
  • ffmpeg: инструмент для транскодирования видео и аудио.
  • Certbot: клиент Let’s Encrypt для получения SSL-сертификатов.

Совместимость и миграция

  • При обновлении PeerTube всегда читайте релиз-ноты. Иногда требуются миграции базы данных.
  • Тестируйте обновления на копии инстанса перед применением в продакшн.

Соответствие приватности и GDPR (общие рекомендации)

  • Ограничьте хранение логов и персональных данных до минимально необходимого.
  • Оповестите пользователей о том, какие данные вы храните и зачем.
  • Для пользователей из ЕС предоставьте механизмы удаления данных по запросу.

Часто задаваемые вопросы

Возможно ли использовать PeerTube без доменного имени?

Нет. PeerTube требует действительного SSL-сертификата для корректной работы и безопасности. Можно создать самоподписанный сертификат, но это сделает сайт небезопасным для сторонних пользователей и нарушит федерацию.

Можно ли копировать default.yaml при настройке PeerTube?

Да. default.yaml содержит базовые настройки. При отсутствии default.yaml инстанс может работать неправильно. Всегда сохраняйте оригинальные файлы конфигурации и делайте бэкапы перед изменениями.

Почему при открытии сайта отображается пустая страница?

Чаще всего это проблема с правами доступа к каталогу /var/www/peertube или с Nginx-конфигом. Проверьте права и логи, затем исправьте доступы и перезапустите сервисы.

Скриншот браузера при первом запуске PeerTube.

Резюме

PeerTube даёт гибкость и контроль над видео-контентом. Установка требует подготовки сервера, настройки PostgreSQL, Redis, ffmpeg и Nginx с SSL. Ключевые задачи — корректная конфигурация production.yaml, обеспечение прав доступа и регулярные резервные копии. После установки следите за обновлениями и безопасностью инстанса.

Важное: регулярно делайте бэкапы базы и storage, ограничьте доступ к админским аккаунтам и проверяйте логи системы.

Image credit: Unsplash. All alterations and screenshots by Ramces Red.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Spotify Connect — как использовать и решать проблемы
Музыка

Spotify Connect — как использовать и решать проблемы

Обзор Unlockit iPhone — обход MDM и снятие блокировок
Mobile

Обзор Unlockit iPhone — обход MDM и снятие блокировок

Ошибка 0x80070141 — перенос фото на Windows
Техническая поддержка

Ошибка 0x80070141 — перенос фото на Windows

FaceTime в Windows 11 — как присоединиться
Руководство

FaceTime в Windows 11 — как присоединиться

Устранение высокой загрузки CPU: Windows Driver Foundation
Windows

Устранение высокой загрузки CPU: Windows Driver Foundation

Исправить TVApp-00116 на Xfinity (Roku)
Поддержка

Исправить TVApp-00116 на Xfinity (Roku)