Tới nội dung
Cloudj

Ứng dụng VPS

VPS chạy Odoo cho doanh nghiệp Việt: cấu hình và cách triển khai

Thuê VPS chạy Odoo cho doanh nghiệp Việt: Cloudj không có máy chủ tại Việt Nam, nên chọn Singapore, Hong Kong hoặc Tokyo, rồi tính worker, cài PostgreSQL và Nginx.

Cập nhật · 5 phút đọc

VPS chạy Odoo là con đường ở giữa: không phụ thuộc hoàn toàn vào dịch vụ Odoo Online, cũng không phải mua máy chủ vật lý đặt ở văn phòng. Bạn toàn quyền với module, dữ liệu và lịch nâng cấp, và trả tiền cho một máy chủ vừa với quy mô công ty thay vì trả theo từng tính năng. Bài này viết cho doanh nghiệp Việt Nam và các đơn vị triển khai Odoo cho họ: nên đặt máy chủ ở đâu, cách tính cấu hình từ số người dùng, cấu hình worker, PostgreSQL và reverse proxy.

Cần biết trước khi bắt đầu: Cloudj không có máy chủ tại Việt Nam. Các vị trí của Cloudj gần đội ngũ ở Việt Nam nhất là Singapore, Hong Kong và Tokyo. Muốn nhìn tổng thể các vị trí ở châu Á, hãy xem hướng dẫn VPS châu Á.

Chọn vị trí trước: Singapore, Hong Kong hay Tokyo

Odoo là ứng dụng tương tác liên tục. Nhân viên bấm qua đơn bán hàng, phiếu kho, hóa đơn cả ngày, nên thời gian khứ hồi giữa trình duyệt và máy chủ quan trọng hơn băng thông thuần. Máy chủ đặt ngoài Việt Nam sẽ xa người dùng hơn so với một nhà cung cấp trong nước, vì vậy hãy đo trước khi quyết định.

Đi theo các câu hỏi sau:

  1. Chính sách nội bộ, quy định hoặc hợp đồng với khách yêu cầu dữ liệu phải nằm ở Việt Nam? Khi đó máy chủ Cloudj không phù hợp; bạn cần một nhà cung cấp trong nước. Hãy hỏi tư vấn pháp lý về cách quy định áp dụng cho dữ liệu của bạn.
  2. Có chi nhánh, kho hàng ở nhiều nước Đông Nam Á, hoặc trụ sở khu vực ở Singapore? Singapore là điểm trung chuyển trung lập cho cả vùng. Xem bài chọn VPS Singapore.
  3. Phần lớn người dùng ở miền Bắc, hoặc làm việc với đối tác ở Hong Kong, Đài Loan, Hoa Nam? Hong Kong đáng để thử. Xem bài chọn VPS Hong Kong.
  4. Có nhân viên hoặc khách hàng ở Nhật Bản hay Hàn Quốc? Tokyo phục vụ được cả hai phía. Xem bài chọn VPS Nhật Bản.

Vẫn phân vân? Tạo một máy chủ thử nhỏ ở hai hoặc ba vị trí trên với thanh toán theo giờ. Nhờ nhân viên ở từng văn phòng chạy ping và mtr tới từng máy từ mạng họ thường dùng (bài đo độ trễ bằng ping và mtr hướng dẫn cách làm), và dùng database demo trong một ngày. Giữ lại nơi cho kết quả đo và cảm giác tốt hơn. Nhớ xóa các máy còn lại, vì máy chủ theo giờ bị tính phí cho tới khi bị xóa, kể cả khi đã tắt. Bài so sánh Singapore, Hong Kong và Tokyo phân tích kỹ hơn các đánh đổi.

Tính cấu hình VPS chạy Odoo theo người dùng, không theo tên gói

Tài liệu của Odoo đưa ra các quy tắc thực tế cho môi trường production, là điểm khởi đầu tốt:

  • Số worker: khoảng (số nhân CPU x 2) + 1 HTTP worker.
  • Người dùng mỗi worker: khoảng 6 người dùng đồng thời cho mỗi worker.
  • Bộ nhớ: tính khoảng 150 MB cho worker nhẹ và tới 1 GB cho worker nặng (báo cáo lớn, import dữ liệu). Ước tính thông thường giả định phần lớn request là nhẹ.

Quy đổi ra cấu hình khởi đầu, đã tính cả PostgreSQL chạy chung máy:

Người dùng đồng thờivCPURAMWorker
Tới 1024 GB3 đến 4
10 đến 3048 GB6 đến 9
30 đến 60816 GB12 đến 17

"Đồng thời" là số người đang thao tác cùng một lúc, không phải tổng số tài khoản. Công ty 80 nhân viên dùng Odoo thường có số người dùng đồng thời thấp hơn nhiều. Với tải đều đặn trong giờ hành chính, CPU general purpose hoặc dedicated cho thời gian phản hồi ổn định hơn CPU dùng chung. Khi nhu cầu tăng, bạn có thể tăng CPU và RAM trong console; nên làm ngoài giờ làm việc.

Ổ đĩa: chừa chỗ cho database, filestore (file đính kèm, ảnh sản phẩm, hóa đơn scan) và bản sao lưu cục bộ. Có thể mở rộng ổ đĩa sau, nhưng dư dả ngay từ đầu giúp tránh tình huống khẩn cấp.

Cài Odoo cùng PostgreSQL

Trên Ubuntu, gói cài chính thức của Odoo là cách gọn nhất cho một máy chủ. Thay 18.0 bằng phiên bản bạn dùng.

