Odoo multi website... con sus propios dominios
Configuración de dominios para múltiples sitios web en Odoo on-premises (no Odoo.sh, no Odoo Cloud)
20 abril, 2024 por
Odoo multi website... con sus propios dominios
Yusnier Matos Arias
| No comments yet

Odoo es una suite de aplicaciones de negocio extremadamente versátil. Nos permite maximizar las ventas con aplicaciones como CRM, Punto de venta en local físico, Ecommerce o negocios en línea, Marketing por email, Automatización de embudos de marketing y ventas, entre otros.

También nos permite optimizar procesos productivoss y operativos como Fabricación, Inventario, Compras, Calidad, Mantenimiento y muchos otros.

Sin embargo, una de las capacidades que llama mucho la atención a emprendedores es la posibilidad de diseñar un Website profesional sin necesidad de saber programación. Esto es posible gracias a las herramientas de diseño listas para usarse, solo arrastrando y soltando componentes en páginas web fáciles de crear.

Odoo, además, permite crear varios sitios web en la misma base de datos. Esto es útil, por ejemplo:

  • Si quieres presentar más de un tipo de producto o servicio relacionado con tu negocio, sin mezclar la información en un mismo sitio web.

  • Si en tu misma base de datos gestionas varias empresas (en un ambiente multi empresas) y deseas tener un sitio web para cada una.

Si has probado hacer esto en las versiones de Odoo.sh o en Odoo Saas, has visto que es muy fácil.

Pero ¿qué pasa cuando tienes tu instancia de Odoo On-premises y quieres tener varios sitios web?

En este caso debes configurarlo tú mismo, y aquí te muestro cómo...

Comportamiento deseado de Odoo multi website

En este ejemplo queremos lograr lo siguiente:

  1. Tengo dos empresas, que vamos a llamar SuperSoft y MegaWheels, respectivamente.

  2. Quiero publicar los sitios web supersoft.com y megawheels.com, cada uno para una de las compañías anteriores. Tú eliges qué dominio va con cada empresa.

Configuraciones básicas de Odoo

La instancia de Odoo la vamos a configurar en un ambiente virtual de Python, y tiene estos requisitos:

  1. Odoo 16.

  2. Ubuntu 22.04.

  3. PostgreSQL 14.

  4. Servidor web Nginx.

  5. Nombre de la base de datos: supersoft.com.

  6. El parámetro dbfilter es ^%h$. Esto indica que la base de datos tiene el mismo nombre que el host. Por ejemplo, cuando se pone en el navegador web https://supersoft.com, el host es supersoft.com. Entonces, la base de datos se llama supersoft.com.

  7. Odoo configurado con proxy inverso (Ver Instalar Odoo 16 en Ubuntu 22.04).

Siguiendo esta configuración, si ponemos en el navegador web https://megawheels.com, Odoo intenta buscar la base de datos megawheels.com, la cual no va a existir.

Por tanto, solo va a funcionar cuando invoquemos la URL https://supersoft.com, pero no lo hará cuando queramos cargar https://megawheels.com.

Configuración de Multi Website en Odoo

Cuando instalamos la aplicación de website en Odoo, automáticamente se crea un sitio web. En este caso, podemos configurar este primer sitio web con los datos por defecto. En el ejemplo que estamos siguiendo, este sería SuperSoft.

A este le pondremos el dominio supersoft.com.




Con los pasos descritos con las imágenes anteriores quedaría configurado el primer sitio web con el dominio por defecto.

Creemos el segundo sitio web:

  • Dentro de la aplicación de Sitio web, click en Configuración y luego en Ajustes.


  • Click en Nuevo Sitio Web.


  • Completa los datos del nuevo sitio web y luego click en el botón Crear.


En este punto ya tenemos nuestro segundo sitio web creado y configurado. Pero si intentas acceder a https://megawheels.com con la configuración realizada hasta ahora, solo recibirás una página con un formulario para crear una nueva base de datos.

Te recuerdo que esto pasa porque Odoo está configurado para cargar una base de datos con el mismo nombre del host presente en la URL. En este caso, la URL es https://megawheels.com, el host es megawheels.com y, sin embargo, la base de datos con ese nombre no existe.

Lo que queremos es que cuando ingresemos la URL https://megawheels.com, Odoo cargue la base de datos supersoft.com, pero con el sitio web de MegaWheels. Fácil ¿eh?

Esto requiere un truco sencillo (luego de que lo conoces), y un módulo nuevo de la comuniddad (específicamente de la OCA).

Configuración del dominio para los sitios web en Odoo

Para esta configuración estoy asumiendo que ya has redirigido tus dominios hacia la IP del servidor de Odoo desde tu administración de zona de dominios. Esto quiere decir, que si hacemos ping a ambos dominios, nos devuelve la dirección IP del servidor.

También puedes utilizar la página https://www.whatsmydns.net/ para comprobar que tus dominios están bien redirigidos.

Paso 1.

El objetivo de este paso es indicarle a Nginx, que cuando reciba el host megawheels.com, le diga a Odoo que cargue la base de datos supersoft.com.

Para esto, vamos a incluir dos configuraciones en Nginx. En el fichero de configuración de la instancia de Odoo, por lo general en /etc/nginx/sites-enabled/odoox.vh.conf, pondremos lo siguiente.

map $host $odoo_db_filter {
    default "";
    megawheels.com "supersoft.com";
    # Agrega más condiciones según tus necesidades
}

Este bloque lo tienes que poner fuera del bloque de servidores (server {...}) de tu configuración de Nginx.

Luego, dentro del bloque location / {...}, pondrás esta línea:

proxy_set_header X-Odoo-dbfilter $odoo_db_filter;

Esto lo que hace es lo siguiente:

  1. Crea un mapa para intercambiar los valores. Cuando el $host es megawheels.com, Nginx lo intercambia por supersoft.com pone este valor en la variable $odoo_db_filter.

  2. Envía un encabezado con el valor de la variable $odoo_db_filter. En este caso, el valor del encabezado es supersoft.com.

Paso 2.

El paso 2 tiene como objetivo manejar el encabezado que envía Nginx. Odoo por defecto no espera este encabezado. Es por esto que usaremos un módulo desarrollado por la OCA que hace esto.

  • Descarga el módulo dbfilter_from_header.

  • Incluye el módulo en la configuración de la instancia de Odoo, para que se cargue con los módulos globales: server_wide_modules = base,web,dbfilter_from_header.

Con estas configuraciones ya deberías tener funcionando tu instancia de Odoo con múltiples sitios web (hicimos sólo 2, pero para más sitios web sigues el mismo procedimiento).

Conclusiones

Odoo multi website ofrece varios beneficios. El principal es que podemos varios sitios web, con varias compañías, todo gestionado desde una base de datos completamente integrada.

Si tienes problemas con estas configuraciones puedes escribirme o ponerlo en los comentarios.

Compartir

Siempre primero.

Suscribete y no pierdas ni un artículo sobre Odoo en este Blog.




Odoo multi website... con sus propios dominios
Yusnier Matos Arias 20 abril, 2024
Share this post
Archivar
Identificarse to leave a comment