# 🚀 Hướng dẫn Deploy lên Hugging Face Spaces ## Bước 1: Chuẩn bị Repository Đã có sẵn: https://github.com/pedguedes090/ytdlp_web ## Bước 2: Tạo Hugging Face Space 1. Đi tới https://huggingface.co/new-space 2. Điền thông tin: - **Space name**: `ytdlp-web` (hoặc tên bạn muốn) - **License**: MIT - **SDK**: Docker - **Hardware**: CPU basic (miễn phí) ## Bước 3: Clone và Setup ```bash git clone https://huggingface.co/spaces/[YOUR_USERNAME]/ytdlp-web cd ytdlp-web ``` ## Bước 4: Copy files từ GitHub repo Copy tất cả files từ repository GitHub vào thư mục Hugging Face Space: ``` ytdlp-web/ ├── Dockerfile # ✅ Đã tạo ├── README.md # Thay bằng README_HF.md ├── .spacesignore # ✅ Đã tạo ├── app.js # ✅ Đã cập nhật port 7860 ├── demo.html # ✅ Đã cập nhật API_BASE ├── package.json ├── config.json └── downloads/ # Sẽ tự tạo ``` ## Bước 5: Cập nhật README.md Đổi tên `README_HF.md` thành `README.md` để Hugging Face hiển thị metadata đúng. ## Bước 6: Push lên Hugging Face ```bash git add . git commit -m "Initial deploy to Hugging Face Spaces" git push ``` ## Bước 7: Kiểm tra Deploy - Hugging Face sẽ tự động build Docker image - Có thể mất 5-10 phút để build xong - Truy cập URL của Space để kiểm tra ## 🔧 Cấu hình quan trọng ### Dockerfile highlights: - Base image: `python:3.11-slim` - Cài ffmpeg, nodejs, npm - Install yt-dlp qua pip - Port 7860 (mặc định của HF) - Bind `0.0.0.0` để accessible - **Fix permission**: Tạo user và set chmod 777 cho downloads/ - **Fallback storage**: Dùng temp directory nếu app dir không writable ### App.js changes: - Port: `process.env.PORT || 7860` - Listen: `app.listen(PORT, '0.0.0.0')` - **Permission handling**: Auto fallback to temp directory - **Format selection**: Tối ưu để tránh yt-dlp warnings ### Demo.html changes: - API_BASE: `window.location.origin` (tự động) ## 🚨 Lưu ý 1. **Miễn phí**: HF Spaces có giới hạn CPU và memory 2. **Timeout**: Apps có thể sleep sau một thời gian không dùng 3. **Storage**: File sẽ mất khi app restart (đã có auto-cleanup) 4. **Public**: Space sẽ public trừ khi upgrade Pro ## 🎯 URL sau khi deploy ``` https://huggingface.co/spaces/[YOUR_USERNAME]/ytdlp-web ``` ## 🛠️ Troubleshooting - **Build failed**: Kiểm tra Dockerfile syntax - **App không start**: Kiểm tra port 7860 - **API không hoạt động**: Kiểm tra CORS và API_BASE - **No space left**: Bật auto-cleanup trong config.json - **Permission denied**: App tự động fallback sang temp directory - **yt-dlp warnings**: Đã tối ưu format selection - **Facebook/Instagram links**: Một số platform có thể block download ## 🔄 Common Issues & Solutions ### "Permission denied" error: ``` ERROR: unable to open for writing: [Errno 13] Permission denied ``` **Solution**: App đã được cập nhật để tự động sử dụng temp directory ### "Command failed" với yt-dlp: - Kiểm tra URL có hợp lệ không - Một số platform có thể thay đổi API - Thử quality khác (worst thay vì best) ### App sleep trên HF Spaces: - Apps miễn phí sẽ sleep sau 1 giờ không dùng - Truy cập lại để wake up - Upgrade Pro để avoid sleeping