How to Install Odoo and Set Up a Development Environment
how to install odoo
Also searched as
- how to develop odoo
- install odoo on ubuntu from source
- odoo development environment setup
- run odoo with docker
Short answer
For development, install Odoo from source: install PostgreSQL and system libraries, clone the Odoo repository at your target version, create a Python virtual environment, install requirements, then start odoo-bin with a config file and a new database. Use Docker for a quick trial. Run with developer options and create your own addons folder for custom modules.
Applies to: Odoo Community 16 to 18 on Ubuntu or Debian; Windows and macOS follow the same pattern. Check the official requirements for the Python version your Odoo version supports.
Install Odoo from source on Ubuntu
- 1Install PostgreSQL and create a database role for your user: sudo apt install postgresql, then sudo -u postgres createuser -s your_user.
- 2Install system packages for building Python dependencies, such as git, python3-dev, python3-venv, libxml2-dev, libxslt1-dev, libldap2-dev, libsasl2-dev, libpq-dev and libjpeg-dev.
- 3Clone the Odoo repository for your version, using a shallow clone of the matching branch such as 17.0.
- 4Create a virtual environment, activate it, and install requirements.txt from the cloned repository.
- 5Install wkhtmltopdf if you need PDF reports with correct headers and footers.
- 6Create an odoo.conf with addons_path, db_user and an admin password, then start the server with odoo-bin -c odoo.conf.
- 7Open http://localhost:8069, create a database, and install a base app such as Manufacturing or Sales to confirm it works.
Choosing an install method
Source install gives you full control, the ability to debug and the ability to switch branches, which is why developers prefer it. Packaged installs from the official Debian or RPM packages are quicker for servers. Docker is the fastest way to try a version without touching your machine. Windows has an installer that is convenient for evaluation, but development work is smoother on Linux or WSL.
Whichever you choose, match the Odoo version to the Python and PostgreSQL versions it supports. Mismatches cause strange dependency errors that waste hours.
Source install commands
The commands below show a typical Ubuntu setup. Adjust the branch to your target version and keep custom modules in a separate folder outside the Odoo repository so upgrades stay clean.
The configuration file lists the folders where Odoo looks for modules. Put the standard addons first and your custom addons after them.
sudo apt update sudo apt install -y git python3-venv python3-dev build-essential libpq-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev libjpeg-dev postgresql sudo -u postgres createuser -s $USER git clone --depth 1 --branch 17.0 https://github.com/odoo/odoo.git python3 -m venv odoo-venv source odoo-venv/bin/activate pip install wheel pip install -r odoo/requirements.txt
[options] admin_passwd = change_this_master_password db_host = False db_port = False db_user = your_user db_password = False addons_path = /home/you/odoo/addons,/home/you/custom_addons
Development workflow
Start the server in the foreground with the developer options so templates and Python reload on change. Use a dedicated development database and keep demo data on, so you can test quickly.
Odoo includes a scaffold command that creates the skeleton of a module. A module needs a manifest, a models folder and views; after creating it, update the apps list and install it, then restart with the update flag when you change models.
./odoo/odoo-bin -c odoo.conf -d dev_db -i base --dev=all ./odoo/odoo-bin scaffold my_module /home/you/custom_addons ./odoo/odoo-bin -c odoo.conf -d dev_db -u my_module
Docker for a quick trial
The official Docker images for Odoo and PostgreSQL can be run together with a compose file. Mount a folder for your custom addons and a volume for data so that nothing is lost when the container is recreated.
Docker is an excellent way to test a version, but for step-through debugging, a source install in a virtual environment is simpler.
Try it here, free
Odoo Manufacturing Setup Checklist
A practical checklist for configuring Odoo Manufacturing from inventory foundations through BOMs, work centers, planning and go-live.
Common pitfalls
- !Using a Python version the Odoo version does not support.
- !Putting custom code inside the Odoo repository, which complicates upgrades.
- !Leaving the master password at its default or exposing port 8069 publicly.
- !Running as the postgres superuser or root instead of a normal role.
- !Forgetting wkhtmltopdf, then wondering why PDF reports look wrong.
How an ERP-grounded AI assistant handles this
Once Odoo runs, developers still spend time finding the right model and field names. An assistant grounded in your Odoo schema can answer questions such as which fields hold a manufacturing order's component lines, and propose queries or ORM calls for a developer to review. Netray runs this on your own infrastructure, so an internal Odoo database is not sent to a public model.
Frequently asked questions
What do I need to install Odoo?
A supported Python version, PostgreSQL, system libraries for building dependencies, and the Odoo source or package for your target version. Wkhtmltopdf is needed for good PDF output. The official documentation lists exact versions per Odoo release.
Which Odoo version should I install?
For a new project, use a currently supported stable release, because older versions stop receiving fixes. If you depend on specific third-party modules, check that they support the version before you commit.
How do I start developing a custom Odoo module?
Use the scaffold command to generate a module, add it to your addons path, update the apps list, and install it. Then define models in Python and views in XML, and update the module whenever you change them.
Is Docker good enough for Odoo development?
Yes for trials and for running a consistent environment, if you mount your addons and data volumes. For debugging with breakpoints, a source install is often easier, though remote debugging into a container also works.
Related
Odoo External API: Authenticate and search_read with XML-RPC and JSON-RPC
Call the Odoo external API by authenticating against /xmlrpc/2/common to get a user id, then calling execute_kw on /xmlrpc/2/object with the database, uid, password or API key, model name, method and arguments. If authenticate returns False, the database name, login, or API key is wrong, or two-factor is enforced for that user.
Error fixOdoo Scheduled Actions (Cron) Not Running: How to Fix
Odoo scheduled actions usually stop firing because no cron worker is available (workers or max-cron-threads misconfigured), the action is set inactive, or an earlier job crashed and left an ir.cron row stuck in the running state, which blocks the queue. Check Settings > Technical > Automation > Scheduled Actions first, then the server config and the ir.cron table.
How-toOdoo Studio Custom Fields: Export, x_studio Names and Upgrade Risk
Odoo Studio saves your changes as data in the database: custom fields named x_studio_*, edited views stored as inherited ir.ui.view records, and automation rules. You can export them as a module via Studio's Export button, but upgrades can break Studio views when the base view changes, and Studio is not a substitute for version-controlled code on complex logic.
How-toOdoo Manufacturing Tutorial: From BOM to Finished Product
The Odoo Manufacturing app (MRP) turns a Bill of Materials into manufacturing orders that consume components and produce finished goods. The core flow is: create products, build a BOM, optionally add work centers and operations, create and confirm a manufacturing order, then produce and mark it done. This walkthrough covers the process end to end and what to verify on Odoo 19.
How-toHow to Create a Generic Inquiry in Acumatica
Generic Inquiries (GI) are Acumatica's no-code query builder for joining tables, adding filters, and exposing the result as an inquiry screen, dashboard data source, or API endpoint. Open System > Customization > Generic Inquiry, add your base table, define joins and conditions, then run and save. No SQL or customization project is required.
Error fixFix Odoo AccessError: You Are Not Allowed to Access Records
Odoo raises AccessError when a user's security groups do not grant a CRUD right on a model through ir.model.access.csv, or when an ir.rule record rule filters the specific record out for that user or company. Fix it by adding the user to the group named in the error, editing the model's access rights, or reviewing the record rule's domain under Settings > Technical > Security.
AI for ERPAI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's Cloud
Add grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
Stuck on Odoo (Community)?
Talk to engineers who work inside Odoo (Community) every week, and who build private AI that answers these questions from your own ERP data.
Keep exploring
Free tools
- Odoo Manufacturing Setup ChecklistA practical checklist for configuring Odoo Manufacturing from inventory foundations through BOMs, work centers, planning and go-live.
- Self-Hosted Odoo Private AI Layer Blueprint GeneratorGenerate a shareable architecture plan for adding a private, on-prem AI assistant to Self-Hosted Odoo, with components, security controls and a three-phase rollout.
- Odoo Manufacturing Technical Model Names ReferenceSearchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.
ERP fixes and how-tos
- Odoo Manufacturing Reports: Production Analysis, Cost and ForecastBuilt-in Odoo manufacturing and production reports, how to forecast demand and component needs, and how to build custom MRP reports with SQL or Studio.
- Odoo Manufacturing Tutorial: From BOM to Finished ProductOdoo manufacturing tutorial for small manufacturers: set up products, BOMs, work centers and operations, run a manufacturing order, and what to check in Odoo 19.
- Self-Hosted Odoo AI Assistant: Private Architecture With a Local ModelAdd a private AI assistant to self-hosted Odoo: external API with user API keys, record rules respected, PostgreSQL replica, local model and audit trail.
AI on your ERP
- AI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's CloudAdd grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
- AI for Odoo Manufacturing (MRP): BOMs, Work Orders and ShortagesAI for Odoo Manufacturing: BOM checks, work order delays, reordering rules and plain-language questions over mrp.production data, on-prem or private cloud.
Integrations
- How to add WhatsApp to OdooHow to add WhatsApp to Odoo: native Enterprise templates, Cloud API webhooks, order and delivery alerts, supplier confirmations and two-way replies into Odoo records.
- How to connect ChatGPT to OdooHow to connect ChatGPT to Odoo: custom GPT actions, exports versus live access, enterprise data controls, and when a private model is the safer choice.
Software
- OdooWhat Odoo is, how its open-source Community and Enterprise editions differ, how the manufacturing apps and XML-RPC API work, and which alternatives to compare.
- ERPNextVendor-neutral guide to ERPNext, the open-source ERP from Frappe: manufacturing modules, REST API, hosting options, limits, alternatives and AI uses.