What Web Server Does Odoo Use?

Talk to Our Odoo Experts Take the Free ERP Assessment
Current Odoo serving web requests with its built-in Werkzeug server
                        behind Nginx

What Web Server Does Odoo Use?

Odoo (formerly OpenERP) uses its own built-in HTTP server, written in Python on top of Werkzeug. Odoo runs it behind Nginx or Apache in production deployments. If you are used to older OpenERP versions: the old OpenERP web client was built on CherryPy, but current Odoo does not use CherryPy as its web server.


Odoo architecture layers: user interface, application server and
                        PostgreSQL database

Odoo Architecture Overview

Odoo's architecture is structured into three main layers:

Database Layer

Odoo uses PostgreSQL as its database management system. It stores the data related to the Odoo applications: business transactions, records and application settings.

Application Layer

The application server layer contains the core business logic of Odoo. It processes requests and handles the communication between the database and the user interface. This is the layer that runs Odoo's web server.

Presentation Layer

The presentation layer renders the user interface through web browsers. It includes the web client that gives you access to Odoo's functionalities.


Odoo's built-in Werkzeug based web server with Nginx as a reverse
                        proxy

Web Server Used in Odoo

Current Odoo runs its own built-in HTTP server based on Werkzeug. The server is part of the Odoo application itself and handles HTTP requests, routing them straight to the application layer, so there is no separate web application server to install and configure.

Reverse Proxy in Front: Nginx or Apache

In production, Odoo's built-in server usually sits behind a reverse proxy:

Nginx: a high-performance proxy that handles HTTPS (SSL/TLS termination), serves static assets and can balance load across multiple Odoo instances behind one address. It gives low resource consumption for busy sites.

Apache: the long-standing web server with a wide module range. It covers the same reverse-proxy jobs, with flexibility if you already run Apache for other sites.

Which one to choose? Both work. Nginx is the common default for Odoo deployments because of its simplicity and performance; Apache is the usual choice when your server infrastructure already runs on it.


Odoo production setup with multiple workers behind Nginx and a
                        separate PostgreSQL server

Production Setup

A production Odoo deployment that serves real users looks like this:

Multiple workers: Odoo runs behind a worker model configured with the workers setting, so several processes handle requests instead of one dev-style process.

Nginx as reverse proxy: Nginx (or Apache) fronts Odoo, terminates HTTPS and proxies requests to Odoo's own port (8069 by default).

Live-updates port: Odoo listens on a separate main port, 8072 by default for live updates, which proxies websocket traffic for real-time UI features like chat and activities.

PostgreSQL on its own server: for bigger installs, run PostgreSQL separately from the Odoo web server so each part can be shared and tuned independently.

Running Odoo in the cloud? Odoo.sh and our cloud hosting setups handle this stack for you.


Deployment Considerations

When you choose how to deploy Odoo, there are several factors to consider:

Performance Tuning

Caching: To reduce the database load and improve response time, implement caching strategies both inside Odoo (asset caching) and in your reverse proxy.

Load Balancing: For larger installations, run multiple Odoo instances with a load balancer that distributes traffic equally.

Security Measures

SSL/TLS Encryption: Use SSL certificates so data transmission between clients and servers is encrypted. Terminate them at your proxy.

Firewall Configuration: Keep only the necessary ports open (80, 443), and keep database and internal ports off the public internet.

Scalability

Database Optimization: Optimize PostgreSQL regularly (indexes, vacuum, tuning) for efficient data retrieval and storage.

Horizontal Scaling: Add more Odoo servers as demand grows, distributing the extra load without compromising performance.


FAQs

Which is the web server used by Odoo?

Current Odoo runs its own built-in HTTP server based on Werkzeug, usually behind Nginx or Apache, which act as reverse proxies for HTTPS in production.

What is an open-source web server?

An open-source web server means publicly available software whose source code is free to use and modify, that delivers web pages over the internet, such as Nginx and Apache.

Does Odoo use Nginx Web Server?

Odoo's default web server is its own Werkzeug-based HTTP server. Nginx usually sits in front of Odoo as a reverse proxy in production, handling HTTPS, static files and load across the multiple Odoo instances equally.