mandrock-files / music

metube

MeTube — self-hosted веб-морда для yt-dlp; що вміє з коробки, де ламається, і як виглядає задизайнена під власну естетику копія на власному сервері.

MeTube: своя веб-морда для yt-dlp

MeTube — самохостований UI поверх yt-dlp. Не альтернатива yt-dlp, а обгортка: браузерна форма замість CLI, черга завантажень, підписки на канали й плейлисти. Список сайтів, з яких тягне, — весь той, що підтримує сам yt-dlp, не тільки YouTube.

Розгорнуто на tools.mandrock.me/ytdlp/ — без пароля, свідомо (особистий інструмент, не публічний сервіс).


Що вміє з коробки

MeTube навмисно зупиняється, щойно файл записано: жодного тегування, жодної бібліотеки. Для аудіо — окремий інструмент поверх (beets, MusicBrainz Picard, Lidarr), не сюди.

Ліцензія — AGPL-3.0. Публічний форк із модифікаціями (нижче) — не формальність, а вимога ліцензії: мережевий сервіс на зміненому коді зобов'язаний віддавати джерело.


Свій скін

Апстрім-образ (ghcr.io/alexta69/metube) замінено власним білдом: форк 0mandrock1/metube-mandrock0, фронтенд (Angular) переведений на токени й ембіент-шар власної дизайн-системи — mandrock0-tokens.css + mandrock0-ambient.js, той самий підхід, що на інших сторінках mandrock.me. Бекенд (сам yt-dlp-виклик, app/) не займано — змінено виключно ui/.

Один новий CSS-файл ремапить наявні кольорові змінні MeTube (--bs-*, bootstrap-подібна тема) на токени дизайн-системи, замість переписування чужих SCSS. Світлу тему MeTube вимкнено — інструмент dark-only, перемикач теми прибрано з інтерфейсу.


Коли ставити MeTube, а коли ні

Ситуація Рішення
Один користувач, свій сервер, довіряєш мережі, де воно висить MeTube як є — легкий, Docker, нічого зайвого
Кілька людей мають ходити в один інстанс з різними правами не MeTube — дивитись форки на кшталт metube-extended (multi-user, ролі, ізоляція черг)
Публічний no-auth ендпоінт назовні не робити, якщо це не свідомий вибір під VPN/особисту мережу — API нічим не захищений, крім того, що дав сам
Потрібне тегування/бібліотека після завантаження MeTube не про це — окремий інструмент (beets/Picard/Lidarr) поверх AUDIO_DOWNLOAD_DIR
Треба надсилати посилання одним кліком (з телефону, з розширення) браузерне розширення / bookmarklet / iOS Shortcut з офіційного списку, а не ручне вставляння URL

Антипатерни


Чекліст перед деплоєм своєї копії

P.S. — кукі з відкладеною смертю

Найчесніший індикатор у будь-якому self-hosted завантажувачі — не статус "активно", а таймер, якого немає. Кукі показують зелену галочку рівно доти, доки хтось не спробує ними скористатись через три години — і тоді з'ясовується, що галочка означала «була жива на момент завантаження», а не «жива зараз». POT-провайдер усередині контейнера про це навіть не знає: він просто працює, поки хтось намагається компенсувати відсутню проблему кукі, яких давно не існувало.