Stable Diffusion WebUI 部署到 VPS 上,最头疼的不是装软件,而是环境冲突、显存不够、模型下载慢、端口死活连不上。这篇文章直接给出一套能跑起来的流程,从系统依赖到模型配置再到端口放行,每一步都踩过坑,照着来能省不少时间。

环境准备:VPS 配置要求和系统依赖
先确认 VPS 配置。Stable Diffusion WebUI 跑图吃的是 GPU,没有 NVIDIA 显卡的 VPS 基本没法用 CPU 推理(出图一张几分钟,别试)。推荐配置:
•GPU:至少 8GB 显存(RTX 3070 或 A10G 级别),4GB 显存只能跑小模型且容易 OOM。
•内存:16GB 以上,8GB 勉强但容易 swap。
•磁盘:50GB 以上,模型文件动辄 5-10GB,加上环境至少 30GB。
•系统:Ubuntu 22.04 或 20.04,Debian 11/12 也行。
安装基础依赖:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv git wget -y
nvidia-smi
如果 `nvidia-smi` 报错,说明没装驱动。用 `ubuntu-drivers devices` 查看推荐版本,然后 `sudo apt install nvidia-driver-535`(数字以当前推荐为准)。装完重启。
部署 Stable Diffusion WebUI:源码安装与虚拟环境
推荐用 AUTOMATIC1111 的 WebUI 仓库,社区最活跃。不要用一键脚本,自己手动拉代码可控性更强。
mkdir -p /opt/sd-webui && cd /opt/sd-webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git .
python3 -m venv venv
source venv/bin/activate
pip install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
如果网络慢,换国内 pip 源:`pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple`。
启动前先配置参数,避免默认占用全部显存:
nano webui-user.sh
找到 `export COMMANDLINE_ARGS=""` 这一行,改成:
export COMMANDLINE_ARGS="–listen –port 7860 –skip-torch-cuda-test –medvram –no-half-vae –api"
解释:`–listen` 让 WebUI 监听 0.0.0.0 可外部访问;`–port 7860` 指定端口;`–medvram` 降低显存占用;`–no-half-vae` 避免部分模型半精度报错;`–api` 开启 API 接口供外部调用(比如配合 AI Agent 或 n8n 工作流)。
启动:
bash webui.sh
第一次启动会下载模型文件和依赖,耗时较长。看到 `Running on local URL: http://0.0.0.0:7860` 表示成功。
模型和端口配置:下载模型、放行端口、反向代理
WebUI 默认不带模型,需要自己下载。常用模型可以从 Hugging Face 或 Civitai 下载。这里以 Stable Diffusion 1.5 为例:
cd /opt/sd-webui/models/Stable-diffusion/
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
其他模型(如 ChilloutMix、DreamShaper)同理,放到同一目录。注意 `.safetensors` 格式比 `.ckpt` 更安全。
端口放行:VPS 默认防火墙只开 22 端口。手动放行 7860:
sudo ufw allow 7860/tcp
sudo ufw reload
反向代理:生产环境建议用 Nginx 反代,加上域名和 HTTPS。不配置反代,直接暴露 7860 端口也能用,但不安全。Nginx 配置示例:
nginx
server {
listen 80;
server_name sd.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7860;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
配置完 `sudo systemctl reload nginx`,然后用 Certbot 申请 SSL 证书。记住:不要用 root 用户运行 WebUI,建议创建一个普通用户 `sduser`,用 systemd 管理服务。
老鸟叮嘱
1.显存不够不要硬跑:启动参数里 `–medvram` 或 `–lowvram` 能缓解,但出图速度会降。如果 VPS 显存只有 4GB,建议换用更轻量的 ComfyUI 或直接在本地跑。
2.API Key 不要写在脚本里:如果需要通过 API 调用 WebUI(比如集成到 AI Agent),用环境变量或配置文件读取,不要硬编码在代码里。
3.后台端口不要裸露公网:即使只开 7860,也建议用 `–gradio-auth user:password` 加一层认证,或者只绑定 127.0.0.1 再通过 Nginx 反代。
4.模型下载慢:用 `aria2c` 替代 `wget`,分块下载速度更快。或者从国内镜像站(如 hf-mirror.com)下载。
5.日志排查:启动报错先看终端输出,常见问题:Python 版本不对(需 3.10+)、CUDA 版本不匹配、磁盘空间不足。不要重装系统,先查日志。
FAQ
Q:VPS 没有 GPU 能跑 Stable Diffusion WebUI 吗?
A:不能。CPU 推理一张 512×512 的图需要 5-10 分钟,完全不可用。必须要有 NVIDIA 显卡且驱动正常。
Q:部署后浏览器访问 7860 端口显示 “This site can’t be reached” 怎么办?
A:先确认 WebUI 是否启动成功(看终端日志)。然后检查防火墙和云服务商安全组是否放行了 7860 端口。最后用 `curl http://127.0.0.1:7860` 在 VPS 内部测试是否正常。
Q:显存只有 6GB,能跑什么模型?
A:可以跑 SD 1.5 基础模型,但建议开启 `–medvram`。不要加载 ControlNet 或高分辨率修复,容易 OOM。SDXL 模型至少需要 8GB 显存。
Q:如何让 WebUI 开机自启?
A:写一个 systemd 服务文件,指定用户和工作目录,ExecStart 指向 /opt/sd-webui/webui.sh`。注意启动前先激活虚拟环境。
Q:模型下载到一半断了怎么办?
A:用 `wget -c` 断点续传,或者用 `aria2c -x 4 <url>` 分块下载。如果文件损坏,删除后重下。
Q:想集成到 n8n 工作流,怎么调用 WebUI 的 API?
A:启动时加 `–api`,然后通过 `http://your-vps-ip:7860/sdapi/v1/txt2img` 发送 POST 请求。n8n 里用 HTTP Request 节点,填入 JSON payload。
总结:Stable Diffusion WebUI 部署在 VPS 上,关键在环境依赖、模型管理和端口安全。按本文步骤配置好虚拟环境、启动参数和反向代理,跑图就能稳定。如果遇到报错,先看日志,别急着重装。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9914.html 商家投稿邮箱:zhujixuanblog@qq.com
