Установка PeerTube на Ubuntu 22.04 LTS как аналог Youtube

В данном посте будет рассмотрена установка децентрализованного видеохостинга PeerTube на сервер с операционной системой Ubuntu 22.04 LTS
В результате вы получите собственный видеохостинг на котором можно:
1. Размещать ваши видео.
2. Сделать бекап вашего Youtube канала в пару кликов.
3. Создавать онлайн трансляции и сохранять их.
4. Делать импорт видео из torrent файлов.
5. Выполнять импорт видео из многих популярных сервисов по http ссылке.

Пример работающего инстанса можно посмотреть по ссылке video.vpsville.ru

Приступим к пошаговой настройке сервера:

1. Подготовка системы и установка всего необходимого.

Обновления кеша и пакетов в самой системе до последних актуальных версий:

apt update && apt upgrade


Установка Nginx, Python, PostgreSQL, Certbot, Redis и другого необходимого.

apt install python3 python3-dev python-is-python3 curl sudo unzip vim ca-certificates gnupg nginx certbot ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git cron wget -y


Запуск основных служб и добавление их в автоматический запуск при старте системы:

systemctl start nginx
systemctl start redis-server
systemctl start postgresql

systemctl enable nginx
systemctl enable redis-server
systemctl enable postgresql


Установка Nodejs

Подготовка

mkdir -p /etc/apt/keyrings

curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

NODE_MAJOR=18
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list


Обновление пакетов и установка Nodejs

apt update
apt install nodejs


Установка Yarn используя менеджер пакетов npm

npm install --global yarn


2. Настройка пользователя и базы данных PeerTube

Создаем пользователя peertube с корневой директорией /var/www/peertube

useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube


Установка пароля для пользователя peertube

passwd peertube


Обновление прав к домашнему каталогу

chmod 755 /var/www/peertube


Переход в созданную директорию

cd /var/www/peertube


Создание пользователя peertube для сервера баз данных PostgreSQL. (После выполнения команды введите два раза пароль.)

sudo -u postgres createuser -P peertube


Создание базы данных с именем peertube

sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod


Включение расширений необходимых для работы PeerTube

sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod
sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod


3. Создание каталогов и установка PeerTube

Создание необходимых каталогов

sudo -u peertube mkdir /var/www/peertube/config /var/www/peertube/storage /var/www/peertube/versions


Изменение прав доступа

sudo -u peertube chmod 750 /var/www/peertube/config


Скачивание последней версии PeerTube

cd /var/www/peertube/versions

VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest Peertube version is $VERSION"

sudo -u peertube wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip"


Распаковка архива PeerTube и его удаление

sudo -u peertube unzip -q peertube-${VERSION}.zip
sudo -u peertube rm peertube-${VERSION}.zip


Извлечение всех зависимостей и установка PeerTube

cd ..

sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest

cd ./peertube-latest && sudo -H -u peertube yarn install --production --pure-lockfile


Дождитесь завершения установки PeerTube

4. Настройка PeerTube

Переходим в корневой каталог PeerTube

cd /var/www/peertube


Копируем файл конфигурации в каталог config. Не рекомендуется ничего редактировать или менять в файле default.yaml

sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml


Также копируем файл production.yaml в каталог config.

sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml


Перед обновлением файла production.yaml создайте секретный ключ с помощью OpenSSL и запишите его.

openssl rand -hex 32


Откройте файл production.yaml для редактирования с помощью vim

sudo -u peertube vim config/production.yaml


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

webserver:
	hostname: 'DOMAIN.COM' (line 8)
secrets:
	peertube: 'SECRET_KEY' (line 14)
database:
	username: 'peertube' (line 75)
	password: 'PASSWORD' (line 76)
admin:
	email: 'EMAIL' (line 451)


DOMAIN.COM — Ваш домен, в нашем случае это video.vpsville.ru
SECRET_KEY — секретный ключ был создан на предыдущем этапе.
username и password для доступа к базе данных PostgreSQL

5. Настройка веб сервера Nginx

Копируем готовый конфигурационный файл для Nginx в sites-available

cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube


Обновляем WEBSERVER_HOST и PEERTUBE_HOST с помощью следующих команд. Измените DOMAIN.COM на ваш фактический домен перед их запуском.

sed -i 's/${WEBSERVER_HOST}/DOAMIN.COM/g' /etc/nginx/sites-available/peertube

sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube


Создаем символическую ссылку для подготовленного конфигурационного файла

ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube


6. Настройка SSL

Устанавливаем snapd и после certbot для создания SSL сертификата Let's Encrypt

apt install snapd
snap install --classic certbot


если snapd не устанавливается то выполняем команды:

mv /etc/apt/preferences.d/ignored-packages /etc/apt/preferences.d/ignored-packages.disable

apt update


Останавливаем Nginx, получаем сертификат и запускаем Webserver

systemctl stop nginx
certbot certonly --standalone --post-hook "systemctl restart nginx"
systemctl reload nginx


Если у вас нет домена то можно настроить самоподписанный SSL сертификат и открывать PeerTube прямо с IP сервера.
Для этого внесите изменения в конфигурационный файл nginx /etc/nginx/sites-enabled/peertube в server_name укажите не домен а IP адрес сервера, создайте самоподписанный сертификат командами:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096


Выполнение второй команды займет некоторое время (до 30 минут).

в конфигурационный файл nginx /etc/nginx/sites-enabled/peertube поставьте верные ссылки к сертификату

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;


и перезапустите nginx

systemctl restart nginx


7. Завершающий этап и проверка

Настройка параметров TCP для PeerTube в соответствии с рекомендациями.

cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/

sysctl -p /etc/sysctl.d/30-peertube-tcp.conf


Активация демона в systemctl и запуск PeerTube


cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/

systemctl daemon-reload

systemctl enable peertube
systemctl start peertube


Установка пароля пользователя root для входа в административную панель PeerTube

cd /var/www/peertube/peertube-latest && NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root


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

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.