How big a server does your team need?
Odoo answers this itself in its deployment guide, and the answer depends on people working at the same time, not on how many accounts you have. Each Odoo worker is a process that handles requests; the guide reckons one worker copes with about six concurrent users.
| People using Odoo at once | Workers (about one per six) | Cores needed (workers ≤ cores × 2 + 1) |
|---|---|---|
| 12 | 2 | 1 is enough on paper; 2 is comfortable |
| 30 | 5 | 2 or more |
| 60 | 10, trimmed to 8 + 1 for scheduled jobs | 4, as in Odoo's own example |
For memory, the guide assumes most requests are light, around 150 MB per worker, and one in five is heavy, around 1 GB. In its 60-person example that adds up to about 3 GB for Odoo itself. Add memory for PostgreSQL and the operating system on top, because the database lives on the same server.
Up and running in an evening
- Order a server with Ubuntu 24.04; that is the version Odoo 20's package supports.
- Install PostgreSQL, the database Odoo needs, with
sudo apt install postgresql -y. - Add Odoo's own software repository for version 20 and install the
odoopackage. It sets Odoo up as a service that starts by itself. - Install wkhtmltopdf version 0.12.6 separately if you want PDF invoices and reports with headers and footers.
- Open the configuration file,
odoo.conf, and set the number of workers, a master password and the security options below. Then restart Odoo.
The repository gives you the free Community edition. If you pay for Enterprise, download its package from Odoo's download page instead; there is no nightly repository for it. If you installed Community from the repository, updates within a version arrive with the usual apt-get upgrade; an Enterprise package is updated by downloading the newer package from Odoo.
Keeping your company's data safe
Odoo's guide is blunt here: a new on-premise installation can be reached by anyone on the internet until its master password is set. That password guards the database manager, the page that can create, copy or delete whole databases, and the guide advises switching that manager off on any server facing the internet. Fix that first.
- Master password: set
admin_passwdin the configuration file to a long random value. - One database per address: use
dbfilter, then switch the database list off withlist_db = False, which also blocks the management screens. - HTTPS: Odoo sends logins in plain text, so put nginx in front with a certificate and turn on
proxy_mode. - Live updates: send
/websockettraffic to Odoo's separate chat worker on port 8072, as Odoo's sample nginx setup shows. - Database user: do not run Odoo as a PostgreSQL superuser.
The server that fits
Everything in Odoo, from a sales order to a stock count, is a database read or write, so the disk matters as much as the processor. Our NVMe servers are enterprise machines built to run under constant load, with NVMe SSDs that give you access to your data up to six times faster. The whole server is yours, with root access and the operating system you pick.
If a drive or any other part fails, it is replaced within four hours of your call. Your port is unmetered and not shared with any other customer at the access switch, and support answers by phone or live chat around the clock; live chat is usually answered in under a minute. A server already racked is ready about 30 minutes after your order is approved; a custom build takes 4 to 24 hours when the parts are on hand.
Backups you can actually restore
An Odoo backup has two halves: the database in PostgreSQL, and the filestore, where attachments and documents live. Copy both at the same time to a second machine, regularly, and ideally in another of our data centres. Before moving to a new major version, test the upgrade on a copy, never on the live system.
Would Odoo's cloud suit you better?
If you are a small team using standard apps and nobody wants to look after a server, Odoo's own hosted service is the easier road. Hosting it yourself makes sense once you need custom or community modules, want the data on hardware you control, connect other systems straight to the database, or have enough people that a whole server earns its keep. For a look at running other team software the same way, see our Nextcloud guide.
Questions people ask
- How many users can a 4-core Odoo server handle?
- Odoo's own example sizes a 4-core, 8-thread server for 60 concurrent users: 8 web workers plus 1 for scheduled jobs, and about 3 GB of memory for Odoo.
- Is the self-hosted Community edition free?
- The Community edition installs from Odoo's repository at no licence cost. Enterprise needs a subscription with Odoo, and its package comes from Odoo's download page.
- Which Ubuntu release suits Odoo 20?
- Ubuntu 24.04 LTS (Noble). That is the release Odoo 20's package supports.
- Why do my PDF invoices look wrong?
- Usually wkhtmltopdf. Odoo needs version 0.12.6, installed separately, for headers and footers to appear in reports.
- What should I back up?
- Both the database and the filestore, at the same time. A database without its filestore loses every attachment.
- Do I really need HTTPS for an internal tool?
- Yes, in practice. Odoo sends login details unencrypted, so its guide says a secure setup must use HTTPS. The only alternative it allows is a tightly secured internal network with no Wi-Fi, and even there it recommends HTTPS.