Configurar Odoo + Nginx + SSL/TLS
Cómo configurar Odoo 16 con Nginx en Ubuntu 22.04
9 junio, 2024 por
Configurar Odoo + Nginx + SSL/TLS
Yusnier Matos Arias
| No comments yet

Hoy vamos a configurar Odoo para que sea accesible mediante un nombre de dominio, y no mediante la IP del servidor. Para esto vamos a configurar el servidor web Nginx, luego de instalar Odoo 16 en Ubuntu 22.04.

Al terminar la configuración, el resultado será el siguiente:

  • Odoo estará disponible mediante la URL de tu elección.

  • Odoo no estará disponible mediante la IP de tu servidor.

Se recomienda que la instalación se realice con un usuario distinto a root, con permisos de sudo.

Nginx es un servidor web muy potente de código abierto. Es uno de los más usados a nivel global, no solo como servidor web, sino que provee otras funciones de mucho valor. Puede funcionar como un reverse-proxy, como un load-balancer, servidor de caché, entre otros.

Paso 1. Actualizar el servidor

Estamos asumiendo ya tienes Odoo instalado en el servidor (tal vez porque seguiste este tutorial) con Ubuntu Server, pero aún así, vamos a aplicar buenas prácticas, así que ejecutamos lo siguiente:

sudo apt-get update && sudo apt-get upgrade

Paso 2. Instalar Nginx

En este paso instalamos e iniciamos el servidor web nginx.

sudo apt-get install nginx
sudo service nginx start

Paso 3. Cambiar el acceso a Odoo

Odoo, por defecto, escucha por el puerto 8069 por todas las interfaces. Es decir, podrás conectarte a Odoo con la IP del servidor desde cualquier otra dirección. Esta no es una buena práctica para un servidor en produccón.

Por tanto, lo primero que vamos a hacer es deshabilitar el acceso a Odoo desde otras direcciones, y solo dejar habilitada la interfaz local: 127.0.0.1.

Para esto, editamos el fichero de configuración de Odoo: /opt/odoo16/odoo16.conf.

sudo nano /opt/odoo16/odoo16.conf

Agregamos o editamos las siguientes líneas para que queden exactamente así:

http_interface = 127.0.0.1
netrpc_interface = 127.0.0.1
xmlrpc_interface = 127.0.0.1

 Luego, salva y cierra el fichero de configuración. Primero Control + o, y luego Control + x.

Paso 4. Configurar Nginx

Primero debemos crear un fichero de configuración para la instancia de Odoo en Nginx.

sudo nano /etc/nginx/sites-available/odoo16.conf

En este fichero copiamos el siguiente contenido.

server {
    server_name odoo.tudominio.com;
    listen 80;
    access_log /var/log/nginx/odoo-access.log;
    error_log /var/log/nginx/odoo-error.log;
    location /longpolling {
        proxy_connect_timeout   3600;
        proxy_read_timeout      3600;
        proxy_send_timeout      3600;
        send_timeout            3600;
        proxy_pass http://odoo-im;
}
    location / {
        proxy_connect_timeout   3600;
        proxy_read_timeout      3600;
        proxy_send_timeout      3600;
        send_timeout            3600;
        proxy_pass http://odoo;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    gzip on;
    gzip_min_length 1000;
}
upstream odoo {
server 127.0.0.1:8069 weight=1 fail_timeout=0;
}
upstream odoo-im {
server 127.0.0.1:8072 weight=1 fail_timeout=0;
}

Como el fichero de configuración de la instancia de Odoo la creamos en el directorio sites-available de Nginx, debemos pasarlo al directorio sites-enabled de Nginx, para que tengan efecto.

Lo anterior lo hacemos creando un enlace simbólico:

ln -s /etc/nginx/sites-available/odoo16.conf /etc/nginx/sites-enabled/

Con lo anterior tendremos una copia del fichero de configuración lista para funcionar en nginx.

En este momento debes ser capaz de conectarte a Odoo mediante http://odoo.tudominio.com.

Sin embargo, esta conexión no es segura, y no es recomendable que se use en un ambiente de producción. Vamos a resolver esto a continuación.

Paso 5. Instalar Certbot y obtener un certificado

Certbot es una herramienta de línea de comandos para automatizar la tarea de obtener y renovar certificados SSL/TLS de Let's Encrypt.

Let's Encrypt es una autoridad de certificación gratuita globalmente usada en un gran número de sitios web.

SSL/TLS, por otro lado, es un protocolo que proporciona seguridad en la comunicación entre un cliente y un servidor web. Cuando te conectas a un sitio web mediante https, en vez de solo http, estás usando este protocolo seguro.

Certbot simplifica la obtención de estos certificados y la configuración de servidores web para utilizarlos.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

El comando anterior leerá los ficheros de configuración de nginx y te mostrará todos los dominios y subdominios que identifique. Luego, debes elegir para cuáles de esos dominios o subdominios deseas configurar el certificado SSL/TLS.

Al finalizar presionas Enter y espera el resultado.

Paso 6. Ajustar configuración de Odoo

En Odoo debemos indicar que se va a usar esta configuración con un Proxy inverso (en otra entrada explicaré qué es un Proxy inverso, para qué se usa y cómo funciona).

Abrimos el fichero de configuración de Odoo (Ver Instalar Odoo 16 en Ubuntu 22.04) y cambiamos la línea: 

proxy_mode = False a proxy_mode = True

Luego reiniciar nginx:

sudo systemctl restart nginx

Los certificados SSL/TLS requieren que se renueven cada cierto tiempo (cada tres meses en el caso de Let's Encrypt). Esta tareas la podemos automatizar, pero por ahora la vamos a dejar así pues ya es funcional para tu instancia de Odoo.

Déjame tu comentario y cuéntame cómo te fue en tu instalación siguiendo esta guía.

En otra entrada veremos cómo configurar el certificado SSL y proxy inverno usando Nginx.

Compartir

Siempre primero.

Entérate primero de las últimas noticias, tendencias tutoriales, cursos y otros sobre Odoo.


en Odoo
Configurar Odoo + Nginx + SSL/TLS
Yusnier Matos Arias 9 junio, 2024
Share this post
Categorías
Archivar
Identificarse to leave a comment