Tutorial Integrasi Docker, ERP Odoo dan Nginx di Ubuntu Linux

January 02, 2024
Muhammad Syukri

NOTE: Pada kesempatan ini saya akan membahas bagaimana melakukan integarasi Docker, Odoo dan Nginx di ubuntu server. Tulisan ini saya buat dengan bentuk tutorial praktis yang sudah saya implementasikan di perusahaan. Jadi sangat praktis dan siap digunakan secara langsung dan tentunya dapat menghasilkan cuan 😊.

Jika anda tertarik ingin mendalaminya dan ingin kuliah langsung praktek ya hanya di Areta Informatics College, yang langsung belajar praktek dan menerapkannya di perusahaan, siap kerja dan buka bisnis sendiri tentunya di bidang IT dan Digital Marketing sebelum lulus kuliah. Keren kan? Info lebih lanjut bisa hubungi kami di websitenya https://aretacollege.com.

Setup Docker

Pada tutorial ini saya akan membahas bagaimana menggunakan docker compose untuk menjalan Odoo pada system operasi linux server ubuntu. Install docker compose dengan printah

$ sudo apt update
$ sudo apt install docker-compose

Cek versi docker dengan perintah

$ docker-compose –version

Outputnya:

docker-compose version 1.29.2, build 5becea4c

Jalankan Odoo dan PostgreSQL dengan Docker Compose Pertama, buatkan direktori untuk menempatkan konfigurasi odoo

$ mkdir ~/odoo
$ cd ~/odoo

Buatkan file docker-compose.yml isikan filenya seperti berikut:

$ vim docker-compose.yml
version: β€˜3’
services:
  odoo:
    image: odoo:15.0
    env_file: .env
    depends_on:
      - postgres
    ports:
      - β€œ8069:8069”
    volumes:
      - data:/var/lib/odoo
      - ./config:/etc/odoo
  postgres:
    image: postgres:13
    env_file: .env
    volumes:
      - db:/var/lib/postgresql/data/pgdata
volumes:
  data:
  db:

Buatkan file .env untuk menyimpan file konfigurasi odoo dan postgresql

$ vim .env
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=isikan_passwordmu
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata

# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=isikan_passwordmu

Generate passwordmu menggunakan openssl

$ openssl rand -base64 30

Jalankan docker compose dengan perintah

$ docker-compose up -d

Jika ingin stop docker dan postgresql jalan perintah

$ docker-compose stop

Untuk melihat hasilnya dari shell gunakan perintah curl

$ curl β€” head http://localhost:8069

Outputnya:

HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=36d9172180426eded02ca55c16e8bc4a48940ae3; Expires=Mon, 01-Apr-2024 06:48:51 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/1.0.1 Python/3.9.2
Date: Tue, 02 Jan 2024 06:48:51 GMT

Setup Nginx Server

Login ke shell Linux, jalan perintah update dan install nginx

$ sudo apt update
$ sudo apt install nginx

Allow public port 80 (http) dan 443 (https) menggunakan UFW dari aplikasi β€œNginx Full”

$ sudo ufw allow β€œNginx Full”

Outputnya:

Rules updated
Rules updated (v6)

Buat file odoo.conf pada direktori /etc/nginx/sites-available

$ vim /etc/nginx/sites-available/odoo.conf

Isikan filenya seperti berikut:

server {
listen 80;
listen [::]:80;
server_name erp.smkwijayakusuma.sch.id;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8069;
 }
}

Buatkan link dari folder site-available ke folder site-enabled dengan perintah berikut:

$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/

Cek hasil konfigurasinya dengan perintah berikut:

$ sudo nginx -t

Ouputnya:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Start service nginx yang sudah di konfigurasi dengan perintah berikut:

$ sudo systemctl start nginx.service

Install Certbot dan setting Sertifikat TLS

Pertama install certbot dan plugin nginx

$ sudo apt install certbot python3-certbot-nginx

Jalankan certbot untuk mengaktikan domain dengan perintah berikut:

$ sudo certbot β€” nginx -d erp.smkwijayakusuma.sch.id

Outputnya:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for erp.smkwijayakusuma.sch.id
Waiting for verification…
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/odoo.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP ac cess.
- β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” -
1: No redirect β€” Make no further changes to the webserver configuration.
2: Redirect β€” Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
- β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” 
Select the appropriate number [1–2] then [enter] (press β€˜c’ to cancel): 2

Pada pilihan di atas ketik 2 lalu tekan enter

Outputnya:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/odoo.conf
- β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” -
Congratulations! You have successfully enabled
https://erp.smkwijayakusuma.sch.id
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=erp.smkwijayakusuma.sch.id
- β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€” β€”
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/erp.smkwijayakusuma.sch.id/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/erp.smkwijayakusuma.sch.id/privkey.pem
Your cert will expire on 2024–04–01. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the β€œcertonly” option. To non-interactively renew *all* of
your certificates, run β€œcertbot renew”
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Sampai tahap ini selesai, anda dapat mengkakses server erp odoo anda dengan url https://nama_domain anda tanpa menggunakan port 8069