Odoo 19 just dropped last week, and I couldn’t resist getting it running locally. There’s something special about trying out a brand-new release the moment it comes out – especially when it’s a tool we use every day with clients. You can check out the official Odoo 19 release announcement if you want to see the highlights.
I’m Raphael Alla, founder and managing director at M+ Software. While I don’t code every day anymore, I still get passionate about technical stuff – and love getting my hands dirty with the technical setup. Odoo 19 just came out, so I installed it on my Mac and thought I’d share the exact steps I used.
Prerequisites
Before you start, make sure you have:
- Homebrew installed
- PostgreSQL installed (it doesn’t have to run as a service – I like starting it manually each time)
I personally prefer virtualenvs over Docker for local development. They’re lighter, easier to debug, and perfect for a quick local setup. They also allow me to run several versions of Odoo side by side.
Step 1: Create a Superuser for Odoo
Open psql
and run:
create role odoo19 with login superuser password '<your password>';
⚠️ Security Note:
This is only for local development. Granting superuser privileges is convenient, but it’s not secure for production.
In production, you should:
- Create a dedicated user with only the required privileges
- Use strong passwords and proper access controls
- Avoid storing passwords in plain text
Step 2: Set Up Your Virtual Environment
Create and activate a virtual environment for Odoo 19:
python3 -m venv ~/odoo/19/venv source ~/odoo/19/venv/bin/activate
This keeps dependencies isolated and avoids conflicts with other Python projects.
Step 3: Clone Odoo & Install Dependencies
mkdir -p ~/odoo/19 cd ~/odoo/19 git clone https://github.com/odoo/odoo.git --branch 19.0 --depth 1 cd odoo pip install -r requirements.txt
💡 Tip: I use --depth=1
here to only fetch the latest commit – it saves time and bandwidth since I don’t need the entire Git history locally.
Step 4: Use a Startup Script
Here’s my start_odoo19.sh
script, which checks if PostgreSQL is running, activates the virtualenv, and starts Odoo:
#!/bin/bash SERVICE_NAME="postgresql" VERSION=19 VENV_PATH=~/odoo/$VERSION/venv if brew services list | grep -q "$SERVICE_NAME.*started"; then echo "PostgreSQL is already running." else echo "PostgreSQL is not running. Starting it..." brew services run "$SERVICE_NAME" fi source $VENV_PATH/bin/activate ODOO_BIN=~/odoo/$VERSION/odoo/odoo-bin ODOO_CONFIG=~/odoo/$VERSION/odoo$VERSION.conf $ODOO_BIN -c $ODOO_CONFIG "$@"
🧪 Personal Note: I don’t have PostgreSQL configured to start automatically – I like to check that it starts cleanly every time. If you work on Odoo daily, you might want to enable it as a service for convenience.
Step 5: Create Your Configuration File
I first get Odoo to create a default configuration file
./start_odoo19.sh -s --stop-after-init
This will create a file called ~/odoo/19/odoo19.conf
Then open it with your favourite text editor (I use neovim) and adjust the options
[options] db_user = odoo19 db_password = <your password> addons_path = <path to odoo enterprise>
🧪 Interesting change: in Odoo 19, you no longer need to manually specify the base addons path – Odoo now handles this automatically.
Step 6: Run Odoo
chmod +x start_odoo19.sh ./start_odoo19.sh -d test_db --dev=all
⚙️ Developer Tip: I use --dev=all
so I get auto-reloads and debugging during development. Disable this for staging or production environments.
Final Thoughts
This setup isn’t just about getting Odoo 19 to run – it’s about creating a clean, reproducible local environment you can trust. Whether you’re writing your first custom module, debugging tricky workflows, or preparing for a client demo, this approach will give you a solid foundation to build on.
If you’d like help getting Odoo 19 into production, our team at M+ Software does this every day for clients. We take the same hands-on approach we use internally and apply it to real projects – so you can go from local setup to a robust, production-ready Odoo instance with confidence.