Chuyên mục
Linux Playground

Hướng dẫn cài đặt Odoo 14 trên Ubuntu 20.04

Odoo là phần mềm quản trị doanh nghiệp mã nguồn mở (Open-source ERP software) nổi tiếng và được sử dụng phổ biến trên toàn thế giới. Nó được tích hợp đầy đủ ứng dụng để phục vụ cho mọi nhu cầu kinh doanh của doanh nghiệp: Sales, Marketing, Finance, Inventory, Human Resource, Services, Productivity.

  • CRM (quản lý khách hàng)
  • e-Commerce (thương mại điện tử)
  • Website Builder (xây dựng website)
  • Inventory (quản lý tồn kho)
  • Accounting (kế toán)
  • Manufacturing (sản xuất)
  • Warehouse (quản lý kho)
  • Project Management (quản lý dự án)
  • … chi tiết xem thêm ở đây: Odoo all Apps

Ưu điểm của Odoo là bạn có thể tự cài đặt bản Community Edition lên máy chủ của mình để sử dụng miễn phí, không tốn bất kỳ chi phí nào. Một số ứng dụng đặc biệt yêu cầu phải trả phí hàng tháng ($4-8$/tháng tuỳ ứng dụng) như Accounting, Planning, Helpdesk, Marketing Automation, Quality,… nhưng số ứng dụng miễn phí là đủ dùng với các công ty vừa và nhỏ.

Bản thân mình sử dụng Odoo để quản lý hoá đơn xuất / nhập hàng hoá và quản lý tồn kho cho công ty nhỏ ở gia đình nền chỉ dùng các ứng dụng miễn phí: Inventory, Purchases, Sales. Nhờ có Odoo mà việc quản lý hàng hoá trở nên tiện lợi hơn rất nhiều.

Dưới đây là hướng dẫn cài đặt Odoo 14 – phiên bản mới nhất – lên Ubuntu 20.04. Thao tác hơi cài đặt hơi rối rắm nhiều bước nên mình ghi lại để sau này có cần thiết lập lại còn nhớ thao tác ra sao.

Odoo 14 có thể cài đặt lên máy thông qua Docker container, hoặc cài trực tiếp lên máy thông qua Python. Mình không rành Docker nên chọn cách cài đặt trực tiếp để sau này có vấn đề dễ xử lý hơn.

Yêu cầu cấu hình

Bạn có thể cài Odoo lên Dedicated Server / Cloud VPS hoặc lên máy ảo chạy trên Homelab ở nhà của bạn.

Cầu hình yêu cầu để cài Odoo như sau

  • Server trang bị tối thiểu 2GB RAM (cho 1 người sử dụng)
  • OS: Debian 9/10 hoặc Ubuntu 18.04/20.04
  • Open ports http (80), https (443) và ssh (22)
  • Quyền truy cập SSH với tài khoản sudo / root

Nếu càng nhiều người sử dụng Odoo cùng lúc, bạn cần phải trang bị thêm nhiều RAM cho server để tránh bị quá tải. Xem chi tiết ở đây.

Chuẩn bị hệ thống

Trước tiên, càn phải cài đặt sẵn các package phụ trợ trước khi cài đặt Odoo.

sudo apt update
sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-devCode language: Nginx (nginx)

Tạo System User

Odoo không cho phép chạy dưới tài khoản root vì lý do bảo mật. Do đó, cần phải tạo tài khoản mới để quản lý Odoo service.

sudo useradd -m -d /opt/odoo14 -U -r -s /bin/bash odoo14Code language: Nginx (nginx)

Bạn có thể thay odoo14 bằng bất kỳ tên gì khác, nhưng ở bước kế tiếp cài đặt tài khoản PostgresSQL nhớ sử dụng cùng tên đó.

Cài đặt và cấu hình PostgreSQL

Odoo sử dụng PostgreSQL để quản lý cơ sở dữ liệu. Cài đặt PostgreSQL bằng lệnh sau

sudo apt install postgresqlCode language: Nginx (nginx)

Sau khi hoàn tất, tạo tiếp tài khoản PostgreSQL User cùng tên với tài khoản System User ở bước trước đó. Mình sử dụng luôn tên odoo14

sudo su - postgres -c "createuser -s odoo14"Code language: Nginx (nginx)

Installing wkhtmltopdf

Để sử dụng tính năng in PDF trên Odoo, cần phải cài đặt thêm wkhtmltox package từ Github.

sudo wget <https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb>Code language: JavaScript (javascript)

Sau khi tải xong, cài đặt bằng lệnh

sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.debCode language: Nginx (nginx)

Installing and Configuring Odoo 14

