Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Odoo Installation Scripts

Automated installation scripts for Odoo ERP and ZSH shell setup on Ubuntu/Debian systems.

Scripts

1. odoo_install.sh - Odoo ERP Installer

Minimal Odoo installer. Asks for the version, then installs everything.

Features

  • Minimal Prompts - Install user and Odoo version, plus the Python manager when an older Python is needed
  • Dedicated User - Install under the current user or create a new one for Odoo
  • uv Virtualenv - Dependencies are isolated in a venv, never installed system-wide
  • systemd Service - Odoo runs as a service and starts on boot
  • Native Installation - Installs Odoo directly on the system
  • Supports Odoo versions 12-19

Prerequisites

  • Ubuntu/Debian based system
  • sudo privileges
  • Internet connection

Usage

chmod +x odoo_install.sh
./odoo_install.sh

Prompts

Screen Options When
Installation User current user / new user Always
Odoo Version 12, 13, 14, 15, 16, 17, 18, 19 Always
Python Manager pyenv / uv Only for Odoo 12-16

Defaults are set at the top of the script (OE_PASSWORD, OE_PORT, PY_FOR_12_14, PY_FOR_15, PY_FOR_16) — edit them there if you need different values.

Installation User

  • current — everything is installed under the user running the script.
  • new — you enter a username and the script creates it with adduser --system --shell=/bin/bash, then installs everything under that user's home. If the name already exists, it asks whether to install under that existing user instead.

Either way the PostgreSQL superuser role is created with that same name, and uv/pyenv, the virtualenv, and the Odoo clone all live in that user's home.

Python Environment

Older Odoo releases don't run on the Python that ships with current Ubuntu, so the script asks how to get the right one:

Odoo Python Prompted?
12-14 3.6 Yes — pyenv recommended
15 3.9 Yes — uv recommended
16 3.10 Yes — uv recommended
17-19 system Python No
  • pyenv — builds the Python from source and pins it to the install directory with pyenv local. Requirements are installed into that pyenv Python.
  • uv — creates a venv at ~/workspace/odoo{version}/venv using uv venv --python <version>. Requirements go into the venv.

uv can download Python 3.8 and newer, so it is the easy choice for Odoo 15/16. It cannot supply Python 3.6, so Odoo 12-14 need pyenv unless a 3.6 interpreter is already on the machine. For Odoo 17+ no question is asked — the script just creates the venv with uv venv. uv is installed automatically if missing.

What It Installs

  • Odoo source cloned from the official repository
  • PostgreSQL locally, with a superuser role for the install user
  • Python dependencies into a uv venv (or the pyenv Python)
  • nodejs, npm and rtlcss (right-to-left language support)
  • wkhtmltopdf (distro package, falling back to Odoo's nightly build on x86_64)
  • An odoo.conf with a generated master password
  • A systemd service that starts Odoo on boot

Generated Files

Under the install user's home:

~/workspace/odoo{version}/odoo/            # Odoo source
~/workspace/odoo{version}/odoo.conf        # Configuration
~/workspace/odoo{version}/venv/            # Virtualenv (uv path only)
~/workspace/custom_addons/odoo{version}/   # Custom addons directory

Plus /etc/systemd/system/odoo{version}.service.

Configuration

The script generates ~/workspace/odoo{version}/odoo.conf (mode 640, owned by the install user) and the service runs odoo-bin -c against it. To change ports, addons paths, workers or database settings, edit that file and restart:

sudo systemctl restart odoo{version}

No daemon-reload is needed — the unit itself doesn't change.

A random 24-character master password is generated and printed at the end of the install. It is stored as admin_passwd in the config and is required to create, duplicate or drop databases. Save it.

Re-running the installer keeps an existing odoo.conf untouched, so your edits and master password survive.

Two settings to review before going public:

  • list_db = False once your database exists, to hide the database manager
  • proxy_mode = True if you put nginx or another reverse proxy in front

Service

The script installs odoo{version}.service, enables it, and starts it. It runs as the install user and restarts on failure.

sudo systemctl status odoo{version}
sudo systemctl restart odoo{version}
sudo journalctl -u odoo{version} -f

# Turn off autostart
sudo systemctl disable --now odoo{version}

To run in the foreground instead, stop the service first:

sudo systemctl stop odoo{version}
sudo -u <odoo-user> -H bash          # only if installed under another user
cd ~/workspace/odoo{version}/odoo
~/workspace/odoo{version}/venv/bin/python odoo-bin -c ~/workspace/odoo{version}/odoo.conf

The exact commands for your install are printed at the end of the script.


2. zsh_install.sh - ZSH + Powerlevel10k Installer

Installs a complete ZSH environment with Oh-My-Zsh, Powerlevel10k theme, and plugins.

Features

  • Oh-My-Zsh framework
  • Powerlevel10k theme
  • zsh-autosuggestions plugin
  • MesloLGS NF fonts

Usage

chmod +x zsh_install.sh
./zsh_install.sh

Post-Installation

  1. Set terminal font to MesloLGS NF
  2. Run exec zsh or restart terminal
  3. Run p10k configure to customize prompt

Requirements

Package Purpose
git Repository cloning
curl Downloading files
wget Downloading packages
sudo Administrative tasks
whiptail Interactive menus (auto-installed)
uv Virtualenv + package installs (auto-installed)
pyenv Older Python builds, if chosen (auto-installed)

Tested On

  • Ubuntu 22.04 LTS (Jammy)
  • Ubuntu 24.04 LTS (Noble)

Troubleshooting

Common Issues

  1. Port already in use: Start Odoo with a different --http-port
  2. PostgreSQL auth failure: The role password is OE_PASSWORD from the script (default admin)

License

MIT License

Releases

Packages

Contributors

Languages