Cómo instalar el software ERP Odoo 16 en Ubuntu 22.04

Odoo (antes conocido como OpenERP) es un conjunto autoalojado de más de 10.000 Odoo es una solución ERP gratuita y de código abierto para múltiples tipos de empresas. Proporciona gestión de relaciones con los clientes (CRM), canal de ventas, gestión de proyectos, fabricación, facturación, contabilidad, comercio electrónico y mucho más.

Odoo es una de las soluciones ERP más completas para tu empresa. Viene con 30 módulos básicos por defecto y proporciona más de 4500 módulos comunitarios que pueden ayudar a tus múltiples negocios.

En este tutorial, instalaremos el ERP de código abierto Odoo en el servidor Ubuntu 22.04. Instalaremos y configuraremos la última versión estable de Odoo 16, configuraremos la base de datos PostgreSQL para Odoo y, por último, configuraremos Nginx como proxy inverso para la aplicación Odoo.

Requisitos previos

Para comenzar con este tutorial, necesitarás algunos de los siguientes requisitos:

  • Un servidor Ubuntu 22.04 – Este ejemplo utiliza un servidor Ubuntu con el nombre de host‘odoo-server‘.
  • Un usuario no root con privilegios sudo root/administrador – o también puedes utilizar el usuario root.
  • Un nombre de dominio apuntando a la dirección IP del servidor – para producción, necesitarás un nombre de dominio para la instalación de Odoo.

Instalar dependencias

Para instalar Odoo, primero necesitarás instalar algunas dependencias de paquetes en tu sistema Ubuntu. El ERP Odoo es una aplicación web escrita principalmente en Python, por lo que también necesitarás instalar algunos paquetes de Python.

Antes de empezar a instalar paquetes, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes.

sudo apt update

A continuación, instala las dependencias de paquetes para odoo mediante el siguiente comando apt. Esta instalación incluirá la última versión de Python 3.10, build-essentials para compilar paquetes Python, y algunas librerías necesarias para odoo.

sudo apt install git wget python3 build-essential libzip-dev python3-dev libxslt1-dev python3-pip libldap2-dev python3-wheel libsasl2-dev python3-venv python3-setuptools node-less libjpeg-dev xfonts-75dpi xfonts-base libxrender1 libpq-dev libffi-dev fontconfig

Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar. Y comenzará la instalación.

instalar dependencias

Una vez instalados Python y otras dependencias, el siguiente paso es instalar Node .js, que se utilizará para generar archivos estáticos, e instalar el paquete wkhtmltopdf para generar informes PDF.

Instalar Nodejs

Para instalar Odoo, debes asegurarte de que Node.js está instalado en tu sistema. Node.js se utiliza para generar archivos estáticos para las aplicaciones web de Odoo. En este paso, instalarás Node.js 16 desde el repositorio de terceros Nodesource.

Ejecuta el siguiente comando para descargar y configurar el repositorio Nodesource para Node.js 16.

sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Este comando descargará y ejecutará el script instalador, después el script instalador configurará automáticamente el repositorio para Node.js, añadirá la clave GPG y actualizará y refrescará automáticamente el índice de paquetes en tu sistema.

configurar fuente de nodos

A continuación, ejecuta el siguiente comando apt para instalar el paquete Node.js. Cuando se te solicite,introduce y para confirmar y pulsa ENTER para continuar.

sudo apt install nodejs

instalar nodejs

Una vez instalado Node.js, ejecuta el siguiente comando npm para instalar el paquete ‘rtlcss‘.
El paquete‘rtlcss‘ es necesario para odoo, especialmente si utilizas la interfaz de usuario de derecha a izquierda para idiomas específicos como el árabe y el hebreo.

sudo npm install -g rtlcss

Instalación de la aplicación Wkhtmltopdf