Đầu tiên, chuyển cli qua tài khoản odoo14

sudo su - odoo14Code language: Nginx (nginx)

Tải Odoo 14 source code từ GitHub:

git clone <https://www.github.com/odoo/odoo> --depth 1 --branch 14.0 /opt/odoo14/odooCode language: PHP (php)

Tạo môi trường ảo Python để cài và chạy Odoo

cd /opt/odoo14
python3 -m venv odoo-venvCode language: Bash (bash)

Kích hoạt môi trường ảo

source odoo-venv/bin/activateCode language: Bash (bash)

Cài đặt các module Python cần thiết để chạy Odoo

pip3 install wheel
pip3 install -r odoo/requirements.txtCode language: Nginx (nginx)

Sau khi cài đặt xong, tắt môi trường ảo bằng lệnh

deactivate

Tạo thư mục mới để lưu các addons cần cài đặt thêm sau này

mkdir /opt/odoo14/odoo-custom-addonsCode language: Nginx (nginx)

Thư mục này sẽ được thêm vào thông số addons_path sau. Thông số này sẽ được Odoo dùng để thiết lập danh sách các ứng dụng.

Đưa CLI quay lại sudo user

exitCode language: Bash (bash)

Tạo file cấu hình cho odoo với nội dung như sau

sudo nano /etc/odoo14.confCode language: Nginx (nginx)
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons,/opt/odoo14/odoo-custom-addons
workers = 1Code language: YAML (yaml)

Nhớ thay my_admin_passwd bằng mật khẩu của bạn để bảo đảm bảo mật.

Tạo Systemd Unit

Để thiết lập Odoo chạy dưới dạng service nền trên Ubuntu, cần tạo file service unit với tên gọi odoo14.service bằng lệnh sau

sudo nano /etc/systemd/system/odoo14.serviceCode language: Nginx (nginx)

Thêm đoạn này vào

[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.targetCode language: JavaScript (javascript)

Chạy tiếp lệnh sau để kích hoạt

sudo systemctl daemon-reloadCode language: Nginx (nginx)

Để Odoo service tự động chạy mỗi khi khởi động Ubuntu, gõ tiếp

sudo systemctl enable --now odoo14Code language: Bash (bash)

Xác nhận Odoo đang chạy

sudo systemctl status odoo14Code language: Nginx (nginx)

Nếu Odoo service đang hoạt động trơn tru, bạn sẽ nhận được kết quả tương tự như sau

 odoo14.service - Odoo14
     Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-08-15 12:45:04 UTC; 54min agoCode language: YAML (yaml)

Bạn có thể kiểm tra log của Odoo service bằng lệnh

sudo journalctl -u odoo14Code language: Nginx (nginx)

Chạy thử Odoo

Sau khi cài đặt hoàn tất, hãy mở trình duyệt và truy cập vào địa chỉ

http://<IP_address>:8069Code language: JavaScript (javascript)

Nếu bạn làm đúng theo hướng dẫn, màn hình sẽ hiển thị ra như sau

Bạn cài đặt theo các yêu cầu trên màn hình là xong. Odoo đã sẵn sàng phục vụ.

Cấu hình Nginx truy cập Odoo thông qua SSL

Cáu hình mặc định của Odoo chỉ hỗ trợ tải trên giao thức HTTP. Để tăng khả năng bảo mật, bạn nên cài đặt thêm Nginx làm Reserve Proxy, kèm thêm Let’s Encrypt SSL để có thể truy cập Odoo thông qua domain với giao thức HTPS.

Đa số các hướng dẫn trên mạng sẽ yêu cầu bạn cài đặt trực tiếp Nginx lên máy chủ sau đó tạo file cấu hình conf cho Odoo. Mình không làm cách này vì vừa rối rắm vừa khó quản lý. Thay vào đó mình sử dụng Nginx Proxy Manager để quản lý Reverse Proxy cho tiện lợi.

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

2 trả lời trong “Hướng dẫn cài đặt Odoo 14 trên Ubuntu 20.04”

Xin chào bạn,
Mình có làm theo hướng dẫn của bạn và đã dựng thành công phiên bản Odoo 16.
Tuy nhiên, trong phần biên tập website mình có gặp một lỗi như sau:

Mixed Content: The page at ‘https://your-domain.com/web#action=178&cids=1&menu_id=116’ was loaded over HTTPS, but requested an insecure frame ‘http://your-domain.com/’. This request has been blocked; the content must be served over HTTPS.

Mình đã cố gắng tìm mọi phương án, tuy nhiên vẫn chưa fix được tình trạng này, nhờ bạn hỗ trợ.
Xin chân thành cảm ơn.

Trả lời Thuận Bùi Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *