在无公网 IP 的局域网内部署 Stable Diffusion 服务,最推荐的方式是修改启动参数绑定 0.0.0.0 地址以实现局域网内其他设备访问,若需外网访问则需配合内网穿透工具。适用场景为个人学习或小范围协作,风险边界在于直接暴露服务端口可能导致未授权访问。
先说结论:局域网部署可行,重点在于监听配置和防火墙放行,外网访问需额外穿透方案。
- 适合:个人本地推理、局域网内多设备共享算力、无公网 IP 环境。
- 先准备:安装 Python 环境、下载 Stable Diffusion WebUI 项目、确认局域网 IP 地址。
- 验收:局域网内其他设备能通过 IP 加端口号正常打开生成界面。
命令速用版
启动时添加 `--listen` 参数允许外部连接,指定端口避免冲突。
python launch.py `--listen` `--port` 7860为什么会这样
默认启动配置仅监听本地回环地址,外部设备无法连接。
Stable Diffusion WebUI 默认启动参数通常绑定 127.0.0.1,这意味着只有本机浏览器可以访问服务。要实现局域网访问,必须将监听地址改为 0.0.0.0,允许网卡接收来自局域网其他 IP 的请求。无公网 IP 限制了直接从互联网发起的连接,但局域网内部通信不受此限制。
分步处理
按顺序完成环境配置、参数修改和网络设置。
- 确认局域网 IP:在主机终端输入
ipconfig(Windows)或ifconfig(Linux/Mac),记录 IPv4 地址,例如 192.168.1.100。 - 修改启动参数:找到 WebUI 的启动脚本,通常为
webui-user.bat或webui-user.sh,在COMMANDLINE_ARGS变量中添加`--listen`。 - 配置防火墙:在操作系统防火墙中放行 TCP 协议的 7860 端口,允许专用网络通信。
- 启动服务:运行启动脚本,等待控制台显示 Running on http://0.0.0.0:7860 字样。
怎么验证是否生效
使用局域网内另一台设备浏览器访问主机 IP 和端口。
在另一台连接同一 Wi-Fi 或交换机的电脑手机上,打开浏览器输入 http://192.168.1.100:7860(替换为实际主机 IP)。若能看到 Stable Diffusion 生成界面且能提交任务,说明部署成功。若无法连接,检查主机防火墙日志是否拦截了入站请求。
常见坑
- 安全风险:开启
`--listen`后,局域网内任何人均可访问,建议配合`--gradio-auth`设置账号密码。 - 端口占用:7860 端口可能被其他程序占用,启动失败时需更换
`--port`参数。 - 网络隔离:部分路由器开启 AP 隔离功能,会导致局域网设备间无法互访,需关闭该功能。
常见问题
没有公网 IP 能让外网朋友访问吗?
不能直接访问,需要配合内网穿透工具。
无公网 IP 时外网无法直接路由到局域网,需使用 FRP、Cloudflare Tunnel 等工具建立隧道,但会增加延迟且配置复杂。
生成速度比本机访问慢吗?
局域网内速度几乎无影响,主要取决于主机显卡性能。
局域网千兆环境下网络传输耗时远小于图像生成时间,体验差异不明显。
为什么浏览器显示连接拒绝?
通常是防火墙拦截或服务未正确监听 0.0.0.0。
检查主机防火墙是否放行端口,确认启动日志中显示的是 0.0.0.0 而非 127.0.0.1。
参考来源
- Stable Diffusion WebUI GitHub 仓库,页面标题:AUTOMATIC1111/stable-diffusion-webui,URL:https://github.com/AUTOMATIC1111/stable-diffusion-webui