Instalación Odoo · 12 min read · Nov 12, 2025
Cómo instalar el software ERP Odoo 14 en Ubuntu 20.04

Odoo (anteriormente conocido como OpenERP) es un conjunto autoalojado de más de 10,000 aplicaciones de código abierto adecuadas para una variedad de necesidades empresariales, incluyendo CRM, comercio electrónico, contabilidad, inventario, gestión de proyectos y punto de venta. Estas aplicaciones están completamente integradas y se accede a ellas a través de una interfaz web común.
En este tutorial, aprenderemos a instalar Odoo 14 Stack en un servidor basado en Ubuntu 20.04.
Prerrequisitos
- Un servidor basado en Ubuntu 20.04 con un mínimo de 2GB de RAM para alojar Odoo Stack.
- Un segundo servidor basado en Ubuntu 20.04 con un mínimo de 2GB de RAM para alojar la base de datos PostgreSQL. Sin embargo, puedes instalar la base de datos en el mismo servidor que Odoo, pero para entornos de producción, se recomienda encarecidamente que la instales en un servidor separado. También puedes elegir cualquiera de las opciones de base de datos gestionadas disponibles de cualquier proveedor de tu elección.
- El requisito de RAM dependerá del número de usuarios concurrentes que utilizarán el stack. Una guía detallada sobre cómo calcular los requisitos del sistema se puede encontrar en la documentación de Odoo.
- Mantén tus sistemas actualizados.
shell $ sudo apt update $ sudo apt upgrade - Un usuario no root con privilegios sudo en ambos servidores.
Configurar reglas del Firewall
Para los propósitos de este tutorial, asumiremos que tienes el firewall ufw instalado en ambos servidores.
En el servidor Odoo, necesitaremos que los puertos 22, 80, 443, 6010, 5432 y 8069 estén abiertos. El 22 se utiliza para SSH, el 80 es para HTTP, el 443 es para HTTPS, el 6010 se utiliza para la comunicación de Odoo, el 5432 es utilizado por PostgreSQL y el 8069 es utilizado por la aplicación del servidor Odoo.
Ejecuta los siguientes comandos para abrir los puertos requeridos en el servidor Odoo.
$ sudo ufw allow "OpenSSH"
$ sudo ufw allow 80,443,6010,5432,8069,8072/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 6010/tcp
$ sudo ufw allow 5432/tcp
$ sudo ufw allow 8069/tcp
$ sudo ufw allow 8072/tcp
En el servidor PostgreSQL, necesitamos abrir los puertos 22, 6010 y 5432. Ábrelos utilizando los comandos que acabamos de discutir.
Asignar Nombres de Host
Puedes usar las direcciones IP de los servidores o usar sus Nombres de Dominio Completamente Calificados (FQDN), si están disponibles. Para nuestro tutorial, utilizaremos FQDN y para eso, necesitamos establecer nombres de host en ambos servidores.
En el servidor Odoo, abre el archivo /etc/hosts.
$ sudo nano /etc/hosts
Asegúrate de que se vea como lo siguiente.
127.0.0.1 localhost
127.0.0.1 odoo.yourdomain.com odoo
10.1.1.10 postgresql.yourdomain.com postgresql
En el servidor PostgreSQL, abre el archivo y asegúrate de que se vea como lo siguiente.
127.0.0.1 localhost
127.0.0.1 postgresql.yourdomain.com postgresql
10.1.2.10 odoo.yourdomain.com odoo
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
Instalar y Configurar PostgreSQL
Ubuntu 20.04 viene con PostgreSQL 12 por defecto y lo instalaremos. Ejecuta el siguiente comando en el servidor PostgreSQL.
$ sudo apt install postgresql-12 postgresql-server-dev-12
A continuación, necesitamos crear un usuario de base de datos odoo.
$ sudo -u postgres createuser odoo -U postgres -dP
La opción -u ejecuta el comando como el usuario postgres.
La opción -U indica el nombre de usuario con el que conectarse.
La opción -d otorga al usuario permiso para crear bases de datos.
La opción -p solicita la contraseña del nuevo usuario.
Configurar Autenticación Basada en Host
Necesitamos dar permiso al servicio de PostgreSQL para poder conectarse al servidor Odoo.
Primero, detén el servicio de PostgreSQL.
$ sudo systemctl stop postgresql
Abre el archivo /etc/postgresql/12/main/pg_hba.conf para editar.
$ sudo nano /etc/postgresql/12/main/pg_hba.conf
Pega la siguiente línea al final.
host all odoo odoo.yourdomain.com md5
Esta línea otorga permiso al usuario odoo para conectarse a todas las bases de datos dentro de este servidor. También puedes especificar el nombre de las bases de datos en lugar de usar la palabra clave all.
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
Configurar la dirección de escucha de PostgreSQL
A continuación, necesitamos permitir que el servidor de base de datos escuche conexiones remotas. Abre el archivo /etc/postgresql/12/main/postgresql.conf para editar.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
Cambia la línea listen_addresses de
#listen_addresses = 'localhost' # qué dirección(es) IP escuchar;
a.
#Desde la sección CONEXIONES Y AUTENTICACIÓN
listen_addresses = '*'
El * significa que escuchará todas las direcciones IP. Puedes cambiarlo a la dirección IP de tu instancia de Odoo.
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
Habilitar y Iniciar el servicio de PostgreSQL
Dado que nuestra configuración ha terminado, es hora de iniciar y habilitar el servicio de PostgreSQL.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
Instalar Odoo
Instalar dependencias y Preparar para la instalación
Crea un nuevo usuario del sistema para gestionar los procesos de Odoo en el servidor Odoo.
$ sudo adduser --system --home=/opt/odoo --group odoo
Necesitamos instalar algunas dependencias del sistema, pero primero, necesitamos habilitar los repositorios de origen. Para hacer eso, haz una copia de seguridad de la lista de fuentes original y luego habilita todos los repositorios de origen y actualiza la lista de repositorios.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
Instala las dependencias del sistema requeridas para la configuración de Odoo 14.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev
$ sudo apt build-dep lxml
Instala Nodejs.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt install nodejs
Instala el paquete Less CSS usando Node.
$ sudo npm install -g less less-plugin-clean-css
Descarga el paquete wkhtmltopdf versión 0.12.6.
$ cd /tmp
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
Instala el paquete.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Para asegurarte de que wkhtmltopdf funcione correctamente, copia los binarios a /usr/bin y dales los permisos adecuados.
$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
$ sudo chmod a+x /usr/bin/wk*
$ cd ~
Descargar Archivos de Odoo
Clona el repositorio de Github de Odoo en tu sistema.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
Para nuestro propósito, estamos copiando Odoo al directorio /opt/odoo desde donde se instalará.
Configurar el Entorno Virtual de Python
Este paso es opcional, pero se recomienda ya que un entorno virtual de Python para Odoo ayudará a evitar conflictos con los módulos de Python del sistema operativo, especialmente al realizar actualizaciones del SO.
Para esto, utilizaremos virtualenv.
- Crea un nuevo entorno
virtualenvpara Odoo.shell $ python3 -m venv /home//odoo-env - Activa el entorno virtual. Estamos creando un entorno bajo el directorio home del usuario del sistema. Eres libre de elegir cualquier ubicación que desees.
shell $ source /home//odoo-env/bin/activate - Actualiza PIP por si acaso.
shell (odoo-env) $ pip3 install --upgrade pip - Instala el wheel de Python en el entorno virtual.
shell $ pip3 install wheel
Instalar Dependencias de Python
Instala las dependencias de Python requeridas por Odoo 14.
$ pip3 install -r /opt/odoo/doc/requirements.txt
$ pip3 install -r /opt/odoo/requirements.txt
Los requisitos tardarán un tiempo en instalarse, así que ten paciencia.
Verifica si los requisitos están instalados correctamente revisando la lista de módulos de Python instalados.
$ pip3 list
Package Version
----------------------------- ---------
alabaster 0.7.12
appdirs 1.4.4
attrs 20.3.0
Babel 2.6.0
beautifulsoup4 4.9.3
cached-property 1.5.2
certifi 2020.12.5
chardet 3.0.4
decorator 4.3.0
defusedxml 0.7.1
docutils 0.14
ebaysdk 2.1.5
feedparser 5.2.1
freezegun 0.3.15
gevent 20.9.0
greenlet 0.4.17
html2text 2018.1.9
idna 2.6
imagesize 1.2.0
isodate 0.6.0
Jinja2 2.11.2
libsass 0.17.0
lxml 4.6.1
Mako 1.0.7
MarkupSafe 1.1.0
num2words 0.5.6
ofxparse 0.19
packaging 20.9
passlib 1.7.1
Pillow 8.0.1
pip 21.0.1
pkg-resources 0.0.0
polib 1.1.0
psutil 5.6.6
psycopg2 2.8.5
pyasn1 0.4.8
pyasn1-modules 0.2.8
pydot 1.4.1
Pygments 2.8.1
pyparsing 2.4.7
PyPDF2 1.26.0
pyserial 3.4
python-dateutil 2.7.3
python-ldap 3.1.0
python-stdnum 1.8
pytz 2019.1
pyusb 1.0.2
qrcode 6.1
reportlab 3.5.55
requests 2.21.0
requests-toolbelt 0.9.1
setuptools 44.0.0
six 1.15.0
snowballstemmer 2.1.0
soupsieve 2.2
Sphinx 3.5.2
sphinx-patchqueue 1.0.4
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
unidiff 0.6.0
urllib3 1.24.3
vobject 0.9.6.1
Werkzeug 0.16.1
wheel 0.36.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
zeep 3.2.0
zope.event 4.5.0
zope.interface 5.2.0
Sal de el entorno virtual de Python.
$ deactivate
Configurar Odoo
Copia el archivo de configuración predeterminado de Odoo para crear uno nuevo.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
Abre el archivo para editar.
$ sudo nano /etc/odoo-server.conf
Edita el archivo para que se vea como lo siguiente.
[options]
; Esta es la contraseña que permite operaciones en la base de datos:
admin_passwd = admin
db_host = postgresql.yourdomain.com
db_port = False
db_user = odoo
db_password = odoo_password
addons_path = /opt/odoo/addons
xmlrpc_port = 8069
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
La opción admin_passwd es la contraseña que permite operaciones administrativas dentro de la GUI de Odoo. Asegúrate de elegir una contraseña segura.
La opción db_host es el FQDN o la dirección IP del servidor PostgreSQL.
La opción db_port se establece en falso ya que se está utilizando el puerto PostgreSQL predeterminado 5432. Si deseas usar un puerto diferente, necesitarás actualizar este valor.
La opción db_user es el nombre del usuario de PostgreSQL.
La opción db_password es la contraseña del usuario ‘odoo’ de PostgreSQL que creamos anteriormente en el servidor PostgreSQL.
La opción addons_path es la ruta predeterminada de Addons. También puedes agregar una ruta personalizada para Addons separándolas con comas.
La opción xmlrpc_port es el puerto en el que Odoo escucha.
Crear servicio Odoo
Para asegurarnos de que Odoo siga funcionando incluso después de un reinicio del sistema, necesitamos crear un servicio para él.
Crea un archivo /lib/systemd/system/odoo-server.service y ábrelo para editar.
$ sudo nano /lib/systemd/system/odoo-server.service
Pega el siguiente código en él.
[Unit]
Description=Odoo Open Source ERP and CRM
[Service]
Type=simple
PermissionsStartOnly=true
SyslogIdentifier=odoo-server
User=odoo
Group=odoo
ExecStart=/home//odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/
WorkingDirectory=/opt/odoo/
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
Reemplaza /home/ con la ubicación que elegiste para instalar el Entorno Virtual de Python.
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
Establecer permisos de archivo
Establece permisos en el archivo odoo-server.service para que solo el usuario Odoo pueda leerlo o ejecutarlo.
$ sudo chmod 755 /lib/systemd/system/odoo-server.service
$ sudo chown odoo: /lib/systemd/system/odoo-server.service
Establece la propiedad en el entorno de Python y el directorio de instalación de Odoo.
$ sudo chown -R odoo: /opt/odoo/
$ sudo chown -R odoo: /home//odoo-env
Restringe el archivo de configuración de Odoo.
$ sudo chown odoo: /etc/odoo-server.conf
$ sudo chmod 640 /etc/odoo-server.conf
Iniciar el servidor Odoo
Inicia y habilita el servidor Odoo.
$ sudo systemctl start odoo-server
$ sudo systemctl enable odoo-server
Verifica el estado del servidor.
$ sudo systemctl status odoo-server
En tu navegador, abre la URL http:// o http://odoo.yourdomain.com:8069. Si todo está funcionando correctamente, deberías ver la pantalla de creación de base de datos de Odoo.

