Vue d'ensemble
Chargement…
⚙️ Afficher / masquer les widgets
🖥️ Infrastructure interne
Serveurs, NAS et équipements réseau 2m2b
Chargement…
🏢 Fiches clients
Clients actifs 2m2b
Chargement…
🏭 Fiches fournisseurs
Fournisseurs et prestataires 2m2b
Chargement…
📋 Procédures & PRA
Runbooks, plans de reprise, checklists
Chargement…
⚙️ Outils & Workflows
Automatisations et outils internes 2m2b
Chargement…
👥 Annuaire contacts
Tous les contacts de vos fiches clients
Chargement…
⚠️ Rapports d'incident
Incidents et interventions urgentes
Chargement…
📁 Structure & fonctionnement
Architecture technique du wiki 2m2b — mis à jour automatiquement
Architecture générale
Docker · Node.js · NAS-CASA
Navigateur
→ HTTPS 443 →
DSM Reverse Proxy
→ :3002 →
Container wiki-2m2b
→ :3001 →
server.js
NAS-CASA DS1520+ · wiki.2b2m.info · Docker /volume1/docker/wiki/ · Frontend /volume1/web/wiki/ · Image : node:20.19.1-alpine
server.js
Backend Node.js| Stack | Node.js natif, pas de npm, zéro dépendance |
| Auth | scrypt(N=16384) + tokens 48 bytes hachés SHA-256 |
| Sessions | TTL 4h absolu + 2h inactivité · rate-limit login |
| Port | 3001 interne → 3002 exposé DSM |
| Static | /public → /volume1/web/wiki |
| BDD | /data/wiki.db.json |
wiki.db.json
Base de données| Format | JSON plat — NE JAMAIS ÉCRASER EN PROD |
| Chemin | /volume1/docker/wiki/data/wiki.db.json |
| Collections | users · sessions · pages |
| Sauvegarde | ⚠️ Inclure dans Active Backup for Business |
Catégories pages :
clients infra procedures outils incidents config
clients infra procedures outils incidents config
config : pages système — ex:
__wiki-logo__ (logo global admin)Fichiers HTML — Frontend
Responsive · Mobile · Desktop| Fichier | Chemin NAS | Catégorie API | Fonctionnalités clés |
|---|---|---|---|
index.html | /volume1/web/wiki/ | — | Dashboard SPA, login, recherche ⌘K, widgets draggables, logo admin, suppression fiches admin uniquement |
clients/_template.html | /volume1/web/wiki/clients/ | clients | Fiche client, interventions, incidents liés |
infra/_template.html | /volume1/web/wiki/infra/ | infra | Fiche infra, réseau, accès, maintenance |
procedures/_template_procedure.html | /volume1/web/wiki/procedures/ | procedures | Runbook, checklist, étapes PRA |
outils/_template_outil.html | /volume1/web/wiki/outils/ | outils | Outil/workflow, variables, usage, logs |
incidents/generateur-incident.html | /volume1/web/wiki/incidents/ | incidents | Rapport d'incident, aperçu PDF live, mode édition |
Tous les templates : sidebar drawer mobile · hamburger ☰ · grilles responsive · tables scrollables
API REST
server.js| Méthode | Endpoint | Accès | Description |
|---|---|---|---|
| POST | /api/login | Public | Authentification, rate-limit 10/15min |
| POST | /api/logout | Auth | Invalidation session |
| GET | /api/me | Auth | Utilisateur courant |
| GET | /api/pages?category=X | Auth | Liste pages par catégorie |
| GET | /api/pages/:id | Auth | Page par ID |
| POST | /api/pages | Technicien+ | Créer ou mettre à jour (match title) |
| PUT | /api/pages/:id | Technicien+ | Modifier page existante |
| DELETE | /api/pages/:id | Admin | Supprimer page |
| GET | /api/users | Admin | Liste utilisateurs |
| PUT | /api/users/:id/password | Auth | Changer mot de passe |
| PUT | /api/users/:id/role | Admin | Changer rôle |
| DELETE | /api/users/:id | Admin | Supprimer utilisateur |
| GET | /api/logs | Admin | Logs d'accès |
Sécurité implémentée
✅ En place| ✅ | Mots de passe scrypt (N=16384, r=8, p=1) + sel 32 bytes |
| ✅ | Tokens sessions hachés SHA-256 en BDD |
| ✅ | TTL session 4h + 2h inactivité |
| ✅ | Rate-limit login : 10 tentatives / 15 min → lockout 30 min |
| ✅ | Timing constant anti-énumération utilisateurs |
| ✅ | Headers HTTP : HSTS, CSP, X-Frame, CORP, COOP… |
| ✅ | CORS restreint à wiki.2m2b.info |
| ✅ | Docker non-root (1000:1000), volumes :ro, no-new-privileges, image épinglée 20.19.1 |
| ✅ | Payload limité à 5 MB |
| ✅ | Logs masqués (m*** au lieu du username) |
| ✅ | Sanitization HTML serveur — stripDangerousHtml() sur tout contenu avant saveDB() |
| ✅ | Invalidation sessions au changement de mot de passe |
| ✅ | Rate-limit écriture : 60 req / 15 min / IP sur POST/PUT pages et POST users |
| ✅ | mustChangePassword enforced serveur → 403 sur toutes routes sauf /me, logout, changeMDP |
| ✅ | Cache-Control: no-store sur toutes les réponses API |
Sécurité à implémenter
✅ Complet| Aucun item critique en attente |