部署 mem0 和 supermemory 生命周期管理手册
一、mem0 部署
1.1 目录结构
/opt/mem0/ ├── docker-compose.yml ├── .env ├── data/ │ ├── postgres/ # PG 数据持久化 │ └── redis/ # Redis 数据(可选) └── logs/
1.2 docker-compose.yml
version: "3.8"
services:
postgres:
image: postgres:16-alpine
container_name: mem0-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-postgres}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?err}
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- mem0-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
mem0-server:
image: mem0ai/server:latest
container_name: mem0-server
restart: unless-stopped
ports:
- "3000:3000"
env_file: .env
depends_on:
postgres:
condition: service_healthy
networks:
- mem0-net
networks:
mem0-net:
driver: bridge
1.3 .env 配置
# LLM Provider
OPENAI_API_KEY=sk-xxx
# 可选: ANTHROPIC_API_KEY, GOOGLE_API_KEY
# PostgreSQL
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_strong_password
POSTGRES_COLLECTION_NAME=memories
# Auth
ADMIN_API_KEY=m0_admin_key_xxx
JWT_SECRET=your_jwt_secret_here
AUTH_DISABLED=false
# UI
DASHBOARD_URL=http://localhost:3000
APP_DB_NAME=mem0_app
# Model(可选覆盖)
MEM0_DEFAULT_LLM_MODEL=gpt-4.1-nano-2025-04-14
MEM0_DEFAULT_EMBEDDER_MODEL=text-embedding-3-small
# Telemetry
MEM0_TELEMETRY=false
1.4 启动
# 首次:创建 admin 用户并签发 API Key
cd /opt/mem0
make bootstrap
# 或手动:
docker compose up -d
# 访问 http://localhost:3000 → 走浏览器 wizard 完成设置
# 查看日志
docker compose logs -f mem0-server
# 停止
docker compose down
# 完全清理(含数据卷)
docker compose down -v
1.5 生命周期维护
| 操作 | 频率 | 命令 |
|---|---|---|
| 版本升级 | 按需 | docker compose pull && docker compose up -d |
| PG 备份 | 每日 | docker exec mem0-postgres pg_dump -U postgres postgres > backup.sql |
| 日志轮转 | 自动 | Docker 默认 json-file driver |
| 健康检查 | 按需 | curl http://localhost:3000/api/health |
二、Supermemory 部署
2.1 部署方式
Supermemory 是单二进制架构,无需 docker-compose。可通过 Docker 或直接二进制运行。
2.2 Docker 部署
docker run -d \
--name supermemory \
--restart unless-stopped \
-p 3001:3000 \
-e OPENAI_API_KEY=sk-xxx \
-e DATABASE_URL=postgresql://user:pass@host:5432/supermemory \
-v supermemory_data:/app/data \
supermemory/supermemory:latest
2.3 docker-compose.yml(推荐生产)
version: "3.8"
services:
postgres:
image: postgres:16-alpine
container_name: supermemory-pg
restart: unless-stopped
environment:
POSTGRES_DB: supermemory
POSTGRES_USER: supermemory
POSTGRES_PASSWORD: ${SUPERMEMORY_PG_PASSWORD:?err}
volumes:
- ./data/postgres:/var/lib/postgresql/data
networks:
- super-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U supermemory"]
interval: 10s
retries: 5
supermemory:
image: supermemory/supermemory:latest
container_name: supermemory-server
restart: unless-stopped
ports:
- "3001:3000"
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
DATABASE_URL: postgresql://supermemory:${SUPERMEMORY_PG_PASSWORD}@postgres:5432/supermemory
JWT_SECRET: ${SUPERMEMORY_JWT_SECRET}
NODE_ENV: production
depends_on:
postgres:
condition: service_healthy
networks:
- super-net
volumes:
- supermemory_data:/app/data
networks:
super-net:
driver: bridge
volumes:
supermemory_data:
2.4 .env 配置
OPENAI_API_KEY=sk-xxx
SUPERMEMORY_PG_PASSWORD=your_strong_password
SUPERMEMORY_JWT_SECRET=your_jwt_secret
2.5 生命周期维护
| 操作 | 频次 | 命令 |
|---|---|---|
| 启动 | — | docker compose up -d |
| 升级 | 按需 | docker compose pull && docker compose up -d |
| 备份 PG | 每日 | docker exec supermemory-pg pg_dump -U supermemory supermemory > backup.sql |
| 日志 | — | docker compose logs -f supermemory |
| 清理旧镜像 | 每月 | docker image prune -a -f |
三、Hermes 对接配置
部署完成后,在 Hermes 的 .env 中配置对应 Provider:
mem0
# Hermes .env
MEM0_API_KEY=m0_admin_key_xxx
MEM0_BASE_URL=http://localhost:3000
Supermemory
# Hermes .env
SUPERMEMORY_API_KEY=your_supermemory_api_key
SUPERMEMORY_BASE_URL=http://localhost:3001
配置后运行 hermes gateway restart 生效,然后用 hermes memory status 确认新 Provider 状态。
四、运维 checklists
日常巡检
- ✅ 容器是否正常运行:
docker ps | grep mem0/docker ps | grep supermemory - ✅ API 是否可访问:
curl http://localhost:3000/api/health - ✅ 磁盘使用率:
df -h /var/lib/docker/volumes/ - ✅ 日志有无 ERROR:
docker compose logs --since=24h \| grep ERROR
故障恢复
| 问题 | 排查 | 修复 |
|---|---|---|
| 容器反复重启 | docker compose logs | 检查 .env 配置,确保 PG 可连接 |
| PG 连接拒绝 | docker logs mem0-postgres | 检查 PG 数据卷权限,docker compose restart postgres |
| API 返回 401 | 检查 ADMIN_API_KEY / JWT_SECRET | 重新配置并重启 |
| 磁盘空间满 | docker system df | docker system prune -a -f --volumes(注意备份) |