Nếu bạn đang chạy Odoo 18 trên VPS và vẫn truy cập bằng địa chỉ IP thì nên dừng lại ngay: kết nối không mã hoá vừa kém an toàn, vừa bất tiện khi đăng nhập và chia sẻ cho nhân viên. Cách làm đúng là gắn một subdomain cho Odoo, đưa Nginx đứng trước làm reverse proxy rồi cấp chứng chỉ SSL miễn phí bằng Let’s Encrypt. Toàn bộ quy trình chỉ gồm 4 bước dưới đây, làm trên Ubuntu/Debian.
Vì sao không nên truy cập Odoo bằng địa chỉ IP?
Truy cập bằng IP đồng nghĩa với việc dữ liệu đăng nhập và làm việc trên Odoo có thể bị nghe lén trên đường truyền, trình duyệt cũng liên tục cảnh báo kết nối không an toàn. Khi có subdomain kèm HTTPS, bạn vừa có địa chỉ dễ nhớ, vừa được mã hoá toàn bộ phiên làm việc. Ngoài ra, bước khoá cổng bằng tường lửa ở cuối bài còn giúp chặn hẳn đường truy cập trực tiếp bằng IP.

Chuẩn bị trước khi bắt đầu
Trước khi thực hiện, hãy chắc chắn bạn đã có:
- Một VPS Ubuntu/Debian đã cài sẵn Odoo 18 và đang chạy ở cổng 8069 (cổng longpolling/chat là 8072).
- Một subdomain, ví dụ
odoo.tenmien.com, đã trỏ bản ghi A về đúng địa chỉ IP của VPS. Hãy thayodoo.bnix.vntrong các lệnh dưới đây bằng subdomain thật của bạn. - Quyền root hoặc tài khoản có sudo để cài đặt Nginx, Certbot và tường lửa.
Bước 1: Cài Nginx và cấu hình reverse proxy cho Odoo
Đầu tiên, cài đặt Nginx và cho nó tự chạy cùng hệ thống:
apt -y install nginx systemctl enable nginx systemctl start nginx
Tiếp theo, tạo file cấu hình cho subdomain:
nano /etc/nginx/sites-enabled/odoo.bnix.vn
Dán nội dung sau vào file. Đoạn upstream khai báo Odoo chạy ở cổng 8069 và dịch vụ longpolling ở cổng 8072, còn khối server sẽ nhận request từ subdomain rồi chuyển tiếp về Odoo:
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
server {
listen 80;
server_name odoo.bnix.vn;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
proxy_buffers 16 64k;
proxy_buffer_size 128k;
location / {
proxy_pass http://odoo;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /longpolling {
proxy_pass http://odoochat;
}
location ~* /web/static/ {
proxy_cache_valid 200 60m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
}
Kiểm tra và nạp lại cấu hình Nginx
Trước khi sang bước tiếp theo, hãy kiểm tra cú pháp và nạp lại Nginx để cấu hình có hiệu lực:
nginx -t systemctl reload nginx
Nếu lệnh báo test is successful thì bạn đã xong phần reverse proxy. Lúc này truy cập subdomain bằng HTTP đã thấy giao diện Odoo, nhưng chưa có HTTPS — đó là việc của bước 2 và 3.
Bước 2: Cài đặt Certbot
Certbot là công cụ xin và cài chứng chỉ Let’s Encrypt tự động. Cài đặt bằng lệnh:
sudo apt install certbot python3-certbot-nginx
Gói python3-certbot-nginx rất quan trọng vì nó cho phép Certbot tự sửa file cấu hình Nginx để bật HTTPS, bạn không cần tự viết khối SSL bằng tay.
Bước 3: Cấp chứng chỉ SSL Let’s Encrypt cho subdomain
Chạy lệnh sau, thay subdomain bằng subdomain thật của bạn:
certbot --nginx -d odoo.bnix.vn
Trong quá trình chạy, Certbot sẽ hỏi vài thông tin:
- Địa chỉ email: nhập email của bạn để nhận thông báo khẩn cấp và nhắc gia hạn chứng chỉ.
- Đồng ý điều khoản của Let’s Encrypt: nhập
Yrồi Enter. - Có muốn chia sẻ email với EFF không: đây là email marketing, bạn chọn
YhoặcNđều được, chọnNnếu không muốn nhận tin quảng bá.
Khi thấy dòng Congratulations! You have successfully enabled HTTPS on https://odoo.bnix.vn là chứng chỉ đã được cấp và Nginx đã tự cấu hình xong. Chứng chỉ được lưu tại /etc/letsencrypt/live/odoo.bnix.vn/, có thời hạn 90 ngày và Certbot đã đặt sẵn tác vụ tự động gia hạn trong nền, nên bạn không cần nhớ lịch gia hạn thủ công.
Bước 4: Dùng UFW để chặn truy cập trực tiếp bằng IP
Ngay cả khi đã có HTTPS, người khác vẫn có thể gõ thẳng IP kèm cổng để vào Odoo nếu cổng còn mở. Vì vậy, hãy bật tường lửa UFW và chỉ mở những cổng thật sự cần thiết:
apt-get -y install ufw sudo ufw enable
ufw allow https ufw allow http ufw allow 465 ufw allow 587 ufw allow 22 ufw reload
Trong đó, cổng 443 là HTTPS, cổng 80 là HTTP (cần để Certbot gia hạn chứng chỉ), cổng 465 và 587 phục vụ gửi mail qua SMTP, còn cổng 22 là SSH. Lưu ý: nếu bạn đã đổi cổng SSH mặc định để an toàn hơn thì hãy mở đúng cổng SSH mới thay vì cổng 22, và nhớ mở cổng SSH trước khi bật UFW để tránh tự khoá mình khỏi VPS.
Kiểm tra sau khi hoàn tất
Sau khi làm xong 4 bước, hãy truy cập https://odoo.bnix.vn (thay bằng subdomain của bạn) và kiểm tra: trình duyệt phải hiện ổ khoá, không còn cảnh báo không an toàn, đăng nhập Odoo và tính năng chat/longpolling hoạt động bình thường. Nếu gặp lỗi 502, hãy kiểm tra lại xem Odoo có đang chạy ở cổng 8069 không và chạy nginx -t để rà soát cấu hình.
Kết luận
Chỉ với Nginx làm reverse proxy, Certbot cấp SSL miễn phí và UFW khoá cổng thừa, bạn đã biến Odoo 18 từ một địa chỉ IP trần trụi thành một hệ thống truy cập bằng subdomain an toàn, có HTTPS và tự gia hạn chứng chỉ. Đây là bước nền tảng nên làm ngay sau khi cài Odoo xong, trước khi đưa hệ thống vào sử dụng thật.
👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây
- 🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
- 🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
- 📞 0925045760
- 🌐 thietkewebdian.com
