Key takeaways
- Burstable T3 instances suit small Odoo databases. M7i is the safe default for steady business use, and R7i suits large databases that need more RAM.
- Pick the region closest to your users, or the one your data residency rules require.
- The instance is only part of the bill. Disk, snapshots, public IPv4 addresses and outbound traffic all add up.
- Once your usage is stable, Savings Plans can cut the compute cost in exchange for a one- or three-year commitment.
When AWS is the right home for Odoo
AWS is rarely the cheapest place to run a single Odoo server. Smaller providers such as Hetzner or DigitalOcean usually cost less for similar specs. AWS makes sense when:
- Your company already runs on AWS, with its accounts, billing, security policies and compliance reviews in place.
- Odoo needs to sit next to other AWS systems, such as a data warehouse, an e-commerce backend or internal services.
- You need a specific region that other providers do not offer, or a managed database such as Amazon RDS.
- You have AWS credits or a negotiated discount that changes the price comparison.
If none of these apply, compare the total cost with simpler providers first. Our Odoo hosting cost guide and our guide to running Odoo on Hetzner are good places to start.
Choosing an instance type
EC2 instance names follow a pattern: the letter is the family, the number is the generation, and the size comes after the dot. For Odoo, four families cover nearly every case.
T3: burstable, for small databases
T3 instances have a baseline CPU level and earn credits while they are below it, which they spend to burst above it. That matches a small Odoo database well: quiet most of the day, with short busy moments. According to AWS's documentation, T3 instances launch in unlimited mode by default (as of October 2026). They never get throttled, but if average usage stays above the baseline you pay extra for the CPU time. If a T3 is busy all day, a non-burstable family is usually cheaper and more predictable.
M7i: general purpose, the safe default
M instances balance CPU and memory, with 4 GiB of RAM per vCPU. They give steady
performance with no credits to manage, which suits a company that uses Odoo all day.
An m7i.large (2 vCPUs, 8 GiB) or m7i.xlarge (4 vCPUs, 16
GiB) covers many small and medium businesses.
C7i and R7i: more CPU or more memory
C instances have more CPU for the RAM (2 GiB per vCPU). They help when many users work at once but the database is modest. R instances have more RAM (8 GiB per vCPU), which helps large databases where PostgreSQL benefits from keeping more data in memory, or when you run many Odoo workers.
Whichever family you choose, the number of Odoo workers decides how much CPU and RAM you need. Our Odoo server sizing guide shows how to work it out from your number of users.
What about Graviton?
AWS's Arm-based Graviton instances, such as the M7g family, often cost less than the equivalent Intel ones. Odoo itself runs on Arm, but check that every Python package your custom and third-party modules need is available for Arm before you choose one.
Choosing a region
Three things decide the region:
- Where your users are. Odoo is an interactive web application, so a region close to most users feels faster.
- Data residency. If your data must stay in a country or in the EU, pick a region there, and keep backups in the same jurisdiction.
- Price and availability. Prices differ between regions, and newer instance families are not available everywhere. Check the EC2 pricing page for your region before you decide.
Some newer regions are opt-in: you must enable them in your AWS account before you can launch anything there.
Storage: EBS gp3
Use a gp3 EBS volume for the server disk. According to AWS, gp3 delivers a baseline of 3,000 IOPS and 125 MiB/s at any size, and you can pay for more if you need it (as of October 2026). That is enough for most Odoo databases.
Plan the size for both the PostgreSQL database and the filestore, where Odoo keeps attachments. The filestore often grows faster than the database, especially if users attach scans and photos. gp3 volumes can be enlarged later without downtime, so you don't have to guess years ahead.
Understanding the AWS bill
The instance price is the number everyone compares, but an Odoo server on AWS has other charges (as of October 2026):
- The instance, billed per second while it runs.
- EBS storage, billed per GB per month, plus any extra IOPS or throughput you provision.
- Snapshots, billed for the storage they use.
- Public IPv4 addresses. AWS charges for every public IPv4 address, currently $0.005 per hour, which is about $3.65 a month per address.
- Outbound data transfer. AWS includes 100 GB a month of data transfer out to the internet, across all services and regions. Beyond that, it is charged per GB. Odoo itself uses little, but large downloads and offsite backups to another provider count.
Saving money
Once you know which instance you need, AWS's Savings Plans lower the price in exchange for committing to a level of spend for one or three years. AWS says EC2 Instance Savings Plans save up to 72% compared with on-demand prices, and the more flexible Compute Savings Plans up to 66% (as of October 2026). Run on demand for the first few weeks to find the right size, then commit.
Don't stop an Odoo server at night to save money. Scheduled actions and emails stop too, and on AWS a stopped instance gets a new public IPv4 address when it starts again. If you point your own domain at the server's address, attach an Elastic IP so the address stays the same.
Security basics on AWS
- Security groups: open only HTTP, HTTPS and SSH to the server, and limit SSH to known addresses where you can.
- IAM: give any tool that manages your servers its own IAM user or role with only the permissions it needs, never the root account's keys.
- Backups outside the server: EBS snapshots are useful, but keep regular Odoo backups of the database and filestore in a second place too. Our Odoo backup strategy guide explains why.
Doing it yourself or with a platform
On AWS you can build everything yourself: launch the instance, install Odoo, PostgreSQL and Nginx, set up HTTPS, backups and monitoring, and keep it all patched. Teams with AWS experience often do. If you would rather not manage servers at all, Odoo Online or Odoo.sh run the platform for you, on Odoo's own infrastructure.
How CloudPilot runs Odoo on AWS
CloudPilot connects to your AWS account with an IAM access key and creates Odoo servers there. The servers stay on your AWS bill.
- A curated list of instance types: T3, M7i, C7i and R7i sizes from 2 to 16 vCPUs, all x86.
- The regions enabled in your account, so opt-in regions appear once you enable them.
- Ubuntu 24.04 on a 50 GB gp3 disk, in your default VPC, with a security group that opens SSH, HTTP and HTTPS.
- Hardened by default: SSH password logins are turned off, fail2ban blocks brute-force attempts and security updates install automatically.
- Amazon RDS if you want it: keep the Odoo database on your own PostgreSQL server, such as RDS. See Use an external PostgreSQL database.
- Backups to your own S3 bucket, plus staging, Git deploys, custom domains with SSL, and monitoring.
Connecting your own AWS account is part of the Pro and Business plans. See pricing for each plan, Odoo hosting on AWS for an overview, and Connect a cloud provider for the IAM setup.
To launch it in one click, see Odoo on AWS with managed Odoo hosting. Check current instance prices for your region on EC2 on-demand pricing.
Frequently asked questions
Which AWS instance type is best for Odoo?
For small databases with a few users, a burstable T3 instance is enough. For a business that uses Odoo all day, M7i general-purpose instances are a safe default. Choose R7i for large databases that need more RAM, and size the instance from your number of Odoo workers.
How much does it cost to run Odoo on AWS?
It depends on the instance type and region. Add EBS storage, snapshots, a public IPv4 address and outbound traffic to the instance price. Check the AWS pricing pages for your region, and consider Savings Plans once your usage is stable.
Should I use Amazon RDS for the Odoo database?
RDS takes care of database patching, backups and failover options, at a higher cost than PostgreSQL on the same server. It suits larger or critical deployments. For a small database, PostgreSQL on the Odoo server is simpler and cheaper.