Vue d'ensemble
MileoApp est disponible en deux modes de déploiement : SaaS (hébergé par Mileo Technology) et on-premise (sur votre infrastructure). Les deux modes partagent le même code, la même sécurité, les mêmes fonctionnalités.
SaaS (Cloud)
- Hébergé en France (OVH)
- Mises à jour automatiques
- Licences par utilisateur / module / mois
- Zéro maintenance côté client
- Sauvegardes quotidiennes incluses
On-Premise
- Déployé sur votre infrastructure
- Clé de licence JWT signée RSA
- Fonctionne 100% hors ligne
- Vous contrôlez vos données
- Mises à jour manuelles
Mode SaaS
En mode SaaS, les licences sont gérées par Mileo Technology. Chaque utilisateur se voit attribuer des licences module par module depuis le panneau d'administration.
Fonctionnement
- L'administrateur attribue une licence à un utilisateur via
Admin > Licences > Attribuer - L'utilisateur voit le module apparaître dans son Hub
- Chaque module est facturé au tarif HT mensuel (ex: MileoMap = 29€/mois)
- Les licences peuvent être en essai 14 jours ou actives
- L'administrateur peut révoquer ou réattribuer les licences à tout moment
Numéros de licence
Chaque licence attribuée reçoit un numéro unique au format MTXXXXXXXXXXXX (MT + 12 caractères hexadécimaux). Ce numéro est visible dans le profil utilisateur et dans l'admin.
Mode On-Premise
Le mode on-premise permet de déployer MileoApp sur votre propre infrastructure, totalement isolé d'internet. L'accès aux modules est contrôlé par une clé de licence signée cryptographiquement.
Pré-requis
Infrastructure
- Docker + Docker Compose
- PostgreSQL 16+
- 2 vCPU / 4 Go RAM minimum
- 20 Go SSD (+ stockage données)
Réseau
- Port 443 (HTTPS) si accessible
- Certificat TLS (ou Caddy auto)
- DNS interne si réseau fermé
- Aucune connexion internet requise
Installation
1. Copier les fichiers
docker-compose.yml .env migrations/ Caddyfile
2. Configurer le .env
# Mode on-premise activé ON_PREMISE=true # Clé de licence fournie par Mileo Technology LICENSE_KEY=eyJhbGciOiJSUzI1NiIs... # Base de données DATABASE_URL=postgres://mileo:CHANGE_ME@postgres:5432/suite_mileo?sslmode=disable # Clés JWT (générées pour votre instance) JWT_PRIVATE_KEY_FILE=/run/secrets/jwt.key JWT_PUBLIC_KEY_FILE=/run/secrets/jwt.pub
3. Démarrer
docker compose up -d
4. Vérifier la licence
curl https://votre-domaine/api/v1/license/status
Important
- La clé de licence est un JWT signé RSA-256 — elle ne peut pas être modifiée ou forgée.
- Si la clé est expirée, l'application démarre en mode dégradé (aucun module accessible).
- Contactez hello@mileoapp.fr pour le renouvellement.
Clé de licence
La clé de licence on-premise est un token JWT signé avec l'algorithme RS256. Elle contient toutes les informations nécessaires pour contrôler l'accès aux modules sans connexion internet.
Contenu de la clé
{
"org": "Nom de l'organisation",
"oid": 42,
"modules": ["mileomap", "mileofield", "mileoproject"],
"max_users": 50,
"plan": "enterprise",
"lid": "LIC-a1b2c3d4e5f6g7h8",
"iat": 1711100400,
"exp": 1742636400,
"iss": "mileoapp-license",
"type": "on-premise"
}Champs
| org | Nom de l'organisation |
| oid | ID de l'organisation |
| modules | Liste des modules autorisés |
| max_users | Nombre max d'utilisateurs |
| plan | starter / pro / enterprise |
| lid | Identifiant unique de la licence |
| exp | Date d'expiration (Unix timestamp) |
Sécurité
- ✓ Signature RSA-256 — impossible à falsifier sans la clé privée
- ✓ Expiration vérifiée à chaque requête
- ✓ Modules verrouillés — seuls ceux listés sont accessibles
- ✓ Aucune connexion internet nécessaire pour la vérification
- ✓ Identifiant unique pour révocation ciblée si nécessaire
Cycle de vie
API Reference
Endpoints liés à la gestion des licences. Tous les endpoints admin nécessitent un JWT valide avec le rôle owner ou admin.
Endpoints publics
/api/v1/license/statusRetourne le statut de la licence (SaaS ou on-premise).
{
"mode": "on-premise",
"status": "active",
"license_id": "LIC-a1b2c3d4e5f6g7h8",
"org": "Client XYZ",
"plan": "enterprise",
"modules": ["mileomap", "mileofield"],
"max_users": 50,
"expires_at": "2027-03-22T00:00:00Z",
"days_left": 365
}/api/v1/license/verifyVérifie la validité d'une clé de licence.
{ "license_key": "eyJhbGciOi..." } {
"valid": true,
"license_id": "LIC-a1b2c3d4e5f6g7h8",
"org": "Client XYZ",
"modules": ["mileomap", "mileofield"],
"max_users": 50,
"expires_at": "2027-03-22T00:00:00Z"
}/api/v1/modulesListe tous les modules disponibles avec leur tarif.
Endpoints utilisateur
Auth requise/api/v1/licenses/meRetourne les licences de l'utilisateur connecté.
/api/v1/licenses/check/{moduleId}Vérifie si l'utilisateur a accès à un module spécifique.
Endpoints admin
Owner / Admin/api/v1/admin/licensesListe toutes les licences (paginé).
/api/v1/admin/licenses/statsStatistiques : licences actives, essais, revenu mensuel par module.
/api/v1/admin/licensesAttribuer une licence à un utilisateur.
{
"user_id": 1,
"module_id": "mileomap",
"trial": false,
"months": 12
}/api/v1/admin/licenses/generate-keyGénérer une clé de licence on-premise.
{
"org_name": "Client XYZ",
"org_id": 42,
"modules": ["mileomap", "mileofield"],
"max_users": 50,
"plan": "enterprise",
"months": 12
}/api/v1/admin/licenses/{id}/revokeRévoquer une licence.
/api/v1/admin/licenses/{id}/activateConvertir un essai en licence active.
Modules
mileomap MileoMap
Conception CCTV & sécurité électronique. Calculs DORI IEC 62676-4:2025, raycasting 3D.
29€
HT / mois / user
mileofield MileoField
Rapports d'intervention terrain. PWA hors ligne, signature électronique.
10€
HT / mois / user
mileoproject MileoProject
Gestion de projets & chantiers. Kanban, Gantt, suivi budgétaire.
10€
HT / mois / user
mileogmao MileoGMAO
Maintenance & gestion des équipements. Tickets, maintenance préventive.
10€
HT / mois / user
mileodocs MileoDocs
Documentation technique & DOE. Templates, stockage versionné.
10€
HT / mois / user
hyperviseur Hyperviseur
Centralisateur alarmes SIA DC-09. Parsing UDP/TCP, interface opérateur temps réel.
29€
HT / mois / user
Sécurité
MileoApp applique les mêmes standards de sécurité en SaaS et en on-premise. L'infrastructure est durcie selon les recommandations ANSSI.
Authentification
- JWT RS256 avec rotation des clés
- MFA TOTP obligatoire pour les admins
- Hachage Argon2id (mémoire-hard)
- Protection brute-force avec lockout
- Rotation des refresh tokens
Données
- Chiffrement TLS 1.2/1.3 en transit
- Chiffrement AES-256-XTS au repos (LUKS2)
- Isolation multi-tenant (PostgreSQL RLS)
- Audit log avec intégrité SHA-256
- Sauvegardes chiffrées GPG quotidiennes
Infrastructure
- Durcissement ANSSI (15 contrôles)
- SSH key-only, curve25519
- Fail2ban, AppArmor, auditd
- AIDE (File Integrity Monitoring)
- Docker read-only, no-new-privileges
Conformité
- RGPD (11 articles couverts)
- NIS 2 (10 objectifs)
- ANSSI (guides & recommandations)
- DPIA documentée (Art. 35)
- DPA signé à l'inscription (Art. 28)
Besoin d'aide ?
Notre équipe vous accompagne pour le déploiement, la configuration et le renouvellement de vos licences.