El ERP de código abierto odoo requiere la instalación del paquete wkhtmltopdf. Este paquete es necesario para convertir páginas HTML a PDF y a varios formatos de imagen a través de Qt Webkit. El paquete wkhtmltopdf se instalará manualmente mediante el paquete .deb en el sistema Ubuntu.

Ejecuta el siguiente comando para descargar el archivo .deb del paquete Wkhtmltopdf.

cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb

Instala el paquete Wkhtmltopdf mediante el siguiente comando dpkg.

sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb

instalar wkhtmltopdf

Si aparece un error, como la falta de un paquete, arréglalo mediante el siguiente comando apt.

sudo apt install -f

Una vez instalado el paquete Wkhtmltopdf, puedes verificar el archivo binario del paquete Wkhtmltopdf que está disponible por defecto en el directorio ‘/usr/local/bin‘. Deberías ver dos programas el‘wkhtmltopdf‘ y el‘wkhtmltoimage‘.

ls /usr/local/bin

Ahora ejecuta el siguiente comando para verificar la variable de entorno $PATH y asegúrate de que el directorio ‘/usr/local/bin’ está disponible en el $PATH binario. De lo contrario, el paquete Wkhtmltopdf no funcionará correctamente.

echo $PATH

Por último, ejecuta el siguiente comando para asegurarte de que la ruta binaria del paquete Wkhtmltopdf está disponible. Si el paquete Wkhtmltopdf está disponible, deberías recibir una salida con la ruta completa del paquete Wkhtmltopdf.

which wkhtmltopdf
which wkhtmltoimage

configuración wkhtmltopdf

Instalar el servidor de base de datos PostgreSQL

El ERP de código abierto odoo soporta bases de datos como MySQL, SQLite y PostgreSQL. En este paso, instalarás y utilizarás PostgreSQL como base de datos por defecto para tu instalación de odoo. También establecerás el rol PostgreSQL y realizarás cambios en la configuración de PostgreSQL.

Ejecuta el siguiente comando apt para instalar el servidor de base de datos PostgreSQL. Cuando se te pida confirmación, introduce y, y pulsa ENTER.

sudo apt install postgresql

instalar postgresql

Una vez instalado PostgreSQL, ejecuta el siguiente comando para verificar PostgreSQL y asegurarte de que el servicio está habilitado y en ejecución.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

En la siguiente salida, puedes ver que el servicio PostgreSQL está habilitado y se ejecutará automáticamente al iniciar el sistema. Y el estado del PostgreSQL es en ejecución.

comprobar servicio postgresql

A continuación, crearás un nuevo rol para odoo. Ejecuta el siguiente comando para iniciar sesión con el usuario‘postgres‘ y crear un nuevo rol con el nombre ‘odoo’.

su - postgres
createuser -sdP odoo

Introduce la contraseña para el nuevo rol ‘odoo‘ y repítelo.

Ahora, accede al shell PostgreSQL mediante el comando psql que aparece a continuación.

psql

Ejecuta la siguiente consulta para verificar la lista de roles en PostgreSQL y asegúrate de que el rol ‘odoo‘ está disponible.

\du

Ahora introduce‘\q‘ para salir del shell PostgreSQL. A continuación, escribe ‘exit‘ para salir del usuario postgres.

crear rol postgresql

Ahora, tras haber creado un rol para odoo, deberás configurar la autenticación para el rol ‘odoo‘.

Edita la configuración PostgreSQL‘/etc/postgresql/14/main/pg_hba.conf‘ utilizando el siguiente editor nano.

sudo nano /etc/postgresql/14/main/pg_hba.conf

Añade la siguiente configuración al archivo. Con esto, permitirás el acceso al PostgreSQL para el rol‘odoo‘ con la contraseña de autenticación‘scram-sha-256‘.

host    all   odoo    127.0.0.1/32    scram-sha-256

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para reiniciar el servicio PostgreSQL y aplicar los nuevos cambios.

sudo systemctl restart postgresql

