Установка PeerTube на Debian 12
PeerTube
5
Сообщения
1
Posters
1
Просмотры
1
Watching
-
Содержание
-
1a. Скрипт установки PeerTube с комментариями и выводом терминала на русском языке
#!/bin/bash # Установка базовых утилит и настройка локалей sudo apt-get update sudo apt-get -y -q install lsb-release apt-utils locales sudo locale-gen ru_RU.UTF-8 sudo update-locale LANG=ru_RU.UTF-8 sudo locale-gen ru_RU.UTF-8 # Переменные для ввода peerTubeNameDomain="" postgresPass="" emailScan="" keyScan=$(openssl rand -hex 32) read -p "Введите имя домена для PeerTube: " peerTubeNameDomain read -p "Введите адрес электронной почты администратора PeerTube: " emailScan # Установка зависимостей sudo apt-get -y -q install ffmpeg openssl g++ make git cron # 1. Установка Node.js 20.x curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get -y -q install nodejs # 2. Установка Yarn curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/yarn-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get -y -q update sudo apt-get -y -q install yarn # 3. Установка Redis sudo apt-get -y -q update sudo apt-get -y -q install redis-server redis-tools sudo sed -i 's/bind 127.0.0.1 ::1/bind 127.0.0.1/' /etc/redis/redis.conf sudo sed -i 's|logfile "/var/log/redis/redis-server.log"|logfile ""|' /etc/redis/redis.conf sudo mkdir -p /var/lib/redis sudo chown redis:redis /var/lib/redis sudo chmod 755 /var/lib/redis sudo ip link set lo up sudo systemctl restart redis-server if ! sudo systemctl is-active redis-server >/dev/null; then echo "Redis не запустился. Проверьте логи: journalctl -u redis-server" exit 1 fi sudo systemctl enable redis-server # 4. Установка PostgreSQL wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt-get -y -q update sudo apt-get -y -q install postgresql postgresql-contrib sudo systemctl start postgresql # 5. Установка Python sudo apt-get -y -q install python3-dev python-is-python3 # 6. Создание пользователя peertube sudo useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube # 7. Установка пароля для пользователя peertube echo -en "\033[32m Введите пароль для пользователя peertube: \033[0m \n" sudo passwd peertube # 8. Создание пользователя PostgreSQL peertube echo -en "\033[32m Введите пароль для пользователя базы данных postgres: \033[0m \n" sudo -u postgres createuser -P peertube read -p "Введите, пожалуйста, ещё раз пароль пользователя базы данных postgres: " postgresPass # 9. Создание базы данных PostgreSQL для PeerTube sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod # 10. Включение расширений PostgreSQL sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod # 11. Получение последней версии PeerTube 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" # 12. Создание структуры каталогов cd /var/www/peertube sudo -u peertube mkdir config storage versions sudo -u peertube chmod 750 config/ # 13. Скачивание и распаковка PeerTube cd /var/www/peertube/versions sudo -u peertube wget "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" sudo -u peertube unzip peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip # 14. Установка PeerTube cd /var/www/peertube sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest cd ./peertube-latest && sudo -H -u peertube yarn install --production --pure-lockfile # 15. Копирование файла default.yaml cd /var/www/peertube sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml # 16. Копирование и настройка production.yaml sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml # 17. Редактирование файла production.yaml с портом 3025 sudo sed -i -e "s|hostname: 'example.com'|hostname: '$peerTubeNameDomain'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|port: 9000|port: 3025|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|peertube: ''|peertube: '$keyScan'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|password: 'peertube'|password: '$postgresPass'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|email: 'admin@example.com'|email: '$emailScan'|" /var/www/peertube/config/production.yaml # 18. Настройка системных параметров sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/ sudo sysctl -p /etc/sysctl.d/30-peertube-tcp.conf # 19. Настройка и запуск службы PeerTube 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 echo "Установка PeerTube завершена. PeerTube работает на порту 3025." echo "Настройте Nginx вручную для проксирования порта 3025 на ваш домен." echo "После настройки Nginx, используйте следующую команду для сброса пароля администратора (root):" echo "cd /var/www/peertube/peertube-latest && sudo NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root"
Порт - 3025. При необходимости меняем его в скрипте.
-
1b. Скрипт установки PeerTube с комментариями и выводом терминала на английском языке
Англоязычный вариант иногда необходим для систем на серверах или в LXC-контейнерах, где нет русской локализации.
#!/bin/bash # Variables for input peerTubeNameDomain="" postgresPass="" emailScan="" keyScan=$(openssl rand -hex 32) read -p "Enter a domain name for PeerTube: " peerTubeNameDomain read -p "Enter your PeerTube admin email address: " emailScan # Installing dependencies sudo apt-get -y -q install ffmpeg openssl g++ make git cron # 1. Installing Node.js 20.x curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get -y -q install nodejs # 2. Installing Yarn curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/yarn-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get -y -q update sudo apt-get -y -q install yarn # 3. Installing Redis sudo apt-get -y -q update sudo apt-get -y -q install redis-server redis-tools sudo sed -i 's/bind 127.0.0.1 ::1/bind 127.0.0.1/' /etc/redis/redis.conf sudo sed -i 's|logfile "/var/log/redis/redis-server.log"|logfile ""|' /etc/redis/redis.conf sudo mkdir -p /var/lib/redis sudo chown redis:redis /var/lib/redis sudo chmod 755 /var/lib/redis sudo ip link set lo up sudo systemctl restart redis-server if ! sudo systemctl is-active redis-server >/dev/null; then echo "Redis failed to start. Check logs: journalctl -u redis-server" exit 1 fi sudo systemctl enable redis-server # 4. Installing PostgreSQL wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list sudo apt-get -y -q update sudo apt-get -y -q install postgresql postgresql-contrib sudo systemctl start postgresql # 5. Installing Python sudo apt-get -y -q install python3-dev python-is-python3 # 6. Create a peertube user sudo useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube # 7. Setting a password for a peertube user echo -en "\033[32m Enter password for peertube user: \033[0m \n" sudo passwd peertube # 8. Creating a PostgreSQL peertube user echo -en "\033[32m Enter the password for the postgres database user: \033[0m \n" sudo -u postgres createuser -P peertube read -p "Please re-enter the password for the postgres database user: " postgresPass # 9. Creating a PostgreSQL Database for PeerTube sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod # 10. Enabling PostgreSQL Extensions sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod # 11. Getting the latest version of PeerTube 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" # 12. Creating a directory structure cd /var/www/peertube sudo -u peertube mkdir config storage versions sudo -u peertube chmod 750 config/ # 13. Downloading and unpacking PeerTube cd /var/www/peertube/versions sudo -u peertube wget "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" sudo -u peertube unzip peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip # 14. Installing PeerTube cd /var/www/peertube sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest cd ./peertube-latest && sudo -H -u peertube yarn install --production --pure-lockfile # 15. Copying the default.yaml file cd /var/www/peertube sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml # 16. Copy and configure production.yaml sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml # 17. Editing production.yaml file with port 3025 sudo sed -i -e "s|hostname: 'example.com'|hostname: '$peerTubeNameDomain'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|port: 9000|port: 3025|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|peertube: ''|peertube: '$keyScan'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|password: 'peertube'|password: '$postgresPass'|" /var/www/peertube/config/production.yaml sudo sed -i -e "s|email: 'admin@example.com'|email: '$emailScan'|" /var/www/peertube/config/production.yaml # 18. Setting up system parameters sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/ sudo sysctl -p /etc/sysctl.d/30-peertube-tcp.conf # 19. Setting up and running the PeerTube service 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 echo "PeerTube installation is complete. PeerTube is running on port 3025." echo "Manually configure Nginx to proxy port 3025 to your domain." echo "After configuring Nginx, use the following command to reset the administrator (root) password:" echo "cd /var/www/peertube/peertube-latest && sudo NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root"
Порт - 3025. При необходимости меняем его в скрипте.
-
2. Настройка файла production.yaml
Открываем файл production.yaml
В поле hostname: должно быть '0.0.0.0'listen: hostname: '0.0.0.0' # <--- именно так, а не 127.0.0.1 и не пусто port: 3025
Проверяем, на каком интерфейсе висит процесс:
ss -tulnp | grep 3025Должно быть что-то вроде:
tcp LISTEN 0 511 0.0.0.0:3025 0.0.0.0:* users:(("peertube",pid=14017,fd=24))
Перезагружаем peertube:
sudo systemctl restart peertube -
3. Конфигурационный файл для Nginx
Создаём файл, не забываем сделать симлинк.
Вот сам конфиг:## ВНИМАНИЕ !! Для LXC контейнера лучше из этого конфига убрать комментарии с кириллицей, иначе certbot будет ругаться на кодировку server { listen 80; listen [::]:80; server_name peertubevideo.nbics.net; # Замените на ваш домен access_log /var/log/nginx/peertube.access.log; error_log /var/log/nginx/peertube.error.log; # Проксирование всех запросов к PeerTube location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 24G; # Увеличиваем лимит до 24 ГБ для всех запросов proxy_pass http://10.0.3.171:3025; proxy_connect_timeout 10m; proxy_send_timeout 10m; proxy_read_timeout 10m; send_timeout 10m; } # WebSocket для PeerTube (socket.io и tracker) location /socket.io { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_pass http://10.0.3.171:3025; } location /tracker/socket { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_read_timeout 15m; # Для долгоживущих WebSocket-соединений proxy_pass http://10.0.3.171:3025; } }Меняем 10.0.3.171:3025 на нужные ip и порт.
Меняем peertubevideo.nbics.net на свой домен
Создаём сертификат