Instalar odoo con SSL en Ubuntu 20.04

Odoo es una herramienta de planificación de recursos empresariales (ERP) de código abierto escrita en Python. Admite una serie de complementos para diferentes tipos de necesidades comerciales, como contabilidad, nómina, gestión de inventario, fabricación y mucho más.

En este tutorial, instalará Odoo y una base de datos PostgreSQL, luego instalará Nginx para que actúe como un proxy inverso para su sitio Odoo. Finalmente, habilitará conexiones HTTPS seguras mediante el uso de Certbot para descargar y configurar un certificado TLS de la autoridad de certificación de Let’s Encrypt.

Existen muchas maneras de instalar odoo, sin embargo, una de las maneras más sencillas y organizadas es mediante un Script público creado por un usuario de odoo. De igual manera, puedes desarcar el script y subirlo a un Github propio para asegurarte que NO cambiará o dejará de estar disponible.

Utilizaremos el script https://github.com/Yenthe666/InstallScript

Paso 1 - Instalar Odoo

Descarga el script:

sudo wget https://raw.githubusercontent.com/Yenthe666/InstallScript/15.0/odoo_install.sh

Hacemos el script ejecutable:

sudo chmod +x odoo_install.sh

Ejecutamos el script y esperamos unos minutos hasta que termine:

sudo ./odoo_install.sh

Al terminar de ejecutar el script, se generará un Log en la la cual se recomienda Guardar ya que indica información vital para el mantenimniento de Odoo, tales como la ubicación del log, la carpeta de addons y lo más importante, el Password para generar Bases de datos en odoo:

Output

Done! The Odoo server is up and running. Specifications:

Port: 8069

User service: odoo

Configuraton file location: /etc/odoo-server.conf

Logfile location: /var/log/odoo

User PostgreSQL: odoo

Code location: odoo

Addons folder: odoo/odoo-server/addons/

Password superadmin (database): MMAFCvV1yS6p9sy8

Start Odoo service: sudo service odoo-server start

Stop Odoo service: sudo service odoo-server stop

Restart Odoo service: sudo service odoo-server restart

Paso 2 - Instalación y configuración de Nginx

Implementar un servidor web como Nginx frente a su servidor Odoo puede mejorar el rendimiento al descargar el almacenamiento en caché, la compresión y el servicio de archivos estáticos a un proceso más eficiente. Vamos a instalar Nginx y configurarlo para revertir las solicitudes de proxy a Odoo, lo que significa que se encargará de entregar las solicitudes de sus usuarios a Odoo y viceversa. El uso de un proceso Nginx no en contenedores también facilitará la adición de certificados TLS de Let’s Encrypt en el siguiente paso.

Primero, actualice su lista de paquetes, luego instale Nginx usando apt:

sudo apt update

sudo apt install nginx -y

Si UFW no está instalado, instálelo ahora utilizando apt o apt-get.

sudo apt update

sudo apt install ufw

Permita el tráfico público a los puertos 22, 80, 443, (SSH, HTTP y HTTPS) utilizando el perfil de aplicación Nginx Full UFW:

sudo ufw allow ssh

sudo ufw allow http

sudo ufw allow https

Output

Rule added

Rule added (v6)

Habilite el UFW si no está ya habilitado.

sudo ufw enable

Verifique que UFW está habilitado y configurado correctamente para el tráfico ssh y web.

sudo ufw status

Snap es un gestor de paquetes desarrollado por Canonical (creadores de Ubuntu). El software se empaqueta como un snap (aplicación autocontenida y dependencias) y la herramienta snapd se utiliza para gestionar estos paquetes. Como certbot está empaquetado como un snap, necesitaremos instalar snapd antes de instalar certbot. Aunque está instalado por defecto en Ubuntu 16.04 y posteriores, también está disponible para la mayoría de las demás distribuciones de Linux.

Si snapd no está instalado, instálelo ahora.

sudo apt update

sudo apt install snapd

Instale el broche de presión del núcleo.

sudo snap install core

sudo snap refresh core

Ahora, debe acceder con cd /etc/nginx/sites-available y elimine el archivo default usando rm default . Después haga lo mismo en la carpeta /etc/nginx/sites-enabled usando rm default  y así eliminamos ambos archivos default de las ubicaciones sites-available y sites-enabled.

