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

Содержание
- Почему стоит использовать PeerTube
- Подготовка сервера
- Установка зависимостей и PeerTube
- Настройка Nginx и SSL
- Конфигурация PeerTube и запуск
- Использование и первый вход
- Критерии приёмки
- Безопасность и резервное копирование
- Роли и чек-листы
- Отладка и план инцидента
- Часто задаваемые вопросы
Почему стоит использовать PeerTube
PeerTube — федеративная платформа для видео. Это значит, что экземпляры (instances) обмениваются контентом между собой через федерацию ActivityPub. Вы контролируете данные, хостинг и модерацию. 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-привилегиями. Замените версии и пути при необходимости.
- Создайте пользователя для PeerTube:
sudo useradd -m -d /var/www/peertube -s /bin/bash peertube
sudo passwd peertube
sudo usermod -aG sudo peertube- Переключитесь на созданного пользователя (по необходимости):
su - peertube- Установите системные зависимости (приведённый список — минимальный набор для большинства инстансов):
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- Установите 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- Установите 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- Включите и запустите PostgreSQL и Redis:
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl enable redis-server
sudo systemctl start redis-server- Создайте 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- Создайте структуру директорий для PeerTube и установите права:
mkdir -p /var/www/peertube/{config,storage,versions}
sudo chown -R peertube:peertube /var/www/peertube
chmod 750 /var/www/peertube/config- Скачайте релиз 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- Создайте символьную ссылку на текущую версию:
ln -s /var/www/peertube/versions/peertube-v5.0.1 /var/www/peertube/peertube-latest- Установите зависимости Node.js для PeerTube (в каталоге peertube-latest):
cd /var/www/peertube/peertube-latest
sudo -u peertube yarn install --production --pure-lockfileПримечание: при проблемах с памятью во время установки Yarn используйте swap или временно увеличьте OOM-лимиты.

Настройка Nginx и SSL
PeerTube по умолчанию слушает на 127.0.0.1:9000. Рекомендуем организовать reverse proxy через Nginx и обслуживать трафик по стандартным портам 80/443.
- Скопируйте шаблон конфигурации Nginx и удалите default-конфиг:
sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
sudo rm /etc/nginx/sites-enabled/default- Отредактируйте файл конфигурации:
sudo nano /etc/nginx/sites-available/peertubeВ файле замените переменные ${WEBSERVER_HOST} на ваше FQDN (например, peertube.example.com), а ${PEERTUBE_HOST} замените на 127.0.0.1:9000. Сохраните и закройте.
- Активируйте конфигурацию и перезагрузите 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
Конфигурация PeerTube и запуск
- Скопируйте шаблоны конфигов в директорию конфигурации:
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- Откройте 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: настройки почты для уведомлений и восстановления пароля.
- Сгенерируйте секрет и вставьте его в конфиг:
openssl rand -hex 32Скопируйте вывод и вставьте в production.yaml в поле peertube.secret.
- Скопируйте 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
Использование и первый вход
Откройте ваш домен в браузере. При первичной настройке система сгенерирует root-пароль. Узнать его можно в журнале:
sudo journalctl -u peertube | grep "User password:"Зайдите на страницу, нажмите “Login” и используйте имя пользователя root и найденный пароль. После входа смените пароль и настройте двухфакторную аутентификацию для учётной записи администратора.

Критерии приёмки
Перед тем как считать установку завершённой, проверьте следующие пункты:
- Домен доступен по 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)
- Сервис недоступен по HTTPS
- Проверить статус Nginx: sudo systemctl status nginx
- Проверить статус Peertube: sudo systemctl status peertube
- Проверить свободное место на диске: df -h
- Перезапустить службы (Nginx, peertube). Если проблема остаётся — вернуть последний рабочий конфиг из бэкапа.
- Коррупция базы данных или ошибки миграции
- Отключить службу peertube: sudo systemctl stop peertube
- Восстановить дамп базы из резервной копии:
sudo -u postgres pg_restore -d peertube_run /var/backups/peertube_run..dump - Запустить сервис и проверить логи.
- Скомпрометирован сервер
- Отключить сервер от сети.
- Сменить все секреты и ключи, которые хранились на сервере.
- Провести аудит логов и, при необходимости, восстановить систему из чистого образа и бэкапов.
Модели принятия решений и альтернативные подходы
Модель «контроля 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 даёт гибкость и контроль над видео-контентом. Установка требует подготовки сервера, настройки PostgreSQL, Redis, ffmpeg и Nginx с SSL. Ключевые задачи — корректная конфигурация production.yaml, обеспечение прав доступа и регулярные резервные копии. После установки следите за обновлениями и безопасностью инстанса.
Важное: регулярно делайте бэкапы базы и storage, ограничьте доступ к админским аккаунтам и проверяйте логи системы.
Image credit: Unsplash. All alterations and screenshots by Ramces Red.
Похожие материалы
Spotify Connect — как использовать и решать проблемы
Обзор Unlockit iPhone — обход MDM и снятие блокировок
Ошибка 0x80070141 — перенос фото на Windows
FaceTime в Windows 11 — как присоединиться
Устранение высокой загрузки CPU: Windows Driver Foundation