Цель сегодняшней (на 19.08.2026) заметки — это разбор как произвести установку инструмента в лице yt-dlp на Ubuntu 26.04 LTS Server которая представлена как виртуальная машина в среде виртуализации моего тестового сервера Debian 12 + Proxmox 8.2.2 прежде чем я обкатанную заметку перенесу на боевой сервер. Вот только устанавливать в систему будем в Python окружение.
yt-dlp — это консольный инструмент для получения информации и загрузки видео или аудио с YouTube и множества других сайтов.
Я уже давно использую yt-dlp, но до сегодняшнего момента эта была связка: как LXC контейнер под Proxmox 7.4.3, где OS: Ubuntu 22.04 LTS Server больше не работает, т.к. пишет, что ему нужен Python выше 3.10 и все время появляется ошибка: ERROR: unable to download video data: HTTP Error 403: Forbidden. C учетом этом я и оформил текущую проработку.
Шаг №1: Выполняю преднастройку операционной системы для последующего использования, опираемся на заметку: "Преднастройка Ubuntu 26.04 LTS Server для последующего использования"
Шаг №2: Устанавливаю в систему пакет ffmpeg:
ekzorchik@srv-us2604a:~$ sudo apt install -y ffmpeg
Шаг №3: Устанавливаю в систему пакет deno, работает в паре с yt-dlp (среда выполнения TypeScript, построенная на базе JS-движка):
На заметку: по умолчанию у меня CURL использует TLS 1.3 и ничего не происходит, а с TLS 1.2 процесс идет.
ekzorchik@srv-us2604a:~$ curl -fsSL --tlsv1.2 -A "Mozilla/5.0" --connect-timeout 10 --max-time 300 https://deno.land/install.sh | sh
######################################################################## 100.0%
Archive: /home/ekzorchik/.deno/bin/deno.zip
inflating: /home/ekzorchik/.deno/bin/deno
Deno was installed successfully to /home/ekzorchik/.deno/bin/deno
Download ▰▰▰▱▱▱ [00:59] 2/5
jsr:@deno/installer-shell-setup/0.3.4/bundled.esm.js
файл скачался, просто на следующим этапе он почему-то застыл, прерываю выполнение сочетание клавиш "Ctrl + C"
^C
ekzorchik@srv-us2604a:~$
На заметку: По используемым ключам
-A "Mozilla/5.0" — подменить User-Agent (некоторые серверы блокируют curl).
--connect-timeout 10 — таймаут подключения 10 секунд.
--max-time 300 — общий таймаут 5 минут.
ekzorchik@srv-us2604a:~$ ~/.deno/bin/deno --version
deno 2.9.5 (stable, release, x86_64-unknown-linux-gnu)
v8 15.0.245.2-rusty
typescript 6.0.3
ekzorchik@srv-us2604a:~$
Шаг №4: Прописываю вызов утилиты deno в пользовательское окружение:
ekzorchik@srv-us2604a:~$ echo 'export PATH="$HOME/.deno/bin:$PATH"' >> ~/.bashrc
ekzorchik@srv-us2604a:~$ source ~/.bashrc
ekzorchik@srv-us2604a:~$ which deno
/home/ekzorchik/.deno/bin/deno
ekzorchik@srv-us2604a:~$ deno --version
deno 2.9.5 (stable, release, x86_64-unknown-linux-gnu)
v8 15.0.245.2-rusty
typescript 6.0.3
ekzorchik@srv-us2604a:~$
Шаг №5: Текущая версия Python в этом дистрибутиве:
ekzorchik@srv-us2604a:~$ python3 --version
Python 3.14.4
ekzorchik@srv-us2604a:~$
Шаг №6: Устанавливаю пакеты для работы Python в виртуальном окружении:
ekzorchik@srv-us2604a:~$ sudo apt install -y python3.14-venv python3.14-dev
Шаг №7: Создаем отдельное окружение для инструмента yt-dlp:
ekzorchik@srv-us2604a:~$ python3.14 -m venv ~/yt-dlp /home/ekzorchik/yt-dlp/
Шаг №8: Активируем окружение yt-dlp:
ekzorchik@srv-us2604a:~$ cd yt-dlp/
ekzorchik@srv-us2604a:~/yt-dlp$ source bin/activate
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$
Шаг №9: Обновляем pip (менеджер пакет внутри виртуального окружения):
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ python3 -m pip install -U pip
Шаг №10: Устанавливаем инструмент yt-dlp c рекомендуемыми зависимостями:
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ python3 -m pip install -U "yt-dlp[default]"
Шаг №11: Проверяем какая текущая версия инструмента yt-dlp:
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ yt-dlp --version
2026.07.04
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$
На заметку: на официальном ресурсе проекта на текущую дату 19.08.2026 именно такая версия и значится.
Шаг №12: Выхожу из виртуального окружения под инструмент:
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ deactivate
ekzorchik@srv-us2604a:~/yt-dlp$ cd ~/
ekzorchik@srv-us2604a:~$
Шаг №13: Дабы каждый раз не заходить в виртуальное окружение под инструмент yt-dlp через source, можно сделать символическую ссылку в систему, тем самым из переменной PATH будет обрабатываться вызов:
ekzorchik@srv-us2604a:~$ sudo ln -sf /home/ekzorchik/yt-dlp/bin/yt-dlp /usr/local/bin/yt-dlp
ekzorchik@srv-us2604a:~$ whereis yt-dlp
yt-dlp: /usr/local/bin/yt-dlp
ekzorchik@srv-us2604a:~$ yt-dlp --version
2026.07.04
ekzorchik@srv-us2604a:~$
Шаг №14: Проверяю, что инструмент yt-dlp видит deno:
ekzorchik@srv-us2604a:~$ yt-dlp --verbose
[debug] Command-line config: ['--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2026.07.04 from yt-dlp/yt-dlp [997fa1408] (pip)
[debug] Python 3.14.4 (CPython x86_64 64bit) - Linux-7.0.0-30-generic-x86_64-with-glibc2.43 (OpenSSL 3.5.5 27 Jan 2026, glibc 2.43)
[debug] exe versions: ffmpeg 8.0.1 (setts), ffprobe 8.0.1
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2026.07.22, mutagen-1.48.1, requests-2.34.2, sqlite3-3.46.1, urllib3-2.7.0, websockets-17.0.1, yt_dlp_ejs-0.8.0
[debug] JS runtimes: deno-2.9.5
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Plugin directories: none
[debug] Loaded 1744 extractors
Usage: yt-dlp [OPTIONS] URL [URL...]
yt-dlp: error: You must provide at least one URL.
Type yt-dlp --help to see a list of all options.
ekzorchik@srv-us2604a:~$
если в выводе выше есть «JS runtime: deno-…» то значит все хорошо.
Шаг №15: Пробую скачать понравившееся видео для последующего разбора если это процесс как что-то делать и не зависеть каждый раз от возможности доступа к ресурсу, так сказать в Offline режиме изучаем:
На заметку: Т.к. из России доступ к Youtube-контенту закрыт, то мне на помощь приходит заметка: "Выход в интернет из ЛВС через связку Ubuntu 24.04 + Xfce + AmneziaVPN Client"
ekzorchik@srv-us2604a:~$ yt-dlp --cookies cookies.txt --extractor-args "youtube:player-client=web_embedded,web,tv" https://www.youtube.com/watch?v=aqz-KE-bpKQ
[youtube] Extracting URL: https://www.youtube.com/watch?v=aqz-KE-bpKQ
[youtube] aqz-KE-bpKQ: Downloading webpage
[youtube] aqz-KE-bpKQ: Downloading web embedded client config
[youtube] aqz-KE-bpKQ: Downloading player 3891b194-main
[youtube] aqz-KE-bpKQ: Downloading web embedded player API JSON
[youtube] aqz-KE-bpKQ: Downloading web client config
[youtube] aqz-KE-bpKQ: Downloading web player API JSON
[youtube] aqz-KE-bpKQ: Downloading tv client config
[youtube] aqz-KE-bpKQ: Downloading tv player API JSON
[youtube] [jsc:deno] Solving JS challenges using deno
[info] aqz-KE-bpKQ: Downloading 1 format(s): 401+258
[download] Resuming download at byte 61474926
[download] Destination: Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].f401.mp4
[download] 100% of 679.44MiB in 00:02:54 at 3.90MiB/s
[download] Destination: Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].f258.m4a
[download] 100% of 29.34MiB in 00:00:05 at 5.06MiB/s
[Merger] Merging formats into "Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].mp4"
Deleting original file Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].f258.m4a (pass -k to keep)
Deleting original file Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film [aqz-KE-bpKQ].f401.mp4 (pass -k to keep)
ekzorchik@srv-us2604a:~$
А теперь небольшие пояснения по используемым аргументам:
yt-dlp -> Запускает программу yt-dlp
--cookies cookies.txt -> Загружает cookies из файла cookies.txt
--extractor-args "..." -> Передаёт дополнительные настройки экстрактору YouTube
youtube: -> Эти настройки относятся именно к экстрактору YouTube
player-client=web_embedded,web,tv -> Указывает yt-dlp использовать несколько типов клиентов YouTube
URL -> Ссылка на видео, которое нужно обработать
На заметку: YouTube по-разному отвечает различным типам клиентов. Иногда один клиент может получить информацию или форматы, которые другой клиент не возвращает или для которых возникают ограничения. Поэтому команда явно задаёт несколько player-client.
Шаг №16: Проверяя все еще раз (на 20.08.2026) перед тем как опубликовать текущую заметку, столкнулся что при указании ключа "-U", пишет, что есть новая версия:
ekzorchik@srv-us2604a:~$ yt-dlp -U
Current version: stable@2026.07.04 from yt-dlp/yt-dlp
Latest version: stable@2026.08.19 from yt-dlp/yt-dlp
ERROR: You installed yt-dlp with pip or using the wheel from PyPi; Use that to update
ekzorchik@srv-us2604a:~$
но и обновлять я, должен находясь в виртуальном окружении python:
ekzorchik@srv-us2604a:~$ cd yt-dlp/
ekzorchik@srv-us2604a:~/yt-dlp$ source bin/activate
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ python3 -m pip install -U "yt-dlp[default]"
Installing collected packages: yt-dlp
Attempting uninstall: yt-dlp
Found existing installation: yt-dlp 2026.7.4
Uninstalling yt-dlp-2026.7.4:
Successfully uninstalled yt-dlp-2026.7.4
Successfully installed yt-dlp-2026.8.19
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ yt-dlp --version
2026.08.19
(yt-dlp) ekzorchik@srv-us2604a:~/yt-dlp$ deactivate
ekzorchik@srv-us2604a:~/yt-dlp$ cd ~/
ekzorchik@srv-us2604a:~$
Шаг №17: Проверяю, а работает ли скачиванием Youtube—медиа контента — ответ да:
На заметку: Я использую доступ к Youtube через прокси, который у меня поднят на VPS системы площадки Германии посредством инструмента 3proxy, как такое сделать смотрите заметки блога https://lin.ekzorchik.ru
ekzorchik@srv-us2604a:~$ yt-dlp -4 --proxy http://VPS_WAN_IP:PORT --extractor-args "youtube:player-client=web_embedded,web,tv" -x --audio-format mp3 https://youtu.be/B5tmUu4iLeg
[youtube] Extracting URL: https://youtu.be/B5tmUu4iLeg
[youtube] B5tmUu4iLeg: Downloading webpage
[youtube] B5tmUu4iLeg: Downloading web embedded client config
[youtube] B5tmUu4iLeg: Downloading player 3891b194-main
[youtube] B5tmUu4iLeg: Downloading web embedded player API JSON
[youtube] B5tmUu4iLeg: Downloading tv client config
[youtube] B5tmUu4iLeg: Downloading tv player API JSON
[youtube] [jsc:deno] Solving JS challenges using deno
[info] B5tmUu4iLeg: Downloading 1 format(s): 251
[download] Destination: КЛЯТВА ДЕМОНА — Лермонтов | Dark Melodic Techno [B5tmUu4iLeg].webm
[download] 100% of 9.34MiB in 00:00:04 at 1.89MiB/s
[ExtractAudio] Destination: КЛЯТВА ДЕМОНА — Лермонтов | Dark Melodic Techno [B5tmUu4iLeg].mp3
Deleting original file КЛЯТВА ДЕМОНА — Лермонтов | Dark Melodic Techno [B5tmUu4iLeg].webm (pass -k to keep)
ekzorchik@srv-us2604a:~$
Что имеем по итогу, это переработанная заметка, где я собрал все действия от и до дабы заработало мое самообучение на основе инструмента yt-dlp на доступ к Offline мультимедийному контенту, который теперь скачивается и уже после изучается. По мере сталкивания с различными нюансами заметка будет дополняться или писаться как продолжение.
На этом, ну можно сказать, до встречи, с уважением автор ekzorchik.