<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=Ubuntu_odoo_letsencrypt</id>
	<title>Ubuntu odoo letsencrypt - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=Ubuntu_odoo_letsencrypt"/>
	<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=Ubuntu_odoo_letsencrypt&amp;action=history"/>
	<updated>2026-06-22T13:44:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.alikaravi.ir/index.php?title=Ubuntu_odoo_letsencrypt&amp;diff=23&amp;oldid=prev</id>
		<title>Karavi: Created page with &quot;&#039;&#039;&#039;1/ Install certbot :&#039;&#039;&#039;  &lt;nowiki&gt;#&lt;/nowiki&gt;&gt; sudo apt update  &lt;nowiki&gt;#&lt;/nowiki&gt;&gt; sudo apt install certbot   &#039;&#039;&#039;2/ Generate Strong Dh (Diffie-Hellman) Group:&#039;&#039;&#039;  sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048   &#039;&#039;&#039;3/ Map &lt;code&gt;.well-known/acme-challenge&lt;/code&gt; to &lt;code&gt;/var/lib/letsencrypt&lt;/code&gt; Directory:&#039;&#039;&#039;   &lt;nowiki&gt;#&lt;/nowiki&gt;&gt; sudo mkdir -p /var/lib/letsencrypt/.well-known  &lt;nowiki&gt;#&lt;/nowiki&gt;&gt; sudo chgrp www-data /var/lib/letsencrypt  &lt;nowiki&gt;#&lt;/nowiki...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=Ubuntu_odoo_letsencrypt&amp;diff=23&amp;oldid=prev"/>
		<updated>2023-10-27T09:28:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;1/ Install certbot :&amp;#039;&amp;#039;&amp;#039;  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo apt update  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo apt install certbot   &amp;#039;&amp;#039;&amp;#039;2/ Generate Strong Dh (Diffie-Hellman) Group:&amp;#039;&amp;#039;&amp;#039;  sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048   &amp;#039;&amp;#039;&amp;#039;3/ Map &amp;lt;code&amp;gt;.well-known/acme-challenge&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/var/lib/letsencrypt&amp;lt;/code&amp;gt; Directory:&amp;#039;&amp;#039;&amp;#039;   &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo mkdir -p /var/lib/letsencrypt/.well-known  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo chgrp www-data /var/lib/letsencrypt  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;1/ Install certbot :&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo apt update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo apt install certbot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2/ Generate Strong Dh (Diffie-Hellman) Group:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3/ Map &amp;lt;code&amp;gt;.well-known/acme-challenge&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/var/lib/letsencrypt&amp;lt;/code&amp;gt; Directory:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo mkdir -p /var/lib/letsencrypt/.well-known&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo chgrp www-data /var/lib/letsencrypt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo chmod g+s /var/lib/letsencrypt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
