默认情况下,Node.js 服务器仅绑定到 localhost,导致其他局域网设备无法访问;只需显式指定监听地址为 0.0.0.0 即可使服务对本地网络可见。
默认情况下,node.js 服务器仅绑定到 localhost,导致其他局域网设备无法访问;只需显式指定监听地址为 `0.0.0.0` 即可使服务对本地网络可见。
要让运行在 Ubuntu 上的 Node.js 应用被同一局域网内的其他设备(如手机、笔记本、另一台 PC)访问,关键在于正确配置 HTTP 服务器的监听地址。
在你当前的代码中:
httpServer.listen(portNumber, function(){
console.log('listening on port:: ' + portNumber)
})你只传入了端口号,未指定 host 参数。此时 Express(或底层 http.createServer)会默认绑定到 localhost(即 127.0.0.1),该地址仅允许本机回环访问,外部设备自然无法连接。
✅ 正确做法是显式将监听地址设为 0.0.0.0:
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
httpServer.listen(portNumber, '0.0.0.0', () => {
console.log(`✅ Server running on http://localhost:${portNumber}`);
console.log(`? Available on LAN: http://${require('os').networkInterfaces().enp0s3?.[0]?.address || 'your-ip'}:${portNumber}`);
});? 提示:enp0s3 是常见有线网卡名(可通过 ip a 或 ifconfig 查看实际接口名,如 wlp2s0 表示无线网卡)。你也可用 require('os').networkInterfaces() 动态获取本机 IPv4 地址,方便其他设备识别访问地址。
⚠️ 注意事项:
- 无需修改路由器(如 AT&T 网关)防火墙设置:局域网内设备通信不经过外网防火墙,AT&T 后台的“端口转发”或“应用规则”仅影响公网入站流量,与 LAN 访问无关。
-
检查 Ubuntu 本机防火墙(UFW):若已启用 UFW,请确保对应端口开放:
sudo ufw allow 8080 sudo ufw status verbose # 验证规则生效
- 避免使用 127.0.0.1 或 localhost 作为 host:二者语义等价,均限制为本机访问。
- 生产环境慎用 0.0.0.0:它暴露服务到所有网络接口(包括可能的 Docker/桥接网络),若需更高安全性,应结合反向代理(如 Nginx)或绑定到具体内网 IP(如 192.168.1.100)。
完成修改并重启服务后,在其他设备浏览器中输入 http://192.168.x.x:8080(替换为你的 Ubuntu 实际局域网 IP),即可正常访问应用。这是本地开发与团队联调最基础也最关键的一步。

















