Skip to main content
OEC.sh
GuideFebruary 21, 202612 min read

Odoo Server Requirements in 2026 - The Definitive Guide

How much CPU, RAM, and storage does Odoo actually need? We break down the hardware requirements for Odoo 18, 19, and 20 by user count, installed modules, and deployment stage - so you can size your server correctly the first time. The CPU and RAM numbers are version-neutral. Odoo 20 adds Python 3.12+, PostgreSQL 16+, and pgvector to the software baseline.

Undersize your Odoo server and you get slow page loads, failed report generation, and frustrated users. Oversize it and you pay for resources you never touch. This guide gives you concrete numbers for every deployment size, from a solo freelancer testing Odoo on a $4 VPS to a 500-user enterprise running a multi-server cluster.

These numbers apply to Odoo 18 (the LTS stream through October 2027), Odoo 19, and Odoo 20 (the current major release, shipped 2026-09-24). CPU, RAM, and storage sizing is nearly identical across the three. The software baseline is where Odoo 20 differs: it needs Python 3.12 or later, PostgreSQL 16 or later, and the pgvector extension for embedding and AI features. If you are still running Odoo 16 or 17, the hardware numbers below still hold. Older versions use slightly less RAM but more CPU due to less efficient ORM queries.

Minimum Requirements (Odoo 18/19/20)

The bare minimum to install and run Odoo on a single server with PostgreSQL. The hardware numbers are the same across v18, v19, and v20. Odoo 20 raises the Python and PostgreSQL baseline and adds the pgvector extension.

ResourceMinimumNotes
CPU2 vCPU1 vCPU technically works but Odoo + PostgreSQL will compete for CPU cycles
RAM2 GBOdoo idles at ~500 MB, PostgreSQL needs ~300 MB. Leaves almost no headroom.
Storage20 GB SSDOS (~5 GB) + Odoo (~2 GB) + PostgreSQL + logs. No room for filestore growth.
OSUbuntu 22.04/24.04 LTSDebian 12 also works. RHEL/Rocky require extra dependency management.
PostgreSQL12+ (v18/19), 16+ (v20)Odoo 20 requires PostgreSQL 16 or newer and the pgvector extension. Odoo 18/19 support 12-17; version 16 recommended.
Python3.10+ (v18/19), 3.12+ (v20)Ubuntu 24.04 ships Python 3.12. On 22.04 add the deadsnakes PPA for 3.12 to run Odoo 20.
pgvectorRequired for Odoo 20PostgreSQL extension used for embeddings and AI features. Install postgresql-16-pgvector, then CREATE EXTENSION vector in each database.

Important: These minimums are for development and testing only. Running production Odoo on 2 GB RAM will result in out-of-memory kills during report generation, slow response times under any concurrent load, and PostgreSQL performance degradation as the database grows. Do not deploy production workloads on minimum specs.

Odoo 20 Baseline Changes

Odoo 20 shipped on 2026-09-24 as the current major release. CPU, RAM, and storage sizing is unchanged from v18 and v19 for a given user count. Three software baselines moved up:

ComponentOdoo 18 / 19Odoo 20Why it changed
Python3.10 / 3.11+3.12+Dropped support for 3.10/3.11. Ubuntu 24.04 ships 3.12 by default; 22.04 needs the deadsnakes PPA.
PostgreSQL15+ supported (16 recommended)16+ requiredOdoo 20 relies on features available in PostgreSQL 16 and the pgvector extension packaged for it.
pgvectorNot requiredRequiredNew embedding and AI features store vector data in the database. Install postgresql-16-pgvector and enable per database.
wkhtmltopdf0.12.6 patched Qt0.12.6 patched QtUnchanged. Same binary works for v18, v19, and v20.
Node.jsAny current LTSAny current LTSUnchanged. Used only for SCSS/LESS asset compilation.

If you are migrating a running v18 or v19 instance to v20 on the same server, the fastest path is: upgrade PostgreSQL to 16 if needed, install Python 3.12, install the postgresql-16-pgvector package, and enable the extension inside each Odoo database with CREATE EXTENSION IF NOT EXISTS vector;. For a step-by-step install, see our Odoo Ubuntu install guide.

Requirements by User Count

