Spaces:
Sleeping
Sleeping
🚀 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
- Đi tới https://huggingface.co/new-space
- Đ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í)
- Space name:
Bước 3: Clone và Setup
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
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 ý
- Miễn phí: HF Spaces có giới hạn CPU và memory
- Timeout: Apps có thể sleep sau một thời gian không dùng
- Storage: File sẽ mất khi app restart (đã có auto-cleanup)
- 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