Esta pagina se ve mejor con JavaScript habilitado

Odoo 14.0 en Ubuntu 20.04

 ·   ·  ☕ 11 minutos lectura  ·  🦎 Odair

Introducción

Una necesidad creciente en empresas de todo tipo y tamaño hoy en día, es poder gestionar todos sus procesos de manera integrada. Los CRM y los ERP, se han convertido en los últimos años, en la piedra angular para el manejo de los negocios en las grandes empresas; soluciones de software costosas y muy robustas han dominado tradicionalmente el mercado por años; pero como siempre, el OpenSource y el software libre se abre su camino para traer altenativas muy potentes, de uso gratuito o combinado con el model freemium.

Freemium: es una palabra acuñada para comprimir la combinación del uso de aplicaciones que en su mayor parte son gratuitas o libres y tienen una parte adicional por la que puedes pagar según tus necesidades o gustos.

En este escenario aparecen actores como ERPNext, que tiene un licenciamiento completamente libre y una gran comunidad. Pero pisándole los talones viene Odoo, cuyo licenciamiento además de ser libre (Licencia GNU Lesser GPL), combina el modelo freemium, ofreciendo algunas apps con características adicionales a las básicas para cualquier negocio. Las aplicaciones de Odoo pueden correr de manera independiente embebidas en algún sitio web o como parte de todo la suite ERP; es por ello que cumplen con la licencia LGPL. Te dejo una copia de la licencia aquí para que la revises.

Pero como ya sabemos, la costumbre en estas series de SysAdmin es que todo lo podemos instalar en nuestra propia infraestructura sin entregar nuestra información y sin que tengamos costos mensuales por planes o licencias.

Instalación

Si bien Odoo tiene varias opciones de instalación, entre ellas la instalación sobre los tres sistemas operativos más populares (Windows, MacOsX y GNU/Linux), en este tutorial exploraremos la instalación sobre Ubuntu Server 20.04, mediante el sistema de repositorios en un sevidor limpio. Lo que quiere decir que si lo intentas en otra versión como Ubuntu 18.04 o superiores, podrá no funcionar.

Preparación del sistema

Lo primero que vamos a hacer es actualizar nuestro sistema para estar seguros de que tenemos las últimas versiones de nuestro software. Para ello debes ejecutar en la consola los siguientes comandos sudo apt update; sudo apt upgrade -y.

Base de datos

Odoo usa una base de datos PostgreSQL, el cual es un potente servidor de base de datos, que debemos configurar para ser usado con un usuario alternativo al usario postgres, dado que Odoo no lo permite por cuestiones de la propia seguridad de tu servidor.

Para configurar PostgreSQL rápidamente para los fines de esta instalación, instala los paquetes con sudo apt install posgresql postgresql-client, eso será suficiente para tener lo necesario. Cuando ya lo tengas instalado y corriendo, puedes comprobar con el comando sudo systemctl status postgresql. Odoo se encargará de manejar las bases de datos, lo verás cuando lo cargues por primera vez.

Conversión de HTML a PDF

Para la presentación de los distintos reportes que salen de la aplicación, Odoo usa wkhtmltopdf, sin embargo la instalación por defecto en Ubuntu no funciona bien en Odoo debido a que no soporta encabezados y pies de página, necesarios para los reportes. Por lo que el paquete de instalación no lo contemplará como una dependencia, aunque lo es. Por esta razón instalaremos wkhtmltopdf desde su sitio oficial.

1
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
1
sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb -y

Nota: el último comando funciona como si tratara de instalar el paquete desde los repositorios de nuestro sistema, sin embargo al nombrar directamente el paquete descargado, este reemplaza al paquete de los repositorios.

Instalación de Odoo 14

Como lo mencioné antes, esta instalación se realizará usando el sistema de paquetes, por lo que vamos a configurar los respositorios con los siguientes comandos:

1
wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -
1
echo "deb http://nightly.odoo.com/14.0/nightly/deb/ ./" | sudo tee /etc/apt/sources.list.d/odoo.list

Ahora ya con las fuentes configuradas vamos a actualizar la caché de apt y a instalar Odoo.

1
sudo apt update; sudo apt install odoo -y

Con esto Odoo 14 ya está corriendo en tu sistema, puedes verificarlo con el comando sudo systemctl status odoo. Si su estado es active (running), podrás verificar que esté corriendo en el puerto 8069 con el comando lsof -i:8069 y deverás ver algo así:

1
2
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
odoo    7458 odoo    4u  IPv4  41146      0t0  TCP *:8069 (LISTEN)

Con lo cual ya puedes entrar a http://localhost:8069 o con tu dirección ip pública en lugar de localhost. Esto te llevará a la página de configuración inicial de Odoo, la cual te advertirá que no has establecido una contraseña para el administrador del software y que acaba de establecer una por ti.

