ποΈ Freedom for Palestine, Ukraine, Syria, and all nations fighting against tyrants ποΈ
Free Palestine β’ Free Syria β’ Peace for Ukraine
A powerful web-based download manager for YouTube, Vimeo, and thousands of other video sites
Features β’ Installation β’ Quick Start β’ How to Use β’ Docker β’ Configuration
- π₯ Multi-User Support - Create accounts for family or team members with isolated data folders
- π Organized Downloads - Organize downloads by folders with custom configurations
- π Scheduled Downloads - Set up automatic download schedules using cron expressions
- π΄ Real-time Progress - Watch download progress live in your browser via SSE streaming
- π Automatic Retries - Handles connection issues gracefully
- π Subtitle Support - Download subtitles in multiple languages
- πΈ Metadata - Saves video info, thumbnails, and descriptions
- πͺ Cookie Support - Upload cookies for restricted content
- π Deduplication - Global storage with symlinks to avoid re-downloading
- βοΈ Server Manager - Admin panel for system status, user management, and logs
services:
yt-dlp-manager:
image: mbnoimi/yt-dlp-manager:latest
container_name: yt-dlp-manager
ports:
- "4000:4000"
volumes:
- ./data:/app/data
- ./logs:/app/backend/logs
environment:
- BACKEND_SECRET_KEY=your-secret-key-change-in-production
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=pass
restart: unless-stoppedThen
docker-compose up -ddocker run -d \
--name yt-dlp-manager \
-p 4000:4000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/backend/logs \
-e BACKEND_SECRET_KEY=your-secret-key-change-in-production \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=pass \
--restart unless-stopped \
mbnoimi/yt-dlp-manager:latestThe image is automatically pulled from Docker Hub.
- Open http://localhost:4000
- Login with default credentials:
- Username:
admin - Password:
pass
- Username:
- Create a datasource and start downloading!
A datasource combines your download settings with the URLs you want to download.
- Click + New in the Datasources section
- Enter a name (e.g., "YouTube Music")
In the URLs tab:
- Add YouTube channels, playlists, or single videos
- Organize into folders
In the Config tab:
- Choose video quality (720p, 1080p, 4K, etc.)
- Set output filename format
- Enable subtitles
- Add cookies for restricted content
Click the Download button and watch progress in real-time!
Browse, rename, or delete downloaded files in the Files tab.
Some videos require YouTube login. To download them:
- Export cookies from your browser (use a "Get cookies.txt" browser extension)
- In your datasource, click the gear icon β Upload cookies
- Save your config
Schedule downloads to run automatically:
- Go to the Scheduler tab
- Create a new task
- Set when to run (e.g.,
0 2 * * *= every day at 2 AM) - Choose which datasource to download
| Expression | Description |
|---|---|
0 2 * * * |
Every day at 2 AM |
0 9 * * 0 |
Every Sunday at 9 AM |
0 */6 * * * |
Every 6 hours |
The admin can:
- Create and manage user accounts
- View all downloads across users
- Monitor server status (CPU, memory, disk)
- Upgrade yt-dlp to latest version
- Configure server settings
- Browse server files
- View backend logs
# Pull and run from Docker Hub
docker-compose up -dThe application is available at http://localhost:4000
| Variable | Default | Description |
|---|---|---|
BACKEND_SECRET_KEY |
- | JWT signing key |
ADMIN_USERNAME |
admin |
Default admin username |
ADMIN_PASSWORD |
pass |
Default admin password |
BACKEND_MAX_CONCURRENT_DOWNLOADS |
3 |
Max parallel downloads |
BACKEND_DEDUPLICATION_ENABLED |
true |
Enable deduplication |
ALLOW_NEW_USERS |
false |
Allow user registration |
- Framework: FastAPI - Modern Python web framework
- Database: SQLite with SQLAlchemy ORM
- Download Engine: yt-dlp - YouTube downloader
- Auth: JWT-based multi-user authentication
- Server: Uvicorn ASGI server
- Framework: Svelte 5 - Cybernetically enhanced web apps
- Build Tool: Vite - Next generation frontend tooling
- Styling: Tailwind CSS 4 - Utility-first CSS
- UI Components: Skeleton UI - Svelte component library
yt-dlp Manager/
βββ src/
β βββ backend/ # FastAPI application
β β βββ api/v1/ # API endpoints
β β βββ core/ # Config, security, deps
β β βββ db/ # Database models & sync
β β βββ services/ # Downloader, scheduler
β β βββ main.py # Entry point
β β
β βββ frontend/ # Svelte SPA
β β βββ src/
β β β βββ lib/ # Components, pages, stores
β β β βββ App.svelte # Root component
β β β βββ main.ts # Entry point
β β βββ package.json
β β
β βββ data/ # User data
β βββ <username>/
β βββ downloads/ # Downloaded files
β βββ configs/ # Config JSON files
β βββ urls/ # URL JSON files
β
βββ docker-compose.yml # Docker deployment
βββ .env # Configuration
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp - The amazing download engine
- FastAPI - The powerful Python framework
- Svelte - The wonderful UI framework
- Skeleton UI - Beautiful Svelte components
- All contributors who help improve this project
Made with β€οΈ by a Syrian developer who believes in freedom for Palestine, Ukraine, Syria, and any nation standing against tyrants
β Star this repo if you find it useful!