Por último, inicia sesión como usuario ‘postgres’ y verifica el rol‘odoo‘ accediendo al shell de PostgreSQL mediante el comando psql como se indica a continuación.

su - postgres
psql -h 127.0.0.1 -U odoo -d postgres

Después de iniciar sesión, verifícalo utilizando la siguiente consulta.

\conninfo

Ahora deberías ver que estás conectado a PostgreSQL utilizando el rol ‘odoo‘.

comprobar el rol de postgresql

En este punto, la preparación de la base de datos PostgreSQL para odoo ha finalizado. A continuación, comenzarás la instalación de odoo descargando el código fuente e instalando las dependencias de Python.

Descarga de Odoo 16

Para esta demo, configurarás y ejecutarás odoo v16 con el usuario‘odoo‘. Así que ahora crearás un nuevo usuario Unix ‘odoo’ y descargarás la última versión del código fuente de odoo 16.

Ejecuta el siguiente comando para crear un nuevo usuario ‘odoo‘. En este ejemplo, el directorio de inicio por defecto para el usuario ‘odoo‘ sería‘/opt/odoo’ y el shell por defecto es bash.

sudo adduser --system --group --home=/opt/odoo --shell=/bin/bash odoo

Ahora mueve el directorio de trabajo a ‘ /opt/odoo‘ y descarga el código fuente de odoo mediante el siguiente comando git. En este ejemplo, instalarás el odoo 16.

cd /opt/odoo
git clone https://github.com/odoo/odoo.git --depth 1 --branch 16.0 --single-branch odoo-server

Ahora deberías obtener el nuevo directorio ‘odoo-server’ dentro del directorio ‘/opt/odoo‘.

Por último, ejecuta el siguiente comando para cambiar la propiedad del código fuente de odoo al usuario y grupo‘odoo‘.

sudo chown -R odoo:odoo /opt/odoo/odoo-server

descargar odoo

Después de descargar el código fuente de odoo, a continuación iniciarás la instalación de las dependencias del paquete Python para odoo.

Instalación de las dependencias de Python para Odoo

En este paso, configurarás el entorno virtual de Python para odoo e instalarás las dependencias de Python mediante el comando pip3.

Mueve el directorio de trabajo a‘/opt/odoo/odoo-server‘ y crea un nuevo entorno virtual Python‘venv‘ mediante el siguiente comando.

cd /opt/odoo/odoo-server
python3 -m venv venv

A continuación, activa el entorno virtual Python «venv» mediante el siguiente comando.

source venv/bin/activate

Después de activar el entorno virtual Python, verás que tu shell actual cambia a algo como ‘(venv) root@hostname…’.

setup python venv

Ahora ejecuta el siguiente comando pip3 para instalar la rueda de paquetes de Python e instala las dependencias de Python de odoo a través del archivo requirements.txt.

pip3 install wheel
pip3 install -r requirements.txt

instalar dependencias

Una vez instaladas las dependencias de Python, ejecuta el siguiente comando para salir del entorno virtual‘venv’ de Python.

deactivate

Ahora has descargado el código fuente de odoo e instalado las dependencias de Python. A continuación, crearás una nueva configuración y directorio para la instalación de odoo.

Crear la configuración de Odoo

Después de instalar las dependencias del paquete para Odoo, a continuación empezarás a crear la configuración para odoo y a configurar odoo como servicio systemd.

Crea un nuevo archivo de configuración‘/etc/odoo.conf‘ usando el siguiente editor nano.

sudo nano /etc/odoo.conf

Añade la siguiente configuración al archivo. Y asegúrate de cambiar el usuario y contraseña de la base de datos‘admin_passwd‘ y details con tus datos.

[options]
; This is the password that allows database operations:
admin_passwd = adminpassodoo
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoopass
addons_path = /opt/odoo/odoo-server/addons
xmlrpc_port = 8069
logfile = /var/log/odoo/odoo-server.log
log_level  = debug

