feat: 擴展 i18n 支援 65 種語言 + 完整文件系統
🌐 國際化 (i18n) - 從 5 種語言擴展到 65 種語言支援 - 新增:歐洲語系 (de, fr, es, it, pt, ru, nl, pl, tr, uk, cs, sv, da, fi, no, el, hu, ro, bg, hr, sk, sl, lt, lv, et, is, ga, cy, mt, mk, sq, ca, eu, gl, sr) - 新增:中東語系 (ar, he, fa) - 新增:南亞語系 (hi, bn, ta, te, mr, gu, kn, ml, ne, si) - 新增:東南亞語系 (th, vi, id, ms, fil, my, km, lo) - 新增:非洲語系 (af, sw, am, zu) - 完整翻譯所有 UI 文字 📖 文件系統 - 重構 README.md 為入口型首頁 - 新增 docs/getting-started.md - 快速入門指南 - 新增 docs/docker.md - Docker 部署指南 - 新增 docs/environment-variables.md - 環境變數說明 - 新增 docs/url-id-and-storage.md - 儲存結構說明 - 新增 docs/advanced-usage.md - 進階使用指南 - 更新 docs/i18n.md - 65 種語言清單 ✅ 建構驗證 - TypeScript 編譯通過 - Docker 建構通過
This commit is contained in:
parent
53b83b425f
commit
5c68308c36
69 changed files with 7823 additions and 274 deletions
277
docs/advanced-usage.md
Normal file
277
docs/advanced-usage.md
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
# 進階用法
|
||||
|
||||
## 硬體加速
|
||||
|
||||
### NVIDIA GPU (CUDA/NVENC)
|
||||
|
||||
#### 1. 安裝 NVIDIA Container Toolkit
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
|
||||
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
|
||||
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nvidia-container-toolkit
|
||||
sudo nvidia-ctk runtime configure --runtime=docker
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
#### 2. Docker Compose 配置
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel cuda -hwaccel_output_format cuda
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_nvenc -preset fast
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Intel Quick Sync Video (QSV)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel qsv
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_qsv -preset faster
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### AMD VAAPI
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel vaapi -hwaccel_device /dev/dri/renderD128
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_vaapi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 反向代理
|
||||
|
||||
### Nginx
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name convert.example.com;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name convert.example.com;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/cert.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/key.pem;
|
||||
|
||||
client_max_body_size 0; # 無檔案大小限制
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
|
||||
# 長時間連線支援(大檔案轉換)
|
||||
proxy_read_timeout 3600s;
|
||||
proxy_send_timeout 3600s;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Caddy
|
||||
|
||||
```
|
||||
convert.example.com {
|
||||
reverse_proxy localhost:3000 {
|
||||
header_up X-Real-IP {remote_host}
|
||||
header_up X-Forwarded-Proto {scheme}
|
||||
}
|
||||
|
||||
request_body {
|
||||
max_size 0 # 無限制
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Traefik
|
||||
|
||||
參考 [docker.md](docker.md#使用-traefik-反向代理) 中的 Traefik 配置。
|
||||
|
||||
---
|
||||
|
||||
## 子路徑部署
|
||||
|
||||
如果需要在子路徑部署(如 `https://example.com/convertx`):
|
||||
|
||||
### 1. 設定環境變數
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- WEBROOT=/convertx
|
||||
```
|
||||
|
||||
### 2. Nginx 配置
|
||||
|
||||
```nginx
|
||||
location /convertx/ {
|
||||
proxy_pass http://localhost:3000/;
|
||||
# ... 其他 proxy 設定
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Caddy 配置
|
||||
|
||||
```
|
||||
example.com {
|
||||
handle_path /convertx/* {
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 限制同時轉換數
|
||||
|
||||
防止伺服器過載:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- MAX_CONVERT_PROCESS=4 # 最多同時 4 個轉換任務
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 匿名模式
|
||||
|
||||
允許不登入即可使用:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- ALLOW_UNAUTHENTICATED=true
|
||||
- HIDE_HISTORY=true # 建議同時隱藏歷史
|
||||
- AUTO_DELETE_EVERY_N_HOURS=1 # 快速清理
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 高可用部署
|
||||
|
||||
### 多容器部署
|
||||
|
||||
ConvertX-CN 支援多容器部署,但需注意:
|
||||
|
||||
1. **共享儲存**:所有容器需存取相同的 `/app/data` 目錄
|
||||
2. **資料庫鎖定**:SQLite 在高併發下可能有問題
|
||||
3. **JWT Secret**:所有容器需使用相同的 `JWT_SECRET`
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx-1:
|
||||
image: convertx/convertx-cn:latest
|
||||
volumes:
|
||||
- shared-data:/app/data
|
||||
environment:
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
|
||||
convertx-2:
|
||||
image: convertx/convertx-cn:latest
|
||||
volumes:
|
||||
- shared-data:/app/data
|
||||
environment:
|
||||
- JWT_SECRET=${JWT_SECRET}
|
||||
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf
|
||||
|
||||
volumes:
|
||||
shared-data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=nfs-server,rw
|
||||
device: ":/path/to/shared/data"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 效能調優
|
||||
|
||||
### 記憶體限制
|
||||
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 8G
|
||||
reservations:
|
||||
memory: 2G
|
||||
```
|
||||
|
||||
### CPU 限制
|
||||
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
reservations:
|
||||
cpus: '1'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 日誌管理
|
||||
|
||||
### 查看日誌
|
||||
|
||||
```bash
|
||||
docker logs convertx-cn
|
||||
docker logs -f convertx-cn # 即時追蹤
|
||||
docker logs --tail 100 convertx-cn # 最後 100 行
|
||||
```
|
||||
|
||||
### 日誌輪轉
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
# ...
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue