Instalación de Odoo 13 en Debian 10 (Buster)

Este tutorial esta dirigido a personas con conocimientos básicos-medios en manejo de sistema Linux, además de contar ya con un entorno de trabajo en algún servidor bajo ssh y un dominio propio registrado el cual puedan modificar las redirección DNS para la adecuada configuración final

Odoo, anteriormente conocido como OpenERP es un software de ERP integrado bajo licencia LGPLv3 en la versión comunitaria, también contando con una versión comercial bajo la empresa belga Odoo S.A.

Entre sus funciones se incluyen un CRM, sitio web y comercio electrónico, facturación, contabilidad, fabricación, gestión de almacenes y proyectos, e inventario entre otros.

En este tutorial abarcaremos la instalación de Odoo desde cero, con su configuración adecuada en nginx para su uso bajo el protocolo https.

TODOS LOS COMANDOS SON BAJO EL USUARIO ROOT, SI NO ESTAS LOGEADO COMO ROOT ANTEPÓN EL COMANDO sudo

Paso 1.

Como en todo nueva instalación nos cercioraremos de que este todo actualizando en nuestro sistema 🙂

apt update
apt upgrade

Paso 2.

Ahora a instalar las dependencias necesarias:

apt install python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev python3-pip gnupg2 wget nano

Paso 3.

Ahora toca instalar PostgreSQL, y para ello agregaremos su repositorio al los del sistema, primero importante su llave gpg, posterior a eso agregaremos la dirección del repositorio en un archivo en la carpeta especial /etc/apt/sources.list.d, actualizamos la base de datos del apt para continuar con la instalación y al final confirmamos su ejecución de forma correcta, a continuación los comandos:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee  /etc/apt/sources.list.d/pgdg.list
apt update
apt -y install postgresql-12 postgresql-client-12
systemctl status postgresql.service 

Paso 3.1.

Ahora vamos a configurar el PostgreSQL para hacerlo mas seguro, cambiando la contraseña por default con los siguientes comandos:
Nota donde dice MegaContraseña se debe cambiar por la que se usara, recuerda las buenas practicas a la hora de elegir la tu ya

su - postgres
psql -c "alter user postgres with password 'MegaContraseña'"

Paso 4

Ahora toca la instalación de wkhtmltopdf, el cual es necesario para generar algunos de los reportes de Odoo, esto lo realizaremos descargando el paquete deb desde su github e instalándolo.

Nota: Al momento de escribir esto, la versión mas actual es la 0.12.6.1, pero revisa su pagina para encontrar la mas nueva

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
dpkg -i wkhtmltox_0.12.6-1.buster_amd64.deb

Paso 5

Ahora si, vamos a instalar Odoo, y al igual que con el PostgreSQL, añadiremos su repo a los del sistema.

wget -O - https://nightly.odoo.com/odoo.key | apt-key add -
echo "deb http://nightly.odoo.com/13.0/nightly/deb/ ./" | tee /etc/apt/sources.list.d/odoo.list
apt update
apt install odoo

Paso 5.1

Bien en este momento ya tienes instalado Odoo, solamente confirmaremos que se este ejecutando y estableceremos que se inicie cada vez que el sistema se reinicie.

systemctl status odoo
systemctl enable --now odoo

Paso 6.

Muy bien, ahora instalaremos y configuraremos nginx para trabajar con el cifrado SSL para usar el protocolo https, para ello usaremos la herramienta de certbot de la EFF, el cual nos otorgara un certificado valido y así no tendrán problema los usuarios al momento de acceder a nuestros servicios, además garantizamos la seguridad si deseamos tener una tienda en linea, y por ultimo agregaremos una linea en el cron para renovar el certificado de forma automática.

Nota: para este paso supondremos que nuestro dominio sera erp.cempazuchitl.org en tu caso es lo que se debe cambiar

wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
systemctl stop nginx
export DOMAIN="erp.cempazuchitl.org"
export EMAIL="ventas@erp.cempazuchitl.org"
certbot-auto certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring
crontab -e
 Agregar al final del archivo que se abrirá:
15 3 * * * /usr/local/bin/certbot-auto renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Paso 6.1

Ahora se mostrara como debe quedar la configuración del nginx, seguiremos usando erp.cempazuchitl.org en nuestro ejemplo y es lo que debes modificar en tu caso.

Para crear el archivo de configuración

nano /etc/nginx/conf.d/odoo.conf

Lo siguiente es el contenido del archivo que acabamos de crear en /etc/nginx/conf.d, solo cópialo y edíta lo necesario (el nombre de dominio).

# Odoo
upstream erp.cempazuchitl.org {
 server 127.0.0.1:8069;
}

# redirección de http a https
server {
    listen 80;
    server_name erp.cempazuchitl.org;
    return 301 https://erp.cempazuchitl.org$request_uri;
}

server {
    listen 443 ssl;
    server_name erp.cempazuchitl.org;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;

   # SSL
    ssl_certificate /etc/letsencrypt/live/erp.cempazuchitl.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/erp.cempazuchitl.org/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/erp.cempazuchitl.org/chain.pem;

    # Configuración del Proxy
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Solicitud de dominio
    location / {
       proxy_redirect off;
       proxy_pass http://erp.cempazuchitl.org;
    }

    # Cache de archivos estáticos
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://erp.cempazuchitl.org;
    }

    # Compresión Gzip 
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

Paso 6.2.

Ahora, solo queda validar la configuración hecha y si todo esta bien, reiniciamos el servicio de nginx y listo, ya podrás acceder a Odoo desde tu dominio (para este ejemplo erp.cempazuchitl.org).

nginx -t
systemctl restart nginx

Si todo salio bien, ya podrás acceder a tu Odoo desde la URL de tu dominio.

Paso 7.

Como parte de la seguridad deberás asignar una contraseña maestra a la base de datos, esto se realiza ingresando a la siguiente URL, https://erp.cempazuchitl.org/web/database/manager, esto quiere decir que a tu nombre de dominio le agregas la siguiente ruta /web/database/manager , es decir https://tudomionio.org/web/database/manager en esta ruta especial podrás, crear nuevas bases de datos para Odoo, así como eliminarlas, o respaldarlas.

Esto es todo, espero te sea de ayuda, gracias por tu tiempo.

Referencias y guías en ingles

Esta
También esta
Y esta
Importante (Manual de Usuario )
Lo mismo de arriba pero en español

🙂