如何在无公网 IP 的局域网内部署 Stable Diffusion 服务

文章导读
在无公网 IP 的局域网内部署 Stable Diffusion 服务,最推荐的方式是修改启动参数绑定 0.0.0.0 地址以实现局域网内其他设备访问,若需外网访问则需配合内网穿透工具。适用场景为个人学习或小范围协作,风险边界在于直接暴露服务端口可能导致未授权访问。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在无公网 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 限制了直接从互联网发起的连接,但局域网内部通信不受此限制。

分步处理

按顺序完成环境配置、参数修改和网络设置。

  1. 确认局域网 IP:在主机终端输入 ipconfig(Windows)或 ifconfig(Linux/Mac),记录 IPv4 地址,例如 192.168.1.100。
  2. 修改启动参数:找到 WebUI 的启动脚本,通常为 webui-user.batwebui-user.sh,在 COMMANDLINE_ARGS 变量中添加 `--listen`
  3. 配置防火墙:在操作系统防火墙中放行 TCP 协议的 7860 端口,允许专用网络通信。
  4. 启动服务:运行启动脚本,等待控制台显示 Running on http://0.0.0.0:7860 字样。

怎么验证是否生效

使用局域网内另一台设备浏览器访问主机 IP 和端口。

在另一台连接同一 Wi-Fi 或交换机的电脑手机上,打开浏览器输入 http://192.168.1.100:7860(替换为实际主机 IP)。若能看到 Stable Diffusion 生成界面且能提交任务,说明部署成功。若无法连接,检查主机防火墙日志是否拦截了入站请求。

如何在无公网 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