
Предисловие
Мы все дома любим смотреть видео, скачивать его и сохранять в своих коллекциях. Для это мы используем домашние серверы, NAS или даже старенький ноутбук с внешним диском. Мы находим понравившийся ролик на YouTube и хотим добавить его в свою коллекцию. Но как сделать это быстро и максимально просто — без веб-сайтов с надоедливой рекламой, без танцев с командной строкой или без громоздких GUI?
Так появился Elengrab — YouTube downloader или лёгкий веб-сервис для загрузки видео с YouTube, который работает быстро, не требует танцев с бубном и отлично подходит для домашнего сервера.
Быстрый запуск Elengrab
Docker
Установите Docker и выполните одну команду:
docker run -d \ --name elengrab \ -v elengrab_downloads:/app_n/downloads \ -p 8080:8080 \ neosy/elengrab:latest
После запуска Elengrab будет доступен по адресу http://localhost:8080
Исполняемый файл (Windows)
Скачайте архив Elengrab (latest) и запустите файл elengrab-x.x.x-win-x64.exe.
Elengrab будет доступен по адресу http://localhost:8080
Другие платформы
Релизы — https://github.com/neosy/elengrab/releases
Docker Hub — https://hub.docker.com/r/neosy/elengrab
Зачем вообще нужен свой загрузчик с YouTube
Сервисов по скачиванию видео — сотни. Но большинство из них ограничены, перегружены рекламой и жутко медленные.
Хотелось просто:
- на компьютере или на телефоне
- вставил ссылку на YouTube
- нажал кнопку
- забрал видео или аудиофайл.
И чтобы все это работало у тебя и без посредников.
Что такое Elengrab?
Elengrab — это YouTube downloader или лёгкий веб-интерфейс к yt-dlp.
Под капотом у него:
- Минималистичный UI
- Быстрый backend и frontend на Go с использованием HTMX
- Минимум внешних зависимостей
- Запуск в одну команду
- Работает практически везде, где можно запустить Go-приложение или Docker-контейнер
Elengrab не пытается быть “комбайном”. Он просто скачивает видео или аудио с YouTube в выбранном формате. Лёгкий и быстрый self-hosted YouTube downloader для повседневных задач.
Основные возможности
- Лёгкий и быстрый веб-интерфейс
- Мобильное веб-приложение, работает на смартфоне и на компьютере
- Светлая и тёмная тема
- Скачивание видео в форматах mp4 (AV1, H.264, H.265) и webm
- Скачивание только аудио в форматах mp3, m4a, opus, flac
- Автоматический анализ ссылки
- Поддержка параллельных загрузок (по умолчанию 3)
- Отображение статусов загрузки
- История скачивания
- Очистка повторяющихся файлов
Исходный код: https://github.com/neosy/elengrab
Docker-контейнер: https://hub.docker.com/r/neosy/elengrab
Как работает
Всё максимально просто:
- Вставляете ссылку на YouTube.
- Выбираете формат и нажимаете Get.
- Elengrab вызывает yt-dlp с нужными параметрами.
- Наблюдаете за статусами загрузки.
- Скачиваете файл напрямую через интерфейс.
Это всё — без лишних шагов и посредников!
Рис. 1. Elengrab — self-hosted YouTube downloader
Локальный запуск под Windows
1. Скопировать архив и распаковать в любую папку
Ссылка на архив: Elengrab (latest)
Скачайте архив приложения, который включает:
elengrab-x.x.x-win-x64.exe— приложение с веб-серверомffmpeg.exe— инструмент для конвертации и обработки аудио/видео файловyt-dlp.exe— YouTube downloader и загрузчик видео/аудио с других сайтов
Утилиты ffmpeg.exe и yt-dlp.exe обязательны для работы Elengrab. Они могут находиться в любой папке Windows, но должны быть доступны системе (зарегистрированы в PATH или установлены отдельно).
Все релизы доступны на GitHub по ссылке.
2. Запустить веб-сервис
Запустить файл: elengrab-x.x.x-win-x64.exe

Рис. 2. Окно запущенного приложения Elengrab
3. Открыть приложение в веб-браузере
После запуска веб-сервиса приложение будет доступно по адресу http://localhost:8080

