Guide de démarrage
rapide
Tout ce qu'il faut pour installer, configurer et lancer KONDO ERP en production. De zéro à opérationnel en moins de 15 minutes avec Docker.
Introduction
KONDO ERP est une application Django 5.0+ multi-tenant conçue pour être déployée facilement sur n'importe quelle infrastructure Linux. La configuration est centralisée dans un fichier config/settings.yaml — pas de variables d'environnement éparpillées.
Prêt pour la production
Score sécurité 9,75/10 — 105/105 tests passés — manage.py check : 0 erreur.
| Composant | Version requise | Notes |
|---|---|---|
| Python | 3.10+ | 3.12 recommandé |
| Django | 5.0+ | Inclus dans requirements.txt |
| Base de données | SQLite (dev) / PostgreSQL 14+ (prod) | PostgreSQL fortement recommandé en prod |
| Docker | 24+ | Pour le déploiement conteneurisé |
| Nginx | 1.24+ | Reverse proxy + HTTPS |
Prérequis
Avant de commencer, assurez-vous d'avoir les éléments suivants installés sur votre serveur :
- Python 3.10+ avec
pipetvenv - Git pour cloner le dépôt
- Docker + Docker Compose (recommandé)
- Un serveur SMTP pour les notifications email
Installation rapide (dev/test)
Cloner le dépôt
git clone https://github.com/votre-org/kondo-erp.git cd kondo-erp
Environnement virtuel
python -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows pip install -r requirements.txt
Configuration minimale
cp config/settings.yaml.example config/settings.yaml nano config/settings.yaml # Éditez secret_key et database
Migrations et lancement
python manage.py migrate python manage.py createsuperuser python manage.py runserver
L'application est disponible sur http://localhost:8000
Déploiement Docker
C'est la méthode recommandée pour la production. L'entrypoint inclus gère automatiquement les migrations, la collecte des fichiers statiques et le lancement de Gunicorn.
version: '3.9' services: web: build: . ports: - "8000:8000" environment: - DJANGO_SUPERUSER_USERNAME=admin - DJANGO_SUPERUSER_EMAIL=admin@kondo.local - DJANGO_SUPERUSER_PASSWORD=ChangeMe123! - KONDO_SETTINGS_PATH=/app/config/settings.yaml volumes: - ./config:/app/config - kondo_media:/app/media - kondo_static:/app/staticfiles depends_on: - db db: image: postgres:16-alpine environment: - POSTGRES_DB=kondo_erp - POSTGRES_USER=kondo - POSTGRES_PASSWORD=KondoSecure2026! volumes: - pg_data:/var/lib/postgresql/data volumes: pg_data: kondo_media: kondo_static:
docker compose up -d docker compose logs -f web # Suivre les logs
Entrypoint automatique
Le script entrypoint.sh exécute automatiquement migrate, collectstatic et crée le superuser si les variables DJANGO_SUPERUSER_* sont présentes.
Configuration — settings.yaml
Toute la configuration de KONDO ERP est centralisée dans config/settings.yaml. Voici un exemple complet avec commentaires :
# ─── Application ───────────────────────────────────── app: name: "KONDO ERP" debug: false # Ne jamais true en production secret_key: "votre-clé-secrète-très-longue-et-aléatoire" allowed_hosts: - "erp.monentreprise.com" - "localhost" # ─── Base de données ────────────────────────────────── database: engine: "postgresql" # ou "sqlite" host: "db" port: 5432 name: "kondo_erp" user: "kondo" password: "votre-mot-de-passe-db" # ─── Email ──────────────────────────────────────────── email: backend: "django.core.mail.backends.smtp.EmailBackend" host: "smtp.gmail.com" port: 587 use_tls: true user: "noreply@monentreprise.com" password: "app-password-gmail" default_from: "KONDO ERP <noreply@monentreprise.com>" # ─── Sécurité ───────────────────────────────────────── security: ssl_redirect: true # Force HTTPS use_ssl: true # HSTS + cookies sécurisés csp_enabled: true # Content Security Policy # ─── Session ────────────────────────────────────────── session: cookie_age: 86400 # 24h en secondes idle_timeout: 1800 # 30 min d'inactivité # ─── Mises à jour ───────────────────────────────────── updates: check_url: null # URL de vérification des MAJ
Base de données
SQLite (développement uniquement)
Par défaut, KONDO utilise SQLite. C'est suffisant pour tester, mais non recommandé en production car SQLite ne supporte pas les connexions concurrentes.
PostgreSQL (production)
# Créer la base de données sudo -u postgres psql CREATE DATABASE kondo_erp; CREATE USER kondo WITH PASSWORD 'KondoSecure2026!'; GRANT ALL PRIVILEGES ON DATABASE kondo_erp TO kondo; \q # Appliquer les migrations python manage.py migrate
Migrations SQLite
Certaines migrations utilisent une stratégie 3-step (null → RunPython → unique) pour contourner les limitations SQLite sur la modification de colonnes. Ceci est transparent en production sur PostgreSQL.
Sécurité
Variables sensibles
Ne mettez jamais la clé secrète ou les mots de passe directement dans le code. Utilisez config/settings.yaml qui est listé dans .gitignore par défaut.
| Setting | Description | |
|---|---|---|
security.ssl_redirect | Redirige toutes les requêtes HTTP vers HTTPS | Requis prod |
security.use_ssl | Active HSTS, cookies Secure, cookies HttpOnly | Requis prod |
security.csp_enabled | Active le middleware Content Security Policy | Optionnel |
session.idle_timeout | Déconnexion automatique après N secondes d'inactivité | Défaut: 1800 |
Ne jamais exposer debug: true en production
Si la variable d'environnement DJANGO_DEBUG=true est présente, elle est ignorée si debug: false est défini dans settings.yaml. Le YAML a la priorité.
Déploiement production
Checklist avant mise en ligne
- debug: false dans settings.yaml
- Clé secrète longue et aléatoire (min. 50 caractères)
- ssl_redirect: true et use_ssl: true
- PostgreSQL configuré et migrations appliquées
- SMTP email configuré et testé
python manage.py collectstaticexécutépython manage.py check --deploy→ 0 avertissement
Nginx + HTTPS
server { listen 80; server_name erp.monentreprise.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name erp.monentreprise.com; ssl_certificate /etc/letsencrypt/live/erp.monentreprise.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/erp.monentreprise.com/privkey.pem; location /static/ { alias /app/staticfiles/; expires 30d; add_header Cache-Control "public, immutable"; } location /media/ { alias /app/media/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
certbot --nginx -d erp.monentreprise.com
Sauvegarde
KONDO ERP inclut une commande de sauvegarde intégrée qui archive la base de données, les fichiers media et la configuration :
# Créer une sauvegarde complète python manage.py backup # Restaurer depuis une sauvegarde python scripts/restore.py backups/kondo_2026-03-20.tar.gz # Automatiser avec cron (toutes les nuits à 2h) 0 2 * * * /app/.venv/bin/python /app/manage.py backup
Créer le premier superuser
python manage.py createsuperuser # Username: admin # Email: admin@monentreprise.com # Password: (min. 12 caractères)
Connectez-vous sur /rh/auth/connexion/ avec vos identifiants. L'URL d'administration Django est accessible sur /admin/.
Créer votre première organisation
Accéder au module Organisation
Connecté en superuser, allez sur /organisation/ et cliquez sur Créer une organisation.
Créer les sociétés
Dans l'organisation, créez vos sociétés (filiales, agences). Chaque société a un code unique dans l'organisation (ex: DKR pour Dakar).
Nommer les administrateurs
Ajoutez des administrateurs d'organisation avec les permissions LECTURE ou ECRITURE. Ils peuvent gérer toutes les sociétés de l'organisation.
Créer les utilisateurs
Les utilisateurs s'inscrivent sur /rh/auth/inscription/ avec leur code organisation. Leur username Django est automatiquement MATRICULE_CODE_ORG.
Activer les modules
Tous les modules sont activés par défaut dans WowDash/settings.py. Pour désactiver un module, retirez-le de INSTALLED_APPS :
INSTALLED_APPS = [ # Apps core (ne pas retirer) 'core', 'organisation', 'parametre', 'rh', 'utilisateur', # Apps métier (retirables selon votre besoin) 'comptabilite', 'stock', 'crm', 'planner', 'restaurant', 'pharmacie', 'emcf', 'espace_employe', 'messagerie', 'abonnement', ]
Dépendances entre modules
Le module comptabilite est requis par emcf et restaurant. Le module stock est requis par pharmacie. Ne retirez pas ces modules si vous activez leurs dépendants.