The ultimate self-hosted media sanctuary. Download, manage, and enjoy your favorite content from YouTube and Spotify with ease.
Features • Tech Stack • Quick Start • Configuration • Screenshots
- 📥 Universal Downloader: Seamlessly grab videos and audio from YouTube and tracks from Spotify.
- ⚡ High Fidelity: Automatically fetches the highest quality available (up to 320kbps for audio, 4K for video).
- 🎨 Modern Interface: A stunning, dark glassmorphic UI built with Tailwind CSS for a premium feel.
- 🐳 Docker Powered: Easy deployment and isolated environment using Docker and Docker Compose.
- 📂 File Management: Built-in file browser to view, download to your device, or delete your media.
- 🔄 Real-time Progress: Live updates on download speed, ETA, and job status.
- 🔒 Self-Hosted: Your data, your server. Complete privacy and control over your media library.
| Component | Technology |
|---|---|
| Backend | Python 3.11, FastAPI, Uvicorn |
| Download Engines | yt-dlp (YouTube), spotdl (Spotify) |
| Media Processing | ffmpeg (Stream merging & post-processing) |
| Frontend | Vanilla JS, Tailwind CSS (Glassmorphism design) |
| Infrastructure | Docker, Docker Compose |
Clone the repository and spin up the container:
docker compose up -dAccess the web interface at: http://localhost:8000
Downlo can be configured via environment variables in your docker-compose.yml or a .env file.
| Variable | Description | Default |
|---|---|---|
SPOTIFY_CLIENT_ID |
Your Spotify Developer App Client ID | (Required for Spotify) |
SPOTIFY_CLIENT_SECRET |
Your Spotify Developer App Client Secret | (Required for Spotify) |
DOWNLOAD_DIR |
Internal container path for downloads | /app/downloads |
Tip
Get your Spotify credentials at the Spotify Developer Dashboard.
/media-vault
├── docker-compose.yml # Orchestration & Environment
├── Dockerfile # Multi-stage Docker build
├── requirements.txt # Python dependencies
└── /app
├── main.py # FastAPI Backend Logic
├── /static # Frontend Assets (HTML/JS)
└── /downloads # Persisted Media Storage (Volume)
Contributions are welcome! Feel free to open an issue or submit a pull request if you have ideas for new features or improvements.
Built with ❤️ for the self-hosting community.
