-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Installer for Odoo 16 / 17 / 18 / 19 on Ubuntu ≥ 22.04, Debian ≥ 11 and Fedora ≥ 40, written in Rust, with transactional rollback:
Either the installation succeeds completely, or the system goes back to exactly what it was.
It sets up the system user, dependencies, PostgreSQL, the Odoo sources, a virtualenv, the config file, a systemd service and (optionally) Nginx — and if a step fails, it undoes everything it did without touching the resources that were already there.
All four versions install on all three families. Odoo 16 on Fedora gets an interpreter of its own — Python 3.12, installed for the occasion and removed by the rollback — because its newest
geventpin stops covering anything above 3.12. The ceiling is therefore per Odoo version rather than one number for all of them. The reasoning is in Multi-distribution support.
A static binary, with no runtime to install first. Four routes: .tar.gz (any distro), .deb
(Ubuntu/Debian), .rpm (Fedora) — all from the
Releases page, each with its sha256 — or
cargo install invok if you already have Rust. Full commands:
README → Install.
The .deb and .rpm packages drop the invok command into /usr/bin plus the short alias vok, and
nothing else: Odoo itself is installed at runtime, when you run the command.
| You are… | Go to |
|---|---|
| 🌱 New here, first run | Quick start |
| 🛠️ Developer / CI | Non-interactive use and CI · Development and contributing |
| 📦 Installing for a customer | Customer installations |
What sets this installer apart is what it guarantees when something goes wrong → The rollback model.
Running more than one Odoo on the same machine — a second customer, a version to try beside the one in production — is one command and one name → More than one instance.
- CLI reference — every flag, with its default.
-
.envfile reference — configuration keys. - What it does, step by step — the sequence (links below).
- Verification and troubleshooting — did it start? what if not.
- Security — admin password, wkhtmltopdf checksums, least privilege.
- More than one instance — naming, ports, what is shared, how to remove one.
- Multi-distribution support — Ubuntu, Debian, Fedora: what differs, and how we know.
-
History — the installer was Bash up to the
v1.xtags.
Where things live. The uninstall manifest is
/var/lib/invok/state.json, the log/var/log/invok.log, the lock/run/invok.lock— all outside/opt/odoo, which is the perimeter the rollback must be able to remove whole.
- Surgical, verified rollback — proven by end-to-end tests and on real machines: the integration CI really installs and uninstalls, and checks that nothing is left behind.
- One binary, no runtime — a native executable; git, the package manager, psql and venv stay external commands.
-
Multi-distribution with no scattered
ifs —aptanddnfsit behind two boundaries, and no step knows which distribution it runs on → Multi-distribution support. - Resumable — an interrupted installation picks up where it stopped, without losing track of what it had already created. A completed one is never silently overwritten.
- Interruptible — Ctrl-C rolls back and restores the system instead of leaving it half-done.
-
One flow, two modes — guided (interactive) or non-interactive (
--config/flags/CI).
Every step records a snapshot before mutating and exposes an undo. In execution order — 25 steps,
of which the six Nginx ones only run with --with-nginx:
Foundations · Engine (Step trait, PreState, rollback) · Config (CLI, .env, cascade) · Preflight checks
Steps · PrepareOptRoot · CreateOdooUser · SetupLogDir · SetupCacheDir · AptPackages (delta) · InstallWkhtmltopdf · SetupPostgres · CreateDbRole · CreateDatabase · CloneOdooRepo · CreateVirtualenv · InstallPythonRequirements · GenerateConfig · SetupDataDir · InitializeOdooDatabase · SetupSystemd · Nginx (6 sub-steps) · WriteControlScript + PatchBashrc
Cross-cutting · UI + dry-run · End-to-end rollback + hardening
Start here
Key concepts
References
For developers
Technical detail — how it works inside
Steps:
- 1.1 PrepareOptRoot
- 1.2 CreateOdooUser
- 1.3 SetupLogDir
- 1.3b SetupCacheDir
- 1.4 AptPackages (delta)
- 1.5 InstallWkhtmltopdf
- 1.6 SetupPostgres
- 1.7 CreateDbRole
- 1.8 CreateDatabase
- 1.9 CloneOdooRepo
- 1.10 CreateVirtualenv
- 1.11 InstallPythonRequirements
- 1.12 GenerateConfig
- 1.12b SetupDataDir
- 1.13 InitializeOdooDatabase
- 1.14 SetupSystemd
- 1.15 Nginx (6 sub-steps)
- 1.16 WriteControlScript + PatchBashrc
Cross-cutting: