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