📄

How to Deployment Odoo on VPS?

March 14, 2026Server

Deployment Odoo


Requirements

  • OS: Ubuntu 22.04
  • Odoo: Odoo 18
  • Domain: erp.alrasyid.live
  • User khusus: odoo
  • Database: PostgreSQL
  • Reverse Proxy: Nginx
  • SSL: Let's Encrypt

Basic Steps

1. Update Server

sudo apt update && sudo apt upgrade -y

2. Install PostgreSQL

sudo apt install postgresql -y

Install PostgreSQL dengan version

sudo apt install postgresql-client-16

Cek versi postgreSQL

psql --version

Buat user database

sudo su - postgres
createuser --createdb --username postgres --no-createrole --no-superuser odoo
exit

Masuk sebagai postgres

sudo -u postgres psql

Set password

ALTER USER odoo WITH PASSWORD 'passwordku123';
\q

3. Install Dependencies

sudo apt install python3-pip python3-dev python3-venv \
git wget build-essential libxslt-dev libzip-dev libldap2-dev \
libsasl2-dev python3-setuptools node-less \
libjpeg-dev zlib1g-dev libpq-dev -y

Install wkhtmltopdf

Ini bagian paling sering tricky. Jangan install lewat apt install wkhtmltopdf standar karena seringkali tidak mendukung header/footer (Qt patched version required). Gunakan versi dari Github wkhtmltopdf.
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb

sudo apt install ./wkhtmltox_0.12.6.1-2.jammy_amd64.deb -y

wkhtmltopdf --version

Versi install manual

sudo apt install wkhtmltopdf -y

4. Buat User System Untuk Odoo

sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo

5. Clone Source Code & Setup Python Environtment

Masuk sebagai user odoo

sudo su - odoo

Clone odoo 18

git clone https://www.github.com/odoo/odoo --depth 1 --branch 18.0 /opt/odoo/18.0

Clone enterprise edition

git clone https://github.com/odoo/enterprise --depth 1 --branch 18.0 /opt/odoo/18.0/enterprise

Buat virtual environment (venv)

cd /opt/odoo/18.0
python3 -m venv venv
source venv/bin/activate

Install odoo requirements

pip install wheel
pip install -r requirements.txt

Keluar

deactivate
exit

6. Konfigurasi Odoo

Buat folder addons

cd /opt/odoo/odoo18/
sudo mkdir custom-addons
sudo chown -R odoo: custom-addons

Buat file konfigurasi

sudo nano /etc/odoo.conf

Isi

[options]
admin_passwd = ganti_password_admin
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = passwordku123
addons_path = /opt/odoo/18.0/addons, /opt/odoo/18.0/odoo/addons logfile = /var/log/odoo/18.0/odoo-server.log
proxy_mode = True
xmlrpc_port = 8069

db_filter = db_production
list_db = False

Untuk enterprise addons

addons_path = /opt/odoo/odoo18/addons, /opt/odoo/odoo18/odoo/addons, /opt/odoo/odoo18/enterprise

Untuk custom port

xmlrpc_port = 8090
longpolling_port = 8092
http_port = 8090

Set permission file agar hanya user odoo dan root yang bisa baca (karena ada password):

sudo chown odoo: /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf

Buat folder log

sudo mkdir -p /var/log/odoo/18.0/
sudo chown -R odoo:odoo /var/log/odoo/18.0/
sudo chmod 755 /var/log/odoo/18.0

Cek log

tail -f /var/log/odoo/18.0/odoo-server.log

7. Buat Service Systemd

sudo nano /etc/systemd/system/odoo.service

Isi

[Unit]
Description=Odoo
After=network.target postgresql.service

[Service]
Type=simple
User=odoo
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

Reoload & Start

sudo systemctl daemon-reload
sudo systemctl start odoo
sudo systemctl enable odoo

Cesk Status

sudo systemctl status odoo

Test akses

http://IP-VPS:8069

8. Production Optimization

Example VPS RAM 4GB atau lebih

workers = 4
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1

Restart

sudo systemctl restart odoo

Structure Production

/opt/odoo/odoo-server
├── 18.0/
│ ├── server/
│ ├── venv/
│ ├── custom-addons/
│ ├── data/
│ └── odoo-server.log

Arsitektur Deployment

Internet

Nginx (SSL)

Odoo (workers)

PostgreSQL

Hasil Akhir

  • Odoo native install
  • Virtual environment
  • Systemd service
  • Reverse proxy
  • SSL gratis
  • Production ready

💡Tips

Jika di akses tidak bisa open terlebih dahulu port yang mengarah ke odoo

sudo ufw allow 8090/tcp
sudo ufw reload

Cek status

sudo ufw status

Hasil

8090/tcp  ALLOW  Anywhere