База знаний (цифровой суверенитет)
  • Установка PeerTube на Debian 12

    Перенесена
    PeerTube
    1 5 10 1

    A
    951
    0

    Содержание

  • A
    951
    0

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

  • A
    951
    0

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

  • A
    951
    0

    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
    
  • A
    951
    0

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


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

  • A Admin переместил эту тему из PeerTube в
  • A Admin переместил эту тему из