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.

ComposantVersion requiseNotes
Python3.10+3.12 recommandé
Django5.0+Inclus dans requirements.txt
Base de donnéesSQLite (dev) / PostgreSQL 14+ (prod)PostgreSQL fortement recommandé en prod
Docker24+Pour le déploiement conteneurisé
Nginx1.24+Reverse proxy + HTTPS

Prérequis

Avant de commencer, assurez-vous d'avoir les éléments suivants installés sur votre serveur :

Installation rapide (dev/test)

1

Cloner le dépôt

bash
git clone https://github.com/votre-org/kondo-erp.git
cd kondo-erp
2

Environnement virtuel

bash
python -m venv .venv
source .venv/bin/activate   # Linux/macOS
# .venv\Scripts\activate    # Windows
pip install -r requirements.txt
3

Configuration minimale

bash
cp config/settings.yaml.example config/settings.yaml
nano config/settings.yaml  # Éditez secret_key et database
4

Migrations et lancement

bash
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.

docker-compose.yml
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:
bash
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 :

config/settings.yaml
# ─── 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)

bash — PostgreSQL
# 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.

SettingDescription
security.ssl_redirectRedirige toutes les requêtes HTTP vers HTTPSRequis prod
security.use_sslActive HSTS, cookies Secure, cookies HttpOnlyRequis prod
security.csp_enabledActive le middleware Content Security PolicyOptionnel
session.idle_timeoutDé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

Nginx + HTTPS

/etc/nginx/sites-available/kondo-erp
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;
    }
}
bash — Certbot (Let's Encrypt gratuit)
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 :

bash
# 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

bash
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

1

Accéder au module Organisation

Connecté en superuser, allez sur /organisation/ et cliquez sur Créer une organisation.

2

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).

3

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.

4

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 :

WowDash/settings.py — 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.