Module 0 — Setup & environnement Odoo 19

Installer Odoo 19 Community, configurer l'IDE, lancer la première instance.

3h Prérequis indispensable

🎯 Objectifs du module

1. Architecture Odoo en 2 minutes

Odoo est un monolithe Python avec une base PostgreSQL et un front en framework maison OWL (Odoo Web Library). Tout module repose sur trois piliers :

🎨
Édition Community vs Enterprise

Ezway utilise Odoo Community (open-source, gratuite). Tous les concepts de cette formation s'appliquent à l'Enterprise — seuls quelques modules métier (Studio, Documents avancés, Sign…) sont absents en Community.

2. Installation par Docker (recommandé)

Le plus simple pour démarrer : utiliser l'image officielle Odoo + PostgreSQL avec docker-compose.

docker-compose.yml
version: '3.8'

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: odoo
      POSTGRES_PASSWORD: odoo
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  odoo:
    image: odoo:19
    depends_on:
      - db
    ports:
      - "8069:8069"
      - "8072:8072"   # longpolling (chat, bus)
    environment:
      HOST: db
      USER: odoo
      PASSWORD: odoo
    volumes:
      - odoo-data:/var/lib/odoo
      - ./addons-custom:/mnt/extra-addons   # vos modules custom
      - ./odoo.conf:/etc/odoo/odoo.conf

volumes:
  db-data:
  odoo-data:

Fichier de config minimal à créer à côté :

odoo.conf
[options]
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
admin_passwd = admin
db_host = db
db_user = odoo
db_password = odoo
xmlrpc_port = 8069
longpolling_port = 8072
log_level = info
dev_mode = reload,qweb,xml   # reload auto en dev

Lancer :

docker compose up -d
docker compose logs -f odoo

Ouvrir http://localhost:8069 dans un navigateur. À la première connexion, Odoo demande de créer une base de données. Mot de passe master = admin (modifiable dans odoo.conf).

⚠️
Le port 8072 (longpolling) est vital

Sans ce port, le chat, les notifications et les boutons "rafraîchir auto" ne fonctionneront pas. C'est une erreur fréquente en dev local.

3. Installation depuis les sources (pour lire le code)

L'image Docker masque le code source d'Odoo. Pour pouvoir lire et déboguer, cloner aussi le repo officiel :

git clone --depth 1 --branch 19.0 https://github.com/odoo/odoo.git ~/odoo-src

Vous pouvez alors :

4. Configuration VSCode

Extensions à installer :

ExtensionPourquoi
Python (Microsoft)IntelliSense, debug, linting Python
PylanceType checking, navigation rapide
XML (Red Hat)Coloration et validation des vues XML
Odoo (Odoo S.A.)Autocomplétion des modèles ORM
RuffLinter Python ultra-rapide

Settings recommandés (.vscode/settings.json à la racine du projet) :

{
  "python.analysis.extraPaths": [
    "~/odoo-src",
    "~/odoo-src/addons",
    "./addons-custom"
  ],
  "files.associations": {
    "*.xml": "xml"
  },
  "[python]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "charliermarsh.ruff"
  }
}

5. Créer une base et installer un module standard

  1. Ouvrir http://localhost:8069/web/database/manager
  2. Cliquer Create Database :
    • Master password : admin
    • Database Name : test19
    • Email : admin
    • Password : admin
    • Language : Français
    • Demo data : ☑️ (important : peuple la base d'exemples)
  3. Une fois loggué, aller dans Apps → enlever le filtre "Apps", installer CRM ou Sales.
💡
Demo data = votre meilleur ami

Avec la demo data, vous avez 20 clients, 50 produits, 100 commandes prêts à l'usage. Sans elle, votre instance est vide et beaucoup de modules ne fonctionnent pas correctement.

6. Accéder aux logs & au shell Odoo

Suivre les logs en live

docker compose logs -f odoo

Mode développeur (URL magique)

Une fois loggué, ajouter ?debug=1 à n'importe quelle URL Odoo. Vous obtenez :

Lancer le shell Odoo (debug Python avec accès à l'ORM)

docker compose exec odoo odoo shell -d test19 --no-http

Une fois dans le shell, vous avez accès à env :

>>> partners = env['res.partner'].search([])
>>> len(partners)
42
>>> partners[0].name
'YourCompany'
>>> env.cr.commit()   # nécessaire pour sauvegarder en base
⚠️
N'oubliez pas env.cr.commit()

Dans le shell, aucun commit auto. Si vous modifiez des records sans commit, rien n'est sauvegardé.

7. Premier module "hello world"

Créer dans addons-custom/ un dossier my_first/ avec ces fichiers :

addons-custom/my_first/__manifest__.py
{
    'name': 'My First Module',
    'version': '19.0.1.0.0',
    'category': 'Tools',
    'summary': 'Mon tout premier module Odoo',
    'author': 'Moi',
    'depends': ['base'],
    'data': [],
    'installable': True,
    'application': False,
}
addons-custom/my_first/__init__.py
# vide pour l'instant

Redémarrer Odoo, activer le mode dev, aller dans Apps → cliquer Update Apps List → chercher "My First". Si le module apparaît, c'est gagné.

🏋️ Exercice de validation

Mission

  1. Faire tourner Odoo 19 en local via Docker
  2. Cloner Odoo source dans ~/odoo-src
  3. Créer une base test19 avec demo data en français
  4. Installer le module CRM via l'UI
  5. Créer le module my_first et le voir apparaître dans la liste des Apps
  6. Ouvrir le shell Odoo et compter les res.partner de la base

Critère de succès : capacité à recommencer toute la procédure de mémoire en moins de 30 minutes.

🔗 Ressources

📋 Quiz de validation

Accueil Module 1 — ORM & Modèles