Fast self-hosted video/audio downloader from multiple platforms (YouTube, TikTok, Twitch, etc.)
7.1K
Fast cross-platform application for downloading and watching video and audio with flexible format and quality options. Integrates with media processing utilities such as yt-dlp and ffmpeg. Supports downloading from more than 1,000 websites and platforms, including YouTube, Facebook, Instagram, Twitter/X, Twitch, Pinterest, Reddit, VK Video, Rutube, and more.
Elengrab provides a simple and very fast web interface for downloading and watching media directly in the browser, with a YouTube-like viewing experience, thumbnails, video previews, and a dedicated interface optimized for mobile devices. Supports Grid View, short links for sharing, and flexible playback options. On mobile devices, videos can be shared directly from apps such as YouTube and Instagram to Elengrab, where they are automatically picked up and downloaded.
The project is fully written in Go, with a frontend built using plain HTML and CSS, HTMX, and vanilla JavaScript without external libraries. It can run as a single binary on Windows, Linux, and macOS, or in a lightweight Docker container for easy deployment. Elengrab also includes full PWA support, allowing it to be installed and used as a standalone application. Different operating modes allow you to enable authentication and use Elengrab as a full-featured web service accessible over the Internet. This makes it well suited for creating a fast-access home media service as well as a personal media service accessible from anywhere.
latest — The most recent stable release.X.Y.Z — Standard build with version.X.Y.Z-deno — Build with Deno included. Deno is the open-source JavaScript/TypeScript runtime.docker run -d \
--name elengrab \
-v elengrab_downloads:/app_n/downloads \
-p 8080:8080 \
neosy/elengrab:latest
| Variable | Default | Description |
|---|---|---|
ELENGRAB_LOG_LEVEL | warn | Logging level. Options: debug, info, warn, error. |
ELENGRAB_SQLITE_DATA_DIR | sqlite/data | Directory where SQLite database files are stored. |
ELENGRAB_SQLITE_BACKUPS_DIR | sqlite/backups | Directory where SQLite backup files are stored. |
ELENGRAB_ROOT_DIR | (not set) | Application base directory. If empty, defaults to: ~/.elengrab on Linux/macOS, %LOCALAPPDATA%\Elengrab on Windows. |
ELENGRAB_DOWNLOADER_BIN_DIR | /usr/local/bin | Directory containing yt-dlp binary. |
ELENGRAB_ASSETS_DIR | assets | Directory containing application assets. |
ELENGRAB_DOWNLOADS_DIR | downloads | Directory where downloaded files are stored inside the container. Must be mapped to a host volume. |
ELENGRAB_COOKIES_DIR | cookies | Directory where cookie files are stored. Files must be in Netscape cookies.txt format (compatible with yt-dlp). |
ELENGRAB_DOWNLOAD_WORKERS | 3 | Number of concurrent workers used for processing YouTube video and audio tasks in parallel. |
ELENGRAB_MODE | public | Controls access mode. Possible values: public (anonymous, full access, shared download history), public_readonly (anonymous, read-only access to public media only), guest (anonymous, session-isolated download history), authenticated (login required, permission-based access). |
ELENGRAB_BASE_URL | (not set) | Base URL of the Elengrab service, for example https://example.com. Used, for example, to generate short links. |
ELENGRAB_ALLOW_COOKIES | false | Enables use of cookies for multimedia sources. Requires Deno. The youtube.txt file should be located in the directory specified by ELENGRAB_COOKIES_DIR. |
ELENGRAB_MAINTENANCE_ENABLE_MOVE_UNMATCHED_FILES | false | Enables the periodic operation that moves files not present in the database tables from the download folder to the .lost folder. Default is false (disabled). |
| Volume | Description |
|---|---|
db:/app_n/sqlite/data | Stores SQLite database files. |
db_backups:/app_n/sqlite/backups | Stores backups of SQLite databases. |
downloads:/app_n/downloads | Stores downloaded files. |
cookies:/app_n/cookies | Stores cookie files used by the application (see ELENGRAB_COOKIES_DIR). |
media:/app_n/media | Stores auxiliary media files such as thumbnails and other resources. |
This configuration is suitable for low-resource servers. To limit concurrency, set:
ELENGRAB_DOWNLOAD_WORKERS=1
By default, the Docker container is configured to use this setup.
The main resource consumers are yt-dlp and ffmpeg, especially during video downloading, merging, and transcoding.
Resource usage increases with the number of concurrent workers. The number of concurrent workers can be adjusted using the following environment variable:
ELENGRAB_DOWNLOAD_WORKERS=3
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 \
-v elengrab_cookies:/app_n/cookies \
-p 8080:8080 \
neosy/elengrab:latest
Create a file docker-compose.yml with the following content:
version: "3.8"
services:
elengrab:
image: neosy/elengrab:latest
container_name: elengrab
restart: unless-stopped
ports:
- "8080:8080"
environment:
TZ: "Europe/Moscow"
ELENGRAB_DOWNLOAD_WORKERS: "3"
volumes:
- elengrab_db:/app_n/sqlite/data
- elengrab_db_backups:/app_n/sqlite/backups
- elengrab_downloads:/app_n/downloads
- elengrab_cookies:/app_n/cookies
Then:
docker-compose up -d
After this, Elengrab will be accessible at http://localhost:8080
Create a file docker-compose.yml with the following content:
version: '3.5'
services:
server:
image: neosy/elengrab
ports:
- 8080:8080
environment:
TZ: "Europe/Moscow"
ELENGRAB_DOWNLOAD_WORKERS: "3"
volumes:
- db:/app_n/sqlite/data
- db_backups:/app_n/sqlite/backups
- downloads:/app_n/downloads
- cookies:/app_n/cookies
deploy:
mode: replicated
replicas: 1
resources:
limits:
cpus: "4.0"
memory: "4G"
volumes:
db:
db_backups:
downloads:
cookies:
docker swarm init
docker-compose.yml:docker stack deploy -c docker-compose.yml elengrab
docker service ls
http://<your-host-ip>:8080 and enjoy downloading videos and audio.The full source code of Elengrab is available on GitHub: https://github.com/neosy/elengrab
A public instance of Elengrab is available at: https://elengrab.n-hub.ru
Content type
Image
Digest
sha256:b8a1ed1f2…
Size
117.9 MB
Last updated
1 day ago
docker pull neosy/elengrab