File size: 3,633 Bytes
b10e9c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a7bb3b2
 
b10e9c4
 
 
 
a7bb3b2
 
b10e9c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a7bb3b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# 🚀 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