Odoo 19 en Docker: Guía completa de instalación para Ubuntu 24.04 (Community & Enterprise)
Introducción
Desplegar un sistema ERP a menudo parece una tarea desalentadora, pero la contenedorización convierte este proceso en un flujo de trabajo racionalizado. En esta guía, vamos a caminar a través de cómo configurar Odoo 19 en una instancia fresca de Ubuntu 24.04.
Lo más destacado de este método es su versatilidad. Estamos definiendo una arquitectura que le permite comenzar con la versión gratuita Community mientras mantiene la capacidad de actualizar instantáneamente a Enterprise simplemente copiando módulos. No hay "sobre la marcha" hacks configuración - sólo la gestión de contenedores limpia y SSL automática a través de Caddy.
Pila técnica (verificada):
- SO: Ubuntu 24.04 LTS (Dado que se trata de una instalación Docker, el método se aplica también a otras distribuciones de Linux)
- Contenedorización: Docker 29.1.5 + Docker Compose
- Servidor Web: Caddy (HTTPS automático)
- Base de datos: PostgreSQL 18
- Especificaciones VM: 2 vCPU, 4 GB RAM, 40 GB NVMe
Paso 0: Instalar Docker
Instale Docker desde el repositorio oficial:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Añade tu usuario al grupo docker:
sudo usermod -aG docker $USER newgrp docker
Habilite e inicie Docker:
sudo systemctl enable docker sudo systemctl start docker
Verifique la instalación:
docker ps
Paso 1: Configurar la estructura del proyecto
Cree el directorio de trabajo y las carpetas necesarias:
mkdir odoo-stack && cd odoo-stack mkdir -p addons enterprise
Paso 2: Crear docker-compose.yml
Cree un nuevo archivo Docker Compose:
nano docker-compose.yml
Pegue la siguiente configuración (reemplace odoo_secure_password en las secciones db environment y odoo environment con su contraseña real):
YAML
services: db: image: postgres:18 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo_secure_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata restart: unless-stopped odoo: image: odoo:19.0 depends_on: - db volumes: - odoo-web-data:/var/lib/odoo - ./addons:/mnt/extra-addons - ./enterprise:/mnt/enterprise-addons entorno: - HOST=db - USER=odoo - PASSWORD=odoo_secure_password comando: --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/enterprise-addons,/mnt/extra-addons --proxy-mode restart: unless-stopped caddy: image: caddy:latest ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy-data:/data restart: unless-stopped volumes: odoo-web-data: odoo-db-data: caddy-data:
Paso 3: Crear el Caddyfile
Cree el archivo de configuración de Caddy:
nano Caddyfile
Pega la configuración de abajo (sustituye :80 por tu dominio para SSL automático):
# Sustituye :80 por TU_DOMINIO para SSL automático :80 { # Aumenta el tamaño máximo del cuerpo del cliente para subir archivos request_body { max_size 300MB } # Longpolling para chats y notificaciones reverse_proxy /longpolling/* odoo:8072 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } # Tráfico principal reverse_proxy odoo:8069 { header_up X-Forwarded-Host {host} header_up X-Forwarded-Proto {scheme} } }
Paso 4: Iniciar la pila
Inicie la pila:
docker compose up -d
Comprueba el estado (los 3 contenedores deberían estar "Up"):
docker compose ps
Compruebe los registros para asegurarse de que no hay errores:
docker compose logs odoo
Paso 5: Configuración inicial
Abra su navegador y navegue a
- Vía IP: http://YOUR_SERVER_IP
- Vía Dominio: https://YOUR_DOMAIN (si está configurado en el Caddyfile)
Complete el formulario de creación de base de datos:
- Contraseña maestra: Se sugerirá una contraseña maestra en el primer acceso (guarde esta contraseña, es crítica).
- Nombre de la base de datos: por ejemplo, miempresa.
- Correo electrónico: Su dirección de correo electrónico accesible (este será su login).
- Contraseña: Su contraseña de acceso al sistema.
- Idioma: Seleccione su idioma preferido.
- País: Seleccione su país.
- Datos de demostración: Dejar sin marcar para una base de datos de producción limpia.
Haga clic en Crear base de datos y espere a que finalice el proceso (1-2 minutos).

Actualización de Community a Enterprise
Para pasar de Community a Enterprise, simplemente coloque los módulos en el directorio designado.
Paso 1. Obtener los módulos Enterprise Obtener los módulos Enterprise (a través de la suscripción de Odoo).
Paso 2. Extraerlos en la carpeta ./enterprise/.
Paso 3. Reinicie el contenedor. Reinicie el contenedor:
docker compose restart odoo
Paso 4. Instale los módulos Enterprise necesarios a través de la interfaz de usuario.
No se necesitan cambios en los archivos de configuración - la ruta a los módulos enterprise ya está preconfigurada.
Configuración del Firewall
Si está utilizando UFW, ejecute lo siguiente:
sudo ufw allow ssh/tcp && \ sudo ufw allow 80/tcp && \ sudo ufw allow 443/tcp && \ sudo ufw default deny incoming && \ sudo ufw default allow outgoing && \ sudo ufw --force enable
Comandos útiles
Detener todo:
docker compose down
Reiniciar sólo Odoo:
docker compose restart odoo
Ver logs:
docker compose logs -f odoo docker compose logs -f db docker compose logs -f caddy
Copia de seguridad de la base de datos:
docker compose exec db pg_dumpall -U odoo > backup_$(date +%Y%m%d).sql
Restaurar Base de Datos:
cat backup_20240125.sql | docker compose exec -T db psql -U odoo
Borrado completo (¡Precaución!):
docker compose down -v rm -rf addons enterprise Caddyfile
Uso de un nombre de dominio
Para obtener un certificado SSL automático de Let's Encrypt:
Paso 1. Configurar DNS: Apunta un registro A de TU_DOMINIO a la IP de tu servidor.
Paso 2. Actualizar Caddyfile Actualizar Caddyfile: Sustituya :80 por SU_DOMINIO.
Paso 3. Reinicie Caddy. Reinicie Caddy:
docker compose restart caddy
Caddy aprovisionará automáticamente el certificado SSL.
Paso 4. Acceda a Odoo a través de Acceda a Odoo a través de https://YOUR_DOMAIN.
Verifique la emisión del certificado:
docker compose logs caddy | grep certificate