You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让局域网内其他设备可访问Jupyter中运行的Panel仪表板

局域网访问Panel仪表板解决方案

问题原因梳理

你遇到的三个报错分别对应三类配置问题:

  1. websocket连接被拒绝:Panel底层基于Bokeh,默认只允许localhost来源的websocket连接,外部设备访问会被拦截
  2. 端口随机变动:未指定固定端口时,每次启动服务都会随机分配可用端口,和你预设的websocket_origin端口不匹配
  3. WinError 10048端口占用:之前启动的Panel服务未正常关闭,对应端口仍被占用

分步操作

第一步:释放占用端口(或更换未使用端口)

如果要继续用60840端口,先结束占用该端口的进程:

  • 打开Windows命令提示符,执行命令查找占用端口的进程PID:
    netstat -ano | findstr :60840
  • 执行命令结束对应进程,替换<PID>为上一步查到的数字:
    taskkill /PID <PID> /F
    也可以直接换用其他未被占用的端口,比如8501、9000等常用测试端口。

第二步:修改启动代码,配置正确参数

需要同时开启外部访问权限、固定端口、放开websocket来源限制,完整代码如下:

import panel as pn
pn.extension()
dashboard_title = pn.panel('## Test Dashboard')
dashboard_footnote = pn.panel('Test Test Test')
dash = pn.Column(dashboard_title, dashboard_footnote)
dash.servable(title="Claims Dashboard")

pn.serve(
    dash,
    port=60840, # 替换为你要使用的固定端口
    address="0.0.0.0", # 监听所有网卡,允许局域网设备访问
    websocket_origin="*", # 企业内部局域网场景可直接允许所有来源,无需逐个添加IP
    show=True # 本地自动弹出浏览器,不需要可设为False
)

第三步:访问验证

  • 确认启动服务的电脑局域网IP正确(你当前的IP为10.80.60.31)
  • 同一局域网内的其他设备,直接访问 http://10.80.60.31:60840 即可打开仪表板
  • 如果访问失败,检查Windows防火墙是否允许Python通过公网/专网络访问,放行对应端口即可

可选安全配置

如果企业对安全要求较高,不想放开所有websocket来源,可以把websocket_origin的值替换为你需要允许的IP+端口列表,比如:
websocket_origin=["localhost:60840", "10.80.60.31:60840", "10.80.40.41:60840"]
所有需要访问仪表板的设备IP都要加入列表即可。

内容的提问来源于stack exchange,提问作者Jack_loc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:48:03