部署指南
本指南将详细介绍如何部署 Web-DL-Manager。
🐳 Docker 部署 (推荐)
这是最稳定的部署方式。镜像内已内置了 rclone, zstd, ffmpeg, cloudflared, gallery-dl, yt-dlp, kemono-dl, megatools 等所有必要的工具链。
1. 快速启动 (使用 SQLite)
bash
docker run -d \
--name web-dl-manager \
-p 5492:5492 \
-v ./data:/data \
-e APP_USERNAME="admin" \
-e APP_PASSWORD="your_password" \
ghcr.io/jyf0214/web-dl-manager:main注意:
- 端口 5492: 部署说明与登录入口。
- 应用程序: 核心逻辑监听
127.0.0.1:6275(内部端口)。- 镜像默认以 UID 1000 运行。如果您的宿主机挂载目录权限不足,请在启动前执行
chown -R 1000:1000 ./data。
2. 使用 Docker Compose (MySQL 后端)
yaml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: web_dl_manager
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
restart: always
web-dl:
image: ghcr.io/jyf0214/web-dl-manager:main
container_name: web-dl-manager
ports:
- "5492:5492"
environment:
- DATABASE_URL=mysql://root:root_password@mysql:3306/web_dl_manager
- APP_USERNAME=admin
- APP_PASSWORD=your_secure_password
- DEBUG_MODE=false
- ENABLE_STATIC_SITE=true
depends_on:
- mysql
volumes:
- ./data/downloads:/data/downloads
- ./data/archives:/data/archives
- ./data/status:/data/status
- ./logs:/app/logs
restart: always
volumes:
mysql_data:3. Docker Compose with Redis (高并发场景)
yaml
version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: redis-cache
ports:
- "6379:6379"
restart: always
web-dl:
image: ghcr.io/jyf0214/web-dl-manager:main
container_name: web-dl-manager
ports:
- "5492:5492"
environment:
- APP_USERNAME=admin
- APP_PASSWORD=your_secure_password
- REDIS_URL=redis://redis:6379
- DEBUG_MODE=false
depends_on:
- redis
volumes:
- ./data:/data
restart: always⚙️ 常见部署配置
配置 1: 基础配置(本地开发)
bash
docker run -d \
--name web-dl-manager \
-p 5492:5492 \
-v ./data:/data \
-e APP_USERNAME="admin" \
-e APP_PASSWORD="password123" \
-e DEBUG_MODE="true" \
ghcr.io/jyf0214/web-dl-manager:main配置 2: 生产环境(SQLite)
bash
docker run -d \
--name web-dl-manager \
-p 5492:5492 \
-v ./data:/data \
-e APP_USERNAME="admin" \
-e APP_PASSWORD="strong_password_here" \
-e DEBUG_MODE="false" \
-e PRIVATE_MODE="true" \
ghcr.io/jyf0214/web-dl-manager:main配置 3: 配置 Cloudflare Tunnel(公网访问)
bash
docker run -d \
--name web-dl-manager \
-p 5492:5492 \
-v ./data:/data \
-e APP_USERNAME="admin" \
-e APP_PASSWORD="strong_password" \
-e TUNNEL_TOKEN="eyJhIjoiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
ghcr.io/jyf0214/web-dl-manager:main配置 4: 配置自动备份
bash
docker run -d \
--name web-dl-manager \
-p 5492:5492 \
-v ./data:/data \
-e APP_USERNAME="admin" \
-e APP_PASSWORD="strong_password" \
-e WDM_CONFIG_BACKUP_RCLONE_BASE64="W2RyaXZlXQp0eXBlID0gZHJpdmU..." \
-e WDM_CONFIG_BACKUP_REMOTE_PATH="drive:web-dl-manager-backup" \
ghcr.io/jyf0214/web-dl-manager:main🛠️ 自行构建与本地部署
1. 构建 Docker 镜像
bash
docker build -t my-web-dl-manager .2. 本地开发运行 (非容器)
- 安装依赖:bash
pip install -r app/requirements.txt pip install gallery-dl yt-dlp git+https://github.com/AlphaSlayer1964/kemono-dl.git megatools - 运行:bash
python run.py
📝 部署细节说明
双应用架构
程序启动后会同时启动两个服务:
- Port 5492 (部署页面):访问入口,展示项目的说明文档和登录界面。
- Port 6275 (应用程序):核心业务逻辑,仅内部可访问(通过 Port 5492 代理)。
数据路径
请确保 /data 目录有足够的磁盘空间用于存储下载和压缩的文件。建议目录结构:
./data/
├── downloads/ # 下载临时文件
├── archives/ # 压缩档案
└── status/ # 任务状态数据库选择
- SQLite:适合小规模单机部署,无需额外配置。
- MySQL:适合生产环境和高并发场景,需要单独部署 MySQL 服务。
内网穿透
如果您配置了 TUNNEL_TOKEN,程序会自动启动 cloudflared 进程用于 Cloudflare Tunnel 内网穿透。
权限和安全
- 镜像以 UID 1000 运行。如果挂载目录权限不足,执行:bash
chown -R 1000:1000 ./data - 建议使用强密码和启用
PRIVATE_MODE以增强安全性。
📋 环境变量参考
详细的环境变量配置说明见 环境变量配置 页面。
主要变量:
| 变量 | 说明 | 默认值 |
|---|---|---|
APP_USERNAME | 初始管理员用户名 | Jyf0214 |
APP_PASSWORD | 初始管理员密码 | (空) |
DATABASE_URL | 数据库连接字符串 | sqlite:////data/webdl-manager.db |
DEBUG_MODE | 调试模式 | false |
ENABLE_STATIC_SITE | 启用部署说明页面 | true |
🔍 故障排查
问题:无法访问管理界面
- 检查容器是否正常运行:
docker ps | grep web-dl-manager - 检查端口映射:
docker port web-dl-manager - 检查日志:
docker logs web-dl-manager
问题:数据库连接错误
- 确保 MySQL 服务运行(如果使用 MySQL)
- 检查
DATABASE_URL格式是否正确 - 验证数据库用户和密码是否正确
问题:权限不足错误
bash
# 修复数据目录权限
chown -R 1000:1000 ./data
chmod -R 755 ./data