DocApp — Guide de déploiement pour établissements scolaires
DocApp — Guide de déploiement pour établissements scolaires
Plateforme de documentation interne — déploiement VPS / Docker
À propos de DocApp
DocApp est une plateforme de gestion documentaire interne conçue pour les établissements scolaires. Elle permet de centraliser, organiser et partager la documentation institutionnelle (règlements, procédures, formulaires, notes de service) avec une interface simple et sécurisée.
Fonctionnalités principales : - Rédaction et publication de documents (éditeur riche intégré) - Catégories et tags pour organiser le contenu - Recherche full-text en français - Gestion des rôles : Administrateur / Rédacteur - Assemblage de documents à partir de fragments réutilisables - Collections de documents personnalisées par organisation - Export PDF des collections - Conformité RGPD (soft delete, anonymisation, consentement)
Prérequis
Côté hébergement
Un VPS (Virtual Private Server) sous Linux (Ubuntu 22.04 recommandé)
Minimum : 2 vCPU, 2 Go RAM, 20 Go disque
Un nom de domaine pointant vers l'IP du VPS (ex :
docs.monecole.be)Accès SSH root au VPS
Côté logiciels à installer sur le VPS
Docker Engine (≥ 24)
Docker Compose (inclus avec Docker Engine)
Côté machine locale (pour le déploiement)
Docker Desktop installé
Accès terminal (macOS / Linux)
Étape 1 — Installer Docker sur le VPS
Connectez-vous en SSH à votre VPS :
ssh root@VOTRE_IP_VPSInstallez Docker :
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start dockerVérifiez l'installation :
docker --version
# Docker version 24.x.xÉtape 2 — Préparer le dossier de l'application
Sur le VPS, créez le dossier de l'application et le fichier de configuration :
mkdir -p /opt/docapp
cd /opt/docappCréez le fichier .env avec vos paramètres :
cat > /opt/docapp/.env <<EOF
DB_PASSWORD=MotDePasseSecurise2024!
NEXTAUTH_SECRET=$(openssl rand -base64 32)
EOFImportant : Choisissez un mot de passe fort pour
DB_PASSWORD. LeNEXTAUTH_SECRETest généré automatiquement.
Étape 3 — Créer le fichier docker-compose.prod.yml
Copiez ce contenu dans /opt/docapp/docker-compose.prod.yml :
services:
nextjs:
image: docapp:latest
ports:
- "3001:3000"
environment:
DATABASE_URL: postgresql://pierre:${DB_PASSWORD}@postgres:5432/docapp
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_URL: https://docs.monecole.be
NODE_ENV: production
volumes:
- uploads:/app/public/uploads
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
postgres:
image: postgres:16
environment:
POSTGRES_USER: pierre
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: docapp
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U pierre -d docapp"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
pgdata:
uploads:Remplacez
https://docs.monecole.bepar l'URL réelle de votre établissement.
Étape 4 — Construire et transférer l'image Docker
Ces commandes se font sur votre machine locale (pas le VPS), dans le dossier du projet DocApp.
4.1 Construire l'image
docker buildx build --platform linux/amd64 -t docapp:latest .Cette étape prend 2 à 3 minutes. Les erreurs Prisma affichées sont normales (pas de base de données au moment du build).
4.2 Transférer l'image vers le VPS
docker save docapp:latest | gzip | ssh root@VOTRE_IP_VPS "gunzip | docker load"Le transfert peut prendre quelques minutes selon la qualité de votre connexion.
Étape 5 — Démarrer l'application
Sur le VPS :
cd /opt/docapp
docker compose -f docker-compose.prod.yml up -dVérifiez que tout fonctionne :
docker logs docapp-nextjs-1 2>&1 | tail -15Vous devez voir :All migrations have been successfully applied. ▲ Next.js 14.x.x ✓ Ready in ~150ms
Étape 6 — Configurer le reverse proxy (HTTPS)
Nous recommandons Nginx Proxy Manager pour gérer facilement le HTTPS sans ligne de commande.
Installation de Nginx Proxy Manager
Sur le VPS, créez /opt/npm/docker-compose.yml :
services:
app:
image: jc21/nginx-proxy-manager:latest
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- data:/data
- letsencrypt:/etc/letsencrypt
restart: unless-stopped
volumes:
data:
letsencrypt:cd /opt/npm
docker compose up -dConfiguration du proxy
Ouvrez
http://VOTRE_IP_VPS:81dans votre navigateurConnectez-vous (identifiants par défaut :
admin@example.com/changeme)Proxy Hosts → Add Proxy Host
Renseignez :
Domain Names :
docs.monecole.beForward Hostname/IP : IP du VPS ou
localhostForward Port :
3001Block Common Exploits : activé
Onglet SSL :
Request a new SSL Certificate
Force SSL : activé
HTTP/2 Support : activé
Email : votre email pour Let's Encrypt
Cochez I Agree to the Let's Encrypt Terms of Service
Save
L'application est maintenant disponible sur https://docs.monecole.be
Étape 7 — Premier démarrage : créer les comptes
Créez les comptes administrateur et rédacteur initiaux :
docker exec docapp-nextjs-1 sh -c 'node node_modules/prisma/build/index.js db seed'Comptes créés par défaut (à modifier immédiatement après la première connexion) :
Rôle | Mot de passe | |
|---|---|---|
Administrateur |
|
|
Rédacteur |
|
|
Changez ces mots de passe immédiatement via le back-office (
/admin/users).
Étape 8 — Configurer votre établissement
Connectez-vous sur
https://docs.monecole.be/adminAllez dans Organisations → Nouvelle organisation
Renseignez le nom de l'école, le type (
école), et les variables utiles :nom_org → École Primaire Saint-Michel directeur → Madame Dupont adresse → Rue des Écoles 12, 5000 Namur annee → 2025-2026Ces variables seront automatiquement substituées dans vos exports de collections (
{{nom_org}},{{directeur}}…)
Mises à jour
Pour déployer une nouvelle version de DocApp, répétez les étapes 4 et 5 :
# Sur votre machine locale
docker buildx build --platform linux/amd64 -t docapp:latest .
docker save docapp:latest | gzip | ssh root@VOTRE_IP_VPS "gunzip | docker load"
# Sur le VPS
cd /opt/docapp
docker compose -f docker-compose.prod.yml up -d --remove-orphansLes migrations de base de données sont appliquées automatiquement au redémarrage.
Sauvegardes
Sauvegarde de la base de données
docker exec docapp-postgres-1 pg_dump -U pierre docapp | gzip > backup_$(date +%Y%m%d).sql.gzSauvegarde des fichiers uploadés
docker run --rm -v docapp_uploads:/data -v $(pwd):/backup alpine tar czf /backup/uploads_$(date +%Y%m%d).tar.gz /dataPlanifiez ces sauvegardes avec
cronsur votre VPS.
Commandes utiles
# Voir les logs en temps réel
docker logs -f docapp-nextjs-1
# Redémarrer l'application (sans rebuild)
cd /opt/docapp && docker compose -f docker-compose.prod.yml restart
# Accéder à la base de données
docker exec -it docapp-postgres-1 psql -U pierre -d docapp
# Arrêter l'application
cd /opt/docapp && docker compose -f docker-compose.prod.yml down
# Voir l'espace disque utilisé
docker system dfRésolution de problèmes fréquents
L'application ne démarre pas → Vérifiez les logs : docker logs docapp-nextjs-1 → Vérifiez que le fichier .env existe et contient DB_PASSWORD et NEXTAUTH_SECRET
Erreur de connexion à la base de données → Attendez quelques secondes que PostgreSQL soit prêt (healthcheck actif) → Vérifiez que DB_PASSWORD est identique dans .env et dans le compose
Le certificat SSL ne se génère pas → Vérifiez que votre domaine pointe bien vers l'IP du VPS (propagation DNS peut prendre 24h) → Les ports 80 et 443 doivent être ouverts sur votre pare-feu VPS
Problème après une mise à jour → docker compose -f docker-compose.prod.yml down && docker compose -f docker-compose.prod.yml up -d
Contact & Support
Pour toute question relative au déploiement ou à la personnalisation de DocApp pour votre établissement :
Pierre De Dobbeleer Manager — Strat.AI
Rue Mottiaux 13/0011 5100 Jambes Belgium
pierre2db@gmail.com LinkedIn
DocApp est développé et maintenu par Strat.AI.