🐘 NoteFlow utilise maintenant EXCLUSIVEMENT PostgreSQL CHANGEMENTS MAJEURS: ================== 1. Base de données (config/database.js) ✅ Remplacé par PostgreSQL (backup SQLite créé) ✅ Toutes les routes et services mis à jour ✅ database-loader.js supprimé (plus nécessaire) 2. Migration automatique (docker-entrypoint.sh) ✅ Attend que PostgreSQL soit prêt ✅ Détecte si PostgreSQL est vide ✅ Migre automatiquement SQLite si présent ✅ Lance le serveur après migration 3. Package.json ✅ Description mise à jour (PostgreSQL) ✅ Keywords: postgresql au lieu de sqlite ✅ sqlite3 gardé uniquement pour migration 4. Documentation ✅ POSTGRESQL-ONLY.md: Guide complet PostgreSQL ✅ Commandes, dépannage, sécurité ✅ Instructions de migration MIGRATION UTILISATEUR: ===================== Au prochain démarrage Docker: 1. Le container détecte PostgreSQL vide 2. Cherche ./data/notes.db (si existe) 3. Migre AUTOMATIQUEMENT toutes les données 4. Démarre avec PostgreSQL COMMANDES: ========= docker-compose build docker-compose up -d → Tout se fait automatiquement! Les données SQLite sont conservées comme backup dans ./data/ mais l'application n'utilise plus que PostgreSQL. FICHIERS MODIFIÉS: ================= - config/database.js (PostgreSQL uniquement) - docker-entrypoint.sh (migration automatique) - server.js + 11 routes + 2 services - package.json (description + keywords) - Documentation complète: POSTGRESQL-ONLY.md Cette migration garantit: - Performance optimale - Meilleure gestion de la concurrence - Support production à grande échelle - Pas de perte de données (migration auto)
7.4 KiB
NoteFlow - PostgreSQL Uniquement
🐘 Configuration
NoteFlow utilise exclusivement PostgreSQL comme base de données.
🚀 Démarrage rapide
1. Prérequis
- Docker et Docker Compose
- Port 5499 disponible (PostgreSQL)
- Port 2222 disponible (Application)
2. Configuration
Créez un fichier .env (optionnel) pour personnaliser:
# PostgreSQL
POSTGRES_PASSWORD=votre_mot_de_passe_securise
# Application
JWT_SECRET=votre_secret_jwt_securise
PORT=2222
3. Démarrage
# Construire et démarrer
docker-compose build
docker-compose up -d
# Voir les logs
docker-compose logs -f
🎉 C'est tout! L'application:
- ✅ Attend que PostgreSQL soit prêt
- ✅ Crée automatiquement les tables
- ✅ Migre les données SQLite si détectées (une seule fois)
- ✅ Démarre le serveur
Accédez à: http://localhost:2222
📦 Migration automatique SQLite → PostgreSQL
Si vous aviez une ancienne installation avec SQLite (data/notes.db), la migration se fait automatiquement au premier démarrage:
- Le container détecte que PostgreSQL est vide
- Il cherche
/app/data-sqlite/notes.db(monté depuis./data) - Si trouvé, il migre toutes les données automatiquement
- Les données SQLite sont conservées comme backup
Aucune action manuelle requise!
🗄️ Structure PostgreSQL
Configuration dans docker-compose.yml
postgres:
image: postgres:16-alpine
ports:
- "5499:5499"
environment:
POSTGRES_DB: noteflow
POSTGRES_USER: noteflow
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
Tables créées automatiquement
users- Utilisateursnotes- Notes avec tags et prioritésnote_todos- Tâches dans les notesglobal_todos- Tâches de la sidebarnote_images- Images attachées aux notesnote_files- Fichiers attachés aux notesrss_feeds- Flux RSS configurésrss_articles- Articles RSS récupérésrss_summaries- Résumés générés par IAcalendar_events- Événements Google Calendargoogle_oauth_tokens- Tokens OAuth Googlesettings- Paramètres globaux
🔍 Commandes utiles
Accéder à PostgreSQL
# Via psql dans le container
docker exec -it noteflow-postgres psql -U noteflow -d noteflow -p 5499
# Exemples de requêtes
SELECT COUNT(*) FROM notes;
SELECT COUNT(*) FROM rss_articles;
SELECT * FROM users;
Backup de la base
# Créer un dump
docker exec noteflow-postgres pg_dump -U noteflow -d noteflow -p 5499 > backup-$(date +%Y%m%d).sql
# Restaurer un dump
cat backup.sql | docker exec -i noteflow-postgres psql -U noteflow -d noteflow -p 5499
Voir les logs
# Logs de l'application
docker-compose logs -f notes-app
# Logs PostgreSQL
docker-compose logs -f postgres
# Logs de migration au démarrage
docker-compose logs notes-app | grep -A 20 "Démarrage de NoteFlow"
Redémarrer
# Redémarrer juste l'application
docker-compose restart notes-app
# Redémarrer tout
docker-compose restart
# Rebuild complet
docker-compose down
docker-compose build --no-cache
docker-compose up -d
🔧 Configuration avancée
Variables d'environnement
Dans docker-compose.yml > notes-app > environment:
- DATABASE_URL=postgresql://noteflow:${POSTGRES_PASSWORD}@postgres:5499/noteflow
- NODE_ENV=production
- JWT_SECRET=${JWT_SECRET}
- PORT=2222
Ajuster les performances PostgreSQL
Pour une production avec beaucoup de données:
postgres:
command: -p 5499 -c max_connections=100 -c shared_buffers=256MB
Volumes persistants
Les données sont stockées dans des volumes Docker:
volumes:
postgres_data: # Données PostgreSQL
notes_uploads: # Images et fichiers uploadés
notes_logs: # Logs de l'application
Pour voir les volumes:
docker volume ls | grep noteflow
🆘 Dépannage
PostgreSQL n'est pas prêt
Si l'application dit "Attente de PostgreSQL..." en boucle:
# Vérifier que PostgreSQL tourne
docker-compose ps postgres
# Voir les logs PostgreSQL
docker-compose logs postgres
# Vérifier le port
docker exec noteflow-postgres netstat -tlnp | grep 5499
Connexion refusée
# Vérifier les variables d'environnement
docker exec notes-todo-app env | grep DATABASE
# Tester la connexion manuellement
docker exec notes-todo-app node -e "
const { Pool } = require('pg');
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
pool.connect()
.then(() => { console.log('✅ OK'); pool.end(); })
.catch(err => { console.log('❌', err.message); });
"
Reset complet
⚠️ ATTENTION: Ceci supprime TOUTES les données!
docker-compose down -v # -v supprime les volumes
docker-compose up -d
Migrer manuellement depuis SQLite
Si la migration automatique échoue:
# Depuis le container
docker exec -e SQLITE_PATH=/app/data-sqlite/notes.db \
notes-todo-app node scripts/migrate-sqlite-to-postgres.js
# Depuis l'hôte (si Node.js installé)
SQLITE_PATH=./data/notes.db \
DATABASE_URL=postgresql://noteflow:password@localhost:5499/noteflow \
node scripts/migrate-sqlite-to-postgres.js
📊 Monitoring
Vérifier la santé de l'application
curl http://localhost:2222/health
Réponse attendue:
{
"status": "ok",
"timestamp": "2025-11-14T10:00:00.000Z",
"uptime": 123.45
}
Statistiques PostgreSQL
docker exec noteflow-postgres psql -U noteflow -d noteflow -p 5499 -c "
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
"
🔐 Sécurité en production
1. Changez les mots de passe par défaut
# Générer des secrets forts
openssl rand -base64 32
Mettez-les dans .env:
POSTGRES_PASSWORD=<généré>
JWT_SECRET=<généré>
2. N'exposez PAS PostgreSQL sur Internet
Par défaut, PostgreSQL est accessible sur localhost:5499. Pour la production:
postgres:
ports:
- "127.0.0.1:5499:5499" # Seulement localhost
3. Configurez un reverse proxy (nginx)
L'application utilise le réseau nginx_default. Configurez nginx pour gérer HTTPS.
📝 Notes techniques
- Base de données: PostgreSQL 16 Alpine
- Node.js: Version 20 Alpine
- Architecture: Multi-stage Dockerfile pour optimisation
- Healthcheck: Vérifie automatiquement l'état de l'application
- Restart policy:
unless-stoppedpour redémarrage automatique - Migration: Automatique au premier démarrage si SQLite détecté
- Logs: Gérés par Winston avec rotation
🎯 Prochaines étapes après installation
- ✅ Connectez-vous avec
admin/admin - ⚠️ CHANGEZ LE MOT DE PASSE ADMIN
- 📝 Créez vos premières notes
- 📰 Configurez vos flux RSS (Admin > Flux RSS)
- 📅 Connectez Google Calendar (Admin > Google Calendar)
- 🔑 Configurez OpenRouter pour l'IA (Admin > OpenRouter)
Version: 1.0.0 - PostgreSQL Uniquement Documentation complète: Voir README.md principal