部署 mem0和supermemory — 生命周期管理手册

部署 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 dfdocker system prune -a -f --volumes(注意备份)