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.
Mục Lục
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-dev
Code 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 odoo14
Code 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 postgresql
Code 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.deb
Code language: Nginx (nginx)
Installing and Configuring Odoo 14
Đầu tiên, chuyển cli qua tài khoản odoo14
sudo su - odoo14
Code 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/odoo
Code language: PHP (php)
Tạo môi trường ảo Python để cài và chạy Odoo
cd /opt/odoo14
python3 -m venv odoo-venv
Code language: Bash (bash)
Kích hoạt môi trường ảo
source odoo-venv/bin/activate
Code 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.txt
Code 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-addons
Code 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
exit
Code language: Bash (bash)
Tạo file cấu hình cho odoo với nội dung như sau
sudo nano /etc/odoo14.conf
Code 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 = 1
Code 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.service
Code 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.target
Code language: JavaScript (javascript)
Chạy tiếp lệnh sau để kích hoạt
sudo systemctl daemon-reload
Code language: Nginx (nginx)
Để Odoo service tự động chạy mỗi khi khởi động Ubuntu, gõ tiếp
sudo systemctl enable --now odoo14
Code language: Bash (bash)
Xác nhận Odoo đang chạy
sudo systemctl status odoo14
Code 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 ago
Code language: YAML (yaml)
Bạn có thể kiểm tra log của Odoo service bằng lệnh
sudo journalctl -u odoo14
Code 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>:8069
Code 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.
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.
Bạn có thể tham khảo cách fix theo hướng dẫn này: https://www.odoo.com/forum/help-1/mixed-content-request-from-an-insecure-resource-140344