Odoo adalah perangkat lunak bisnis all-in-one paling populer di dunia. Ini menawarkan berbagai aplikasi bisnis termasuk CRM, situs web, e-Commerce, billing, akuntansi, manufaktur, gudang, manajemen proyek, inventaris, dan banyak lagi, semuanya terintegrasi menjadi satu software.

Odoo dapat diinstal dengan beberapa cara berbeda. Cara termudah dan tercepat untuk menginstal Odoo adalah dengan menggunakan repositori APT resmi Odoo.

Jika Anda ingin memiliki lebih banyak fleksibilitas seperti menjalankan beberapa versi Odoo pada sistem yang sama, maka Anda dapat menggunakan docker dan docker compose atau menginstal Odoo di lingkungan virtual.

Tutorial ini mencakup langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi Odoo 13 didalam Python virtual environment di Ubuntu 18.04. Kami akan doownload Odoo dari repositori Github mereka dan menggunakan Nginx sebagai reverse proxy.

Sebelum Mulai

Login ke mesin Ubuntu Anda sebagai user sudo dan perbarui sistem ke paket terbaru:

sudo apt update && sudo apt upgrade

Install GitPipNode.js dan tools yang dibutuhkan untuk build Odoo dan dependensi nya:

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less

Membuat user untuk Odoo

Buat user sistem baru untuk Odoo bernama odoo13 dengan direktori home /opt/odoo13 menggunakan perintah berikut:

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

Anda dapat menggunakan nama apa pun untuk user Odoo selama Anda membuat user PostgreSQL dengan nama yang sama.

Install dan konfigurasi PostgreSQL

Instal paket PostgreSQL dari repositori default Ubuntu:

sudo apt install postgresql

Setelah instalasi selesai, buat user PostgreSQL dengan nama yang sama dengan user sistem yang dibuat sebelumnya, dalam kasus kami yaitu odoo13:

sudo su - postgres -c "createuser -s odoo13"

Install Wkhtmltopdf

Paket wkhtmltox menyediakan seperangkat alat baris perintah open source yang dapat merender HTML ke dalam PDF dan berbagai format gambar. Untuk mencetak laporan PDF, Anda memerlukan tool wkhtmltopdf.

Versi yang direkomendasikan untuk Odoo adalah 0.12.5 yang tidak tersedia di repositori resmi Ubuntu 18.04.

Unduh paket menggunakan perintah wget berikut:

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Setelah unduhan selesai instal paket dengan mengetik:

sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb

Install dan Konfigurasi Odoo

Kita akan menginstal Odoo dari repositori GitHub di dalam Python virtual environment. yang terisolasi.

Sebelum memulai dengan proses instalasi, beralihlah ke user “odoo13”:

sudo su - odoo13

Kemudian cloning Odoo 13 source code dari GitHub repository:

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

Setelah source code diunduh, buat Python virtual environment baru untuk instalasi Odoo :

cd /opt/odoo13
python3 -m venv odoo-venv

Selanjutnya, aktifkan environment dengan perintah berikut:

source odoo-venv/bin/activate

Instal semua modul Python yang diperlukan dengan pip3:

pip3 install wheel
pip3 install -r odoo/requirements.txt

Jika Anda menemukan kesalahan kompilasi selama instalasi, pastikan Anda menginstal semua dependensi yang diperlukan yang tercantum di bagian Sebelum mulai pada atas artikel ini.

Nonaktifkan environment menggunakan perintah berikut:

deactivate

Buat direktori baru untuk custom addons (pihak ketiga):

mkdir /opt/odoo13/odoo-custom-addons

Nantinya, kita akan menambahkan direktori ini ke parameter addons_path. Parameter ini mendefinisikan daftar direktori tempat Odoo mencari modul.

Beralih kembali ke user sudo dengan mengetik:

exit

Selanjutnya, buat file konfigurasi, Buka file dan edit sebagai berikut:

sudo nano /etc/odoo13.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons,/opt/odoo13/odoo-custom-addons

Jangan lupa untuk mengubah my_admin_passwd dengan kata sandi yang lebih aman dan mudah di ingat.

