Cómo instalar Odoo en Ubuntu 20.04 con Docker

Introducción
Odoo es una herramienta de planificación de recursos empresariales (ERP) de código abierto escrita en Python. Admite una serie de complementos para distintos tipos de necesidades empresariales, como contabilidad, nóminas, gestión de inventario y más.
En este tutorial, instalará Odoo y una base de datos PostgreSQL mediante Docker Compose. Luego, instalará Nginx para que actúe como un proxy inverso para su sitio Odoo. Por último, habilitará conexiones HTTPS seguras mediante Certbot para descargar y configurar un certificado TLS de la autoridad de certificación Let’s Encrypt .
Prerrequisitos
Para completar este tutorial, necesitarás:
- Un servidor Ubuntu 20.04 con 2 o más CPU, un usuario no root con acceso sudo y un firewall. Para configurarlo, siga nuestro tutorial Configuración inicial del servidor con Ubuntu 20.04 .
- Docker instalado. Siga los pasos 1 y 2 de Cómo instalar y usar Docker en Ubuntu 20.04 para instalarlo y configurar su usuario no root para que pueda ejecutar
dockercomandos.
Nota: Puede omitir estos requisitos previos si utiliza la imagen de Docker con un solo clic de DigitalOcean . Esta imagen está preconfigurada con Docker, Docker Compose y UFW.
Inicie una nueva imagen de Docker en la región que elija, luego inicie sesión como usuario root y continúe con el tutorial.
Por último, para habilitar TLS, necesitará un nombre de dominio que apunte a la dirección IP pública de su servidor. Debería ser algo como example.como odoo.example.com. Si utiliza DigitalOcean, consulte nuestra Guía de inicio rápido de DNS para obtener información sobre cómo crear recursos de dominio en su panel de control.
Una vez que tenga todos los requisitos previos establecidos, continúe con el Paso 1 , donde instalará el docker-composepaquete.
Paso 1: Instalación de Docker Compose
Para instalar la docker-composeherramienta de línea de comandos, actualice su lista de paquetes y luego instale el paquete usando apt:
- sudo apt update
- sudo apt install docker-compose
Nota : También puedes instalar un paquete de Docker Compose más reciente que el que viene incluido con Ubuntu 20.04. Para ello, sigue el Paso 1 de Cómo instalar y usar Docker Compose en Ubuntu 20.04 .
Si opta por utilizar esta versión de Docker Compose, deberá sustituir docker composeel comando en lugar de docker-compose.
Puede confirmar que el paquete está instalado ejecutando el siguiente comando:
- docker-compose –version
Debería recibir un resultado como el siguiente:
Outputdocker-compose version 1.25.0, build unknowndocker-py version: 4.1.0CPython version: 3.8.10
Una vez que haya confirmado que Docker Compose está instalado en su servidor, configurará e iniciará Odoo y PostgreSQL usando Docker Compose en el siguiente paso de este tutorial.
Paso 2: Ejecutar Odoo y PostgreSQL con Docker Compose
Para comenzar a crear contenedores de Odoo y PostgreSQL, cree un directorio llamado odooen su directorio de inicio para almacenar los archivos que creará en este tutorial. Usará este directorio para almacenar todos los archivos que necesita para ejecutar Odoo.
Ejecute los siguientes comandos para crear el directorio y luego cden él:
- mkdir ~/odoo
- cd ~/odoo
Ahora abra un nuevo archivo YAML en blanco llamado docker-compose.ymlusing nanoo su editor preferido:
- nano docker-compose.yml
Utilizará este archivo con el docker-composecomando para iniciar los contenedores Odoo y PostgreSQL y vincularlos. Agregue las siguientes líneas al archivo:
docker-compose.yml
version: '3'services: odoo: image: odoo:15.0 env_file: .env depends_on: - postgres ports: - "127.0.0.1:8069:8069" volumes: - data:/var/lib/odoo postgres: image: postgres:13 env_file: .env volumes: - db:/var/lib/postgresql/data/pgdatavolumes: data: db:
El archivo define dos services. El primero se llama odoo, que ejecuta la aplicación Odoo. El segundo se llama postgres, que es el contenedor de la base de datos PostgreSQL. Ambos servicios hacen referencia a volúmenes con nombre que utilizan para almacenar datos fuera de las instancias del contenedor en ejecución. Por último, el odooservicio expone el puerto 8069en su servidor al contenedor Odoo que se ejecuta en el mismo puerto 8069.
Guarde y salga del archivo cuando haya terminado de editarlo. Si está utilizando nano, presione CTRL+Oy luego RETURNpara guardar y luego CTRL+Xpara salir.
Los contenedores Odoo y PostgreSQL utilizan variables de entorno para configurarse. El docker-compose.ymlarchivo especifica la env_filedirectiva para ambos servicios. Esa directiva incluye el archivo de referencia que contiene las variables que cada servicio necesita para ejecutarse.
Este enfoque se recomienda generalmente en lugar de agregar variables de entorno al docker-compose.ymlarchivo directamente, ya que es una buena práctica mantener las contraseñas fuera del docker-compose.ymlarchivo. Este enfoque es especialmente aplicable si va a enviar sus archivos a un repositorio Git u otro sistema de control de código fuente.
Abra un nuevo .envarchivo con nano:
- nano .env
Agregue las siguientes líneas al archivo, sustituyendo un POSTGRES_USERy POSTGRES_PASSWORDde su elección en lugar de los valores resaltados:
.env
# postgresql environment variablesPOSTGRES_DB=postgresPOSTGRES_PASSWORD=a_strong_password_for_userPOSTGRES_USER=odooPGDATA=/var/lib/postgresql/data/pgdata# odoo environment variablesHOST=postgresUSER=odooPASSWORD=a_strong_password_for_user
Para generar una contraseña para Odoo y PostgreSQL, utilice el opensslcomando, que debería estar disponible en la mayoría de los sistemas Linux. Ejecute el siguiente comando en su servidor para generar un conjunto aleatorio de bytes e imprimir una versión codificada en base64 que pueda utilizar como contraseña:
- openssl rand -base64 30
Pegue la cadena resultante en su .envarchivo en lugar de las a_strong_password_for_usercontraseñas del marcador de posición.
Cuando haya terminado de editar su .envarchivo, guárdelo y salga de su editor de texto.
Ahora está listo para iniciar los contenedores odooy postgrescon el docker-composecomando:
- docker-compose up -d
El upsubcomando indica docker-composeque se deben iniciar los contenedores y los volúmenes y redes asociados que están definidos en el docker-compose.ymlarchivo. El -dindicador (que significa “daemonize”) indica docker-composeque se deben ejecutar los contenedores en segundo plano para que el comando no tome el control de la terminal. docker-composeimprimirá una breve salida mientras descarga las imágenes de Docker necesarias y luego inicia los contenedores:
OutputCreating network "odoo_default" with the default driverCreating volume "odoo_odoo_data" with default driverCreating volume "odoo_postgres_data" with default driverPulling odoo (odoo:14.0)...15.0: Pulling from library/odoo. . .
Si desea detener sus contenedores Odoo y PostgreSQL en cualquier momento, ejecute el siguiente comando en su ~/odoodirectorio:
- docker-compose stop
Los contenedores se detendrán. La configuración y los datos de sus volúmenes se conservarán para que puedas reiniciar los contenedores con el docker-compose up -dcomando.
Una vez hecho esto, Odoo debería estar ejecutándose. Puedes comprobar si un servidor web está ejecutándose 127.0.0.1:8069recuperando la página de inicio con el curlcomando:
- curl --head http://localhost:8069
Esto imprimirá solo los encabezados HTTP de la respuesta:
OutputHTTP/1.0 303 SEE OTHERContent-Type: text/html; charset=utf-8Content-Length: 215Location: http://localhost:8069/webSet-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/Server: Werkzeug/0.14.1 Python/3.7.3Date: Tue, 08 Mar 2022 20:45:34 GMT
La 303 SEE OTHERrespuesta significa que el servidor de Odoo está en funcionamiento, pero que debes visitar otra página para completar la instalación. El http://localhost:8069/webencabezado Ubicación resaltado indica dónde visitar la página de instalación de Odoo en tu navegador.
A continuación, configuraremos Nginx para redirigir el tráfico público al contenedor Odoo.
Paso 3: Instalación y configuración de Nginx
Colocar un servidor web como Nginx delante de 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 que envíe solicitudes a Odoo mediante un proxy inverso , lo que significa que se encargará de entregar las solicitudes de sus usuarios a Odoo y viceversa. El uso de un proceso Nginx no contenedorizado también facilitará la adición de certificados TLS 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
Permitir el tráfico público a los puertos (HTTP y HTTPS 80) 443utilizando el perfil de aplicación Nginx Full UFW:
- sudo ufw allow "Nginx Full"
OutputRule addedRule added (v6)
A continuación, abra un nuevo archivo de configuración de Nginx en el /etc/nginx/sites-availabledirectorio. Lo llamaremos así, odoo.confpero puede utilizar un nombre diferente:
- sudo nano /etc/nginx/sites-available/odoo.conf
Pegue lo siguiente en el nuevo archivo de configuración, asegurándose de reemplazarlo your_domain_herecon el dominio que ha configurado para apuntar a su servidor Odoo. Esto debería ser algo como odoo.example.com, por ejemplo:
/etc/nginx/sitios-disponibles/odoo.conf
server { listen 80; listen [::]:80; server_name your_domain_here; access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://localhost:8069; }}
Por ahora, esta configuración es solo para HTTP, ya que dejaremos que Certbot se encargue de configurar TLS en el siguiente paso. El resto del archivo de configuración establece las ubicaciones de registro y luego pasa todo el tráfico, así como algunos encabezados de proxy importantes, a http://localhost:8069, el contenedor 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/
Utilice nginx -tpara verificar que la sintaxis del archivo de configuración sea correcta:
- sudo nginx -t
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Y por último, recarga el nginxservicio con la nueva configuración:
- sudo systemctl reload nginx.service
Ahora tu sitio de Odoo debería estar disponible en HTTP simple. Cárgalo (es posible que tengas que hacer clic en una advertencia de seguridad) y se verá así:http://your_domain_here
Ahora que su sitio está funcionando a través de HTTP, es momento de asegurar la conexión con los certificados Certbot y Let’s Encrypt. Debe hacer esto antes de realizar el procedimiento de configuración basado en la web de Odoo.
Paso 4: Instalación de Certbot y configuración de certificados TLS
Gracias a Certbot y a la autoridad de certificación gratuita Let’s Encrypt, agregar el cifrado TLS a su aplicación Odoo solo requerirá dos comandos.
Primero, instale Certbot y su complemento Nginx:
- sudo apt install certbot python3-certbot-nginx
A continuación, ejecute certbotel --nginxmodo y especifique el mismo dominio que utilizó en la server_namedirectiva de configuración de Nginx:
- sudo certbot --nginx -d your_domain_here
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 te preguntará si deseas redirigir todo el tráfico HTTP a HTTPS. Depende de ti, pero en general es una opción recomendada y segura.
Después de eso, Let’s Encrypt confirmará tu solicitud y Certbot descargará tu certificado:
OutputCongratulations! You have successfully enabled https://odoo.example.comYou should test your configuration at:https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.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.example.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 los certificados. Recargue su sitio en su navegador y debería cambiarlo a HTTPS automáticamente si eligió la opción de redireccionamiento.
Su sitio ahora es seguro y puede continuar sin problemas con los pasos de configuración basados en la web.
Paso 5: Configuración de Odoo
De nuevo en el navegador web, recarga la página. Ahora deberías tener abierta la página de configuración de la base de datos de Odoo mediante una https://conexión segura. Ahora puedes 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:
- Nombre de la base de datos: odoo
- Correo electrónico: su dirección de correo electrónico
- Contraseña: una contraseña segura y única para su inicio de sesión de administrador
- Datos de demostración: asegúrese de que esta opción esté marcada si es la primera vez que instala odoo
Los valores predeterminados son válidos 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 el proceso se complete, será redirigido a la página administrativa de Odoo Apps .
Desde aquí puede elegir qué módulos de Odoo desea instalar y utilizar 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 redireccionará a su página personal de la aplicación Discuss.
Haga clic en el ícono cuadrado segmentado en la parte superior izquierda de su pantalla y luego seleccione el enlace Ventas en la lista de opciones desplegables.
Estarás en una página que te guiará a través de la personalización de datos, cotizaciones, pedidos y una lista de ejemplos de ventas con las que puedes experimentar.
Conclusión
En este tutorial, lanzó la aplicación Odoo ERP y una base de datos PostgreSQL usando Docker Compose, luego configuró un proxy inverso Nginx y lo protegió usando certificados TLS Let’s Encrypt.
Ya está listo para comenzar a crear su sitio web ERP utilizando los módulos suministrados. Para obtener más información sobre el uso de Odoo, consulte la documentación oficial de Odoo .
Si desea escribir sus propios módulos Odoo personalizados o personalizar módulos existentes, la documentación para desarrolladores es un buen lugar para comenzar.

Deja una respuesta