Local Odoo Development Setup on macOS
Prerequisites
- Docker Desktop for Mac (installed and running)
- Homebrew
- Access to the Odoo project repository
1. Install zodoo
brew install git pipx rsync
bash <(curl -fsSL https://raw.githubusercontent.com/Odoo-Ninjas/zodoo/refs/heads/main/install.sh)
By default this uses the Python that ships with Xcode. If your Odoo version
needs a newer Python (recommended for newer releases that drop 3.9 support),
reinstall pointing at a pyenv-managed interpreter instead:
pipx reinstall wodoo --python ~/.pyenv/versions/3.12.13/bin/python3
2. Clone the project repository
git clone <github-url> ~/projects/my-odoo
cd ~/projects/my-odoo
3. Configure for local development
odoo setting DEVMODE=1 # disables mail/cronjobs on restore, resets passwords
odoo setting ODOO_DEMO=1 # load demo data (optional)
odoo reload
odoo build
4. Initialize or restore database
Fresh database with demo data:
odoo -f db reset
Restore a customer database:
odoo -f restore odoo-db # interactive file picker
odoo update # update all modules after restore
5. Start
odoo up -d
odoo setup status # shows URL and port
Open: http://localhost:<PROXY_PORT>
Applying code changes
Whenever you modify module code (Python, XML views, security rules, data files), the running Odoo instance won't reflect those changes until the modules are reloaded into the database:
odoo update
# Installs/updates the modules listed under `install` in the project MANIFEST.
The module you're working on must be listed under install in the project's
MANIFEST — otherwise odoo update skips it and your changes won't show up.
Tips:
odoo update <module_name>updates a single module faster than a full update.- Pure Python changes are often picked up live by running in dev mode
(
odoo dev, which combines build + up + watch) without a full update, but structural changes (models, fields, views, security, data) always needodoo update. - If a change still doesn't show up, hard-refresh the browser (⌘ + Shift + R) to bypass Odoo's asset cache.
macOS-specific settings
On macOS, the postgres port is exposed on the host so you can connect from tools like TablePlus:
odoo setup next-port # also sets HOST_DB_PORT
Connect to postgres:
- Host:
localhost - Port:
<HOST_DB_PORT> - User/DB: from
odoo setup status
Troubleshooting on macOS
rsync errors
brew install rsync
Python version issues
odoo setting ODOO_PYTHON_VERSION=3.12
odoo reload && odoo build
Previous wodoo installation
If you had wodoo installed before:
rm -Rf ~/.odoo/images
bash <(curl -fsSL https://raw.githubusercontent.com/Odoo-Ninjas/zodoo/refs/heads/main/install.sh)
Port already in use
odoo setup next-port
odoo reload
odoo up -d
Broken CSS/JS after update
odoo setup remove-web-assets
# then log in as admin to regenerate assets
Docker Desktop not responding
Restart Docker Desktop. Then:
odoo down
odoo up -d