Keep/DOCKER-UPDATE-SUMMARY.md

6.4 KiB

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:

# 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.docker
MCP_MODE="stdio"
NEXTAUTH_URL="http://localhost:3000"

Pour N8N (remote)

# .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

# Démarrer avec le profil ollama
docker compose --profile ollama up -d

Commandes de déploiement

# 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

# 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