Odoo (sebelumnya dikenal sebagai OpenERP) adalah suite yang dihosting sendiri dengan lebih dari 10.000 aplikasi open source yang cocok untuk berbagai kebutuhan bisnis termasuk CRM, eCommerce, akuntansi, inventaris, manajemen proyek, dan titik penjualan. Aplikasi ini sepenuhnya terintegrasi dan diakses melalui antarmuka web umum.
Dalam tutorial ini, kita akan belajar menginstal Odoo 14 Stack di server berbasis Ubuntu 20.04.
Prasyarat
-
Server berbasis Ubuntu 20.04 dengan minimal 2GB RAM untuk menghosting Odoo Stack.
-
Server berbasis Ubuntu 20.04 kedua dengan minimal 2GB RAM untuk menghosting database PostgreSQL. Namun Anda dapat menginstal database di server yang sama dengan Odoo tetapi untuk lingkungan produksi, sangat disarankan agar Anda menginstalnya di server terpisah. Anda juga dapat memilih salah satu opsi database terkelola yang tersedia dari penyedia pilihan Anda.
-
Persyaratan RAM akan tergantung pada jumlah pengguna bersamaan yang akan menggunakan tumpukan. Panduan mendetail tentang cara menghitung persyaratan sistem dapat ditemukan di dokumentasi Odoo.
-
Selalu perbarui sistem Anda.
$ sudo apt update $ sudo apt upgrade
-
Pengguna non-root dengan hak sudo di kedua server.
Konfigurasikan aturan Firewall
Untuk tujuan tutorial ini, kami akan menganggap Anda memiliki ufw
firewall terpasang di kedua server.
Di server Odoo, kita membutuhkan port 22, 80, 443, 6010, 5432 dan 8069 untuk dibuka. 22 digunakan untuk SSH, 80 untuk HTTP, 443 untuk HTTPS, 6010 digunakan untuk komunikasi Odoo, 5432 digunakan oleh PostgreSQL dan 8069 digunakan oleh aplikasi server Odoo.
Jalankan perintah berikut untuk membuka port yang diperlukan di server Odoo.
$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp
Di server PostgreSQL, kita perlu membuka port 22, 6010, dan 5432. Buka menggunakan perintah yang baru saja kita bahas.
Tetapkan Nama Host
Anda dapat menggunakan alamat IP server atau menggunakan Fully Qualified Domain Names (FQDN), jika tersedia. Untuk tutorial kami, kami akan menggunakan FQDN dan untuk itu, kami perlu mengatur nama host di kedua server.
Di server Odoo, buka /etc/hosts
berkas.
$ sudo nano /etc/hosts
Pastikan tampilannya seperti berikut.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
Di server PostgreSQL, buka file dan pastikan tampilannya seperti berikut.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Instal dan Konfigurasi PostgreSQL
Ubuntu 20.04 dikirimkan dengan PostgreSQL 12 secara default dan kami akan menginstalnya. Jalankan perintah berikut di server PostgreSQL.
$ sudo apt install postgresql-12 postgresql-server-dev-12
Selanjutnya, kita perlu membuat pengguna database odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
Opsi -u
mengeksekusi perintah sebagai postgres
pengguna.
Opsi -U
tunjukkan nama pengguna yang akan dihubungkan sebagai.
Opsi -d
memberikan izin kepada pengguna untuk membuat database.
Opsi -p
meminta kata sandi pengguna baru.
Konfigurasikan Otentikasi Berbasis Host
Kami perlu memberikan izin kepada layanan PostgreSQL untuk dapat terhubung ke server Odoo.
Pertama, hentikan layanan PostgreSQL.
$ sudo systemctl stop postgresql
Buka file /etc/postgresql/12/main/pg_hba.conf
untuk diedit.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Tempel baris berikut di akhir.
host all odoo odoo.yourdomain.com md5
Baris ini memberikan izin ke odoo
pengguna untuk terhubung ke semua database dalam server ini. Anda juga dapat menentukan nama database daripada menggunakan all
kata kunci.
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Konfigurasi alamat Mendengarkan PostgreSQL
Selanjutnya, kita perlu mengizinkan server database untuk mendengarkan koneksi jarak jauh. Buka file /etc/postgresql/12/main/postgresql.conf
untuk diedit.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Ubah baris listen_addresses
dari
#listen_addresses = 'localhost' # what IP address(es) to listen on;
untuk.
#From CONNECTIONS AND AUTHENTICATION Section
listen_addresses = '*'
*
berarti akan mendengarkan semua alamat IP. Anda dapat mengubahnya ke alamat IP instance odoo Anda.
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Aktifkan dan Mulai layanan PostgreSQL
Karena konfigurasi kita telah selesai, sekarang saatnya untuk memulai dan mengaktifkan layanan PostgreSQL.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Instal Odoo
Instal dependensi dan Siapkan instalasi
Buat pengguna sistem baru untuk mengelola proses Odoo di server Odoo.
$ sudo adduser --system --home=/opt/odoo --group odoo
Kita perlu menginstal beberapa dependensi sistem tetapi pertama-tama, kita perlu mengaktifkan repositori sumber. Untuk melakukannya, buat cadangan daftar sumber asli lalu aktifkan semua repositori sumber dan perbarui daftar repositori.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
Instal dependensi sistem yang diperlukan untuk penyiapan Odoo 14.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml
Instal Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Instal paket Less CSS menggunakan Node.
$ sudo npm install -g less less-plugin-clean-css
Unduh wkhtmltopdf
paket versi 0.12.6.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
Instal paket.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Untuk memastikan bahwa wkhtmltopdf
berfungsi dengan benar, salin binari ke /usr/bin
dan beri mereka izin yang sesuai.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Unduh File Odoo
Klon repositori Github Odoo ke sistem Anda.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Untuk tujuan kami, kami menyalin Odoo ke /opt/odoo
direktori dari mana ia akan diinstal.
Menyiapkan Lingkungan Python Virtualenv
Langkah ini opsional tetapi disarankan karena lingkungan python virtual untuk Odoo akan membantu menghindari konflik dengan modul Python dari sistem Operasi, terutama saat melakukan peningkatan OS.
Untuk ini, kita akan menggunakan virtualenv
.
-
Buat
virtualenv
baru lingkungan untuk Odoo.$ python3 -m venv /home/<username>/odoo-env
-
Aktifkan lingkungan virtual. Kami menciptakan lingkungan di bawah direktori home pengguna sistem. Anda bebas memilih lokasi mana pun yang Anda suka.
$ source /home/<username>/odoo-env/bin/activate
-
Perbarui PIP untuk berjaga-jaga.
(odoo-env) $ pip3 install --upgrade pip
-
Instal roda Python di lingkungan virtual.
$ pip3 install wheel
Instal Ketergantungan Python
Instal dependensi Python yang diperlukan oleh Odoo 14.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
Persyaratan akan memakan waktu untuk dipasang, jadi bersabarlah.
Periksa apakah persyaratan telah diinstal dengan benar dengan memeriksa daftar modul Python yang diinstal.
$ pip3 list
Package Version
----------------------------- ---------
alabaster 0.7.12
appdirs 1.4.4
attrs 20.3.0
Babel 2.6.0
beautifulsoup4 4.9.3
cached-property 1.5.2
certifi 2020.12.5
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
feedparser 5.2.1
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
html2text 2018.1.9
idna 2.6
imagesize 1.2.0
isodate 0.6.0
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.1
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 20.9
passlib 1.7.1
Pillow 8.0.1
pip 21.0.1
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.4.8
pyasn1-modules 0.2.8
pydot 1.4.1
Pygments 2.8.1
pyparsing 2.4.7
PyPDF2 1.26.0
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2019.1
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 0.9.1
setuptools 44.0.0
six 1.15.0
snowballstemmer 2.1.0
soupsieve 2.2
Sphinx 3.5.2
sphinx-patchqueue 1.0.4
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff 0.6.0
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.36.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.5.0
zope.interface 5.2.0
Keluar dari lingkungan virtual Python.
$ deactivate
Konfigurasikan Odoo
Salin file konfigurasi default Odoo untuk membuat yang baru.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Buka file untuk diedit.
$ sudo nano /etc/odoo-server.conf
Edit file tersebut sehingga terlihat seperti berikut ini.
[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Opsi admin_passwd
adalah kata sandi yang memungkinkan operasi administratif dalam GUI Odoo. Pastikan untuk memilih kata sandi yang aman.
Opsi db_host
adalah FQDN atau alamat IP server PostgreSQL.
Opsi db_port
disetel ke false karena port default PostgreSQL 5432 sedang digunakan. Jika Anda ingin menggunakan port lain, Anda perlu memperbarui nilai ini.
Opsi db_user
adalah nama pengguna PostgreSQL.
Opsi db_password
adalah kata sandi pengguna 'odoo' PostgreSQL yang kita buat sebelumnya di server PostgreSQL.
Opsi addons_path
adalah jalur Addons default. Anda juga dapat menambahkan jalur khusus untuk Addons yang memisahkannya dengan koma.
Opsi xmlrpc_port
adalah port tempat Odoo mendengarkan.
Buat layanan Odoo
Untuk memastikan Odoo tetap berjalan bahkan setelah sistem dimulai ulang, kita perlu membuat layanan untuk itu.
Buat file /lib/systemd/system/odoo-server.service
dan buka untuk diedit.
$ sudo nano /lib/systemd/system/odoo-server.service
Tempelkan kode berikut di dalamnya.
[Unit]
Description=Odoo Open Source ERP and CRM
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Ganti /home/<username>
dengan lokasi yang Anda pilih untuk menginstal Python Virtual Environment.
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Setel izin File
Setel izin pada odoo-server.service
file sehingga hanya pengguna Odoo yang dapat membaca atau menjalankannya.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Tetapkan kepemilikan pada lingkungan Python dan direktori instalasi Odoo.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home/<username>/odoo-env
Batasi file konfigurasi Odoo.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Mulai server Odoo
Mulai dan aktifkan server Odoo.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Periksa status server.
$ sudo systemctl status odoo-server
Di browser Anda, buka URL http://<yourIPaddress>:8069
atau http://odoo.yourdomain.com:8069
. Jika semuanya berfungsi dengan baik, Anda akan melihat layar pembuatan basis data Odoo.
Isi semua bidang. Periksa Demo Data
untuk mengisi database dengan data sampel, lalu klik Buat database tombol.
Selanjutnya, Anda akan diperlihatkan daftar aplikasi yang dapat Anda pilih dan pilih.
Pertama kali Anda membuat database, halaman add-on akan membutuhkan waktu untuk dimuat, jadi jangan segarkan halaman.
Instal dan Konfigurasi Nginx
Sampai sekarang, kami telah menggunakan server Odoo untuk menjalankan stack. Tapi idealnya, lebih baik menjalankannya di Nginx menggunakan proxy karena itu akan memungkinkan kita untuk menginstal SSL di dalamnya.
Instal Nginx.
$ sudo apt install nginx
Untuk menjalankannya melalui Nginx, kita perlu menjalankan Odoo di localhost. Untuk mengubahnya, hentikan layanan Odoo.
$ sudo systemctl stop odoo-server
Buka file konfigurasi server Odoo.
$ sudo nano /etc/odoo-server.conf
Tambahkan baris berikut ke dalamnya.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Buat file konfigurasi Nginx untuk Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Tempelkan kode di bawah ini.
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.yourdomain.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
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/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.
Aktifkan file konfigurasi ini dengan menautkannya ke sites-enabled
direktori.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Uji konfigurasi Nginx.
$ sudo nginx -t
Instal SSL
Kami akan menginstal SSL menggunakan layanan Let's Encrypt.
Untuk itu, instal Certbot.
$ sudo apt install certbot
Hentikan Nginx karena akan mengganggu proses Certbot.
$ sudo systemctl stop nginx
Menghasilkan sertifikat. Kita juga perlu membuat sertifikat DHParams.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Kami juga perlu menyiapkan tugas cron untuk memperbarui SSL secara otomatis. Untuk membuka editor crontab, jalankan perintah berikut.
$ sudo crontab -e
Rekatkan baris berikut di bagian bawah.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
Pekerjaan cron di atas akan menjalankan certbot pada pukul 2:25 pagi setiap hari. Anda dapat mengubahnya menjadi apa pun yang Anda inginkan.
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai Odoo
Sekarang semuanya sudah diatur, kita dapat memulai server Odoo lagi.
$ sudo systemctl start odoo-server
Luncurkan Odoo di browser Anda melalui https://odoo.yourdomain.com
. Anda akan mendapatkan layar yang dijelaskan sebelumnya. Masukkan detail yang diperlukan untuk membuat database dan Anda harus masuk ke Odoo dan melihat layar seperti ini.
Kesimpulan
Ini menyimpulkan tutorial kami tentang menginstal Odoo di server Ubuntu 20.04. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.