we can use an Nginx snippet for the mapping and use later in our files&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;gt; sudo nano /etc/nginx/snippets/letsencrypt.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
location ^~ /.well-known/acme-challenge/ {&lt;br /&gt;
  allow all;&lt;br /&gt;
  root /var/lib/letsencrypt/;&lt;br /&gt;
  default_type &amp;quot;text/plain&amp;quot;;&lt;br /&gt;
  try_files $uri =404;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4/ Create a second snippet ssl.conf which includes the chippers:&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/nginx/snippets/ssl.conf&lt;br /&gt;
&lt;br /&gt;
ssl_dhparam /etc/ssl/certs/dhparam.pem;&lt;br /&gt;
&lt;br /&gt;
ssl_session_timeout 1d;&lt;br /&gt;
ssl_session_cache shared:SSL:50m;&lt;br /&gt;
ssl_session_tickets off;&lt;br /&gt;
&lt;br /&gt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;&lt;br /&gt;
ssl_ciphers &amp;#039;ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS&amp;#039;;&lt;br /&gt;
ssl_prefer_server_ciphers on;&lt;br /&gt;
&lt;br /&gt;
ssl_stapling on;&lt;br /&gt;
ssl_stapling_verify on;&lt;br /&gt;
resolver 8.8.8.8 8.8.4.4 valid=300s;&lt;br /&gt;
resolver_timeout 30s;&lt;br /&gt;
&lt;br /&gt;
add_header Strict-Transport-Security &amp;quot;max-age=15768000; includeSubdomains; preload&amp;quot;;&lt;br /&gt;
add_header X-Frame-Options SAMEORIGIN;&lt;br /&gt;
add_header X-Content-Type-Options nosniff;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5/ Create your domain nginx bloc:&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
  listen 80;&lt;br /&gt;
  server_name your.com www.your_domain.com;&lt;br /&gt;
&lt;br /&gt;
  include snippets/letsencrypt.conf;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
6/ Create a symbolic link of your file to sites-enabled folder:&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart nginx&lt;br /&gt;
&lt;br /&gt;
Obtain an SSL certificate by running Certbot:&lt;br /&gt;
&lt;br /&gt;
sudo certbot certonly --agree-tos --email test@example.com --webroot -w /var/lib/letsencrypt/ -d your_domain.com -d www.your_domain.com&lt;br /&gt;
&lt;br /&gt;
/etc/nginx/sites-available/your_domain.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Odoo servers&lt;br /&gt;
upstream odoo {&lt;br /&gt;
 server 127.0.0.1:8069;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
upstream odoochat {&lt;br /&gt;
 server 127.0.0.1:8072;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# HTTP -&amp;gt; HTTPS&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name www.your_domain.com your_domain.com;&lt;br /&gt;
&lt;br /&gt;
    include snippets/letsencrypt.conf;&lt;br /&gt;
    return 301 https://your_domain.com$request_uri;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# WWW -&amp;gt; NON WWW&lt;br /&gt;
server {&lt;br /&gt;
    listen 443 ssl http2;&lt;br /&gt;
    server_name www.your_domain.com;&lt;br /&gt;
&lt;br /&gt;
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;&lt;br /&gt;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;&lt;br /&gt;
    ssl_trusted_certificate /etc/letsencrypt/live/your_domain.com/chain.pem;&lt;br /&gt;
    include snippets/ssl.conf;&lt;br /&gt;
    include snippets/letsencrypt.conf;&lt;br /&gt;
&lt;br /&gt;
    return 301 https://your_domain.com$request_uri;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    listen 443 ssl http2;&lt;br /&gt;
    server_name your_domain.com;&lt;br /&gt;
&lt;br /&gt;
    proxy_read_timeout 720s;&lt;br /&gt;
    proxy_connect_timeout 720s;&lt;br /&gt;
    proxy_send_timeout 720s;&lt;br /&gt;
&lt;br /&gt;
    # Proxy headers&lt;br /&gt;
    proxy_set_header X-Forwarded-Host $host;&lt;br /&gt;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
    proxy_set_header X-Forwarded-Proto $scheme;&lt;br /&gt;
    proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
&lt;br /&gt;
    # SSL parameters&lt;br /&gt;
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;&lt;br /&gt;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;&lt;br /&gt;
    ssl_trusted_certificate /etc/letsencrypt/live/your_domain.com/chain.pem;&lt;br /&gt;
    include snippets/ssl.conf;&lt;br /&gt;
    include snippets/letsencrypt.conf;&lt;br /&gt;
&lt;br /&gt;
    # log files&lt;br /&gt;
    access_log /var/log/nginx/odoo.access.log;&lt;br /&gt;
    error_log /var/log/nginx/odoo.error.log;&lt;br /&gt;
&lt;br /&gt;
    # Handle longpoll requests&lt;br /&gt;
    location /longpolling {&lt;br /&gt;
        proxy_pass http://odoochat;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # Handle / requests&lt;br /&gt;
    location / {&lt;br /&gt;
       proxy_redirect off;&lt;br /&gt;
       proxy_pass http://odoo;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # Cache static files&lt;br /&gt;
    location ~* /web/static/ {&lt;br /&gt;
        proxy_cache_valid 200 90m;&lt;br /&gt;
        proxy_buffering on;&lt;br /&gt;
        expires 864000;&lt;br /&gt;
        proxy_pass http://odoo;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # Gzip&lt;br /&gt;
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;&lt;br /&gt;
    gzip on;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart nginx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful Tips about Nginx &amp;amp; Odoo :&lt;br /&gt;
&lt;br /&gt;
1/ In your Odoo config file you need to enable the proxy mode by adding :&lt;br /&gt;
&lt;br /&gt;
proxy_mode = True&lt;br /&gt;
&lt;br /&gt;
2/ Enable the multi-processing mode by extending your Odoo config file:&lt;br /&gt;
&lt;br /&gt;
limit_memory_hard = 1677721600&lt;br /&gt;
limit_memory_soft = 629145600&lt;br /&gt;
limit_request = 8192&lt;br /&gt;
limit_time_cpu = 600&lt;br /&gt;
limit_time_real = 1200&lt;br /&gt;
max_cron_threads = 1&lt;br /&gt;
workers = 8&lt;/div&gt;</summary>
		<author><name>Karavi</name></author>
	</entry>
</feed>