Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. PeerTube
  3. Установка PeerTube на Debian 12

Установка PeerTube на Debian 12

Запланировано Прикреплена Закрыта Перенесена PeerTube
5 Сообщения 1 Posters 1 Просмотры 1 Watching
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал отредактировано
    #1

    Содержание

    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал отредактировано
      #2

      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. При необходимости меняем его в скрипте.

      1 ответ Последний ответ
      0
      • A Не в сети
        A Не в сети
        Admin
        написал отредактировано Admin
        #3

        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. При необходимости меняем его в скрипте.

        1 ответ Последний ответ
        0
        • A Не в сети
          A Не в сети
          Admin
          написал отредактировано
          #4

          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
          
          1 ответ Последний ответ
          0
          • A Не в сети
            A Не в сети
            Admin
            написал отредактировано Admin
            #5

            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 на свой домен


            Создаём сертификат

            1 ответ Последний ответ
            0
            Ответить
            • Ответить, создав новую тему
            Авторизуйтесь, чтобы ответить
            • Сначала старые
            • Сначала новые
            • По количеству голосов


            • Войти

            • Login or register to search.
            Powered by NodeBB Contributors
            • Первое сообщение
              Последнее сообщение
            0
            • Категории
            • Последние
            • Метки
            • Популярные
            • World
            • Пользователи
            • Группы