openclaw服务无法启动或web界面打不开,多因端口被占用导致“address already in use”错误;默认监听8080(http)和8081(websocket),可通过lsof或ss命令查占用进程,推荐修改启动端口或自动探测空闲端口解决。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw部署后服务无法启动或Web界面打不开,多数情况是端口被占用导致的“Address already in use”错误,尤其当本地已运行Nginx、Jupyter、FastAPI服务或另一个OpenClaw实例时,冲突概率极高。
确认冲突端口与占用进程
先查清哪个端口卡住了——OpenClaw默认监听 【8080】 端口(HTTP)和 【8081】 端口(WebSocket),但具体以你启动命令中指定的为准。执行以下任一命令:
lsof -i :8080 或 sudo ss -tulnp | grep ':8080\|:8081'
若输出含 PID 和进程名(如 node、python、nginx),说明该端口正被占用;若无输出,再检查是否为 TIME_WAIT 状态残留(执行 ss -tan | grep :8080,大量 TIME-WAIT 行需等待或调优内核参数)。
快速释放端口(临时方案)
找到占用进程PID后,直接终止:
kill -9 PID
注意:不要盲目 kill 所有 python 进程,先用 ps -p PID -o comm= 确认进程命令名。若 PID 对应的是你正在调试的 Jupyter 或 LangChain 服务,建议改它的端口而非强杀。
修改OpenClaw启动端口(推荐)
方法一:通过命令行参数覆盖(适用于直接 python 启动)
进入 OpenClaw 项目根目录,执行:
python app.py --host 0.0.0.0 --port 8090 --ws-port 8091
这会将 HTTP 服务切到 8090,WebSocket 切到 8091,避开常见冲突段。确保浏览器访问地址同步改为 http://localhost:8090。
本次更新实现飞书插件 npm 独立分发,新增 Ollama 本地模型配置及 openclaw 命令别名。引入 SQLite 持久化队列,支持断点续传。全面集成飞书、钉钉、企业微信及 QQ 官方渠道,优化阿里云百炼模型选择。修复多 Agent 路由、定时任务校验及配对授权等关键问题,提升系统稳定性与兼容性。
方法二:修改配置文件(适用于 Docker 或 systemd 部署)
编辑 config.yaml 或 .env,查找 PORT: 和 WS_PORT: 字段,改为未被占用的端口,例如:
PORT: 7860WS_PORT: 7861
保存后重启服务。若使用 Docker,还需同步更新 docker-compose.yml 中的 ports 映射,如 - "7860:7860"。
自动选择空闲端口(一劳永逸)
第一步:在启动脚本开头插入端口探测逻辑
新建 utils/port_finder.py:
import socket<br>
def find_free_port(start=8080, max_tries=100):<br>
for port in range(start, start + max_tries):<br>
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:<br>
try:<br>
s.bind(("", port))<br>
return port<br>
except OSError:<br>
continue<br>
raise RuntimeError("No free port found")
第二步:在 app.py 主入口处替换硬编码端口
将原 app.run(port=8080) 改为:
from utils.port_finder import find_free_port<br>
port = find_free_port()<br>
print(f"Using free port: {port}")<br>
app.run(port=port)
第三步:启动时不再指定端口,直接运行 python app.py 即可自动绑定可用端口。







