180 lines
6.4 KiB
Markdown
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
|