The most common way to size an Odoo server is by user count. “Users” here means concurrent active users - not total user accounts. If you have 100 user accounts but only 30 people are logged in and active at peak hours, size for 30. A good rule of thumb: concurrent users are typically 25-40% of total registered users.

Each Odoo worker process handles one request at a time and consumes 150-300 MB of RAM. The formula is simple: you need 1 worker per 4-6 concurrent users, plus 1-2 cron workers for background tasks. PostgreSQL needs its own share of RAM (at least 25% of total) and connections (at least 2x the number of workers).

UsersCPURAMStorageWorkersDatabase
1-52 vCPU4 GB40 GB NVMe2Same server
5-254 vCPU8 GB80 GB NVMe4Same server
25-1008 vCPU16 GB160 GB NVMe8Same server or separate
100-50016 vCPU32 GB500 GB NVMe16Separate DB server required
500+32+ vCPU64+ GB1+ TB NVMe32+PostgreSQL cluster + load balancer

All tiers assume Odoo Community or Enterprise with a typical mix of modules. If you run heavy modules like MRP or eCommerce, add 50-100% more RAM. See the module-specific section below.

The 100-user threshold is where single-server setups start struggling. At this point, PostgreSQL and Odoo compete for CPU and RAM on the same machine. Separating the database onto a dedicated server (or using a managed PostgreSQL service like AWS RDS or DigitalOcean Managed Databases) dramatically improves response times. The Odoo application server can then use all available RAM for workers, while PostgreSQL gets its own dedicated resources for query caching and connection handling.

Use our server calculator to get a personalized recommendation based on your exact user count and module selection, or check the server requirements tool for quick reference.

Requirements by Module

Not all Odoo modules hit the server the same way. A company using only CRM and Invoicing has very different server needs than one running Manufacturing, eCommerce, and Point of Sale at the same time. Here is how the major modules affect your resource budget:

AccountingCPU

Report generation (P&L, balance sheets, aged receivables) is CPU-intensive. A year-end close with 50,000+ journal entries can spike CPU to 100% for minutes. Plan for 2 extra vCPUs if accounting is a primary module.

Manufacturing (MRP)RAM

BOM explosion and production scheduling load entire bill-of-materials trees into memory. A 5-level BOM with 500 components can use 2 GB of RAM during scheduling. Add 4-8 GB RAM for heavy MRP use.

eCommerceI/O + RAM

Product catalog pages, image serving, and concurrent user sessions create heavy I/O and memory pressure. A catalog with 10,000+ products needs NVMe storage and 4+ GB extra RAM for caching. Plan for CDN offloading of static assets.

Point of SaleNetwork (WebSocket)

Each POS terminal maintains a persistent WebSocket connection to the server. CPU and RAM per terminal are low (about 50 MB RAM, minimal CPU), but you need stable sub-100ms latency and reliable WebSocket support. 20 terminals add roughly 1 GB RAM total.

Inventory / WarehouseModerate (scales with devices)

Base inventory operations are lightweight. The load scales with the number of barcode scanners and warehouse workers making concurrent stock moves. 10 scanners operating simultaneously need about the same resources as 10 regular users.

If you are running multiple resource-heavy modules, add their extra requirements together. A company using Accounting + MRP + eCommerce should plan for 2 extra vCPUs (Accounting) + 4-8 GB extra RAM (MRP) + NVMe storage and CDN (eCommerce) on top of the base requirements for their user count.

PostgreSQL Sizing Guidelines

PostgreSQL does the heavy lifting for Odoo. Every page load, every search, every report hits the database. Get this wrong and your whole instance suffers no matter how much CPU and RAM you give the Odoo application server.

ParameterSmall (1-25 users)Medium (25-100)Large (100-500)
shared_buffers1 GB4 GB8 GB
effective_cache_size3 GB12 GB24 GB
work_mem16 MB32 MB64 MB
max_connections100200500
maintenance_work_mem256 MB1 GB2 GB
wal_buffers16 MB64 MB128 MB