Nota: si vas a usar tu ip pública o dominio, deberás agregar la regla de firewall para poder acceder, esto es: sudo ufw allow 8069/tcp.

Odoo Login Form
Odoo: Formulario de inicio

Aquí puedes introduccir los datos del formulario, la base de datos es la de la empresa a manejar, ej: empresadb, el correo electrónico puede ser local o uno al cual Odoo pueda tener acceso para enviar mensajes (Al final de esta guía te explico cómo configurar el envío simple de correo desde tu sistema), también te recomiendo cargar los datos de prueba para poder ver a Odoo en todas sus capacidades.

Después de introducir los parámetros e iniciar sesión, verás la pantalla de aplicaciones de Odoo, con tu usuario administrador que por defecto usa el nombre Mitchell Admin.

Odoo Apps window
Odoo: Ventana de aplicaciones

Configuración del servidor web

Como te diste cuenta, Odoo corre desde un puerto específico y no tenemos una configuración web que nos permita instalar certificados SSL y acceder al sitio sin necesidad de especificar un puerto. Esta tarea la realizaremos con Nginx como reverse proxy, por lo cual debemos instalarlo y configurarlo, pero antes vamos a dejar listos los certificados SSL, de manera que podamos incluirlos en la configuración del sitio de nginx.

Certificados SSL con Certbot

Primero, si estás usando Ubuntu Server, este no trae snapd por defecto, por lo que debemos instalarlo con sudo apt install snapd -y. Luego con el siguiente comando instalamos el núcleo de snap sudo snap install core; sudo anap refres core.

Seguido de esto podemos instalar certbot con el siguiente comando:

1
sudo snap install --classic certbot

Luego debemos crear un enlace simbólico para poder ejecutarlo directamente:

1
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Finalmente ejecuta sudo certbot --version y deberá salir la versión instalada:

1
certbot 1.13.0

Seguido a ello y considerando que tengas ya un registro A que apunte a tu dirección ip púbica en tu administrador de dominios con el nombre que vayas a usar, ejemplo odoo.example.com, lo que yo recomiendo es obtener los certificados unicamente, usando el servidor temporal de certbot, para que no se generen configuraciones de nginx que no vamos a necesitar; así que si tuvieras instalado nginx previamente, es necesario apagarlo un momento para liberar el puerto 80. Puedes hacer esto ejecutando sudo systemctl stop nginx. Luego ejecutas el siguiente comando, en el cual escogerás la opción 2.

Nota: No es necesario que tu URL empiece con odoo, puede ser cualquier nombre que desees.

1
sudo certbot certonly -d odoo.example.com
1
2
3
4
5
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nginx Web Server plugin (nginx)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)

Esto te pedirá tu correo electrónico y te hará algunas preguntas. Luego de ello los certificados quedarán disponibles en las siguientes rutas:

1
2
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
/etc/letsencrypt/live/odoo.example.com/privkey.pem

Nota: fullchain es el certificado y la cadena, privkey es la llave.

Ya que hicimos esto manual, necesitamos decirle a cron que renueve los certificados semanalmente, esto se hace creando el siguiente archivo:

1
sudo nano /etc/cron.weekly/letsencrypt-renew
1
2
3
#!/bin/bash
/usr/bin/certbot renew >> /var/log/le-renew.log
service nginx reload

Y luego le damos permisos de ejecución con sudo chmod +x /etc/cron.weekly/letsencrypt-renew;

Ahora sí, instalemos nginx.

1
sudo apt install nginx -y

Nota: si el serividor estába limpio como dijimos, el puerto 80 estará libre y nginx no tendrá problemas para arrancar, de lo contrario tendrás que liberar el puerto 80 o configrar nginx para que trabaje en otro puerto.

Siguiendo la estructura de directorios recomendada para nginx, vamos a crear el sitio en sites-available y a activarlo en sites-enabled mediante un enlace simbólico. De esta manera podremos usar nginx para servir otros sitios de nuestra empresa, símplemente creando configuraciones de servidores virutales y activándolas en sites-enabled.

1
sudo nano /etc/nginx/sites-available/odoo.example.com.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
upstream odooserver {
   server 127.0.0.1:8069;
}

server {
   listen 80;
   server_name odoo.example.com;

   return 301 https://odoo.example.com$request_uri;
}

server {
   listen 443 ssl http2;
   server_name odoo.example.com;

   access_log /var/log/nginx/freyja-access.log;
   error_log /var/log/nginx/freyja-error.log;

   location / {
      proxy_redirect off;
      proxy_pass http://odooserver;
   }

   # Proxy settings
   proxy_read_timeout 720s;
   proxy_connect_timeout 720s;
   proxy_send_timeout 720s;

   # Add Headers for odoo proxy mode
   proxy_set_header X-Forwarded-Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header X-Real-IP $remote_addr;

   # SSL parameters
   ssl_certificate /etc/letsencrypt/live/odoo.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/odoo.example.com/privkey.pem;
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot  

   # Enable compression and decompression of responses (if you have a heavy loaded server, avoid this option)
   gzip on;
   gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
   gzip_min_length 1000;
}

