-
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.
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.
- 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.
- 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: