You've already forked mnemory
mnemory deployment
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.env
|
||||
data
|
||||
@@ -1 +1,2 @@
|
||||
mnemory
|
||||
# mnemory
|
||||
Self-hosted MCP memory server for LLMs — [fpytloun/mnemory](https://github.com/fpytloun/mnemory).
|
||||
|
||||
89
docker-compose.yml
Normal file
89
docker-compose.yml
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
services:
|
||||
mnemory:
|
||||
image: genunix/mnemory:${MNEMORY_VERSION}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
qdrant:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- DATA_DIR=/data
|
||||
- MCP_HOST=0.0.0.0
|
||||
- MCP_PORT=8050
|
||||
- MGMT_HOST=127.0.0.1
|
||||
- MGMT_PORT=9090
|
||||
- MCP_API_KEY=${MCP_API_KEY}
|
||||
- SERVER_BASE_URL=${SERVER_BASE_URL}
|
||||
- INSTRUCTION_MODE=${INSTRUCTION_MODE}
|
||||
- ENABLE_METRICS=${ENABLE_METRICS}
|
||||
- ENABLE_DELETE_ALL=${ENABLE_DELETE_ALL}
|
||||
- LOG_LEVEL=${LOG_LEVEL}
|
||||
- DEFAULT_TIMEZONE=${TIMEZONE}
|
||||
- LLM_API_KEY=${LLM_API_KEY}
|
||||
- LLM_BASE_URL=${LLM_BASE_URL}
|
||||
- LLM_MODEL=${LLM_MODEL}
|
||||
- EMBED_API_KEY=${EMBED_API_KEY}
|
||||
- EMBED_BASE_URL=${EMBED_BASE_URL}
|
||||
- EMBED_MODEL=${EMBED_MODEL}
|
||||
- EMBED_DIMS=${EMBED_DIMS}
|
||||
- QDRANT_HOST=qdrant
|
||||
- QDRANT_PORT=6333
|
||||
- QDRANT_API_KEY=${QDRANT_API_KEY}
|
||||
- QDRANT_COLLECTION=${QDRANT_COLLECTION}
|
||||
- ARTIFACT_BACKEND=filesystem
|
||||
- ARTIFACT_PATH=/data/artifacts
|
||||
- SESSION_BACKEND=sqlite
|
||||
- SESSION_PATH=/data/sessions.db
|
||||
- FSCK_AUTO_INTERVAL=${FSCK_AUTO_INTERVAL}
|
||||
healthcheck:
|
||||
test: ["CMD", "httpx", "http://127.0.0.1:9090/health"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
start_period: 20s
|
||||
retries: 3
|
||||
labels:
|
||||
### Section Træfik
|
||||
- traefik.enable=${TRAEFIK_ENABLED}
|
||||
- traefik.docker.network=${TRAEFIK_NETWORK}
|
||||
## HTTP
|
||||
- traefik.http.routers.http-${TRAEFIK_ROUTER}.entrypoints=http
|
||||
# redirect to HTTPS only
|
||||
- traefik.http.routers.http-${TRAEFIK_ROUTER}.middlewares=${TRAEFIK_HTTP_MIDDLEWARES}
|
||||
- traefik.http.routers.http-${TRAEFIK_ROUTER}.rule=${TRAEFIK_MATCHRULE}
|
||||
## HTTPS
|
||||
- traefik.http.routers.https-${TRAEFIK_ROUTER}.entrypoints=https
|
||||
# configure the exposed service
|
||||
- traefik.http.routers.https-${TRAEFIK_ROUTER}.middlewares=${TRAEFIK_HTTPS_MIDDLEWARES}
|
||||
- traefik.http.routers.https-${TRAEFIK_ROUTER}.rule=${TRAEFIK_MATCHRULE}
|
||||
# enable TLS and its certificate provider
|
||||
- traefik.http.routers.https-${TRAEFIK_ROUTER}.tls=${TRAEFIK_TLSENABLED}
|
||||
- traefik.http.routers.https-${TRAEFIK_ROUTER}.tls.certresolver=${TRAEFIK_CERTRESOLVER}
|
||||
# specify a service so a custom port can be used
|
||||
- traefik.http.services.${TRAEFIK_SERVICE}.loadbalancer.server.port=${TRAEFIK_SERVICE_PORT}
|
||||
networks:
|
||||
- internal
|
||||
- traefik
|
||||
volumes:
|
||||
- ${MNEMORY_DATA}:/data
|
||||
|
||||
qdrant:
|
||||
image: qdrant/qdrant:${QDRANT_VERSION}
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", ":> /dev/tcp/127.0.0.1/6333"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
start_period: 10s
|
||||
retries: 5
|
||||
networks:
|
||||
- internal
|
||||
volumes:
|
||||
- ${QDRANT_DATA}:/qdrant/storage
|
||||
|
||||
networks:
|
||||
internal:
|
||||
traefik:
|
||||
external: true
|
||||
name: ${TRAEFIK_NETWORK}
|
||||
40
env.example
Normal file
40
env.example
Normal file
@@ -0,0 +1,40 @@
|
||||
# Træfik
|
||||
TRAEFIK_ENABLED=true
|
||||
TRAEFIK_NETWORK=traefik
|
||||
TRAEFIK_ROUTER=mnemory_example_com
|
||||
TRAEFIK_SERVICE=mnemory_example_com
|
||||
TRAEFIK_SERVICE_PORT=8050
|
||||
TRAEFIK_MATCHRULE=Host(`mnemory.example.com`)
|
||||
TRAEFIK_TLSENABLED=true
|
||||
TRAEFIK_CERTRESOLVER=letsencrypt
|
||||
TRAEFIK_HTTP_MIDDLEWARES=http-to-https
|
||||
TRAEFIK_HTTPS_MIDDLEWARES=hsts
|
||||
|
||||
# Mnemory
|
||||
MNEMORY_VERSION=latest
|
||||
MNEMORY_DATA=./data/mnemory
|
||||
SERVER_BASE_URL=https://mnemory.example.com
|
||||
MCP_API_KEY=changeme
|
||||
INSTRUCTION_MODE=proactive
|
||||
ENABLE_METRICS=true
|
||||
ENABLE_DELETE_ALL=false
|
||||
LOG_LEVEL=INFO
|
||||
FSCK_AUTO_INTERVAL=24
|
||||
TIMEZONE=Europe/London
|
||||
|
||||
# LLM (OpenAI-compatible — default xAI)
|
||||
LLM_API_KEY=xai-changeme
|
||||
LLM_BASE_URL=https://api.x.ai/v1
|
||||
LLM_MODEL=grok-4.5
|
||||
|
||||
# Embeddings (separate provider — xAI has no standalone embedding model)
|
||||
EMBED_API_KEY=sk-changeme
|
||||
EMBED_BASE_URL=https://api.openai.com/v1
|
||||
EMBED_MODEL=text-embedding-3-small
|
||||
EMBED_DIMS=1536
|
||||
|
||||
# Qdrant
|
||||
QDRANT_VERSION=v1.18.3
|
||||
QDRANT_DATA=./data/qdrant
|
||||
QDRANT_API_KEY=changeme
|
||||
QDRANT_COLLECTION=mnemory
|
||||
Reference in New Issue
Block a user