YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
YVD - YouTube Video Downloader
A modern, fast, and secure YouTube video downloader application using an Express.js backend with yt-dlp, and a vanilla HTML/CSS/JS frontend featuring a clean, responsive, and dynamic UI.
Features
- Fully responsive modern design with Dark Mode support via system preferences & toggle switch.
- Downloads videos up to 4K resolution (merges best video and audio using ffmpeg).
- Downloads MP3 audio instantly.
- Live progress bar reflecting
yt-dlpstdout. - Files download directly to device, temporary server files self-delete after 1 hour.
Prerequisites
Ensure the following are installed and in your system's PATH:
- Node.js: (v16+)
- yt-dlp: Download from yt-dlp GitHub. Place it in your PATH, or install via pip:
pip install yt-dlpor OS package manager. - ffmpeg: Crucial for merging 1080p/4K video streams with audio, and for extracting
.webm/.m4ato purely.mp3. Ensureffmpegandffprobeare in your PATH.
How to run locally
- Open a terminal.
- Navigate to project root.
- Install Node.js dependencies:
npm install
- Start the development server:
npm start
# or use `npm run dev` to use nodemon
- Open your browser and navigate to
http://localhost:3000.
How to deploy on VPS (Ubuntu/Alpine)
- Provision a VPS, instance, or VM running Ubuntu/Debian.
- Install system dependencies:
sudo apt update
sudo apt install nodejs npm ffmpeg python3-pip -y
sudo pip3 install yt-dlp
- Clone this repository or copy files to the VPS (e.g.,
/var/www/yvd). - Install app dependencies:
cd /var/www/yvd
npm install
- Install
pm2globally to keep the server running in the background:
sudo npm install -g pm2
pm2 start server.js --name "yvd-server"
pm2 save
pm2 startup
How to connect a domain (Nginx Reverse Proxy)
- Point your domain's A record in your DNS settings to your VPS IP address.
- Install Nginx and Certbot for SSL:
sudo apt install nginx certbot python3-certbot-nginx -y
- Create an Nginx site configuration:
sudo nano /etc/nginx/sites-available/yvd
Add the following configuration:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# Avoid timeouts during long downloads
proxy_read_timeout 3600;
}
}
- Enable the configuration and restart Nginx:
sudo ln -s /etc/nginx/sites-available/yvd /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
- Secure with Let's Encrypt (SSL):
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Security & Cleanup
- The server validates URLs through REGEX before passing to child processes.
- Completed files stored in
downloads/directory automatically run a cleanup sequence to prevent server crash from full storage space (Deletes after 1 hour).
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support