From d3c759e8338d74ce351bb376fc09ea7858d7895d Mon Sep 17 00:00:00 2001 From: kappa Date: Sat, 28 Mar 2026 13:41:19 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20OpenMemory=20K3s=20=EB=B0=B0=ED=8F=AC?= =?UTF-8?q?=20=EB=B0=8F=20kaniko=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=88=EC=B0=A8=20=EC=B6=94=EA=B0=80=20(v1.0.8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/openmemory.md | 81 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 9 deletions(-) diff --git a/services/openmemory.md b/services/openmemory.md index d78fded..cce3361 100644 --- a/services/openmemory.md +++ b/services/openmemory.md @@ -1,6 +1,6 @@ --- title: OpenMemory (Mem0) -updated: 2026-03-14 +updated: 2026-03-28 tags: - service - ai @@ -55,23 +55,86 @@ DB: SQLite(`openmemory.db`) + Qdrant 벡터 스토어 이중 구조. Alembic으 - **백업/복원**: 데이터 백업 내장 - **다중 벡터 스토어**: Qdrant, pgvector, Redis, Milvus 등 8개 백엔드 -## 설치 +## K3s 배포 + +K3s `openmemory` 네임스페이스에 배포. 매니페스트: `gitea.inouter.com/kaffa/k3s-config` → `openmemory/resources.yaml` + +| 컴포넌트 | 이미지 | 상태 | +|----------|--------|------| +| openmemory-mcp | `gitea.inouter.com/kaffa/openmemory-mcp:1.0.8` | Deployment, imagePullPolicy: Always | +| openmemory-ui | `mem0/openmemory-ui:latest` | Deployment | +| qdrant | `qdrant/qdrant:latest` | Deployment | + +| 항목 | 값 | +|------|-----| +| MCP SSE | `https://mem0.inouter.com/mcp/claude-code/sse/kaffa` | +| UI | `https://mem0.inouter.com` (HTTPRoute 경유) | +| API 문서 | `https://mem0.inouter.com/docs` | +| DB | SQLite (`openmemory.db`, PVC `openmemory-data`) + Qdrant 벡터 | +| Secret | `openmemory-secrets` (OPENAI_API_KEY) | +| Registry | `gitea-registry` (imagePullSecrets) | + +### 업데이트 절차 + +kaniko Job으로 GitHub 소스에서 빌드 → Gitea 레지스트리 push → Deployment 이미지 태그 변경: + +```bash +# 1. kaniko 빌드 (K3s 내에서 실행) +cat <<'EOF' | kubectl apply -f - +apiVersion: batch/v1 +kind: Job +metadata: + name: build-openmemory + namespace: openmemory +spec: + backoffLimit: 0 + ttlSecondsAfterFinished: 300 + template: + spec: + containers: + - name: kaniko + image: gcr.io/kaniko-project/executor:latest + args: + - "--context=git://github.com/mem0ai/mem0.git#refs/heads/main" + - "--context-sub-path=openmemory/api" + - "--destination=gitea.inouter.com/kaffa/openmemory-mcp:latest" + - "--destination=gitea.inouter.com/kaffa/openmemory-mcp:NEW_VERSION" + volumeMounts: + - name: docker-config + mountPath: /kaniko/.docker/ + volumes: + - name: docker-config + secret: + secretName: gitea-registry + items: + - key: .dockerconfigjson + path: config.json + restartPolicy: Never +EOF + +# 2. 빌드 완료 확인 +kubectl logs -f job/build-openmemory -n openmemory + +# 3. 이미지 전환 +kubectl set image deploy/openmemory-mcp -n openmemory \ + openmemory-mcp=gitea.inouter.com/kaffa/openmemory-mcp:NEW_VERSION + +# 4. MCP 재연결 (Claude Code에서 /mcp 실행) +``` + +### 설치 (최초, docker-compose 방식) ```bash -# 원클릭 설치 export OPENAI_API_KEY=sk-xxx curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | bash -# 수동 설치 +# 또는 수동 git clone https://github.com/mem0ai/mem0.git cd mem0/openmemory -make env # .env 템플릿 복사 -make build # Docker 이미지 빌드 -make up # 서비스 시작 +make env && make build && make up ``` -**지원 벡터 스토어** (`--vector-store=` 플래그): -Qdrant(기본), Weaviate, Redis, PostgreSQL(pgvector), Chroma, Milvus, Elasticsearch, FAISS +**지원 벡터 스토어**: Qdrant(기본), Weaviate, Redis, pgvector, Chroma, Milvus, Elasticsearch, FAISS ## Makefile 명령어