Guarda el archivo y sal del editor.

Ahora, cambia la propiedad del archivo de configuración de odoo‘/etc/odoo.conf ‘ al usuario del sistema‘odoo‘.

sudo chown odoo:odoo /etc/odoo.conf

A continuación, ejecuta el siguiente comando para crear un nuevo directorio que se utilizará para almacenar los registros de odoo.

sudo mkdir /var/log/odoo

Luego, cambia la propiedad del directorio de logs de odoo‘/var/log/odoo‘ al usuario ‘odoo‘ y cambia el permiso a 755.

sudo chown odoo:odoo /var/log/odoo 
sudo chmod 755 /var/log/odoo

crear configuración odoo

Ejecutar Odoo como servicio Systemd

Llegados a este punto, puedes ejecutar odoo manualmente a través de la línea de comandos. Para hacerlo más fácil, puedes ejecutar odoo como un servicio systemd. Esto te permite gestionar odoo mediante el comando systemctl.

Ahora crearás un nuevo archivo de servicio systemd y ejecutarás odoo como servicio systemd.

Para empezar, crea un nuevo archivo de servicio systemd ‘/lib/systemd/system/odoo-server.service ‘ utilizando el siguiente editor nano.

sudo nano /lib/systemd/system/odoo-server.service

Añade la siguiente configuración al archivo.

[Unit]
Description=Odoo 16.0 Service
Requires=postgresql.service
After=network.target postgresql.service
 
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-server/venv/bin/python3 /opt/odoo/odoo-server/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
 
