| title | 部署 | ||||||
|---|---|---|---|---|---|---|---|
| sidebarTitle | 部署 | ||||||
| description | 安装并在生产环境运行 Mycel | ||||||
| icon | cloud | ||||||
| keywords |
|
必须:
- Python 3.11+
uv包管理器 — 安装指南- Node.js 18+(Web UI 需要)
- Git
可选(按沙箱提供商):
- Docker daemon — 用于 Docker 沙箱提供商
- E2B API Key — e2b.dev
- Daytona API Key — daytona.io 或自建实例
- AgentBay API Key 和区域访问权限
# 按需安装沙箱提供商
uv sync --extra e2b # E2B
uv sync --extra daytona # Daytona
uv sync --extra sandbox # AgentBay
uv sync --extra all # 全部
```
Docker 开箱即用,只需安装 Docker 本体。
Mycel 服务配置来自进程环境变量和显式 server 配置。Agent config、Skill、thread、Library resource、用户 profile 都是产品状态,必须通过已配置的后端存储保存。
在 shell 中导出变量,或用 ENV_FILE 指向一个明确的 env 文件:
ANTHROPIC_API_KEY=sk-ant-xxx
# 或使用 OpenAI 兼容格式:
# OPENAI_API_KEY=your-key
# OPENAI_BASE_URL=https://api.openai.com/v1
# MODEL_NAME=gpt-4o之前的 deploy/local-communication/compose.yml 路径已经移除,因为它从手写 schema 分叉启动。那条路径只能作为历史证明,不能作为自部署契约。
deploy/cli-minimal/compose.yml 是当前的 CLI-minimal 本地通信配置形态。它复用正式 Mycel app schema/init path,运行 PostgreSQL + PostgREST,通过很薄的 nginx gateway 暴露 /rest/v1/*,并用 MYCEL_RUNTIME_PROFILE=communication 启动后端。
它不是完整 Mycel 平台。完整部署目前仍由根目录 docker-compose.yml 加 operator 管理的 Supabase/Coolify 配置表示,还没有被提升为 deploy/full 这个公开自部署契约。
启动仅本机访问的配置形态:
python3 deploy/cli-minimal/generate-env.py > deploy/cli-minimal/.env
docker compose --env-file deploy/cli-minimal/.env -f deploy/cli-minimal/compose.yml up如果要让另一台机器连接,显式发布 URL,然后让 cel 连接它:
python3 deploy/cli-minimal/generate-env.py \
--bind-host 0.0.0.0 \
--public-url http://<host-or-lan-ip>:8042 \
> deploy/cli-minimal/.env
docker compose --env-file deploy/cli-minimal/.env -f deploy/cli-minimal/compose.yml up
cel connect http://<host-or-lan-ip>:8042# 终端 1:后端
uv run python -m backend.web.main
# → http://localhost:8001
# 终端 2:前端
cd frontend/app && npm run dev
# → http://localhost:5173覆盖后端端口:
PORT=9000 uv run python -m backend.web.main
# 或
LEON_BACKEND_PORT=9000 uv run python -m backend.web.main完整配置参见沙箱文档,以下为快速参考:
设置 LEON_SANDBOXES_DIR 指向沙箱提供商配置目录,然后在该目录下创建 docker.json:
{
"provider": "docker",
"on_exit": "pause",
"docker": {
"image": "python:3.12-slim",
"mount_path": "/workspace"
}
}{
"provider": "e2b",
"on_exit": "pause",
"e2b": {
"api_key": "${E2B_API_KEY}",
"template": "base",
"cwd": "/home/user",
"timeout": 300
}
}{
"provider": "daytona",
"on_exit": "pause",
"daytona": {
"api_key": "${DAYTONA_API_KEY}",
"api_url": "https://app.daytona.io/api",
"cwd": "/home/daytona"
}
}{
"provider": "daytona",
"on_exit": "pause",
"daytona": {
"api_key": "${DAYTONA_API_KEY}",
"api_url": "http://localhost:3986/api",
"target": "us",
"cwd": "/workspace"
}
}自建环境要求:
- Runner 容器镜像中 bash 路径为
/usr/bin/bash - 工作区镜像中 bash 路径为
/usr/bin/bash - Runner 必须同时在 compose 网络和 Docker bridge 网络上
Docker Compose 网络配置:
services:
daytona-runner:
image: your-runner-image-with-bash
environment:
- RUNNER_DOMAIN=runner # 不能是 localhost
networks:
- default
- bridge
networks:
bridge:
external: true在 Runner 的 /etc/hosts 中添加:
127.0.0.1 proxy.localhost
Daytona Proxy(端口 4000)必须从 Runner 可访问,文件操作依赖它。
{
"provider": "agentbay",
"on_exit": "pause",
"agentbay": {
"api_key": "${AGENTBAY_API_KEY}",
"region_id": "ap-southeast-1",
"context_path": "/home/wuying"
}
}打开 Web UI http://localhost:5173,注册账号,确认 Agent 正常响应。
Mycel runtime storage 是显式配置的。当前本地通信 compose 使用 PostgreSQL 和 PostgREST,并通过与线上后端相同的 Supabase-style storage client 访问。完整生产部署应提供自己的 Supabase-compatible storage 和密钥。
请使用对应数据库的工具进行备份。不要把本地通信 compose 的数据当成生产存储。
- API Key 存储在部署密钥系统或明确指定的 env 文件中,不要写入代码或版本控制
- 在 JSON 配置文件中使用
${VAR}引用而不是硬编码 Key - 使用 env 文件时限制文件权限:
chmod 600 /path/to/mycel.env block_dangerous_commands配置项(默认true)可屏蔽rm -rf等危险命令
若环境中有 HTTP 代理:
# 防止代理影响 LLM 客户端或 Docker CLI
env -u ALL_PROXY -u all_proxy uv run python -m backend.web.main1. 工作区镜像中 bash 路径为 `/usr/bin/bash` — 用 `docker run <image> /usr/bin/bash -c "echo ok"` 验证
2. Runner 中 bash 路径为 `/usr/bin/bash`
3. Runner 在 Docker bridge 网络上(参见上方 Docker Compose 配置)
4. Daytona Proxy(端口 4000)从 Runner 可访问 — 用 `curl http://proxy.localhost:4000` 验证
常见错误信息:
- `fork/exec /usr/bin/bash: no such file or directory` → 工作区镜像缺少 bash
- `Failed to create sandbox within 60s` → 网络隔离问题,检查 Runner 网络配置
- 文件操作静默失败 → Daytona Proxy 不可达