🚀 基于 Docker 的 Stable Diffusion WebUI Forge 生产级部署方案
- ✅ CUDA 12.8 + PyTorch 2.7.0 - 最新 CUDA 和深度学习框架
- ✅ 扩展依赖自动修复 - 自动修复常见扩展的依赖问题
- ✅ 灵活下载控制 - 通过环境变量控制所有资源下载
- ✅ 镜像加速支持 - 支持 HuggingFace 和 Git 镜像加速
- ✅ Token 自动管理 - HuggingFace 和 Civitai API Token 自动配置
- ✅ 一键启动 - 自动构建镜像、创建容器、启动服务
- ✅ 配置版本管理 - 支持将配置推送到 GitHub 进行版本控制
- 操作系统: Linux (Ubuntu 20.04+, Debian 11+) 或 Unraid
- Docker: 20.10+
- Docker Compose: 1.29+
- NVIDIA GPU: 支持 CUDA 12.8 的显卡 (需要驱动 >=525.60.13)
- nvidia-container-toolkit: 已安装并配置
- 磁盘空间: 至少 50GB (推荐 100GB+)
- 内存: 至少 16GB (推荐 32GB+)
```bash git clone https://github.com/amDosion/forage.git cd forage ```
复制环境变量模板并填入你的配置:
```bash cp .env.example .env nano .env # 或使用你喜欢的编辑器 ```
必须配置的项目:
- `HUGGINGFACE_TOKEN` - HuggingFace API Token (从 https://huggingface.co/settings/tokens 获取)
- `CIVITAI_API_TOKEN` - Civitai API Token (从 https://civitai.com/user/account 获取)
可选配置:
- `GITHUB_TOKEN` - 用于自动推送配置到 GitHub (从 https://github.com/settings/tokens 获取)
- `ENABLE_DOWNLOAD_*` - 控制各类资源的下载开关
```bash chmod +x start.sh ./start.sh ```
首次启动会自动:
- 构建 Docker 镜像(约 10-15 分钟)
- 创建容器
- 下载 WebUI 代码和扩展
- 安装 Python 依赖
- 启动服务
启动成功后,通过以下地址访问:
- 本地访问: http://localhost:7860
- 局域网访问: http://YOUR_SERVER_IP:7860
首次启动完成后大约 5-10 分钟可以访问 WebUI。
``` forage/ ├── run.sh # 容器启动脚本(自动处理依赖和资源) ├── start.sh # 宿主机启动脚本(构建+启动) ├── stop.sh # 宿主机停止脚本 ├── Dockerfile # Docker 镜像构建文件 ├── docker-compose.yml # Docker Compose 配置 ├── .env.example # 环境变量配置模板 ├── .env # 环境变量配置(需要自己创建,不提交到 Git) ├── .gitignore # Git 忽略配置 ├── requirements_user_pins.txt # Python 依赖版本锁定 ├── resources.txt # 扩展和模型资源列表 ├── push_config_to_github.sh # 配置文件推送脚本 ├── GITHUB_PUSH_README.md # GitHub 推送功能说明 └── webui/ # WebUI 数据目录(挂载卷) ├── sd-webui-forge/ # Forge WebUI 主目录 │ ├── models/ # 模型文件 │ ├── extensions/ # 扩展插件 │ ├── outputs/ # 生成图片 │ └── venv/ # Python 虚拟环境 └── launch.log # 启动日志 ```
Python 依赖版本锁定文件,包含:
- 核心依赖版本(PyTorch, xformers 等)
- 扩展依赖修复(见下文)
扩展和模型资源列表,格式:
```
extensions/扩展名,https://github.com/用户名/仓库名.git
models/路径/文件名,https://huggingface.co/模型路径 ```
可通过 `.env` 中的下载开关控制每类资源的下载。
详细说明见 `.env.example` 文件,主要配置项:
```bash UI=forge # forge | auto | fastforge ```
```bash ARGS="--xformers --api --listen --theme dark ..." ```
```bash HUGGINGFACE_TOKEN=hf_xxx # HuggingFace Token CIVITAI_API_TOKEN=xxx # Civitai Token GITHUB_TOKEN=ghp_xxx # GitHub Token(可选) ```
```bash ENABLE_DOWNLOAD=true # 全局开关 ENABLE_DOWNLOAD_EXTS=true # 扩展 ENABLE_DOWNLOAD_MODEL_SD15=false # SD 1.5 模型 ENABLE_DOWNLOAD_MODEL_SDXL=false # SDXL 模型 ENABLE_DOWNLOAD_MODEL_FLUX=false # FLUX 模型
```
```bash USE_HF_MIRROR=false # HuggingFace 镜像 (hf-mirror.com) USE_GIT_MIRROR=false # Git 镜像 (gitcode.net) ```
本项目自动修复以下扩展的依赖问题:
问题: 缺少 `hydra-core` 依赖 修复: 在 `requirements_user_pins.txt` 中添加 `hydra-core==1.3.2`
问题: 缺少 `send2trash`, `beautifulsoup4`, `ZipUnicode` 依赖 修复: 在 `requirements_user_pins.txt` 中添加:
- `send2trash==1.8.2`
- `beautifulsoup4==4.12.3`
- `ZipUnicode==1.1.1`
启动脚本 `run.sh` 会:
- 下载 `requirements_user_pins.txt`(如果不存在)
- 将依赖合并到 `requirements_versions.txt`
- WebUI 启动时自动安装所有依赖
```bash
docker-compose logs -f
docker logs -f forge-webui ```
```bash docker-compose restart ```
```bash ./stop.sh
docker-compose down ```
```bash docker exec -it forge-webui bash ```
```bash docker-compose down docker-compose up -d ```
```bash docker-compose down docker rmi forge-webui:latest ./start.sh ```
支持将配置文件推送到 GitHub 进行版本管理:
在 `.env` 中设置: ```bash GITHUB_TOKEN=ghp_xxx # 你的 GitHub Token GITHUB_CONFIG_REPO=用户名/仓库名 GITHUB_CONFIG_BRANCH=main ```
```bash docker exec forge-webui bash /app/push_config_to_github.sh ```
详细说明见 GITHUB_PUSH_README.md
症状: 启动日志显示 `ModuleNotFoundError: No module named 'xxx'`
解决方案:
- 检查 `requirements_user_pins.txt` 是否包含缺失的依赖
- 进入容器手动安装: ```bash docker exec -it forge-webui bash source /app/webui/sd-webui-forge/venv/bin/activate pip install 缺失的包名 ```
- 将依赖添加到 `requirements_user_pins.txt` 并推送到 GitHub
症状: 启动日志显示 CUDA 不可用
解决方案:
- 检查 nvidia-container-toolkit 是否安装: ```bash docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi ```
- 检查 Docker 配置是否支持 GPU: ```bash docker info | grep -i runtime ```
症状: 启动失败,提示端口 7860 被占用
解决方案:
- 修改 `docker-compose.yml` 中的端口映射:
```yaml
ports:
- "7861:7860" # 改为其他端口 ```
- 或者停止占用端口的程序
解决方案:
- 启用镜像加速: ```bash USE_HF_MIRROR=true # HuggingFace 镜像 USE_GIT_MIRROR=true # Git 镜像 ```
- 使用代理(修改 Docker daemon 配置)
症状: 容器启动失败,提示 Permission denied
解决方案: ```bash chmod -R 777 ./webui ./start.sh ```
- ✅ 添加扩展依赖自动修复
- ✅ 添加 GitHub 配置版本管理功能
- ✅ 完善环境变量配置
- ✅ 优化启动脚本逻辑
- ✅ 添加详细文档
- ✅ 初始版本
- ✅ 基于 CUDA 12.8 + PyTorch 2.7.0
- ✅ 支持 Forge / Auto / FastForge 三种 UI
- ✅ 灵活的下载控制
欢迎提交 Issue 和 Pull Request!
本项目基于 MIT 许可证开源。
💡 提示: 如有问题,请先查看日志 (`docker-compose logs -f`) 和本文档的故障排查部分。