[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, recarga el gestor systemd para aplicar un nuevo archivo de servicio mediante el siguiente comando systemctl.

sudo systemctl daemon-reload

Inicia y habilita el servicio«odoo-server » mediante el siguiente comando.

sudo systemctl start odoo-server
sudo systemctl enable odoo-server

configurar servicio odoo

Por último, verifica el servicio odoo para asegurarte de que se está ejecutando.

sudo systemctl status odoo-server

Deberías recibir la salida del servicio ‘odoo-server‘ en ejecución.

comprobar servicio odoo

Ejecutar Odoo con Nginx Reverse Proxy

La forma recomendada de desplegar odoo en producción es utilizando el proxy inverso. Esto te permite ejecutar odoo sólo en el localhost y todo el acceso de los clientes será gestionado por el proxy inverso.

En este paso, instalarás y configurarás el servidor web Nginx como proxy inverso para la aplicación web odoo. También tendrás la instalación de odoo asegurada con SSL. Así que, antes de empezar a configurar Nginx, asegúrate de que tienes el nombre de dominio apuntando a la dirección IP del servidor y el SSL generado Letsencrypt.

Primero, modifica el archivo de configuración de odoo‘/etc/odoo.conf‘ usando el siguiente editor nano.

sudo nano /etc/odoo.conf

Añade la siguiente configuración al archivo. Esta configuración ejecutará odoo como la aplicación backend que se ejecutará en 127.0.0.1.

xmlrpc_interface = 127.0.0.1
proxy_mode = True

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para reiniciar el servicio ‘odoo-server‘ y aplicar los nuevos cambios.

sudo systemctl restart odoo-server

Ahora verifica el servicio ‘odoo-server‘ para asegurarte de que el servicio está funcionando.

sudo systemctl status odoo-server

configurar odoo

A continuación, instala y configura Nginx.

Ejecuta el siguiente comando apt para instalar el paquete del servidor web Nginx. Introduce y cuando se te solicite y pulsa ENTER para proceder y confirmar la instalación.

sudo apt install nginx

instalar nginx

Una vez instalado Nginx, crea una nueva configuración de bloqueos del servidor Nginx ‘/etc/nginx/sites-available/odoo.conf ‘ utilizando el siguiente editor nano.

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

Añade la siguiente configuración al archivo y asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL con tu configuración.

#odoo server
upstream odoo {
 server 127.0.0.1:8069;
}
upstream odoochat {
 server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.hwdomain.io;
rewrite ^(.*) https://$host$1 permanent;
}

server {
listen 443 ssl http2;
server_name odoo.hwdomain.io;
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.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.hwdomain.io/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}

# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}

# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

Guarda el archivo y cierra el editor cuando hayas terminado.

Ahora activa la nueva configuración del bloque del servidor Nginx y verifica la configuración de Nginx para asegurarte de que tienes las configuraciones correctas.

sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si tus configuraciones son correctas, verás un mensaje de salida como‘prueba realizada con éxito – sintaxis OK‘.

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio Nginx y aplicar los nuevos cambios.

sudo systemctl restart nginx

En este punto, has finalizado la instalación y configuración del proxy inverso Nginx para el ERP odoo. Ahora puedes acceder a la instalación a través de tu navegador web.

configurar proxy inverso nginx

Ejecuta el siguiente comando para verificar el servicio Nginx y asegúrate de que se está ejecutando.

sudo systemctl restart nginx

Deberías obtener que el servicio Nginx se está ejecutando.

comprobar nginx

Configurar el cortafuegos UFW

Se recomienda habilitar el cortafuegos en tu instalación de odoo. En este paso, aprenderás a configurar el cortafuegos UFW.

Por defecto, el servidor genérico de Ubuntu tiene instalado el paquete ufw, así que puedes empezar a configurarlo.

Ejecuta el siguiente comando para añadir la aplicación OpenSSH al cortafuegos ufw. A continuación, ejecuta y habilita el ufw.

sudo ufw allow "OpenSSH"
sudo ufw enable

Cuando te pida confirmación, introduce y y pulsa ENTER para continuar. Y el servicio de cortafuegos ufw estará habilitado y en funcionamiento.

configuración ufw

A continuación, ejecuta el siguiente comando para añadir la aplicación«Nginx Full«. Este perfil de aplicación lo proporcionan los paquetes Nginx en la instalación por defecto y abrirá los puertos HTTP y HTTPS para tu aplicación.

sudo ufw allow "Nginx Full"

Por último, comprueba la lista de reglas habilitadas en ufw. Deberías ver dos aplicaciones:‘OpenSSH‘ y ‘Nginx Full ‘ habilitadas.

sudo ufw status

configuración ufw

Migrar la Base de Datos e Instalar Odoo 16

Abre tu navegador web y visita el nombre de dominio de tu instalación de odoo (es decir: https://odoo.hwdomain.io/).

Al principio, necesitarás migrar la base de datos para odoo y crear un nuevo usuario administrador.

La contraseña maestra aquí es la‘admin_passwd‘ que acabas de añadir en el archivo‘/etc/odoo.conf‘.

Introduce el nuevo nombre de la base de datos que se creará automáticamente y detalla el nuevo usuario administrador y la contraseña para tu instalación de odoo. Además, también puedes seleccionar la casilla Datos de demostración para añadir los datos de demostración a tu instalación.

Haz clic en«Crear base de datos» para iniciar la instalación de odoo.

odoo migrar base de datos

Una vez instalado odoo, serás redirigido a la página de inicio de sesión de odoo. Introduce la dirección de correo electrónico del administrador y la contraseña de tu odoo y haz clic en «Iniciar sesión«.

login odoo

Ahora deberías ver el panel de usuario de odoo.

panel de control de odoo

Conclusión

¡Enhorabuena! Ya has instalado el ERP de código abierto Odoo en un servidor Ubuntu 22.04. Ahora también has aprendido la instalación básica del servidor de base de datos PostgreSQL y del servidor web Nginx configurado como proxy inverso.

En este punto, tienes totalmente asegurada la instalación de Odoo en tu servidor Ubuntu. Ahora puedes empezar a añadir algunos plugins/add-ons adicionales que sean adecuados para tu negocio.

También te podría gustar...