sudo apt update && sudo apt install -y postgresql
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/18.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt update && sudo apt install -y odoo

Gói cài tạo sẵn user hệ thống odoo, role PostgreSQL và file cấu hình /etc/odoo/odoo.conf. Sau khi tạo database, vào menu Apps để cài tiếng Việt và gói bản địa hóa Việt Nam (hệ thống tài khoản kế toán, thuế).

Cấu hình worker và giới hạn

Sửa /etc/odoo/odoo.conf cho máy 4 vCPU, 8 GB:

[options]
admin_passwd = mot-mat-khau-master-dai-va-ngau-nhien
proxy_mode = True
workers = 8
max_cron_threads = 1
limit_memory_soft = 671088640
limit_memory_hard = 1073741824
limit_time_cpu = 600
limit_time_real = 1200
list_db = False

Tám HTTP worker cộng một luồng cron đúng với công thức (số nhân x 2) + 1. proxy_mode báo cho Odoo biết nó đứng sau reverse proxy. list_db = False ẩn trang quản lý database khỏi người ngoài. Khởi động lại bằng sudo systemctl restart odoo.

PostgreSQL cơ bản

Với doanh nghiệp nhỏ và vừa, hãy để PostgreSQL chạy chung máy với Odoo để bớt một chặng mạng. Đặt shared_buffers khoảng một phần tư RAM và chỉ cho PostgreSQL lắng nghe trên localhost. Bài cài PostgreSQL trên VPS đi sâu hơn về tinh chỉnh và phân quyền.

Đặt Nginx phía trước

Đừng bao giờ mở cổng 8069 của Odoo ra Internet. Nginx lo HTTPS, nén dữ liệu và chuyển kết nối thời gian thực (chat, thông báo) sang cổng riêng mà Odoo dùng cho việc này, mặc định là 8072.

upstream odoo { server 127.0.0.1:8069; }
upstream odoochat { server 127.0.0.1:8072; }

server {
    listen 443 ssl http2;
    server_name erp.congty.vn;
    # các dòng ssl_certificate do certbot thêm vào
    client_max_body_size 100m;
    proxy_read_timeout 720s;

    location /websocket {
        proxy_pass http://odoochat;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
        proxy_pass http://odoo;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        gzip on;
    }
}

Lấy chứng chỉ bằng Certbot và chuyển hướng cổng 80 sang 443. Cách làm đầy đủ có trong bài Nginx reverse proxy kèm SSL. Sau đó dùng firewall đóng mọi cổng trừ 22, 80 và 443.

Sao lưu cả database lẫn filestore

Bản sao lưu Odoo gồm hai phần: database PostgreSQL và thư mục filestore. Thiếu một trong hai là không đủ để khôi phục.

DB=congty
FILESTORE=/var/lib/odoo/.local/share/Odoo/filestore   # kiểm tra data_dir trong odoo.conf
pg_dump -U odoo -Fc $DB > /backup/$DB-$(date +%F).dump
tar czf /backup/$DB-filestore-$(date +%F).tar.gz -C $FILESTORE $DB

Chạy hằng đêm bằng cron, chép file sang nơi thứ hai (ví dụ một máy chủ nhỏ ở khu vực khác), và vài tháng một lần thử khôi phục lên máy staging. Bài chiến lược sao lưu VPS giải thích cách giữ bản sao bao lâu.

Khi nào không nên tự vận hành

Nếu trong công ty hoặc ở đơn vị triển khai không ai cập nhật được Linux, gia hạn chứng chỉ và thử khôi phục dữ liệu, dịch vụ Odoo được quản lý trọn gói có thể an toàn hơn. VPS cho bạn quyền kiểm soát, và quyền kiểm soát đi kèm những việc này.

Câu hỏi thường gặp

VPS 4 vCPU chạy Odoo được bao nhiêu người?

Theo công thức, khoảng 9 worker, trên lý thuyết phục vụ được khoảng 50 người dùng đồng thời. Thực tế khi PostgreSQL chạy chung máy và có báo cáo nặng, hãy tính 10 đến 30 người như bảng ở trên, rồi đo và điều chỉnh.

PostgreSQL có nên chạy chung máy với Odoo không?

Với phần lớn doanh nghiệp nhỏ và vừa thì nên. Chỉ tách ra khi database cần tài nguyên riêng hoặc bạn chạy nhiều bản Odoo.

Cloudj có VPS chạy Odoo tại Việt Nam không?

Không. Cloudj không có máy chủ tại Việt Nam. Các vị trí gần nhất là Singapore, Hong Kong và Tokyo; hãy thử hai hoặc ba nơi với thanh toán theo giờ và giữ nơi phù hợp nhất với nhân viên của bạn. Nếu dữ liệu bắt buộc phải nằm trong nước, hãy dùng một nhà cung cấp tại Việt Nam.

Có thanh toán bằng VND được không?

Bạn nạp tiền vào số dư tài khoản (USD), và khách hàng Việt Nam có thể nạp bằng chuyển khoản ngân hàng bằng VND, tiện cho bộ phận kế toán.

Triển khai máy chủ Odoo của bạn

Đo từ các văn phòng, chọn Singapore, Hong Kong hoặc Tokyo, tạo máy chủ trong console Cloudj và tính cấu hình theo số người dùng đồng thời. Giá cập nhật có trên trang bảng giá.

Triển khai máy chủ hoặc mua proxy

Chọn vị trí trong console, xem giá trực tiếp và thanh toán từ số dư tài khoản.