Instalación de Odoo 17 Community desde GitHub

Share this post on:

## 🛠 Instalación de Odoo 17 Community desde GitHub

### 1. Dependencias del sistema
En Ubuntu 22.04/24.04:
“`bash
sudo apt update && sudo apt upgrade -y
sudo apt install git python3 python3-pip python3-venv \
build-essential libxml2-dev libxslt1-dev \
libldap2-dev libsasl2-dev libtiff5-dev libjpeg-dev \
libpng-dev libfreetype6-dev liblcms2-dev libwebp-dev \
libharfbuzz-dev libfribidi-dev libxcb1-dev \
postgresql -y
“`

### 2. Crear usuario y base de datos
“`bash
sudo -u postgres createuser -s odoo17
sudo -u postgres createdb odoo17
“`

### 3. Clonar repositorio Odoo
“`bash
cd /opt
sudo git clone https://github.com/odoo/odoo.git -b 17.0 odoo17
sudo git clone https://github.com/odoo/odoo.git -b 18.0 odoo18
sudo git clone https://github.com/odoo/odoo.git -b 19.0 odoo19
“`

### 4. Crear entornos virtuales separados
“`bash
python3 -m venv /opt/odoo17/venv
python3 -m venv /opt/odoo18/venv
python3 -m venv /opt/odoo19/venv

source /opt/odoo17/venv/bin/activate
pip install -r /opt/odoo17/requirements.txt
deactivate
“`
*(Repite para cada versión)*

⚙️ Configuración de odoo.conf con directorios separados
Ejemplo para Odoo 17 (/etc/odoo17.conf):

[options]
; — Rutas —
addons_path = /opt/odoo17/addons,/opt/odoo17/custom_addons
data_dir = /var/lib/odoo17

; — Base de datos —
db_host = False
db_port = False
db_user = odoo17
db_password = False
db_name = odoo17

; — Servidor —
xmlrpc_port = 8069
longpolling_port = 8072
workers = 4
limit_memory_soft = 640000000
limit_memory_hard = 760000000
limit_time_cpu = 60
limit_time_real = 120

; — Logging —
logfile = /var/log/odoo/odoo17.log
log_level = debug

; — Desarrollo —
dev_mode = True
Para Odoo 18 y Odoo 19, cambia:

data_dir → /var/lib/odoo18 y /var/lib/odoo19.

xmlrpc_port → 8079, 8089 (ejemplo).

longpolling_port → 8082, 8092.

logfile → /var/log/odoo/odoo18.log, /var/log/odoo/odoo19.log.

db_user y db_name distintos para cada versión.

De esta forma, cada versión mantiene su propio espacio de datos, logs y configuración, evitando conflictos.

## 🌐 Configuración de Nginx (reverse proxy)

Archivo `/etc/nginx/sites-available/odoo17`:

“`nginx
server {
listen 80;
server_name odoo17.midominio.com;

# Redirigir todo HTTP a HTTPS
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name odoo17.midominio.com;

ssl_certificate /etc/letsencrypt/live/odoo17.midominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo17.midominio.com/privkey.pem;

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 https;
proxy_set_header X-Real-IP $remote_addr;

location / {
proxy_pass http://127.0.0.1:8069;
}

location /longpolling {
proxy_pass http://127.0.0.1:8072;
}

# Evitar mezcla de protocolos
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;
}
“`

*(Repite con diferentes `server_name` y puertos para Odoo 18 y 19)*

## 🚀 Resultado
– Cada versión de Odoo corre en su propio entorno virtual y puerto.
– `odoo.conf` ajustado para pruebas, desarrollo y workers.
– Nginx fuerza HTTPS y evita mezcla de protocolos.
– Puedes acceder a cada versión con un subdominio distinto (`odoo17.midominio.com`, `odoo18.midominio.com`, etc.).

## 📂 Archivos de servicio systemd

### **Odoo 17** → `/etc/systemd/system/odoo17.service`
“`ini
[Unit]
Description=Odoo 17 Community
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
User=odoo17
Group=odoo17
ExecStart=/opt/odoo17/venv/bin/python3 /opt/odoo17/odoo-bin -c /etc/odoo17.conf
Restart=always

[Install]
WantedBy=multi-user.target
“`

### **Odoo 18** → `/etc/systemd/system/odoo18.service`
“`ini
[Unit]
Description=Odoo 18 Community
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
User=odoo18
Group=odoo18
ExecStart=/opt/odoo18/venv/bin/python3 /opt/odoo18/odoo-bin -c /etc/odoo18.conf
Restart=always

[Install]
WantedBy=multi-user.target
“`

### **Odoo 19** → `/etc/systemd/system/odoo19.service`
“`ini
[Unit]
Description=Odoo 19 Community
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
User=odoo19
Group=odoo19
ExecStart=/opt/odoo19/venv/bin/python3 /opt/odoo19/odoo-bin -c /etc/odoo19.conf
Restart=always

[Install]
WantedBy=multi-user.target
“`

## 🔧 Pasos para habilitar los servicios

1. **Recargar systemd**
“`bash
sudo systemctl daemon-reload
“`

2. **Habilitar servicios al arranque**
“`bash
sudo systemctl enable odoo17.service
sudo systemctl enable odoo18.service
sudo systemctl enable odoo19.service
“`

3. **Iniciar servicios**
“`bash
sudo systemctl start odoo17.service
sudo systemctl start odoo18.service
sudo systemctl start odoo19.service
“`

4. **Verificar estado**
“`bash
sudo systemctl status odoo17.service
sudo systemctl status odoo18.service
sudo systemctl status odoo19.service
“`

## 🚀 Resultado
– Cada versión de Odoo corre como un servicio independiente.
– Usa su propio usuario, entorno virtual y archivo de configuración (`odoo.conf`).
– Se reinicia automáticamente si falla.
– Convive sin conflictos en el mismo servidor, detrás de Nginx con HTTPS forzado.

 

 

Share this post on:

Leave a Reply

Your email address will not be published. Required fields are marked *