c0c0n3 / odoo.box

All of Martel's Odoo stack on just one NixOS machine.
MIT License
3 stars 0 forks source link

Odoo Box

All of Martel's Odoo stack on just one NixOS machine.

So we've migrated our Odoo service away from K8s to a dedicated NixOS server. In the process, we've developed quite a bit of functionality that wasn't easy to implement in our old K8s setup and which resulted in slashing IT Ops and hardware costs while improving reliability and performance at the same time.

Below is an UML-ish deployment diagram followed by an overview of the main features, read up about the details in the docs.

Deployment diagram

Features

Odoo Service Stack

A fully-fledged, multi-architecture (x86-64 and ARM64) service stack to run Odoo on a single machine:

From DBs to services to security, we wire everything together to make the whole service stack work out of the box without any extra manual config. As for security, we stick to Least Privilege and Zero Trust principles.

Operations

Nix and GitOps, a marriage made in heaven. We use Nix to build,deploy and manage our Odoo server and do GitOps all the way down to the operating system level. We keep the code that defines a running server in this git repo and then apply it to a remote set of machines to update their configuration, packages, services, etc. This also includes secrets and other security settings as well as Odoo addons, but obviously excludes the Odoo DB and file store. Basically the git repo is the single source of truth, the remote machines reflect the deployment state declared in the repo.

Also, we've developed a few things to make the sys admin's life a bit easier:

Development & Testing

We believe in local-first and reproducible development. Each dev should be able to install all the tools they need with a single command and the tool chain should be exactly the same for everyone in the team. Also, every dev should be able to test and tinker with Odoo Box locally without affecting other devs, prod or having to rely on cloud providers, not even for tricky scenarios like getting or renewing TLS certificates.