Skip to content

Category: Web and apps

Managed Odoo on your server: PostgreSQL, workers, modules and version upgrades

Your company's ERP on a server you control, with the database looked after, complete backups and every version upgrade rehearsed before anyone in the office notices.

Where it runs
In your account, in your name
Backups
With tested restores
Updates
Planned and documented
Licence
Community, LGPLv3; Enterprise, proprietary licence with a subscription in your name

In short

Odoo is an open source ERP with modules for sales, purchasing, inventory, accounting, CRM and much more. We install it in your account in the Community or Enterprise edition, with tuned PostgreSQL, workers and websocket behind a proxy, and backups of the database and filestore that we restore in tests. We keep the modules up to date and prepare major version upgrades with a rehearsal beforehand.

What do we take care of?

Odoo usually starts out as a test server and ends up as the place where sales are invoiced, the warehouse is managed and the books are kept. By then, a failure leaves half the company unable to work. This is what we keep under control:

  • Odoo

    Installation, configuration and processes with memory and time limits, all described in your repository.

  • PostgreSQL

    Database tuned for Odoo, vacuum monitored and access only from the private network.

  • Modules

    Official, OCA or from your partner, installed from Git and tested before production.

  • Scheduled actions

    Odoo’s planned actions running on time, with an alert if they get stuck.

  • Security

    HTTPS, web database manager closed, named users and two-factor authentication.

  • Versions

    Patches kept current and major version upgrades rehearsed on a copy.

How do we set it up?

By default Odoo starts with a single process, which is fine for testing but falls short as soon as several people work at the same time. In production we set it up like this:

  1. Workers

    Multi-process mode with the number of workers matched to cores and memory, and limits that restart a process that runs away.

  2. Websocket

    Notifications and chat go through a dedicated Odoo port, which Nginx serves on the same address with HTTPS.

  3. PostgreSQL

    On the same server for a small installation, or separate when the database grows or is queried from outside.

  4. Off-site backups

    Database and filestore together, encrypted, on object storage in another location.

We also install the dependencies Odoo needs for PDF reports, in the version its documentation specifies, because a different one leaves invoices badly laid out.

What problems do we come across most often?

  • Database manager left open: the page that lets anyone download or delete the whole database, reachable from the internet.
  • A single process: Odoo without workers hangs when someone runs a heavy report.
  • Backup without the filestore: the database is saved, but not the attachments.
  • Unsupported version: Odoo maintains the latest major versions and older ones stop receiving fixes.
  • Modules copied by hand: folders on the server that are in no repository and nobody knows where they came from.
  • Outgoing email badly configured: invoices and quotes that end up in the client’s spam folder.

How do we prepare a version upgrade?

Odoo releases one major version a year and each one changes the database structure and the way modules are written. That is why there is no in-place upgrade: the data has to be migrated and the code adapted. We take a copy of production, migrate it with Odoo’s upgrade service if you have Enterprise or with OpenUpgrade if you have Community, and bring it up in a staging environment with the modules already adapted by whoever developed them. Your team tests its day-to-day processes: an order, an invoice, a stock movement. When everything adds up, we repeat the migration with that day’s data in an out-of-hours window.

How do we handle backups and restores?

Every night we back up the PostgreSQL database and the filestore at the same moment, so they match, and send them encrypted off the server. When the database is large, we treat it as in managed PostgreSQL, with continuous archiving to recover to a specific minute. We regularly restore onto a test server, log in to Odoo and open a few documents with attachments; the time it takes goes into the report.

How do we work with your Odoo partner?

If you have a partner who configures Odoo or develops modules, each of us does our own part. They work in their environment and deliver the modules in a repository; we move them to a staging environment with a recent copy of production and, once your team validates them, we install them in production in an announced window. That way nobody touches the production server by hand. If you want Odoo sign-in unified with the rest of your tools, we connect it to Keycloak through an OpenID Connect module. If you want someone to answer for Odoo and its server every month, that is covered by SRE as a service.

How the pieces fit together
  1. NginxHTTPS and websocket
  2. OdooWorkers and scheduled actions
  3. PostgreSQLDatabase
  4. FilestoreAttachments
  5. BackupsDatabase and filestore, off-site

Where do we set it up?

In your account, with the provider you already use or the one that fits best. If the data has to stay in the EU, Hetzner and OVHcloud are the European options.

Providers we set it up on

  • Hetzner
  • AWS
  • Google Cloud
  • DigitalOcean
  • OVH
  • Own server
ProviderHow we set it upThings to bear in mind
HetznerCloud or dedicated server running Odoo and PostgreSQL, with backups in S3-compatible Hetzner Object Storage.For an SME, a single well-sized server is usually enough.
AWSEC2 running Odoo, RDS for PostgreSQL where it fits and filestore backups in S3.
Google CloudCompute Engine running Odoo with Cloud SQL for PostgreSQL, and backups in Cloud Storage.
DigitalOceanDroplet running Odoo with DigitalOcean Managed PostgreSQL, and backups in Spaces.
OVHPublic Cloud instance or dedicated server, with backups in OVHcloud Object Storage.
Own serverOdoo on your own server or on a virtual machine in your office, published through a proxy or a tunnel.If it is the ERP for the whole company, the backup leaves the building every day.

What is included

  • Odoo Community or Enterprise installed in your account, with the Python version and dependencies each release requires.
  • PostgreSQL tuned for Odoo, on the same server or a separate one, reachable only from the private network.
  • Multi-process mode with workers, memory and time limits, and the websocket port behind Nginx with HTTPS.
  • Web database manager disabled and master password out of users' reach.
  • Official, OCA or in-house modules installed from your repository, with a staging environment to validate them.
  • Backups of the database and filestore together, off the server, with regular test restores.
  • Major version upgrades planned and rehearsed on a copy before production is touched.
  • Monitoring of workers, scheduled actions, outgoing email, database, disk and certificates.

Frequently asked questions

Do you sell us the Odoo Enterprise licence?

No. The Community edition is free software and needs no licence. If you want Enterprise, you take out the subscription yourselves with Odoo or with an official partner, in your company's name; we install the Enterprise modules on your server and register the database with your subscription code.

Odoo Online, Odoo.sh or our own server?

Odoo Online is the simplest option, but it does not allow custom modules. Odoo.sh is the vendor's own platform for Enterprise with custom development. Your own server makes sense if you use Community, if you want to choose the provider and where the data lives, or if you need direct database access for integrations or reports.

How is a major version upgrade done?

It is rehearsed first. With Enterprise, the data migration is done by Odoo's upgrade service; with Community, we use OpenUpgrade from the OCA when it covers your modules. In both cases, custom or third-party modules have to be adapted to the new version. We bring up the migrated database in a staging environment, your team checks its processes and only then do we set the date.

Do you develop custom modules?

That is not what we do. We look after the server, the database, backups, updates and installing the modules developed by your partner or your team. If you work with an Odoo partner, we give them a staging environment and an orderly path to take their changes to production.

What backup do we need to recover Odoo in full?

Two pieces at once: the PostgreSQL database and the filestore, the folder where Odoo keeps attachments, images and documents. One without the other leaves invoices without their PDF or products without a photo. We back them up together, off the server, and check in tests that a restore opens the documents.

Tell us about your case

In a free 20-minute call we look at where you are and where to start. No commitment.

Book a 20-minute call

Official documentation consulted

The technical details on this page are based on:

Reviewed on

WhatsApp