Porteriormente, abra un nuevo archivo de configuración de Nginx en el directorio /etc/nginx/sites-available. Llamaremos al nuestro odoo.conf pero podría usar un nombre diferente:

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

Pegue lo siguiente en el nuevo archivo de configuración, asegurándose de reemplazar your_domain_here con el dominio que configuró para apuntar a su servidor Odoo. Esto debería ser algo como odoo.tohsoluciones.com, por ejemplo:

/etc/nginx/sites-available/odoo.conf
server {
    
  listen 80;

  # set proper server name after domain set
  server_name your_domain_here;
  alias your_domain_here;	
  return 301 https://$host$request_uri;
       } 

server {
    
  # listen [::]:443 ssl default_server;
  listen [::]:443 ssl;
        

  # set proper server name after domain set
  server_name your_domain_here;
  alias your_domain_here;	;

  # 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;
  add_header X-Frame-Options "SAMEORIGIN";
  add_header X-XSS-Protection "1; mode=block";
  proxy_set_header X-Client-IP $remote_addr;
  proxy_set_header HTTP_X_FORWARDED_HOST $remote_addr;

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

  #   increase    proxy   buffer  size
  proxy_buffers   16  64k;
  proxy_buffer_size   128k;

  proxy_read_timeout 900s;
  proxy_connect_timeout 900s;
  proxy_send_timeout 900s;

  #   force   timeouts    if  the backend dies
  proxy_next_upstream error   timeout invalid_header  http_500    http_502
  http_503;

  types {
  text/less less;
  text/scss scss;
  }

  #   enable  data    compression
  gzip    on;
  gzip_min_length 1100;
  gzip_buffers    4   32k;
  gzip_types  text/css text/less text/plain text/xml application/xml application/json application/javascript application/pdf image/jpeg image/png;
  gzip_vary   on;
  client_header_buffer_size 4k;
  large_client_header_buffers 4 64k;
  client_max_body_size 0;

  location / {
  proxy_pass    http://127.0.0.1:8069;
  # by default, do not forward anything
  proxy_redirect off;
  }

  location /longpolling {
  proxy_pass http://127.0.0.1:8072;
  }
  location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
  expires 2d;
  proxy_pass http://127.0.0.1:8069;
  add_header Cache-Control "public, no-transform";
  }
  # cache some static data in memory for 60mins.
  location ~ /[a-zA-Z0-9_-]*/static/ {
  proxy_cache_valid 200 302 60m;
  proxy_cache_valid 404      1m;
  proxy_buffering    on;
  expires 864000;
  proxy_pass    http://127.0.0.1:8069;
  
  
  }
}


Esta configuración es solo HTTP por ahora, ya que dejaremos que Certbot se encargue de configurar TLS en el próximo paso. El resto del archivo de configuración establece ubicaciones de registro y luego pasa todo el tráfico, así como algunos encabezados de proxy importantes, junto con http://localhost:8069, la instancia de Odoo que iniciamos en el paso anterior.

Guarde y cierre el archivo, luego habilite la configuración vinculándolo a /etc/nginx/sites-enabled/:

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

Use nginx -t para verificar que la sintaxis del archivo de configuración sea correcta:

sudo nginx -t

Output

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Y finalmente, recarga el servicio nginx con la nueva configuración:

sudo service nginx reload

Su sitio Odoo ahora debería estar disponible en HTTP simple. Cargue http://su_dominio_aquí (es posible que deba hacer clic en una advertencia de seguridad) y se verá así:

Ahora que tiene su sitio en funcionamiento a través de HTTP, es hora de proteger la conexión con los certificados Certbot y Let’s Encrypt. Debe hacer esto antes de pasar por el procedimiento de configuración basado en la web de Odoo.

Paso 3 - Instalación de Certbot y configuración de certificados TLS

Gracias a Certbot y la autoridad de certificación gratuita Let’s Encrypt, agregar el cifrado TLS a su aplicación Odoo.

Elimine cualquier paquete certbot previamente instalado para evitar conflictos con el nuevo paquete Snap.

sudo apt remove certbot

Utilice Snap para instalar Certbot.

sudo snap install –classic certbot

Configure un enlace simbólico al directorio de Certbot utilizando la opción ln.

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

A continuación, ejecute certbot en –nginx y observe que le proporciona el dominio que utilizó en la directiva de configuración server_name de Nginx:

sudo certbot –nginx

