Skip to main content
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 and 19 by user count, installed modules, and deployment stage — so you can size your server correctly the first time.

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 both Odoo 18 (the current LTS release) and Odoo 19 (releasing October 2026). The resource requirements between these versions are nearly identical. Odoo 19 adds new features but does not significantly change the memory or CPU footprint. If you are still running Odoo 16 or 17, the numbers below still hold. Older versions use slightly less RAM but more CPU due to less efficient ORM queries.

Minimum Requirements (Odoo 18/19)

The bare minimum to install and run Odoo on a single server with PostgreSQL:

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+Version 16 recommended. Versions 12-17 all supported.
Python3.10+Ships with Ubuntu 22.04+. Odoo 19 requires 3.10 minimum.

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.

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 or 19 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. PostgreSQL and the Odoo application server share these resources on a single-server setup, so RAM is typically the first bottleneck.

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 for the best balance of performance and stability.

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