Ahora que nginx está configurado para trabajar en modo proxy y enmascarar todo lo que tiene el upstream server en un nuevo servidor web por el puerto 443, digámosle a Odoo que trabaje en modo proxy, esto se hace editando el archivo de configuración cambiando la opción proxy_mode a True.

1
sudo nano /etc/odoo/odoo.conf
1
proxy_mode = True

Luego reinicias el servicio con sudo systemctl restart odoo.

Nota: este último paso hace que Odoo utilice las propiedades del proxy de nginx que definimos atrás.

Finalmente prueba la configuración de nginx con sudo nginx -t y si toda la sintaxis está Ok, reinícialo para probar tu nuevo sistema en la url https://odoo.example.com. Ingresa con los mismos datos que introdujiste al inicio en la instalación de Odoo y tendrás tu ventana de aplicaciones listas para instalar. También verás que hacen falta muchas cosas en tus menús, es porque debes buscar las aplicaciones que necesites e instalarlas.

Configuraciones adicionales

Si bien en los pasos anteriores dejamos el Odoo instalado y ya podemos iniciar sesión, conviene configurar dos aspectos importantes para su funcionamiento. El primero es los servidores de correo y el segundo es la URL base, para que todas las comunicaciones y links enviados sean por https y no por http://odoo.example.com:8069, además también debemos cerrar ese puerto en el firewall, para que sólo se acceda a través de Nginx usando SSL.

Configuración de los servidores de correo

Para que Odoo pueda enviar invitaciones y usar todas sus características de comunicación vía email, debemos tener configurado un servidor de correo, tanto entrante como saliente.

Si en tu compañía ya tienen un servidor de correo andando, vamos a usarlo en las opciones de configuración de Odoo. De lo contrario te recomiendo instalar Postfix mediante esta guía.

Ve al botón de la parte superior izquierda, donde aparecerá el menú de Ajustes. Las opciones a configurar son las siguientes:

Odoo Mail Setup
Configuración de Odoo: Servidores de correo

Al activar el checkbox de actividades te aparecerán las configuraciones resaltadas en rojo en la imagen. Debes guardar primero, luego, la primera opción te llevará a un listado vacío donde debes darle al botón de Crear con lo que te aparecerá la siguiente pantalla.

Odoo Mail Setup
Configuración de Odoo: Servidor de correo entrante

Seguido a ello volvemos a la configuración general y damos clic sobre la opción de Servidor Saliente, y siguiendo la misma dinámica, creas una nueva configuración con los datos de tu servidor.

Odoo Mail Setup
Configuración de Odoo: Servidor de correo saliente

Nota: las configuraciones dependerán de tu servidor, no tienen que ser las mismas que están aquí. Cualquiera que sea el caso, Odoo te permite probar las configuraciones respectivas. Así mismo, puedes probar usando los servidores de gmail u otros servicios comerciales, pero posiblemente debas habilitar el uso de aplicaciones menos seguras en tus opciones de cuenta.

Listo, con estas configuraciones puedes invitar usuarios a tu sistema Odoo.

Configuración de la URL base

Te das cuenta que esta configuración se hace necesaria porque al enviar los correos de invitación, la URL que se muestra en el correo es http://odoo.example.com:8069, lo cual por un lado es inseguro y por el otro, estamos perdiendo el trabajo hecho con nginx como proxy de reversa. Así que vamos a configurar esto.

Lo primero es habilitar el modo de desarrollador, esto aparece al final de las opciones de la pantalla de ajustes.

Odoo developer mode
Configuración de Odoo: Modo desarrollador

Con esto se habilita el menú de Técnico y además verás el ícono de un bicho en la barra principal de menú sobre el lado derecho que te confirma que estás en modo desarrollador. En la opción técnico se desplegará el siguiente menú, donde darás clic en Parámetros del sistema.

Odoo technical menu
Configuración de Odoo: Menú Técnico

Verás una ventana con muchas variables, deberás estar seguro que la variable web-base-url esté configurada con https://odoo.example.com. Si por algún motivo no existe, debes crearla.

Odoo web.base.url
Configuración de Odoo: Web base URL

También debes agregar una nueva variable, para que todo quede fijo en la URL definida.

Odoo web.base.url.freeze
Configuración de Odoo: Web base URL frezee

Bien, con esto ya debe quedar todo listo. Instala las aplicaciones que creas conveniente, invita a nuevos usuarios y empieza a usar tu sistema de ERP y CRM de código abierto.

Deja tus comentarios si tienes preguntas, o si te interesa instalar este sistema en tu empresa por favor escríbeme un correo electrónico. Saludos.

compartir en

Odair Trujillo
Escrito por
Odair
Software Developer