1. Crear la carpeta del nuevo ambiente
Primero nos ubicamos en /opt, que es donde vamos a instalar este segundo Odoo:
cd /opt
sudo mkdir odoo18_v2
Entramos a la carpeta recién creada:
cd /opt/odoo18_v2
2. Crear el entorno virtual de Python
Dentro de la carpeta del nuevo ambiente, creamos un entorno virtual:
sudo python3 -m venv /opt/odoo18_v2/venv
Luego lo activamos:
source /opt/odoo18_v2/venv/bin/activate
Este entorno virtual va a contener las dependencias de Python necesarias para correr Odoo 18, separado del sistema principal.
3. Descargar Odoo 18 desde GitHub
Creamos la carpeta donde va a estar el código fuente de Odoo:
sudo mkdir /opt/odoo18_v2/odoo
cd /opt/odoo18_v2/odoo
Clonamos la rama 18.0 de Odoo:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 18.0 --single-branch .
El punto final . indica que el contenido del repositorio se descargará directamente dentro de la carpeta actual.
4. Instalar las dependencias
Con el entorno virtual activado, instalamos los requerimientos de Odoo:
pip install -r requirements.txt
Si hubiera problemas de permisos, se pueden ajustar los permisos del directorio del nuevo ambiente:
cd /opt/odoo18_v2
sudo chmod -R 777 *
Luego volvemos a la carpeta de Odoo y repetimos la instalación si fuera necesario:
cd /opt/odoo18_v2/odoo
pip install -r requirements.txt
Cuando terminamos, salimos del entorno virtual:
deactivate
5. Crear un nuevo archivo de configuración
Ahora copiamos el archivo de configuración existente de Odoo 18 para usarlo como base del nuevo ambiente:
cd /etc
sudo cp odoo18.conf odoo18_v2.conf
Ajustamos permisos y propietario:
sudo chmod 640 /etc/odoo18_v2.conf
sudo chown odoo18:odoo18 /etc/odoo18_v2.conf
Luego editamos el nuevo archivo:
sudo nano /etc/odoo18_v2.conf
Dentro del archivo, modificamos o agregamos estos valores:
addons_path = /opt/odoo18_v2/odoo/addons
dbfilter = odoo-v2
xmlrpc_port = 8080
http_port = 8080
logfile = /var/log/odoo/odoo18_v2.log
Con esto le estamos indicando a Odoo que:
use los addons de la nueva instalación;
filtre la base de datos llamada odoo-v2;
corra en el puerto 8080;
escriba su log en un archivo separado.
6. Crear el archivo de log
Creamos el archivo donde Odoo va a guardar los logs de este nuevo ambiente:
cd /var/log/odoo/
sudo touch odoo18_v2.log
sudo chown odoo18:root /var/log/odoo/odoo18_v2.log
Esto permite revisar luego los errores o mensajes del servicio desde un log independiente del Odoo principal.
7. Crear el servicio systemd
Ahora creamos un nuevo servicio para que el segundo Odoo pueda iniciarse, detenerse y reiniciarse como cualquier otro servicio del sistema:
sudo nano /etc/systemd/system/odoo18_v2.service
Dentro del archivo pegamos lo siguiente:
[Unit]
Description=Odoo18 V2
Documentation=http://www.odoo.com
[Service]
Type=simple
User=odoo18
ExecStart=/opt/odoo18_v2/venv/bin/python3.12 /opt/odoo18_v2/odoo/odoo-bin -c /etc/odoo18_v2.conf
[Install]
WantedBy=default.target
Guardamos el archivo y luego ajustamos permisos:
sudo chmod 755 /etc/systemd/system/odoo18_v2.service
sudo chown root: /etc/systemd/system/odoo18_v2.service
8. Recargar systemd e iniciar el servicio
Cada vez que se crea o modifica un servicio de systemd, conviene recargar la configuración:
sudo systemctl daemon-reload
Luego iniciamos el nuevo servicio:
sudo systemctl start odoo18_v2.service
Para verificar el estado:
sudo systemctl status odoo18_v2.service
Y para ver el log en vivo:
sudo tail -f /var/log/odoo/odoo18_v2.log
9. Probar Odoo desde el navegador
Una vez iniciado el servicio, ingresamos desde el navegador usando el puerto 8080:
http://IP_DEL_SERVIDOR:8080
Desde ahí creamos la nueva base de datos:
odoo-v2
Como en el archivo de configuración usamos:
dbfilter = odoo-v2
este ambiente debería trabajar únicamente con esa base.
10. Comando alternativo para probar manualmente
Si queremos ejecutar Odoo manualmente, sin usar todavía el servicio, podemos correr:
/opt/odoo18_v2/venv/bin/python3.12 /opt/odoo18_v2/odoo/odoo-bin -c /etc/odoo18_v2.conf
Esto es útil para detectar errores directamente en pantalla antes de dejarlo funcionando como servicio.
Conclusión
Con estos pasos dejamos creado un segundo ambiente de Odoo 18, separado del principal, con:
Carpeta: /opt/odoo18_v2
Configuración: /etc/odoo18_v2.conf
Puerto: 8080
Base de datos: odoo-v2
Log: /var/log/odoo/odoo18_v2.log
Servicio: odoo18_v2.service
Este esquema es muy útil para pruebas, migraciones, desarrollos nuevos o para tener un ambiente alternativo sin tocar el Odoo principal.
Un detalle importante es mantener bien separadas las rutas, puertos, logs y base de datos, para evitar que los dos ambientes se mezclen o entren en conflicto.