WhatsApp chat

▷ Cómo instalar Odoo 17 en Linux

Marlon Falcon Hernandez, • odooerpinstalar
Back

Lo primero que necesitas es un servidor (VPS); aquí te dejo un enlace para que te crees uno en DigitalOcean: https://m.do.co/c/7f5c3af8d6bb. Necesitas tener Python 3.10: Ubuntu 22.04 lo trae por defecto, así que trata de usar esa versión. A continuación, sigue estos pasos.

1. Actualizamos el sistema

apt-get update && apt-get upgrade -y

2. Creamos el usuario odoo

adduser --system --home=/opt/odoo --group odoo

3. Instalamos PostgreSQL

sudo apt install postgresql postgresql-contrib

4. Reiniciamos PostgreSQL, iniciamos sesión como postgres y creamos el usuario odoo en la base de datos

service postgresql restart
su - postgres
createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
exit

5. Instalamos unzip

apt-get install unzip

6. Instalamos pip para las dependencias Python de Odoo

apt install python3-pip

7. Ingresamos en la carpeta /opt/odoo y descargamos el código fuente de la versión Community

cd /opt/odoo/
wget https://github.com/odoo/odoo/archive/17.0.zip
unzip 17.0.zip

8. Renombramos la carpeta y asignamos el propietario al usuario odoo

mv odoo-17.0 server
chown -R odoo: server

9. Instalamos las dependencias de Python de Odoo

sudo apt-get update
sudo apt-get install libpq-dev python3.10-dev
pip install -r /opt/odoo/server/requirements.txt

Si al instalar las librerías te da problemas, copia y pega este código para instalar las librerías necesarias, o instálalas una por una.

pip install Babel==2.9.1  # min version = 2.6.0 (Focal with security backports)
pip install chardet==4.0.0
pip install cryptography==3.4.8
pip install decorator==4.4.2
pip install docutils==0.17
pip install ebaysdk==2.1.5
pip install freezegun==1.1.0
pip install geoip2==2.9.0
pip install gevent==21.8.0 ; python_version == '3.10'  # (Jammy)
pip install gevent==22.10.2; python_version > '3.10'
pip install greenlet==1.1.2 ; python_version == '3.10'  # (Jammy)
pip install greenlet==2.0.2 ; python_version > '3.10'
pip install idna==2.10  # requests 2.25.1 depends on idna<3 and >=2.5
pip install Jinja2==3.0.3 ; python_version <= '3.10'
pip install Jinja2==3.1.2 ; python_version > '3.10'
pip install libsass==0.20.1
pip install lxml==4.8.0 ; python_version <= '3.10'
pip install lxml==4.9.2 ; python_version > '3.10'
pip install MarkupSafe==2.0.1 ; python_version <= '3.10'
pip install MarkupSafe==2.1.2 ; python_version > '3.10'
pip install num2words==0.5.10
pip install ofxparse==0.21
pip install passlib==1.7.4 # min version = 1.7.2 (Focal with security backports)
pip install Pillow==9.0.1 ; python_version <= '3.10'  # min version = 7.0.0 (Focal with security backports)
pip install Pillow==9.4.0 ; python_version > '3.10'
pip install polib==1.1.1
pip install psutil==5.9.0 ; python_version <= '3.10'
pip install psutil==5.9.4 ; python_version > '3.10'
pip install psycopg2==2.9.2 ; sys_platform != 'win32' and python_version <= '3.10'
pip install psycopg2==2.9.5 ; python_version > '3.10' or sys_platform == 'win32'
pip install pydot==1.4.2
pip install pyopenssl==21.0.0
pip install PyPDF2==1.26.0 ; python_version <= '3.10'
pip install PyPDF2==2.12.1 ; python_version > '3.10'
pip install pypiwin32 ; sys_platform == 'win32'
pip install pyserial==3.5
pip install python-dateutil==2.8.1
pip install python-ldap==3.4.0 ; sys_platform != 'win32'  # min version = 3.2.0 (Focal with security backports)
pip install python-stdnum==1.17
pip install pytz  # no version pinning to avoid OS perturbations
pip install pyusb==1.2.1
pip install qrcode==7.3.1
pip install reportlab==3.6.8 ; python_version <= '3.10'
pip install reportlab==3.6.12 ; python_version > '3.10'
pip install requests==2.25.1 # versions < 2.25 aren't compatible w/ urllib3 1.26. Bullseye = 2.25.1. min version = 2.22.0 (Focal)
pip install rjsmin==1.1.0
pip install urllib3==1.26.5 # indirect / min version = 1.25.8 (Focal with security backports)
pip install vobject==0.9.6.1
pip install Werkzeug==2.0.2
pip install xlrd==1.2.0
pip install XlsxWriter==3.0.2
pip install xlwt==1.3.*
pip install zeep==4.1.0

