Truy cập bằng IP không phải là giải pháp an toàn. Nên cần truy cập bằng 1 sub domain (tên miền con), có cài SSL.
Để làm việc này chúng ta sẽ trỏ subdomain muốn dùng về IP của VPS. Ví dụ ở đây là odoo.bnix.vn. Trỏ rồi thì tiến hành cài đặt
Cài đặt nginx
apt -y install nginx
systemctl enable nginx
systemctl start nginx
Sau khi cài xong, chúng ta cấu hình nginx cho tên miền con
nano /etc/nginx/sites-enabled/odoo.bnix.vn
Nội dung cấu hình như sau:
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://odoo16;
}
}
Cài đặt Certbot
Certbot dùng để cấp chứng chỉ SSL cho subdomain. Lệnh cài như sau:
sudo apt install certbot python3-certbot-nginx
Cài đặt chứng chỉ SSL
Tiếp theo là cài đặt chứng chỉ SSL cho sub domain bằng lệnh
certbot --nginx -d odoo.bnix.vn
Khi chạy lệnh này chúng ta cần nhập vài thông số
- Email: Dùng để đăng ký SSL
- You must agree in order to register with the ACME server. Do you agree?: Đồng ý với chính sách -> Chúng ta nhập Y rồi enter
- We’d like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom: Ở đây chúng ta chọn Y hoặc N đều được vì nó muốn chúng ta nhận email marketing. Nhưng tôi thì không thích, nên chọn N
root@odoo:~# certbot --nginx -d odoo.bnix.vn
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): [email protected]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Khi thấy thông báo như bên dưới là cài đặt thành công rồi, Certbot cũng đã cấu hình SSL cho tên miền luôn rồi
Account registered.
Requesting a certificate for odoo.bnix.vn
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.bnix.vn/fullchain.pem
Key is saved at: /etc/letsencrypt/live/odoo.bnix.vn/privkey.pem
This certificate expires on 2025-01-25.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for odoo.tvn.ovh to /etc/nginx/sites-enabled/odoo.bnix.vn
Congratulations! You have successfully enabled HTTPS on https://odoo.bnix.vn
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cuối cùng là truy cập web site bằng sub domain vừa cài đặt
Cài đặt tường lửa bảo mật
Tuy đã cài đặt subdomain kèm SSL để truy cập, nhưng chúng ta vẫn có thể truy cập bằng IP. Do đó chúng ta cần cài tường lửa, chỉ mở những port cần thiết thôi.
Trên Ubuntu / Debian chúng ta sẽ sử dụng ufw. Cài đặt như sau:
apt-get -y install ufw
sudo ufw enable
Tiếp theo là chạy các lệnh sau để mở port
ufw allow https # Port 443
ufw allow http # Port 80
ufw allow 465 # Port SMTP SSL
ufw allow 587 # Port SMTP TLS
ufw allow 22 # Đây là port SSH, bạn nên đổi port SSH (cấu hình tại /etc/ssh/sshd_config) để an toàn hơn
ufw reload
Vậy là xong, chúc các bạn cài đặt thành công!