Keep/DOCKER-UPDATE-SUMMARY.md

180 lines
6.4 KiB
Markdown

# Mise à jour Docker Compose - Résumé des changements
## Date: 3 Février 2026
### Analyse effectuée avec @sequential-thinking
## Problèmes identifiés
### 1. Port incohérent
- **Avant**: Dockerfile exposait 3000, mais index-sse.js utilisait 3001
- **Après**: Exposition du port 3001 cohérente
### 2. Chemin de base de données hardcodé
- **Avant**: index.js avait `file:D:/dev_new_pc/Keep/keep-notes/prisma/dev.db` (chemin Windows absolu)
- **Après**: Utilisation de la variable `DATABASE_URL` pointant vers `/app/db/dev.db`
### 3. Pas de mode de transport configurable
- **Avant**: MCP serveur toujours en mode stdio
- **Après**: Support des modes `stdio` (Claude Desktop) et `sse` (HTTP/N8N)
### 4. Healthcheck inadéquat
- **Avant**: Healthcheck générique Node.js
- **Après**: Healthcheck spécifique au mode (HTTP pour SSE, Node pour stdio)
### 5. Volumes mal configurés
- **Avant**: Chemins incohérents entre keep-notes et mcp-server
- **Après**: Volume partagé `db-data` monté correctement sur les deux services
## Fichiers mis à jour
### 1. docker-compose.yml
**Changements principaux:**
- ✅ Port 3001 exposé pour mcp-server
- ✅ Variables d'environnement `MCP_MODE` et `MCP_PORT` ajoutées
-`DATABASE_URL` configuré pour mcp-server
- ✅ Volume `db-data` cohérent entre services
- ✅ Healthcheck conditionnel selon le mode
- ✅ Dépendance `condition: service_healthy` pour keep-notes
- ✅ Profile `ollama` pour le service optionnel
- ✅ Limites de ressources configurées
-`NEXT_TELEMETRY_DISABLED=1` ajouté
### 2. .env.docker.example
**Nouvelles variables:**
```env
# MCP Server Configuration
MCP_MODE="stdio" # ou "sse"
MCP_PORT="3001"
# AI Provider Configuration complète
AI_PROVIDER_TAGS=
AI_PROVIDER_EMBEDDING=
AI_MODEL_TAGS=
AI_MODEL_EMBEDDING=
```
### 3. mcp-server/Dockerfile
**Améliorations:**
- ✅ Installation de curl et wget pour les healthchecks
- ✅ Exposition du port 3001 (au lieu de 3000)
- ✅ Script de démarrage dynamique (`start.sh`) avec support MCP_MODE
- ✅ Healthcheck conditionnel (HTTP pour SSE, Node pour stdio)
### 4. DOCKER-SETUP.md
**Nouvelle documentation:**
- ✅ Table des matières ajoutée
- ✅ Section "Configuration du MCP Server" complète
- ✅ Documentation des deux modes (stdio vs SSE)
- ✅ Endpoints SSE documentés
- ✅ Guide d'utilisation avec N8N
- ✅ Guide d'utilisation avec Claude Desktop
- ✅ Commandes Docker utiles
## Configuration recommandée
### Pour Claude Desktop (local)
```env
# .env.docker
MCP_MODE="stdio"
NEXTAUTH_URL="http://localhost:3000"
```
### Pour N8N (remote)
```env
# .env.docker
MCP_MODE="sse"
MCP_PORT="3001"
NEXTAUTH_URL="http://192.168.1.190:3000"
AI_PROVIDER_TAGS=openai
AI_PROVIDER_EMBEDDING=openai
OPENAI_API_KEY="sk-..."
```
### Avec Ollama local
```bash
# Démarrer avec le profil ollama
docker compose --profile ollama up -d
```
## Commandes de déploiement
```bash
# 1. Copier et configurer l'environnement
cp .env.docker.example .env.docker
nano .env.docker # Éditer avec vos valeurs
# 2. Rebuild complet (recommandé après mise à jour)
docker compose down
docker compose build --no-cache
docker compose up -d
# 3. Vérifier l'état
docker compose ps
docker compose logs -f
# 4. Avec Ollama (optionnel)
docker compose --profile ollama up -d
```
## Points de vigilance
1. **Base de données**: Le volume `db-data` est partagé entre keep-notes et mcp-server. Assurez-vous que les deux services utilisent le même fichier SQLite.
2. **MCP Mode**: Le mode par défaut est `stdio`. Passez à `sse` uniquement si vous utilisez N8N ou un client HTTP distant.
3. **Port 3001**: En mode SSE, le port 3001 doit être accessible. Configurez votre firewall si nécessaire.
4. **Ollama**: Le service Ollama utilise le profil `ollama` et n'est pas démarré par défaut. Utilisez `--profile ollama` pour l'activer.
## Tests recommandés
```bash
# Test healthcheck keep-notes
curl http://localhost:3000
# Test healthcheck MCP (mode SSE)
curl http://localhost:3001
# Test endpoint SSE
curl http://localhost:3001/sse
# Voir les logs
docker compose logs -f mcp-server
```
## Architecture mise à jour
```
┌─────────────────────────────────────────────────────┐
│ Docker Network │
│ (memento-network) │
├─────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ keep-notes │◄────►│ mcp-server │ │
│ │ Port 3000 │ │ Port 3001 │ │
│ │ (Web App) │ │ (MCP/SSE) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ └──────────┬───────────┘ │
│ │ │
│ ┌─────┴─────┐ │
│ │ db-data │ (SQLite partagé) │
│ └───────────┘ │
│ │
│ ┌──────────────┐ (optionnel avec --profile ollama) │
│ │ ollama │ │
│ │ Port 11434 │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
```
## Prochaines étapes suggérées
1. **Corriger le hardcoded path** dans `mcp-server/index.js` ligne 21 pour utiliser `DATABASE_URL`
2. **Tester les deux modes** (stdio et SSE)
3. **Configurer N8N** avec l'endpoint SSE si besoin
4. **Documenter les modèles Ollama** recommandés dans le README