# 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