Reelo is a fast, secure, and private YouTube downloader that allows you to download YouTube shorts, videos & Instagram Reels and convert them to MP3 or MP4. With a clean and simple interface, Reelo makes it easy to save your favorite videos for offline viewing.
- π΅ Multiple Formats: Download as MP3 or MP4 (360p/720p/1080p)
- β‘ Lightning Fast: Optimized conversion using yt-dlp and ffmpeg
- π¨ Modern UI: Beautiful, responsive design with smooth animations
- π Progress Tracking: Real-time conversion status updates
- π Secure: Automatic file cleanup, rate limiting, and CORS protection
- π± Mobile Friendly: Fully responsive design for all devices
- π¬ Video Preview: See thumbnail, title, and duration before converting
YT-Downloader/
βββ frontend/
β βββ index.html # Main landing page
β βββ static/
β βββ css/
β β βββ style.css # Styles with glassmorphism
β βββ js/
β βββ app.js # Frontend logic
βββ backend/
β βββ main.py # FastAPI application
β βββ requirements.txt # Python dependencies
β βββ .env.example # Environment variables template
β βββ app/
β βββ __init__.py
β βββ models.py # Pydantic models
β βββ routes.py # API endpoints
β βββ converter.py # yt-dlp integration
β βββ cleanup.py # File cleanup service
βββ deployment/
β βββ ytconverter.service # systemd service
β βββ nginx.conf # Nginx configuration
βββ README.md
- Python 3.9+
- ffmpeg
- yt-dlp
-
Clone the repository
git clone <repository-url> cd YT-Downloader
-
Install system dependencies
Ubuntu/Debian:
sudo apt update sudo apt install python3-pip python3-venv ffmpeg pip3 install yt-dlp
Windows:
- Install Python from python.org
- Install ffmpeg from ffmpeg.org
- Install yt-dlp:
pip install yt-dlp
-
Set up Python virtual environment
cd backend python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
Install Python dependencies
pip install -r requirements.txt
-
Configure environment
cp .env.example .env # Edit .env with your settings -
Run the development server
python main.py
-
Open in browser
- Navigate to
http://localhost:8000 - The frontend will be served automatically
- Navigate to
Edit .env file to customize settings:
# CORS Settings
ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8000
# Rate Limiting
RATE_LIMIT=10/minute
# File Management
DOWNLOAD_DIR=./downloads
FILE_RETENTION_HOURS=1
CLEANUP_INTERVAL_MINUTES=30
# Server Settings
HOST=0.0.0.0
PORT=8000# Create application directory
sudo mkdir -p /var/www/yt-converter
sudo chown -R $USER:$USER /var/www/yt-converter
# Copy files
cp -r frontend /var/www/yt-converter/
cp -r backend /var/www/yt-converter/
# Set up virtual environment
cd /var/www/yt-converter/backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt# Copy service file
sudo cp deployment/ytconverter.service /etc/systemd/system/
# Edit the service file to match your paths
sudo nano /etc/systemd/system/ytconverter.service
# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable ytconverter
sudo systemctl start ytconverter
# Check status
sudo systemctl status ytconverter# Install Nginx
sudo apt install nginx
# Copy configuration
sudo cp deployment/nginx.conf /etc/nginx/sites-available/ytconverter
# Update domain name in the config
sudo nano /etc/nginx/sites-available/ytconverter
# Enable site
sudo ln -s /etc/nginx/sites-available/ytconverter /etc/nginx/sites-enabled/
# Test configuration
sudo nginx -t
# Reload Nginx
sudo systemctl reload nginx# Install Certbot
sudo apt install certbot python3-certbot-nginx
# Obtain certificate
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
# Auto-renewal is set up automatically-
Firewall Configuration
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable -
Rate Limiting
- Application-level: 10 requests/minute (configurable in
.env) - Nginx-level: Additional rate limiting in
nginx.conf
- Application-level: 10 requests/minute (configurable in
-
CORS Protection
- Configure
ALLOWED_ORIGINSin.env - Only allow trusted domains
- Configure
-
File Cleanup
- Automatic deletion after 1 hour (configurable)
- Runs every 30 minutes
-
User Permissions
- Run service as
www-datauser - Restrict file permissions
- Run service as
Once running, visit http://localhost:8000/docs for interactive API documentation.
GET /api/info?url={youtube_url}- Get video metadataPOST /api/convert- Start conversionGET /api/status/{job_id}- Check conversion statusGET /api/download/{job_id}- Download converted fileGET /health- Health check
cd backend
python main.pyThe server will run with auto-reload enabled.
# View application logs
sudo journalctl -u ytconverter -f
# View Nginx logs
sudo tail -f /var/log/nginx/ytconverter_access.log
sudo tail -f /var/log/nginx/ytconverter_error.logpip install --upgrade yt-dlp# Ubuntu/Debian
sudo apt install ffmpeg
# Windows
# Download from https://ffmpeg.org/download.htmlsudo chown -R www-data:www-data /var/www/yt-converter
sudo chmod -R 755 /var/www/yt-converter# Check logs
sudo journalctl -u ytconverter -n 50
# Verify Python dependencies
cd /var/www/yt-converter/backend
source venv/bin/activate
pip install -r requirements.txtThis project is for educational purposes only. Respect YouTube's Terms of Service and only download videos you have permission to download.
Contributions are welcome! Please feel free to submit a Pull Request.
This tool is for personal use only. Users are responsible for complying with YouTube's Terms of Service and copyright laws. The developers assume no liability for misuse of this software.
For issues and questions, please open an issue on GitHub.
Made with β€οΈ for the community