videodowwn / DEPLOY_GUIDE.md
haaaaus's picture
Upload 8 files
a7bb3b2 verified

🚀 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

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 ý

  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