OC-Deploy 将 OpenClaw Gateway 封装为 fnOS FPK 应用,并提供 Web 管理界面。
- 🎯 一键部署 - 通过 fnOS 应用中心快速安装
- 🖥️ 可视化管理 - 直观的 Web 控制面板
- 🤖 多模型支持 - 轻松配置 OpenAI、Claude 等多种 AI 模型
- 💬 多渠道接入 - 支持 Telegram、Discord、飞书、QQ 等消息平台
- 📊 实时监控 - Gateway 状态、CPU、内存实时监控
- 🔧 配置管理 - 可视化编辑器 + JSON 导入导出
- 🔌 插件系统 - 支持扩展插件安装与管理
用户 -> fnOS App Center -> Management Console (18790) -> /dashboard 代理 -> OpenClaw Gateway (18789)
职责分工:
- OC-Deploy:网关启停、配置管理、模型/渠道配置、插件安装
- 原生 dashboard:智能体、会话和运行时使用
- 仪表板:Gateway 状态、PID、CPU、内存、配置摘要
- 模型管理:快速添加、编辑、删除,主模型边框高亮
- 渠道管理:Telegram / Discord / 飞书 / QQ
- 配置编辑器:导入 / 导出 / 复制 / 恢复原始配置
- 原生控制面板入口:自动拼接 token,走
/dashboard代理 - 日志路径展示:便于排障
- 模型与渠道表单均分为“推荐配置 / 高级配置”
- 渠道配置引导卡片集中展示关键字段与最小示例
- JSON 校验异常会阻断保存/导入,并显示具体错误
- 一键恢复原始配置后自动重启 Gateway
- QQ 渠道支持插件状态检测与一键安装
- 模型 ID 支持:字母、数字、
-、.、/、: - 供应商名称仅支持小写英文:
a-z - 渠道以类型作为 key(同类型仅保留一条)
- 访问 Releases:
https://github.com/iridite/openclawer/releases - 下载最新发布包并上传到 fnOS 应用中心安装
- 安装完成后点击“启动”
- 点击“打开”进入管理控制台
安装提示:
- 40% / 55% 卡住通常是在线安装 npm 依赖
- 安装时长依赖网络环境
- 安装向导包含用户条款摘要,继续安装视为同意
- 安装向导支持选择配置位置:
/root/.openclaw(推荐)或应用目录.../var/.openclaw
- 在“模型”页添加模型(推荐区先填最小必需项)
- 在“渠道”页添加消息渠道(可参考页面内置示例)
- 在“概览”页启动 Gateway
- 需要智能体/会话管理时进入原生控制面板(dashboard)
管理服务默认监听 0.0.0.0:18790,也就是所有网卡都会接收连接;但“是否允许非本机来源访问”仍由管理访问策略决定。这两件事不是同一个层面:
BIND_ADDR=0.0.0.0:解决的是“进程监听在哪些网卡上”- WebUI「系统 -> 管理访问」:解决的是“收到请求后,是否允许非回环地址继续访问面板/API”
几种常见访问方式的语义如下:
- fnOS 默认中继访问:通常可以正常打开,因为请求会先经过 fnOS 提供的中继/转发链路,再回到本机管理服务
- 局域网直连访问:例如
http://NAS_IP:18790,要求 18790 端口在局域网内可达,且“管理访问”处于“允许远程访问” - frp/frps 反向代理访问:只要代理能正确回源到
127.0.0.1:18790或宿主机监听地址,通常也可以正常访问;如果回源最终表现为本机请求,即使管理访问收敛到仅本机,也可能通过
“管理访问”开关只负责访问面控制,不负责以下事项:
- 不改变监听端口或监听地址
- 不替代反向代理、端口转发或 fnOS 中继配置
- 不提供本地账号/密码认证
项目当前的安全边界决策是:
- 不引入本地账号/密码认证
- 管理面板/API 的暴露范围仅通过网络边界和“管理访问”开关控制
- 如果默认开放远程访问,请自行确保局域网、反向代理和公网暴露面处于可信范围
oc-deploy/
├── app/
│ ├── server/
│ │ └── management-api.js
│ └── ui/
│ ├── management.html
│ ├── assets/
│ │ ├── management.js
│ │ └── management.css
│ ├── config
│ └── images/
├── cmd/
│ ├── main
│ ├── install_init / install_callback
│ ├── upgrade_init / upgrade_callback
│ ├── config_init / config_callback
│ └── uninstall_init / uninstall_callback
├── config/
├── wizard/
├── test/
│ ├── smoke.sh
│ ├── local-test.sh
│ ├── setup-test-env.sh
│ └── README.md
├── manifest
└── TODO.md
{
"models": {
"mode": "merge",
"providers": {
"openai": {
"apiKey": "sk-...",
"baseUrl": "https://api.openai.com/v1",
"api": "openai-completions",
"models": [
{ "id": "gpt-4o", "name": "gpt-4o" },
{ "id": "azure:gpt-4o", "name": "azure:gpt-4o" }
]
}
}
},
"agents": {
"defaults": {
"model": { "primary": "openai/gpt-4o" },
"models": {
"openai/gpt-4o": {}
}
}
}
}{
"channels": {
"telegram": {
"enabled": true,
"botToken": "123:abc",
"dmPolicy": "open",
"allowFrom": ["*"],
"groups": { "*": { "requireMention": true } }
},
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN"
},
"feishu": {
"enabled": true,
"dmPolicy": "open",
"accounts": {
"main": {
"appId": "cli_xxx",
"appSecret": "xxx",
"botName": "MyBot"
}
}
},
"qqbot": {
"enabled": true,
"allowFrom": ["*"],
"appId": "1903321275",
"clientSecret": "xxxx"
}
}
}QQ 说明:
- 需要安装
@tencent-connect/openclaw-qqbot - 面板内提供状态检测和安装入口
- 若报
plugins.allow is empty,需在openclaw.json中允许openclaw-qqbot
GET /api/status
GET /api/config
POST /api/config
POST /api/config/reset
POST /api/config/validate
POST /api/config/analyze-impact
GET /api/management/access
POST /api/management/access
GET /api/security/api-key-protection
POST /api/security/api-key-protection
GET /api/logs?lines=100
GET /api/console/url
GET /api/system/paths
管理访问说明:
- 默认允许远程访问管理面板/API(进程仍监听
0.0.0.0,请确保网络环境可信) - 如需收敛访问面,可在 WebUI 的「系统」->「管理访问」中切换为仅本机访问;切换后非回环来源会收到
403 forbidden - 该设置保存后立即生效,并持久化到
/var/apps/oc-deploy/var/management-access.json - 项目决策:不引入本地账号/密码认证;管理面板访问控制仅通过网络边界(内网/反代)与“管理访问”开关实现
POST /api/models/add
POST /api/models/primary
POST /api/models/delete
POST /api/models/test/prepare
POST /api/models/test
POST /api/channels/upsert
POST /api/channels/delete
POST /api/tools/profile
高频写回说明:
- 模型主模型切换已走
POST /api/models/primary - 渠道新增/编辑已走
POST /api/channels/upsert - 渠道删除已走
POST /api/channels/delete - Tool Profiles 切换已走
POST /api/tools/profile POST /api/config继续保留给 JSON 编辑器、配置导入和高级用户全量编辑
POST /api/gateway/start
POST /api/gateway/stop
POST /api/gateway/restart
GET /api/version/current
GET /api/version/latest
POST /api/version/update
GET /api/plugins/qqbot/status
POST /api/plugins/qqbot/install
GET /api/plugins/wecom/status
POST /api/plugins/wecom/install
GET /api/backup/export
POST /api/backup/import
GET /api/skills/search?q=xxx
GET /api/skills/list
POST /api/skills/install
POST /api/skills/uninstall
POST /api/skills/toggle
POST /api/skills/update
注意:
/api/version/update已实现基础升级流程(停止 Gateway -> npm 安装最新 OpenClaw -> 重启 Gateway)
以下变量在 app/server/core/env.js 中读取,可用于覆盖默认行为:
| 变量名 | 默认值 | 说明 |
|---|---|---|
MANAGEMENT_PORT |
18790 |
Management API 监听端口 |
BIND_ADDR |
0.0.0.0 |
Management API 监听地址(默认监听所有网卡) |
TRIM_PKGVAR |
/var/apps/oc-deploy/var |
应用数据目录(日志、PID、运行时文件) |
TRIM_APPDEST |
/var/apps/oc-deploy/target |
应用静态资源根目录(管理界面位于 ${TRIM_APPDEST}/ui) |
USER_BACKUP_ROOT |
/root/oc-deploy/user-backups |
手动导出/导入前备份的持久化目录 |
MAX_BACKUP_UPLOAD_BYTES |
536870912 |
完整备份导入的最大上传体积限制(字节) |
MODEL_TEST_TIMEOUT_MS |
15000 |
模型连通性测试超时时间(毫秒) |
SKILLS_SEARCH_API |
https://lightmake.site/api/v1/search |
技能搜索接口地址 |
SKILLS_PRIMARY_DOWNLOAD_API |
https://lightmake.site/api/v1/download |
技能主下载接口地址 |
SKILLS_FALLBACK_DOWNLOAD_BASE |
https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/skills |
技能备用下载地址前缀 |
export TRIM_PKGVAR="/tmp/oc-deploy-test"
export TRIM_APPDEST="$(pwd)/app"
export MANAGEMENT_PORT="18790"
export BIND_ADDR="0.0.0.0"
export GATEWAY_PORT="18789"
node app/server/management-api.jsbash test/smoke.shbash test/backup-import-regression.sh该测试会走完整的 /api/backup/export + /api/backup/import 链路,验证 multipart 备份导入、恢复结果与流式上传实现。
当前 smoke 基线覆盖:
- management-api 启动与
GET /api/status - 静态首页可访问
- 静态资源
ETag / 304协商 GET /dashboard/在 Gateway 未启动时返回 fallback 页面GET /api/configPOST /api/config/validateGET /api/console/urlGET /api/logs
chmod +x cmd/main cmd/install_callback cmd/install_init cmd/uninstall_init cmd/upgrade_init cmd/upgrade_callback
chmod +x app/server/management-api.js
tar -czf oc-deploy.fpk app/ cmd/ config/ manifest wizard/ss -ltn | grep 18790
lsof -ti:18790 | xargs kill -9
tail -n 100 /var/apps/oc-deploy/var/info.log优先区分报错类型:
- 浏览器直接显示“拒绝连接”:先检查
18790端口是否真的在 NAS 上监听、是否被宿主机/防火墙拦截,以及反向代理是否回源到正确地址 - 接口返回
403 forbidden:说明请求已经到达管理服务,但被“管理访问”策略拒绝 - 接口返回
502 bad gateway:通常是 fnOS 中继、反向代理或回源链路本身异常,不是前端表单参数问题
建议排查:
ss -ltnp | grep 18790
curl -i http://127.0.0.1:18790/api/status
curl -i http://127.0.0.1:18790/api/management/access
tail -n 100 /var/apps/oc-deploy/var/info.logls -la /var/apps/oc-deploy/var/node_modules/.bin/openclaw
tail -n 100 /var/apps/oc-deploy/var/openclaw.log常见于模型配置不匹配导致上游没有返回可用响应体,优先检查:
- 模型 ID
- Base URL
- API 协议 / API 类型
是否与供应商文档一致。
若出现 plugins.allow is empty,在 openclaw.json 中加入:
{
"plugins": {
"allow": ["openclaw-qqbot"]
}
}CLAUDE.md:开发与维护说明TODO.md:需求与迭代清单docs/PHASE0_BASELINE.md:当前运行基线docs/MINIMAL_REGRESSION_CHECKLIST.md:最小回归检查清单docs/PROJECT_ANALYSIS.md:项目结构分析docs/IMPLEMENTATION_PLAN.md:分阶段实施计划test/README.md:本地测试脚本说明
- OpenClaw 官方:
https://openclaw.ai - OpenClaw 文档:
https://docs.openclaw.ai - 项目仓库:
https://github.com/iridite/openclawer
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- Manifest 版本:
1.2.1 - Release 标签:
v1.2.1 - 最后更新:
2026-03-17 - 维护者: @iridite
本项目是社区贡献的 FPK 打包版本,非 OpenClaw 官方发布。
如果觉得这个项目对你有帮助,请给个 ⭐️ Star 支持一下!
Made with ❤️ by the community