Connection pooling becomes critical beyond 50 users. Odoo opens one PostgreSQL connection per worker, and each connection uses 5-10 MB of RAM on the database server. Without a connection pooler, 16 workers with 2 connections each means 32 database connections at all times. Use PgBouncer in transaction pooling mode to multiplex connections - it can serve 100+ Odoo workers through 20-30 actual PostgreSQL connections, reducing database memory usage by 60-70%.

For a deeper dive into PostgreSQL configuration, see our PostgreSQL Tuning for Odoo guide, which covers indexing strategies, autovacuum tuning, and query optimization specific to Odoo workloads.

Storage Planning

Odoo storage has three components: the database, the filestore, and system overhead. Here is how each one grows over time:

Company sizeDB growth/yearFilestore growth/year3-year total
Small (1-10 users)~1 GB2-5 GB10-20 GB
Medium (10-100 users)5-10 GB10-30 GB50-120 GB
Large (100+ users)50-100 GB100-500 GB500 GB - 2 TB
eCommerce heavy10-20 GB50-200 GB (product images)200-700 GB

The filestore is where Odoo stores file attachments, product images, report PDFs, and email attachments. By default, these are stored on the local filesystem in ~/.local/share/Odoo/filestore/. For larger deployments, moving the filestore to S3-compatible object storage (AWS S3, DigitalOcean Spaces, MinIO) saves disk space and makes backups simpler.

NVMe vs SATA SSD: Always choose NVMe when available. PostgreSQL is I/O-heavy, and NVMe drives provide 3-5x better random read performance than SATA SSDs. The performance difference is most noticeable on reports and searches that scan large tables. Every major VPS provider now offers NVMe as standard or as an affordable upgrade.

Always leave 20% free disk space. PostgreSQL needs free space for VACUUM operations (which reclaim dead tuples), WAL files, and temporary sort files. If your disk hits 95%+ utilization, PostgreSQL can refuse new writes and your Odoo instance will crash.

Network Requirements

Network bandwidth and latency tend to get ignored when sizing Odoo servers. Here is what you actually need:

Bandwidth per User

An active Odoo user generates approximately 50 Kbps of sustained traffic (averaged over a work session). Peak bandwidth during report downloads or large list views can spike to 500 Kbps - 2 Mbps per user. For 50 concurrent users, plan for at least 25 Mbps of available bandwidth with burst capacity to 100 Mbps. Most VPS providers include 1 Gbps ports, so bandwidth is rarely a bottleneck.

Latency

Odoo is a web application that makes many small requests. Each page load triggers 10-30 HTTP requests for data, assets, and RPC calls. Keep latency under 100ms between your users and the server. At 200ms+ latency, Odoo starts feeling sluggish - not because the server is slow, but because each of those 20+ requests adds a round trip. Choose a data center region close to your users.

CDN for Static Assets

Odoo serves JavaScript bundles, CSS, and images from the application server by default. For deployments with users spread across multiple regions, configure a CDN (Cloudflare, CloudFront, or Bunny.net) to cache and serve static assets from edge locations. This reduces server load by 30-50% and improves perceived page load speed for remote users. eCommerce deployments should treat CDN as mandatory, not optional.

Development vs Staging vs Production

Running three environments (development, staging, production) is standard practice. But you do not need to triple your server costs. Each environment has a different job and different resource needs:

EnvironmentSize (vs Production)Typical specPurpose
Development25% of production2 vCPU, 2-4 GB RAMCode changes, module development, quick testing. Single developer use.
Staging50% of productionHalf of production specPre-deployment testing with production-like data. UAT with a few users.
Production100%Full spec per user tableLive workload. All concurrent users, all modules, full dataset.

Pro tip: Development environments can run on the cheapest VPS tier your provider offers. A Hetzner CX22 at ~4 EUR/month or a DigitalOcean $6/month droplet is more than enough for a single developer. Staging should mirror production in software configuration (same Odoo version, same modules, same PostgreSQL version) but can use a smaller instance size. For detailed staging setup, see our Odoo staging environment guide.

Cloud Provider Recommendations by Budget

Now that you know your server specs, here is where to run them. We tested seven providers head-to-head and wrote a detailed comparison. Here is the quick summary:

