Key takeaways
- Azure makes sense when you already use Microsoft 365, Entra ID and an Azure subscription. It is rarely the cheapest place for a single server.
- Start with a 2 vCPU, 8 GB VM for a small team, and move to a general purpose D size when Odoo is busy all day.
- Outbound port 25 is blocked on most Azure subscriptions. Send Odoo email through Microsoft 365 or another authenticated relay instead.
- Odoo can use Microsoft accounts for sign-in, so staff log in with the same account they use for Outlook and Teams.
Why Microsoft 365 companies put Odoo on Azure
Azure is not the simplest or the cheapest cloud for one Odoo server. Smaller providers such as DigitalOcean or Hetzner usually cost less for the same CPU and memory. But for a company that already runs on Microsoft, Azure brings real advantages:
- One tenant and one bill. Odoo sits in the same Azure subscription as your other workloads, under the same billing, budgets and cost reports.
- The same identity. Your IT team already manages users in Entra ID, and Odoo can use those Microsoft accounts for sign-in.
- The same governance. Azure Policy, role-based access, tags and resource groups work for Odoo servers just like for everything else.
- Existing agreements. If your company has an enterprise agreement, credits or committed spend with Microsoft, Odoo can count against it.
If none of these apply, compare first with our guides to Odoo on DigitalOcean and running Odoo on Hetzner.
Choosing an Azure VM size for Odoo
Azure VM sizes have names like Standard_D4s_v5. The first letter is the
family, the number is the vCPU count, the small letters are features (such as
s for premium storage support) and the end is the version. Three families
cover nearly every Odoo server.
B series: burstable, for small databases
B-series VMs run below their full CPU most of the time and bank credits while they do. When someone runs a big report, they spend those credits to burst to full speed. Once the credits run out, the VM drops back to its baseline. That suits a small Odoo database that is quiet most of the day. If a B-series VM is busy for hours at a time, users will feel the slowdown, and a D size is the better choice.
As of October 2026, Microsoft has announced the retirement of the original B-series sizes (such as B2s and B2ms) for November 2028. The newer Bsv2 sizes are the burstable option for new deployments.
D series: general purpose, the safe default
D-series VMs such as D2s_v5 or D4s_v5 have 4 GB of RAM per
vCPU and steady performance with no credits to watch. A D2s_v5 (2 vCPUs,
8 GB) or D4s_v5 (4 vCPUs, 16 GB) fits most companies that use Odoo all
day.
E series: memory optimized, for large databases
E-series VMs have 8 GB of RAM per vCPU. They make sense when the database is large and PostgreSQL runs on the same server, because PostgreSQL uses spare memory to cache data.
How much VM does Odoo need?
Odoo's rules of thumb are up to (CPU cores × 2) + 1 workers, about six concurrent users per worker, and roughly 325 MB of RAM per worker, plus room for PostgreSQL and the operating system. In practice:
- 2 vCPUs, 8 GB: a small team of up to about 30 concurrent users.
- 4 vCPUs, 16 GB: up to about 50 concurrent users, or heavier apps such as Manufacturing or a busy website.
- 8 vCPUs, 32 GB or more: larger teams, real eCommerce traffic or several databases on one server.
The memory limits and PostgreSQL settings for each size are in our Odoo workers and server sizing guide. You can resize an Azure VM later, so start small and grow with real usage.
Choosing an Azure region
Choose the region closest to most of your users, because every click in Odoo is a round trip to the server. If you have data residency rules, Azure has regions across Europe, so personal data can stay in the EU. Our guide to Odoo data residency and GDPR explains what else to check.
Not every VM size is available in every region, and some newer regions have fewer sizes. Check that the size you want is offered in your region before you plan around it.
Email: send through Microsoft 365
According to Microsoft's guide to outbound SMTP connectivity in Azure, outbound connections on port 25 are blocked for most subscription types, including pay-as-you-go (as of October 2026). Enterprise agreement subscriptions are the main exception. Microsoft recommends sending through an authenticated relay on port 587, which is not blocked.
For a Microsoft 365 company, the obvious relay is Microsoft 365 itself:
- The Microsoft Outlook module in Odoo connects an outgoing mail server to a Microsoft 365 mailbox with OAuth, using an app you register in Entra ID. There is no mailbox password stored in Odoo.
- Incoming mail can use the same module to fetch replies from a Microsoft 365 mailbox, so customer answers land on the right Odoo record.
- Bulk mail such as newsletters is better sent through a dedicated email marketing provider, because Microsoft 365 has sending limits.
Whatever you use, publish SPF, DKIM and DMARC records for your sending domain. Our guide to configuring email for self-hosted Odoo covers the DNS records and the alias domain.
Sign in to Odoo with Microsoft accounts
Odoo supports OAuth sign-in, and its documentation includes a guide to Microsoft Azure sign-in authentication. In short, you register an app in Entra ID with Odoo's sign-in address as the redirect URL, then turn on OAuth in Odoo's settings and add Azure as a provider. Users then see a "Log in with Microsoft" button.
For company staff, register the app as single-tenant, so only accounts from your own organization can use it. Existing Odoo users link their Microsoft account through the password reset page; new users can log in with Microsoft straight away. When someone leaves and IT disables their Microsoft account, they can no longer sign in to Odoo that way either. Remember to archive the Odoo user as well.
Understanding the Azure bill
An Odoo server on Azure is made of several resources, and each one is billed:
- The VM, for the time it runs. A stopped and deallocated VM no longer costs compute, but its disk and static IP still do.
- The managed disk, by size and type, whether the VM runs or not.
- The public IP address. A static IP is billed separately.
- Outbound data transfer above the free allowance. Inbound traffic is free, and a typical Odoo server sends little data.
- Backups and storage, such as Azure Backup or a Blob Storage container for offsite copies.
For a server that runs all year, Azure offers one- and three-year reservations and savings plans that lower the VM price in exchange for a commitment. Check the current prices for your region before you commit, and remember that the total cost of running Odoo includes your team's time. Our Odoo hosting cost guide compares the options.
Doing it yourself or with a platform
You can build all of this by hand: create the VM, install Odoo, PostgreSQL and Nginx, set up HTTPS, backups and monitoring, and keep it patched. Teams with Azure and Linux experience often do. If you would rather not run servers at all, Odoo Online or Odoo.sh host Odoo for you, on Odoo's own infrastructure instead of your Azure subscription.
How CloudPilot runs Odoo on Azure
CloudPilot connects to your Azure subscription with a service principal and creates Odoo servers there. The servers stay on your Azure bill.
- A curated list of VM sizes from the B, D and E series, from 2 to 8 vCPUs and 4 to 64 GB of RAM. Azure's API has no list price, so check prices on Azure's pricing page.
- Every physical Azure region, so you can keep Odoo next to your other workloads.
- One resource group per server, with the VM, a 64 GB Standard SSD disk, a static public IP and a network security group that opens only SSH, HTTP and HTTPS. Deleting the server removes the whole group.
- Ubuntu 24.04, hardened by default: SSH password logins are off, fail2ban blocks brute-force attempts and security updates install automatically.
- Backups to your own Azure Blob Storage, S3, Google Cloud Storage or SFTP, plus staging with email neutralized, Git deploys, custom domains with SSL, and monitoring with alerts.
Connecting your own Azure subscription is part of the Pro and Business plans. See Odoo hosting on Microsoft Azure for an overview, managed Odoo hosting for what CloudPilot looks after, Connect a cloud provider for the service principal, and pricing for each plan.
Odoo on Microsoft Azure: questions
Which Azure VM size should I use for Odoo?
A 2 vCPU, 8 GB VM suits a small team. Use a general purpose D size, such as D2s_v5 or D4s_v5, when Odoo is busy all day, and an E size for a large database with PostgreSQL on the same server.
Can Odoo send email from an Azure VM?
Not directly on port 25 on most subscriptions, which Azure blocks. Send through an authenticated relay on port 587 instead, such as Microsoft 365 with Odoo's Microsoft Outlook module.
Can staff sign in to Odoo with their Microsoft 365 accounts?
Yes. Register an app in Entra ID, turn on OAuth in Odoo's settings and add Azure as a provider. Users then log in with the same Microsoft account they use for Outlook and Teams.