Untuk menjalankan Odoo sebagai service (layanan sistem), kita perlu membuat file odoo13.service.

Buka teks editor Anda dan paste konfigurasi berikut:

sudo nano /etc/systemd/system/odoo13.service
[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

Beri tahu systemd bahwa ada file unit baru dan start layanan Odoo dengan menjalankan:

sudo systemctl daemon-reload

Jalankan Odoo service dan aktifkan untuk mulai otomatis saat boot dengan menjalankan :

sudo systemctl enable --now odoo13

Periksa status layanan dengan perintah berikut:

sudo systemctl status odoo13

Outputnya akan terlihat seperti di bawah ini yang menunjukkan bahwa layanan Odoo aktif dan berjalan.

● odoo13.service
   Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-10-19 20:06:23 UTC; 3s ago
 Main PID: 1860 (python3)
    Tasks: 4 (limit: 2362)
   CGroup: /system.slice/odoo13.service
           └─1860 /opt/odoo13/odoo-venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

Jika Anda ingin melihat pesan yang dicatat oleh layanan Odoo, Anda dapat menggunakan perintah di bawah ini:

sudo journalctl -u odoo13

Test Instalasi Odoo

Buka browser Anda dan ketik:

http://<domain_anda_atau_IP_address>:8069

Dengan asumsi instalasi berhasil, layar yang mirip dengan berikut ini akan muncul:

odoo-13

Konfigurasikan Nginx sebagai SSL Termination Proxy

Odoo web Server secara default melayani lalu lintas melalui HTTP. Untuk membuat deployment Odoo agar lebih aman, kita akan mengonfigurasi Nginx sebagai proxy terminasi SSL yang akan melayani lalu lintas melalui HTTPS.

SSL termination proxy (Proxy terminasi SSL) adalah proxy server yang menangani enkripsi / dekripsi SSL. Ini berarti bahwa proxy terminasi (Nginx) akan menangani dan mendekripsi koneksi TLS yang masuk (HTTPS), dan itu akan meneruskan permintaan yang tidak terenkripsi ke layanan internal (Odoo) sehingga lalu lintas antara Nginx dan Odoo tidak akan dienkripsi (Menggunakan HTTP).

Menggunakan reverse proxy memberi Anda banyak manfaat sepertiLoad Balancing,SSL Termination, Caching, Kompresi, Menyajikan Konten Statis yang lebih cepat, dan banyak lagi.

Pastikan Anda telah memenuhi persyaratan berikut sebelum melanjutkan dengan bagian ini:

Buka text editor dan buat konfigurasi berikut :

sudo nano /etc/nginx/sites-enabled/example.com

Dalam contoh ini kita akan mengkonfigurasi SSL Termination, pengalihan HTTP ke HTTPS, pengalihan WWW ke non-WWW, menyimpan file statis dan mengaktifkan kompresi GZip.

# Odoo servers
upstream odoo {
 server 127.0.0.1:8069;
}

upstream odoochat {
 server 127.0.0.1:8072;
}

# HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/odoo.access.log;
    error_log /var/log/nginx/odoo.error.log;

    # Handle longpoll requests
    location /longpolling {
        proxy_pass http://odoochat;
    }

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://odoo;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

Jangan lupa untuk mengganti example.com dengan domain Odoo Anda dan setel jalur yang benar ke file sertifikat SSL. Snippets yang digunakan dalam konfigurasi ini dibuat dalam panduan ini.

Setelah selesai, restart layanan Nginx dengan:

sudo systemctl restart nginx

Selanjutnya, kita perlu memberi tahu Odoo bahwa kita akan menggunakan proxy. Untuk melakukannya, buka file konfigurasi dan tambahkan baris berikut:

sudo nano /etc/odoo13.conf
proxy_mode = True

Restart layanan Odoo agar perubahan diterapkan:

sudo systemctl restart odoo13

ada poin ini, server Anda sudah dikonfigurasikan dan dapat mengakses instance Odoo Anda di: https://example.com

Ubah binding interface

Langkah ini opsional, tetapi ini merupakan praktik keamanan yang baik.

Secara default, server Odoo mendengarkan port 8069 di semua antarmuka. Jika Anda ingin menonaktifkan akses langsung ke instance Odoo Anda, Anda dapat memblokir port 8069 untuk semua interface publik atau memaksa Odoo hanya listen pada interface lokal.

Dalam panduan ini, kita akan mengonfigurasi Odoo hanya untuk listen pada127.0.0.1. Buka konfigurasi, tambahkan dua baris berikut di akhir file:

sudo nano /etc/odoo13.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Simpan file konfigurasi dan restart Odoo server agar perubahan diterapkan:

sudo systemctl restart odoo13

Aktifkan Multiprocessing

Secara default, Odoo bekerja dalam mode multithreading. Untuk deployment lingkungan produksi, disarankan untuk beralih ke server multiprosesing karena meningkatkan stabilitas, dan membuat penggunaan sumber daya sistem yang lebih baik. Untuk mengaktifkan multiprocessing, kita perlu mengedit konfigurasi Odoo dan mengatur jumlah proses worker agar lebih optimal

Jumlah workers dihitung berdasarkan jumlah CPU cores dalam sistem dan memori RAM yang tersedia.

Menurut dokumentasi resmi Odoo, untuk menghitung jumlah worker dan ukuran memori RAM yang diperlukan, kita akan menggunakan rumus dan asumsi berikut:

Perhitungan jumlah Worker

  • Jumlah maksimal worker secara teoritis = (system_cpu * 2) + 1
  • 1 worker dapat melayani kurang lebih 6 users secara bersamaan
  • Cron workers juga membutuhkan sumber daya CPU

RAM memory size calculation

  • Kita akan mempertimbangkan bahwa 20% dari semua requests adalah requests “berat”, sedangkan 80% requests lebih ringan. Requests berat menggunakan sekitar 1 GB RAM sedangkan yang lebih ringan menggunakan sekitar 150 MB RAM
  • RAM yang dibutuhkan = jumlah_workers * ((rasio_request_ringan * estimasi_RAM_request_ringan) + (rasio_request_berat *estimasi_RAM_request_berat))

Jika Anda tidak tahu berapa banyak CPU yang Anda miliki di sistem yang berjalan, Anda dapat menggunakan perintah grep berikut:

grep -c ^processor /proc/cpuinfo

Katakanlah kita memiliki sistem dengan 4 core CPU, 8 GB memori RAM dan 30 user Odoo bersamaan.

  • 30 users / 6 = **5** (5 adalah jumlah teoritis worker yang dibutuhkan )
  • (4 * 2) + 1 = **9** ( 9 adalah jumlah teoritis worker maksimal)

Berdasarkan perhitungan di atas kita dapat menggunakan 5 workers + 1 worker untuk cron yang totalnya 6 worker.

Hitung konsumsi memori RAM berdasarkan jumlah workers:

  • RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

Perhitungan di atas menunjukkan bahwa instalasi Odoo akan membutuhkan sekitar 2GB RAM.

Untuk beralih ke mode multiprocessing, buka file konfigurasi dan tambahkan baris berikut:

sudo nano /etc/odoo13.conf
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

Restart layanan Odoo agar perubahan diterapkan:

sudo systemctl restart odoo13

Sisa sumber daya sistem akan digunakan oleh layanan lain yang berjalan di sistem. Dalam panduan ini kami memasang Odoo bersama PostgreSQL dan Nginx di server yang sama dan tergantung pada pengaturan Anda, Anda mungkin juga memiliki layanan lain yang berjalan di server Anda.

Kesimpulan

Tutorial ini memandu Anda melalui instalasi Odoo 13 di Ubuntu 18.04 di Python virtual environment menggunakan Nginx sebagai reverse proxy. Anda juga belajar cara mengaktifkan multiprosesing dan mengoptimalkan Odoo untuk lingkungan produksi.

Anda juga mungkin ingin memeriksa tutorial kami tentang cara membuat backup harian secara otomatis database Odoo.