Completa todos los campos. Marca el campo Datos de Demostración para poblar la base de datos con datos de muestra y luego haz clic en el botón Crear base de datos.
A continuación, se te mostrará una lista de aplicaciones que puedes elegir y seleccionar.
La primera vez que creas una base de datos, la página de addons tardará en cargar, así que no actualices la página.
Instalar y Configurar Nginx
Hasta ahora, hemos estado utilizando el servidor de Odoo para ejecutar el stack. Pero idealmente, es mejor ejecutarlo en Nginx usando un proxy porque eso nos permitirá instalar SSL en él.
Instala Nginx.
$ sudo apt install nginx
Para ejecutarlo a través de Nginx, necesitamos ejecutar Odoo en localhost. Para cambiar eso, detén el servicio de Odoo.
$ sudo systemctl stop odoo-server
Abre el archivo de configuración del servidor Odoo.
$ sudo nano /etc/odoo-server.conf
Agrega las siguientes líneas a él.
xmlrpc_interface = 127.0.0.1
proxy_mode = True
Crea un archivo de configuración de Nginx para Odoo.
$ sudo nano /etc/nginx/sites-available/odoo.conf
Pega el código a continuación.
#servidor odoo
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.yourdomain.com;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.yourdomain.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Agregar encabezados para el modo proxy de odoo
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;
# Parámetros SSL
ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # alrededor de 40000 sesiones
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;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirigir solicitudes de longpoll a odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirigir solicitudes al servidor backend de odoo
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# gzip común
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
Presiona Ctrl + X para cerrar el editor y presiona Y cuando se te pida guardar el archivo.
Activa este archivo de configuración vinculándolo al directorio sites-enabled.
$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Prueba la configuración de Nginx.
$ sudo nginx -t
Instalar SSL
Instalaremos SSL utilizando el servicio Let’s Encrypt.
Para eso, instala Certbot.
$ sudo apt install certbot
Detén Nginx porque interferirá con el proceso de Certbot.
$ sudo systemctl stop nginx
Genera el certificado. También necesitamos crear un certificado DHParams.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
También necesitamos configurar un trabajo cron para renovar el SSL automáticamente. Para abrir el editor de crontab, ejecuta el siguiente comando.
$ sudo crontab -e
Pega la siguiente línea al final.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
El trabajo cron anterior ejecutará certbot a las 2:25 am todos los días. Puedes cambiarlo a cualquier cosa que desees.
Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.
Iniciar Odoo
Ahora que todo está configurado, podemos iniciar el servidor Odoo nuevamente.
$ sudo systemctl start odoo-server
Lanza Odoo en tu navegador a través de https://odoo.yourdomain.com. Obtendrás una pantalla descrita anteriormente. Ingresa los detalles requeridos para crear la base de datos y deberías iniciar sesión en Odoo y ver una pantalla como esta.

Conclusión
Esto concluye nuestro tutorial sobre la instalación de Odoo en el servidor Ubuntu 20.04. Si tienes alguna pregunta, publícalas en los comentarios a continuación.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.