## 🛠 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.
—