10. Creamos un directorio para almacenar el archivo de logs

mkdir /var/log/odoo/
chown odoo:root /var/log/odoo

11. Configuramos Odoo Server

mkdir /etc/odoo
cp /opt/odoo/server/debian/odoo.conf /etc/odoo/odoo.conf
chown odoo: /etc/odoo/odoo.conf
chmod 640 /etc/odoo/odoo.conf

12. Creamos la carpeta de los addons o módulos personalizados

mkdir /opt/odoo/server/extra-addons
chown odoo: /opt/odoo/ -R

13. Editamos el archivo odoo.conf

nano /etc/odoo/odoo.conf

14. Modificamos o agregamos lo siguiente y guardamos el archivo

Si no tienes módulos en extra-addons, no añadas esa ruta a addons_path; de lo contrario, te dará problemas.

db_user = odoo
db_password = CLAVE DEL USUARIO  ODOO EN POSTGRES
addons_path = /opt/odoo/server/addons
logfile = /var/log/odoo/odoo-server.log
logrotate = True
log_level = warn

15. Script de inicio automático de Odoo Server

cp /opt/odoo/server/debian/init /etc/init.d/odoo
chmod 755 /etc/init.d/odoo
chown root: /etc/init.d/odoo

16. Editamos el archivo

nano /etc/init.d/odoo

17. Modificamos los siguientes valores y guardamos el archivo

DAEMON=/opt/odoo/server/odoo-bin

18. Hacemos que Odoo se inicie automáticamente al reiniciar el servidor

update-rc.d odoo defaults

19. Hacemos que PostgreSQL se inicie automáticamente al reiniciar el servidor

update-rc.d postgresql enable

20. Gestionamos el servicio

/etc/init.d/odoo start|stop|restart

21. Editamos el archivo de configuración de PostgreSQL pg_hba.conf

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

Editamos la siguiente línea

local   all             all        peer

*Sustituimos por:

local   all             all       trust

Nota de seguridad: el método trust permite conectarse a PostgreSQL sin contraseña desde el propio servidor. Es cómodo para una instalación de pruebas, pero en producción es preferible mantener peer o usar md5/scram-sha-256 con contraseña.

22. Reiniciamos los servicios de PostgreSQL y Odoo

service postgresql restart
/etc/init.d/odoo restart

23. Instalamos la librería wkhtmltopdf

Odoo usa wkhtmltopdf para generar los informes en PDF (facturas, pedidos, etc.).

sudo apt-get update -y
sudo apt-get install -y xfonts-75dpi
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb
dpkg -i wkhtmltox_0.12.5-1.focal_amd64.deb
apt install -f

24. Reiniciamos Odoo ERP

/etc/init.d/odoo restart

25. Revisamos el log

tail -f /var/log/odoo/odoo-server.log

26. Instalamos Nginx

Nginx actúa como proxy inverso delante de Odoo, de modo que podemos acceder por el puerto 80/443 con nuestro dominio. En el archivo de configuración hay que indicar el dominio y la IP de tu servidor en server_name.

sudo apt-get install nginx -y
cd /etc/nginx/sites-available
git clone https://github.com/falconsoft3d/ngix-para-odoo-erp/
cd ngix-para-odoo-erp/
sudo cp /etc/nginx/sites-available/ngix-para-odoo-erp/default.conf /etc/nginx/sites-available/default.conf
cd ..
mv default default-temp
mv default.conf default

cd /etc/nginx/sites-available
nano default
server_name j.wemakeyourdayeasy.com 11.64.123.12;
nginx -s reload

27. Si queremos instalar Enterprise (para ello tenemos que ser partner de Odoo)

ssh-keygen
cat ~/.ssh/id_rsa.pub

cd /opt/odoo/server/extra-addons
git clone git@github.com:odoo/enterprise.git
cd enterprise
git checkout 17.0
nano /etc/odoo/odoo.conf
addons_path = /opt/odoo/server/addons,/opt/odoo/server/extra-addons/enterprise

28. Prueba local

Si Odoo no arranca, con este comando puedes ver la causa en la terminal. La más probable es que no tengas instaladas las librerías de Python.

su - odoo -s /bin/bash
cd /opt/odoo/server
./odoo-bin -c /etc/odoo/odoo.conf