4. Рабочая папка приложения
По умолчанию рабочая папка приложения находится по пути: %LOCALAPPDATA%\Elengrab
Пример: C:\Users\<текущий_пользователь>\AppData\Local\Elengrab
Структура папки:
assets— файлы статического контента для веб-сервераdownloads— файлы, загруженные веб-сервисомsqlite— файлы базы данных SQLite.env— файл с переменными окружения для настройки приложения
Запуск Elengrab через Docker
1. Подготовка
Убедитесь, что у вас установлен Docker. Опционально: хорошо иметь Docker Compose, если планируете использовать compose-конфигурацию.
2. Запуск Docker контейнера (одной командой)
docker run -d \ --name elengrab \ -v elengrab_db:/app_n/sqlite/data \ -v elengrab_db_backups:/app_n/sqlite/backups \ -v elengrab_downloads:/app_n/downloads \ -p 8080:8080 \ neosy/elengrab:latest
-d— запускает контейнер в фоне (detached).--name elengrab— задаёт имя контейнера (по желанию).-v elengrab_db:/app_n/sqlite/data— монтирует volume для хранения SQLite-базы (метаданные, история загрузок).-v elengrab_db_backups:/app_n/sqlite/backups— монтирует volume для хранения резервных копий SQLite-базы.-v elengrab_downloads:/app_n/downloads— монтирует volume для хранения загруженных видео/аудио — важно, чтобы файлы сохранялись на хосте, а не “внутри контейнера”.-p 8080:8080— пробрасывает порт 8080 контейнера на 8080 хоста, чтобы веб-интерфейс был доступен из браузера.neosy/elengrab:latest— имя Docker-образа (по умолчанию). GitHub
После этого Elengrab будет доступен по адресу http://<your-host-ip>:8080
3. Запуск через Docker Compose
Пример docker-compose.yml:
version: "3.8"
services:
elengrab:
image: neosy/elengrab:latest
container_name: elengrab
restart: unless-stopped
ports:
- "8080:8080"
environment:
TZ: "Europe/Moscow" # ваш часовой пояс
volumes:
- elengrab_db:/app_n/sqlite/data
- elengrab_db_backups:/app_n/sqlite/backups
- elengrab_downloads:/app_n/downloads
Затем:
docker-compose up -d
После этого Elengrab будет доступен по адресу http://localhost:8080

Переменные окружения
| Переменная | Значение по умолчанию | Описание (RU) |
|---|---|---|
| LOG_LEVEL | warn | Уровень логирования. Возможные значения: debug, info, warn, error. |
| SQLITE_DATA_DIR | sqlite/data | Папка, где хранятся файлы базы данных SQLite. |
| SQLITE_BACKUPS_DIR | sqlite/backups | Папка для резервных копий SQLite. |
| ELENGRAB_APP_DIR | (не задано) | Базовая папка приложения. Если не задано, по умолчанию: ~/.elengrab на Linux/macOS и %LOCALAPPDATA%\Elengrab на Windows. |
| ELENGRAB_DOWNLOADS_DIR | downloads | Папка для сохранения загруженных файлов внутри контейнера. |
| ELENGRAB_DOWNLOAD_WORKERS | 3 | Количество параллельных воркеров для обработки задач загрузки видео и аудио. |
| ELENGRAB_HISTORY_MODE | global | Режим отображения истории загрузок. Возможные значения: global, disabled, per_user. |
| ELENGRAB_MAINTENANCE_ENABLE_MOVE_UNMATCHED_FILES | false | Включает периодическую операцию перемещения файлов, которые отсутствуют в таблицах базы данных, из папки загрузок в .lost. |
План развития
Проект постепенно развивается и уже думаю над новыми возможностями:
- Индикатор загрузки — чтобы видеть прогресс и состояние текущей загрузки
- REST API — для тех, кто хочет интегрировать Elengrab в свои проекты
- Раздельная загрузка по пользователям\сессиям — чтобы каждый мог управлять своими файлами независимо (выполнено)
- Добавить поддержку MySQL и Redis — чтобы всё оставалось быстрым и стабильным, даже если одновременно пользуется много пользователей
- Полная загрузка плейлистов — чтобы можно было скачивать сразу все видео из списка
- Создать расширение для Chrome — позволит пользователям быстро отправлять URL ссылки в Elengrab
Elengrab будет становиться удобнее, а обновления не будут ломать уже работающий функционал.