Vue d'ensemble

Chargement…

⚙️ Afficher / masquer les widgets
0
Infrastructures
0
Clients actifs
0
Procédures
0
Outils / Workflows
Interventions total
Chargement…
Heures ce mois
Incidents ce mois
— au total
Non facturées
À régulariser
🖥️
Infrastructure interne
NAS, serveurs, réseau 2m2b
Chargement…
🏢
Fiches clients
Clients actifs 2m2b
Chargement…
Dernières fiches clients
ClientStatutModifié
Chargement…

🖥️ 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
StackNode.js natif, pas de npm, zéro dépendance
Authscrypt(N=16384) + tokens 48 bytes hachés SHA-256
SessionsTTL 4h absolu + 2h inactivité · rate-limit login
Port3001 interne → 3002 exposé DSM
Static/public/volume1/web/wiki
BDD/data/wiki.db.json
wiki.db.json
Base de données
FormatJSON plat — NE JAMAIS ÉCRASER EN PROD
Chemin/volume1/docker/wiki/data/wiki.db.json
Collectionsusers · sessions · pages
Sauvegarde⚠️ Inclure dans Active Backup for Business
Catégories pages :
clients infra procedures outils incidents config
config : pages système — ex: __wiki-logo__ (logo global admin)
Fichiers HTML — Frontend
Responsive · Mobile · Desktop
FichierChemin NASCatégorie APIFonctionnalité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/clientsFiche client, interventions, incidents liés
infra/_template.html/volume1/web/wiki/infra/infraFiche infra, réseau, accès, maintenance
procedures/_template_procedure.html/volume1/web/wiki/procedures/proceduresRunbook, checklist, étapes PRA
outils/_template_outil.html/volume1/web/wiki/outils/outilsOutil/workflow, variables, usage, logs
incidents/generateur-incident.html/volume1/web/wiki/incidents/incidentsRapport d'incident, aperçu PDF live, mode édition
Tous les templates : sidebar drawer mobile · hamburger ☰ · grilles responsive · tables scrollables
API REST
server.js
MéthodeEndpointAccèsDescription
POST/api/loginPublicAuthentification, rate-limit 10/15min
POST/api/logoutAuthInvalidation session
GET/api/meAuthUtilisateur courant
GET/api/pages?category=XAuthListe pages par catégorie
GET/api/pages/:idAuthPage par ID
POST/api/pagesTechnicien+Créer ou mettre à jour (match title)
PUT/api/pages/:idTechnicien+Modifier page existante
DELETE/api/pages/:idAdminSupprimer page
GET/api/usersAdminListe utilisateurs
PUT/api/users/:id/passwordAuthChanger mot de passe
PUT/api/users/:id/roleAdminChanger rôle
DELETE/api/users/:idAdminSupprimer utilisateur
GET/api/logsAdminLogs 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