Se le pedirá que acepte los términos de servicio de Let’s Encrypt y que ingrese una dirección de correo electrónico.

Luego, se le preguntará si desea redirigir todo el tráfico HTTP a HTTPS. Depende de usted, pero esto generalmente se recomienda y es seguro hacerlo.

Después de eso, Let’s Encrypt confirmará su solicitud y Certbot descargará su certificado:

Output

Congratulations! You have successfully enabled https://odoo.tohsoluciones.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=odoo.tohsoluciones.com

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

IMPORTANT NOTES:

– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/odoo.tohsoluciones.com/privkey.pem
Your cert will expire on 2022-05-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the «certonly» option. To non-interactively renew *all* of
your certificates, run «certbot renew»

– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.

– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate

Donating to EFF: https://eff.org/donate-le

Certbot recargará automáticamente Nginx con la nueva configuración y certificados. Vuelva a cargar su sitio en su navegador y debería cambiarlo a HTTPS automáticamente si elige la opción de redirección.

Su sitio ahora está seguro y es seguro continuar con los pasos de configuración de su base de datos a menos que desee instalar odoo Enterprise, de ser así, siga con el paso 4 o si no, pase al paso 5.

Paso 4 - Instalación de odoo Enterprise

Recordemos que odoo cuenta con 2 versiones, el Community ( el cual ya hemos instalado) y el Enterprise.

El community es free y no requiere licenciamiento alguno para odoo, sin embargo, para utilizar la versión Enterprise, si se requiere licenciamiento por usuario y por cada aplicación o módulo.

Las diferencias entre estas versiones comienzan desde la instalación, es decir, odoo no permite que cualquier usuario tenga acceso al código de las aplicaciones Enterprise. Es por ello que solamente los partner pueden tener acceso a ello. Existe otra manera de descargarlo e instalarlo mediante empaquetados desde la página oficial de odoo el cual debes dejar tus datos para poder descargarlo. 

Sin embargo para tener acceso al código de las aplicaciones mediante el repositorio oficial https://github.com/odoo/enterprise se requiere acceso como partner. Nosotros, como partner podemos descargar el código de las aplicaciones Enterprise y almacenarlos en un repositorio nuestro siempre y cuando sea «PRIVADO». Odoo no permite que el código de las aplicaciones Enterprise se almacenen en un repositorio «Público» ya que procederá a bloquearlo.

Dicho lo anterior, comenzaremos la instalación mediante el acceso a nuestro repositorio «PRIVADO». Solo cuentan con acceso temporal los alumnos que tomen el curso técnico de odoo con nosotros.

Lo primero es parar el servicio de odoo:

sudo service odoo-server stop

Se requieren instalar librerias que las aplicaciones de odoo Enterprise necesitan. Proceda a ejecutar uno por uno:

sudo pip3 install psycopg2-binary pdfminer.six

sudo -H pip3 install num2words ofxparse dbfread ebaysdk firebase_admin pyOpenSSL

sudo npm install -g less

sudo npm install -g less-plugin-clean-css

sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb

Ahora, se requiere crear una carpeta para las aplicaciones de odoo Enterprise por el cual accederemos a la carpeta donde se almacenan las aplicaciones actuales de odoo:

cd /odoo/

sudo mkdir enterprise

De igual manera, se requiere una carpeta llamada addons:

cd /odoo/enterprise/

sudo mkdir addons

Ahora, necesitamos copiar todo el código de las aplicaciones de odoo enterprise ubicadas en el repositorio de TOH en modo privado. Para ello, nos aseguramos ejecutamos git clone:

sudo git clone git@github.com:TohSolucionesDigitales/Enterprise.git /odoo/enterprise/addons

Les preguntará si desean continuar generando un key de seguridad estableciendo el repositorio como host seguro en su server, el cual se procede a seleccionar yes:

output

The authenticity of host ‘github.com (192.30.255.112)’ can’t be established.

ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Si cuentas con permisos al repositorio git@github.com:TohSolucionesDigitales/Enterprise.git podrás realizar un clonado de los códigos sin ningún problema. Pero si no cuentas con acceso es posible que se rechace la conexión y se muestre un mensaje como el siguiente:

output

Warning: Permanently added ‘github.com,192.30.255.112’ (ECDSA) to the list of known hosts.

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

