Skip to content

About

Run and maintain several Odoo Community sites on a single Ubuntu server — from a simple interactive menu, without memorizing dozens of apt, psql, systemctl, and nginx commands.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Odoo Instance Manager

Run and maintain several Odoo Community sites on a single Ubuntu server — from a simple interactive menu, without memorizing dozens of apt, psql, systemctl, and nginx commands.

If you self-host Odoo on your own Ubuntu server (one site or many) and want provisioning, backups, TLS, a firewall, and health checks in one place — and you want to see exactly what will run before it runs — this tool is for you. If you use Odoo's SaaS/Online or a managed host, you don't need it.

What it does for you

  • Set up a new Odoo site, any version from 12 to 19 — creates the system user, clones official Odoo or OCA's OCB, builds the virtualenv with the Python and setuptools that version needs (installing a matching Python with uv when the server's own cannot build it), writes the config and systemd service, and optionally sets up PostgreSQL, Nginx, and TLS.
  • Run many sites on one server — each instance is isolated (its own service, ports, config, and database), all derived from a name, so they don't collide.
  • Keep them secure by default — strong random master/DB passwords, a hidden database manager (list_db = False), a dbfilter, and encrypted remote DB connections — each recommended but always your informed choice, with warnings. Plus Fail2ban jails, a UFW firewall baseline, and TLS management.
  • Get working PDFs and right-sized performance — optional checksum-verified wkhtmltopdf (for invoice and report PDFs), and workers/memory limits derived from the server's CPU and RAM.
  • Run on your stack, not just one — detects the OS codename, nginx, PostgreSQL, and Odoo version and writes version-correct config (see Supported platforms).
  • Keep them healthy — a one-look health check (service, HTTP, database, disk), disk-usage reports, and log rotation.
  • Never lose data — manual or scheduled automatic backups with retention per database, plus restore and duplicate.
  • Copy production safely — a restored or duplicated database is neutralised before any Odoo can see it: no mail leaves, no cron, payment, EDI or webhook runs as production, and a check confirms it.
  • Know what you have — a read-only whole-server audit and an addon inventory (Odoo core / OCA / custom, with versions and which are installed).

Why you can trust it

  • You approve every change. Each action shows the exact list of commands and runs them only after you confirm; anything destructive also requires typing a confirmation phrase.
  • Nothing to install. Pure Python standard library (3.9+) — no pip packages, no runtime dependencies.
  • Undo of a failed install. If an install fails partway, it shows the steps that undo what that run made and asks before running them, so you can retry cleanly. Copies are one step: done whole, or dropped.

Requirements

  • A Debian/Ubuntu (apt) server, run as root (sudo) — validated on Ubuntu 24.04, and version-adaptive across other releases (see Supported platforms).
  • Python 3.9+ as python3 — what Debian 11 (3.9), Ubuntu 22.04 (3.10), Debian 12 (3.11) and Ubuntu 24.04 (3.12) ship. Nothing else.

The interface is available in English (default) or Spanish — chosen at startup or via OIM_LANG=en|es (see Interface language).

Quickstart

# On the Ubuntu 24.04 server, as root:
sudo python3 odoo_instance_manager.py

Then pick an action from the main menu — for example Installation menu to create a new Odoo site, or Manage instances to manage an existing one. Every action shows its full command plan and waits for your confirmation before touching the system; a destructive action also asks you to type a confirmation phrase.

flowchart LR
    op(["You (root)"]) --> menu{"Main menu"}
    menu --> install["Install<br/>Odoo 12–19 · PostgreSQL"]
    menu --> manage["Manage instances<br/>status · backups · duplicate"]
    menu --> services["Instance services<br/>start · stop · restart"]
    menu --> sec["Fail2ban · Firewall"]
    menu --> remove["Remove instances"]
    menu --> report[("Server report<br/>read-only")]
    install & manage & services & sec & remove --> plan["Plan → preview"]
    plan --> confirm{"Confirm"}
    confirm -- yes --> apply["Apply in order"]
    confirm -- no --> menu
    classDef step fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
    classDef ask fill:#fef3c7,stroke:#d97706,color:#78350f
    classDef guard fill:#dcfce7,stroke:#16a34a,color:#14532d
    classDef stop fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
    classDef data fill:#ede9fe,stroke:#7c3aed,color:#4c1d95
    class op,install,manage,services,plan,apply step
    class menu,confirm ask
    class sec guard
    class remove stop
    class report data
Loading

Documentation

Set up

Daily operations (docs/operations/)

Security (docs/security/)

Audit & understand

Behavior specs live under openspec/specs/ — validated with openspec validate --specs. Decisions are recorded in docs/decisions/.

Contributing

Read CONTRIBUTING.md and AGENTS.md. Non-trivial changes are spec-first via the OpenSpec flow; keep planners pure and never weaken a safety control. Security policy: SECURITY.md.

License

AGPL-3.0-or-later.

About

Run and maintain several Odoo Community sites on a single Ubuntu server — from a simple interactive menu, without memorizing dozens of apt, psql, systemctl, and nginx commands.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages