環(huán)境:Mission Control 安全部署完整清單(Bearer認(rèn)證、HMAC Webhook 與 SQLite 備份))
從本地到生產(chǎn)環(huán)境Mission Control 安全部署完整清單Bearer認(rèn)證、HMAC Webhook 與 SQLite 備份【免費(fèi)下載鏈接】mission-controlThe worlds first Autonomous Product Engine (APE): AI agents research your market, generate features, and ship code as PRs. Convoy mode, crash recovery, cost tracking, 80 API endpoints. Self-hosted via OpenClaw Gateway.項(xiàng)目地址: https://gitcode.com/gh_mirrors/mission/mission-controlMission Control 是一款可自托管的自主產(chǎn)品引擎Autonomous Product EngineAI Agent 負(fù)責(zé)研究市場(chǎng)、生成功能點(diǎn)并把代碼以 PR 的形式交付。當(dāng)你準(zhǔn)備把它從開發(fā)機(jī)遷到服務(wù)器時(shí)安全配置就是重中之重。本文將帶你完整走完生產(chǎn)部署流程Bearer Token API 認(rèn)證、HMAC 簽名的 Webhook 校驗(yàn)、以及 SQLite 數(shù)據(jù)庫的備份與恢復(fù)附一份可直接勾選的部署清單。為什么要先做安全部署Mission Control 暴露了 80 個(gè) API 端點(diǎn)其中包含創(chuàng)建/刪除 Agent、回滾數(shù)據(jù)庫、恢復(fù)備份等敏感操作。默認(rèn)情況下它面向本地開發(fā)設(shè)計(jì)不設(shè)置MC_API_TOKEN時(shí)API 認(rèn)證是關(guān)閉的且啟動(dòng)時(shí)會(huì)打印一條[SECURITY WARNING]警告Webhook 未配置密鑰時(shí)會(huì)跳過簽名校驗(yàn)僅限開發(fā)環(huán)境所有敏感值都應(yīng)放在.env.local已被 gitignore絕不提交到倉庫因此上生產(chǎn)環(huán)境的第一原則先把認(rèn)證和密鑰配好再開服務(wù)。完整的官方指引見 PRODUCTION_SETUP.md。第一步配置 Bearer Token 認(rèn)證認(rèn)證邏輯集中在 src/middleware.ts它攔截所有/api/*請(qǐng)求規(guī)則非常清晰請(qǐng)求類型認(rèn)證方式瀏覽器同源請(qǐng)求UI 調(diào)自己的 API自動(dòng)放行校驗(yàn) Origin/Referer外部 API 調(diào)用curl、Agent 編排必須攜帶Authorization: Bearer tokenSSE 實(shí)時(shí)流/api/events/stream支持?tokentoken查詢參數(shù)/api/health*健康檢查免認(rèn)證供外部監(jiān)控探測(cè)/api/webhooks/*走各自的 HMAC 簽名校驗(yàn)見下文操作要點(diǎn)生成一個(gè)高強(qiáng)度令牌openssl rand -hex 32寫入.env.localMC_API_TOKEN你的令牌重啟服務(wù)后用一條不帶令牌的請(qǐng)求驗(yàn)證是否返回 401curl -i http://your-server:4000/api/agents # 預(yù)期401 Unauthorized 另外DEMO_MODEtrue可一鍵開啟只讀演示模式所有寫操作POST/PUT/DELETE會(huì)被直接攔截返回 403非常適合公網(wǎng)展示實(shí)例。第二步為 Webhook 配置 HMAC 簽名密鑰Webhook 是外部系統(tǒng)GitHub、Jira、Agent回調(diào) Mission Control 的入口必須校驗(yàn)簽名防止偽造事件觸發(fā)回滾等危險(xiǎn)操作。三條 Webhook 路由各自獨(dú)立驗(yàn)簽1. GitHub WebhookPR 合并 / CI 失敗回滾源碼見 src/app/api/webhooks/github/route.ts環(huán)境變量GITHUB_WEBHOOK_SECRET校驗(yàn)X-Hub-Signature-256頭用createHmac(sha256)重算摘要并用timingSafeEqual做恒定時(shí)間比較防時(shí)序攻擊簽名不匹配直接返回 4012. Jira Webhook工單同步源碼見 src/app/api/webhooks/jira/route.ts密鑰來自 Jira 集成配置JiraConfig.webhookSecret校驗(yàn)X-Hub-Signaturesha256hex格式未配置 Jira 時(shí)端點(diǎn)返回 503不會(huì)泄露內(nèi)部狀態(tài)3. Agent 完成回調(diào)源碼見 src/app/api/webhooks/agent-completion/route.ts環(huán)境變量WEBHOOK_SECRET校驗(yàn)x-webhook-signature頭同樣是 HMAC-SHA256操作要點(diǎn)每個(gè)來源使用獨(dú)立的密鑰不要復(fù)用同一個(gè)密鑰全部通過環(huán)境變量注入生產(chǎn)配置示例GITHUB_WEBHOOK_SECRETopenssl rand -hex 32 WEBHOOK_SECRETopenssl rand -hex 32第三步生產(chǎn)環(huán)境變量與構(gòu)建參考 PRODUCTION_SETUP.md 中的生產(chǎn)章節(jié)創(chuàng)建.env.production.localNODE_ENVproduction DATABASE_PATH/var/lib/mission-control/mission-control.db WORKSPACE_BASE_PATH/var/lib/mission-control/workspace PROJECTS_PATH/var/lib/mission-control/workspace/projects MISSION_CONTROL_URLhttps://mission-control.yourdomain.com OPENCLAW_GATEWAY_URLwss://gateway.yourdomain.com OPENCLAW_GATEWAY_TOKENopenssl rand -hex 32 MC_API_TOKENopenssl rand -hex 32然后執(zhí)行構(gòu)建與啟動(dòng)npm run build npm start?? 遠(yuǎn)程連接 OpenClaw Gateway 時(shí)必須配置OPENCLAW_GATEWAY_TOKEN本地回環(huán)連接ws://127.0.0.1:18789則無需令牌。Docker 部署可選項(xiàng)目自帶 docker-compose.yml 與 Dockerfile數(shù)據(jù)庫和工作區(qū)分別掛載到mission-control-data、mission-control-workspace兩個(gè)卷數(shù)據(jù)庫固定寫入容器內(nèi)/app/data/。備份卷與代碼卷分離后升級(jí)鏡像不會(huì)丟失數(shù)據(jù)。第四步SQLite 數(shù)據(jù)庫備份與恢復(fù)Mission Control 的所有狀態(tài)都存在 SQLite 數(shù)據(jù)庫DATABASE_PATH指定默認(rèn)./mission-control.db。備份服務(wù)實(shí)現(xiàn)在 src/lib/backup.ts幾個(gè)值得注意的安全設(shè)計(jì)備份前先wal_checkpoint(TRUNCATE)把 WAL 日志刷入主庫文件保證備份是完整一致的備份文件命名為mc-backup-{時(shí)間戳}-v{遷移版本}.db存入backups/目錄版本化便于回溯恢復(fù)前先自動(dòng)創(chuàng)建pre-restore-*安全備份——即使恢復(fù)錯(cuò)了也能再回退恢復(fù)后自動(dòng)清理陳舊的-wal/-shm文件配置 S3含 MinIO 等兼容存儲(chǔ)后可自動(dòng)上傳遠(yuǎn)端實(shí)現(xiàn)異地容災(zāi)通過 API 管理備份端點(diǎn)作用GET /api/admin/backups列出本地 S3 全部備份POST /api/admin/backups立即創(chuàng)建一份備份POST /api/admin/backups/restore從指定備份恢復(fù)見 src/app/api/admin/backups/restore/route.tsDELETE /api/admin/backups/[id]刪除備份本地S3 同步刪除例如在服務(wù)器上用 Bearer 令牌手動(dòng)打一份備份curl -X POST https://your-server/api/admin/backups \ -H Authorization: Bearer $MC_API_TOKEN建議的備份策略每日 cron 調(diào)用一次POST /api/admin/backups再配合 S3 上傳保留 30 天異地副本。? 生產(chǎn)部署前最終核對(duì)清單MC_API_TOKEN已配置未認(rèn)證請(qǐng)求返回 401GITHUB_WEBHOOK_SECRET、WEBHOOK_SECRET、Jira webhook secret 均已設(shè)置且互不相同OPENCLAW_GATEWAY_TOKEN已配置遠(yuǎn)程 Gateway 場(chǎng)景DATABASE_PATH指向持久化目錄Docker 卷 //var/lib至少成功執(zhí)行過一次備份與恢復(fù)演練S3 配置可選S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY/S3_SECRET_KEY生效.env*文件未提交到版本庫公網(wǎng)訪問走 HTTPSMISSION_CONTROL_URL使用 https 地址走完這份清單你的 Mission Control 就從本地能跑變成了生產(chǎn)可用。更多細(xì)節(jié)可參考 docs/ 目錄下的 AGENT_PROTOCOL.md 與 ORCHESTRATION_WORKFLOW.md?!久赓M(fèi)下載鏈接】mission-controlThe worlds first Autonomous Product Engine (APE): AI agents research your market, generate features, and ship code as PRs. Convoy mode, crash recovery, cost tracking, 80 API endpoints. Self-hosted via OpenClaw Gateway.項(xiàng)目地址: https://gitcode.com/gh_mirrors/mission/mission-control創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考