Para poder acceder al repositorio Github de TOH se requiere generar un SSH key y proporcionárselo al personal de TOH. Nos aseguramos estar en la carpeta /odoo/enterprise y ejecutamos el siguiente comando:

sudo ssh-keygen -t rsa

El comando anterior habrá generado un SSH Key en la ubicación ~/.ssh/ al cual debemos acceder

cd ~/.ssh/

Ejecutamos el comando dir para observar los archivos generados:

dir

Se deben enlistar los siguientes archivos:

Output

authorized_keys  id_rsa  id_rsa.pub  known_hosts

Es necesario visualizar la key que se generó en el archivo id_rsa.pub por lo cual ejecute el comando cat:

cat id_rsa.pub

Copie el contenido de ese archivo y proporcióneselo a un personal de TOH para que proceda a registrarlo en Github.

¿Ya cuentas con permiso al Github de TOH? Repite el mismo procediciemiento de git clone:

sudo git clone git@github.com:TohSolucionesDigitales/Enterprise.git /odoo/enterprise/addons

Espere hasta que el proceso de clonación termine:

Output

Cloning into ‘addons’…

remote: Enumerating objects: 21613, done.

remote: Counting objects: 100% (1915/1915), done.

remote: Compressing objects: 100% (1198/1198), done.

remote: Total 21613 (delta 628), reused 1915 (delta 628), pack-reused 19698

Receiving objects: 100% (21613/21613), 198.94 MiB | 21.86 MiB/s, done.

Resolving deltas: 100% (6636/6636), done.

Updating files: 100% (17213/17213), done.

Cuando el proceso de clonación haya finalizado. Es importante configurar el archivo de configuración de odoo odoo-server.conf con la nueva ubicación de las aplicaciones Enterprise:

cd /etc/

sudo nano odoo-server.conf

Añadimos la ruta: /odoo/enterprise/addons, quedando de la siguiente forma:

addons_path=/odoo/enterprise/addons,/odoo/odoo-server/addons,/odoo/custom/addons

Guardamos con ctrl + O y presionamos  ctrl + X

Ahora procederemos a iniciar el servicio de odoo usando el siguiente comando:

sudo service odoo-server start

Y listo, ya contamos con odoo Enterprise. Ahora se debe configurar la primera Base de datos de odoo Enterprise. Es importante recordar que cada Base de datos de odoo Enterprise cuenta con un período de gracia de 30 días a menos que se adquiera el licenciamiento y se registre.

Nota: Es posible que necesitemos reiniciar el servidor completo para que las base de datos en odoo reconozcan las aplicaciones Enterprise instalando la app web_enterprise.

Paso 5 - Configurar odoo

De vuelta en su navegador web, ingrese a su dominio registrado. Ahora debería tener abierta la página de configuración de la base de datos de Odoo a través de una conexión https:// segura. Ahora puede ingresar nombres de usuario y contraseñas de forma segura para completar el proceso de instalación.

La información que complete en esta página le indicará a la aplicación Odoo cómo crear su base de datos PostgreSQL y detalles sobre el usuario administrativo predeterminado.

Rellene los siguientes campos:

Master Password: Este password es la misma que se generó en el log de la instalación de odoo
Nombre de la base de datos: odoo
Email: su dirección de correo electrónico
Password: una contraseña segura y única para su inicio de sesión de administrador
Demo data: asegúrese de que esta opción esté marcada si es la primera vez que instala odoo

Los valores predeterminados están bien para los campos restantes. Asegúrese de registrar los valores de correo electrónico y contraseña que elija, ya que los utilizará para iniciar sesión en Odoo en el futuro.

Ahora haga clic en el botón Crear base de datos en la parte inferior izquierda de la página. Odoo puede tardar uno o dos minutos en crear sus tablas de base de datos. Cuando se complete el proceso, será redirigido a la página administrativa de Odoo Apps.

Desde aquí puede elegir qué módulos de Odoo le gustaría instalar y usar para sus necesidades de ERP. Si desea probar una aplicación, haga clic en el botón Instalar en el mosaico Ventas. Odoo instalará el módulo y luego lo redirigirá a su página personal de la aplicación Discuss.

Haga clic en el icono cuadrado segmentado en la parte superior izquierda de su pantalla y luego seleccione el enlace Ventas en la lista de opciones desplegables.

Estará en una página que lo guiará a través de la personalización de datos, cotizaciones, pedidos y una lista de ventas de ejemplo con las que puede experimentar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *