This guide installs Odoo with PostgreSQL and a systemd service.
It supports Debian 10 to latest stable, Ubuntu LTS, and RHEL 9+ compatible systems.
- name: Install Odoo CRM
hosts: odoo
become: true
vars:
odoo_user: odoo
odoo_group: odoo
odoo_home: /opt/odoo
odoo_version: "19.0"
odoo_port: 8069
tasks:
- name: Install dependencies on Debian/Ubuntu
apt:
name:
- python3
- python3-pip
- python3-venv
- postgresql
- postgresql-contrib
- git
- curl
- wkhtmltopdf
- build-essential
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install dependencies on RHEL family
dnf:
name:
- python3
- python3-pip
- postgresql-server
- postgresql
- git
- curl
- gcc
- gcc-c++
- make
state: present
when: ansible_os_family == "RedHat"
- name: Initialize PostgreSQL on RHEL family
command: postgresql-setup --initdb
args:
creates: /var/lib/pgsql/data/PG_VERSION
when: ansible_os_family == "RedHat"
- name: Enable and start PostgreSQL
service:
name: postgresql
state: started
enabled: true
- name: Create Odoo group
group:
name: "{{ odoo_group }}"
state: present
- name: Create Odoo user
user:
name: "{{ odoo_user }}"
group: "{{ odoo_group }}"
home: "{{ odoo_home }}"
shell: /usr/sbin/nologin
create_home: true
- name: Clone Odoo repository
git:
repo: https://github.com/odoo/odoo.git
version: "{{ odoo_version }}"
dest: "{{ odoo_home }}/src"
- name: Install Python dependencies
pip:
requirements: "{{ odoo_home }}/src/requirements.txt"
executable: pip3
- name: Create Odoo config
copy:
dest: /etc/odoo.conf
mode: "0640"
content: |
[options]
admin_passwd = change_me_now
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = {{ odoo_home }}/src/addons
xmlrpc_port = {{ odoo_port }}
- name: Create Odoo systemd service
copy:
dest: /etc/systemd/system/odoo.service
mode: "0644"
content: |
[Unit]
Description=Odoo ERP/CRM
After=network.target postgresql.service
[Service]
Type=simple
User={{ odoo_user }}
Group={{ odoo_group }}
ExecStart=/usr/bin/python3 {{ odoo_home }}/src/odoo-bin -c /etc/odoo.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Reload systemd
systemd:
daemon_reload: true
- name: Enable and start Odoo
service:
name: odoo
state: started
enabled: true
Any questions?
Feel free to contact us. Find all contact information on our contact page.