BudgetBest pickSpec you getGood for
Under $10/moHetzner2 vCPU, 4 GB RAM, 40 GB NVMe1-10 users, dev/staging
$10-30/moHetzner or Vultr4 vCPU, 8 GB RAM, 80 GB NVMe10-30 users, small production
$30-100/moDigitalOcean or AWS4-8 vCPU, 16 GB RAM, 160 GB NVMe30-100 users, managed DB option
$100-500/moAWS or Hetzner dedicated16 vCPU, 32 GB RAM + separate DB100-500 users, enterprise
$500+/moAWS / GCP / bare metalMulti-server, load balanced500+ users, HA required

For region-specific recommendations, see our guides for Europe, India, and other regions. For VPS-specific sizing advice, check our best VPS for Odoo guide.

Not sure about your sizing? OEC.sh handles server provisioning automatically. Tell us your user count and modules, connect your cloud account (AWS, Hetzner, DigitalOcean, Vultr, GCP, Azure, or OVH), and we deploy an optimized Odoo instance with the right specs. PostgreSQL tuning, worker configuration, SSL, backups, and monitoring are all included. Start small and scale up when you need to. No migrations needed.

Frequently Asked Questions

What are the minimum server requirements for Odoo?

The absolute minimum to run Odoo 18, 19, or 20 is 2 vCPUs, 2 GB RAM, and 20 GB SSD storage. This is only suitable for development and testing with 1-2 users. For any production workload, you need at least 2 vCPUs, 4 GB RAM, and 40 GB NVMe. Odoo 20 adds a software baseline change: Python 3.12+, PostgreSQL 16+, and the pgvector extension. PostgreSQL and the Odoo application server share these resources on a single-server setup, so RAM is typically the first bottleneck.

What are the Odoo 20 server requirements?

Odoo 20 (September 2026) uses the same CPU and RAM sizing as v18 and v19 for a given user count. The software baseline moves up: Python 3.12 or later, PostgreSQL 16 or later, and the pgvector extension. wkhtmltopdf and Node.js are unchanged. If you are migrating from v18 or v19 on the same hardware, upgrade PostgreSQL to 16 if needed, install Python 3.12, add the postgresql-16-pgvector package, and run CREATE EXTENSION vector in each database.

How much RAM does Odoo need for 50 users?

For 50 concurrent users, plan for 16 GB RAM total. Each Odoo worker process consumes 150-300 MB depending on installed modules, and you need 6-8 workers for 50 users. PostgreSQL needs its own buffer cache (typically 25% of available RAM). If running both on the same server, 16 GB is the minimum for a responsive experience.

Does Odoo need a dedicated server?

Not necessarily. For up to 25 users, a single VPS with 4-8 GB RAM handles both Odoo and PostgreSQL comfortably. Beyond 100 users, separate the database onto its own server. Beyond 500 users, use a multi-server architecture with a load balancer, dedicated application servers, and a PostgreSQL cluster. Bare metal is only needed for very large deployments where virtualization overhead matters.

Can I run Odoo on a shared hosting plan?

No. Traditional shared hosting (cPanel, Plesk) does not support Odoo. You need a full Linux server with root access to install Python dependencies, configure PostgreSQL, and run long-lived application processes. The cheapest viable option is a 2 vCPU, 4 GB RAM VPS from providers like Hetzner (starting around €4/month) or DigitalOcean ($24/month).

What database does Odoo use?

Odoo exclusively uses PostgreSQL. It does not support MySQL, MariaDB, SQLite, or any other database engine. As of 2026, Odoo 18 and 19 support PostgreSQL 12 through 17, with PostgreSQL 16 recommended. Odoo 20 requires PostgreSQL 16 or newer and also needs the pgvector extension for embedding and AI features.

How much storage does Odoo need?

The Odoo application itself needs about 2 GB. The database grows at roughly 1 GB/year for small businesses, 5-10 GB/year for mid-size companies, and 50+ GB/year for large enterprises. The filestore (attachments, images, report PDFs) typically uses 2-5x more space than the database. Start with 40 GB NVMe for small deployments and 160 GB+ for mid-size. Always leave 20% free space for PostgreSQL VACUUM operations.

Deploy Odoo with the Right Server Size

Stop guessing. Connect your cloud account, pick your user count and modules, and OEC.sh provisions an optimized server automatically. Free plan available.

Related Reading