Instalar Odoo 19 Community en Ubuntu 24.04, Docker o Windows (y dejarlo listo para España)
Instalar Odoo 19 Community paso a paso: Ubuntu 24.04 con el repositorio oficial, Docker con la etiqueta 19.0 o Windows para pruebas, con wkhtmltopdf, workers y la base en español.
Odoo 19 Tutorial · Nivel intermedio
Respuesta corta
Para producción, Ubuntu 24.04 con el repositorio oficial de Odoo 19: PostgreSQL de Ubuntu, wkhtmltopdf 0.12.6.1-3 (el paquete de jammy, el mismo que usa la imagen oficial de Docker) y apt install odoo. Docker sirve para pruebas y entornos propios si fijas la etiqueta odoo:19.0, porque odoo:latest ya es Odoo 20. Windows, solo para un usuario y pruebas, según la propia documentación. Al crear la base elige «Spanish / Español» y España: así se instala la localización española al activar Facturación.
- Edición
- Community (Enterprise usa el mismo método con su paquete de pago)
- Módulos
basewebl10n_es- Dónde se hace
- Facturación, Configuración, Ajustes
- Otras versiones
- Comandos y requisitos comprobados el 1 de noviembre de 2026 en la documentación de instalación de Odoo 19, en el código de la rama 19.0 (release.py, paquete debian, instalador de Windows) y en la imagen oficial de Docker. Odoo 20 ya es la versión más reciente; para instalarla cambia 19.0 por 20.0 en el repositorio y en la imagen, y revisa sus requisitos.
En esta página
- Qué método elegir
- Lo que pide Odoo 19
- 1.Instala PostgreSQL
- 2.Instala wkhtmltopdf 0.12.6.1-3
- 3.Añade el repositorio de Odoo 19 e instala
- 4.Comprueba que arranca
- 5.Crea la base de datos en español
- 6.Cierra la puerta antes de abrirla a internet
- 7.Workers y memoria
- 8.Copias de seguridad desde el primer día
- Con Docker
- En Windows
- Déjalo listo para España
- Resultado
- Errores frecuentes
- Preguntas frecuentes
- Fuentes
Antes de empezar
- Un servidor o máquina virtual con Ubuntu 24.04 LTS y acceso con
sudo, o Docker con Docker Compose, o un PC con Windows para pruebas. - Para un servidor abierto a internet, un dominio apuntando a su IP y un certificado HTTPS (el proxy se monta en el paso 6).
- Odoo Online no se instala: si vas a usarlo, salta directamente a dejarlo listo para España.
Instalar Odoo es la parte fácil. Lo que da problemas semanas después son tres cosas que la mayoría de guías se saltan: el wkhtmltopdf correcto para que salgan los PDF, el número de workers y la base de datos creada con el idioma y el país equivocados. Esta guía instala Odoo 19 Community por los tres caminos oficiales y termina con la base lista para la localización española.
Todo está comprobado en la documentación de instalación de Odoo 19 y en el código de la rama 19.0 el 1 de noviembre de 2026. Las etiquetas del gestor de bases de datos van en inglés porque esa pantalla no está traducida en el código.
Qué método elegir
| Método | Para qué sirve | Lo que dice la documentación de Odoo 19 |
|---|---|---|
| Ubuntu 24.04 con el repositorio oficial | Producción en servidor propio | Paquete .deb para Ubuntu Noble (24.04 LTS). Se instala como servicio y se actualiza con apt-get upgrade. Solo Community |
| Paquete .deb descargado | Producción, también Enterprise | Paquetes Community y Enterprise en la página de descargas; Enterprise exige estar identificado como cliente on-premise o partner |
Docker (imagen oficial odoo) | Pruebas, desarrollo y servidores que ya usan contenedores | Imagen Community; necesita un PostgreSQL aparte; Enterprise se monta como carpeta de módulos |
| Windows | Pruebas o un solo usuario en local | «Se desaconseja el despliegue en producción». Sin modo multiproceso |
| Odoo Online | Sin servidor | No se instala nada y no admite módulos de terceros |
Si dudas, Ubuntu 24.04. Es la única distribución que la documentación de Odoo 19 da como compatible con su .deb.
Lo que pide Odoo 19
| Pieza | Requisito | Dónde está |
|---|---|---|
| Sistema | Ubuntu 24.04 LTS para el .deb; Fedora 42 para el .rpm | Documentación de instalación |
| Python | De la 3.10 a la 3.14 | release.py: MIN_PY_VERSION = (3, 10), MAX_PY_VERSION = (3, 14) |
| PostgreSQL | 13 o superior | release.py: MIN_PG_VERSION = 13. Ubuntu 24.04 instala la 16 |
| wkhtmltopdf | 0.12.6, instalado a mano (no con pip) | Documentación: sin esa versión, sin cabeceras ni pies en los PDF |
| Puertos | 8069 (web) y 8072 (chat y websocket con workers) | Valores por defecto de http_port y gevent_port |
| Memoria | Unos 325 MB por proceso de Odoo, de media | Fórmula de la documentación, en el paso 7 |
Paso 1. Instala PostgreSQL
El paquete de Odoo da por hecho que PostgreSQL está en la misma máquina. Con el servidor actualizado:
sudo apt update
sudo apt install postgresql -yEn Ubuntu 24.04 esto instala PostgreSQL 16, por encima del mínimo. No crees usuarios a mano: lo hace el paquete de Odoo en el paso 3.
Paso 2. Instala wkhtmltopdf 0.12.6.1-3
Odoo convierte facturas, pedidos y albaranes a PDF con wkhtmltopdf. La documentación pide la 0.12.6 «para que admita cabeceras y pies de página», y la versión del repositorio de Ubuntu no sirve para eso.
El problema de Ubuntu 24.04: la versión 0.12.6.1-3 de wkhtmltopdf/packaging no tiene paquete para noble. Tiene para jammy (22.04), bookworm y bullseye. La salida la da la propia Odoo: su Dockerfile oficial de la 19.0 parte de ubuntu:noble e instala el paquete de jammy, comprobando su huella SHA1. Haz lo mismo:
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
echo "967390a759707337b46d1c02452e2bb6b2dc6d59 wkhtmltox_0.12.6.1-3.jammy_amd64.deb" | sha1sum -c -
sudo apt install ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb -y
wkhtmltopdf --versionLa segunda línea debe responder OK. La huella es la del Dockerfile de Odoo para amd64; en un servidor ARM el paquete es el jammy_arm64 y su huella es otra (también está en ese Dockerfile).
Paso 3. Añade el repositorio de Odoo 19 e instala
Los tres comandos de la documentación, con la rama 19.0:
wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg
echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/19.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list
sudo apt-get update && sudo apt-get install odooLo que deja hecho el paquete, según su código en la rama 19.0:
- Un usuario de sistema
odooy un usuario de PostgreSQLodoocon permiso para crear bases de datos (createuser -d -R -S odoo). - El fichero de configuración
/etc/odoo/odoo.conf, legible solo porodoo. - El servicio
odoo, que arranca con ese fichero y escribe el registro en/var/log/odoo/odoo-server.log. - La carpeta personal del usuario
odoo,/var/lib/odoo. Como elodoo.confdel paquete no fijadata_dir, Odoo usa la carpeta por defecto del usuario,/var/lib/odoo/.local/share/Odoo, y ahí va el filestore (filestore/y el nombre de la base): los adjuntos, PDF e imágenes de cada base de datos.
Si prefieres el paquete descargado (o es Enterprise), cambia el último comando por sudo apt install ./ seguido del nombre del .deb. El resto de la guía es igual.
Paso 4. Comprueba que arranca
sudo systemctl status odoo
sudo tail -n 50 /var/log/odoo/odoo-server.logEn el registro busca dos líneas. Will use the Wkhtmltopdf binary at dice que Odoo ha encontrado wkhtmltopdf. Si en su lugar sale You need Wkhtmltopdf to print a pdf version of the reports., vuelve al paso 2.
Abre http://IP-del-servidor:8069 en el navegador. Si no carga, revisa el cortafuegos del proveedor: el puerto 8069 tiene que estar abierto mientras no montes el proxy del paso 6, y cerrado después.
Paso 5. Crea la base de datos en español
La primera vez, Odoo abre el gestor de bases de datos. Arriba sale un aviso amarillo: Warning, your Odoo database manager is not protected. y una contraseña maestra generada al azar. Cópiala y guárdala: la pedirá para crear, copiar, borrar o restaurar bases. Mientras no se fija, la contraseña maestra sigue siendo la de fábrica, admin (valor por defecto de admin_passwd en el código), y la documentación recomienda desactivar el gestor en cualquier servidor abierto a internet.
Rellena el formulario así:
| Campo (en inglés en Odoo) | Qué poner |
|---|---|
Master Password | La generada, o una tuya larga y aleatoria |
Database Name | Solo letras, números, _, - y . (por ejemplo, miempresa) |
Email y Password | El usuario administrador. No uses admin ni contraseñas por defecto |
Phone Number | Opcional; va a la ficha de la empresa |
Language | Spanish / Español. No elijas Spanish (Latin America) / Español (América Latina) |
Country | Spain |
Demo Data | Sin marcar. La documentación pide no instalar datos de demostración en servidores abiertos a internet |
Por qué importa el país. Con Spain, el código de creación de la base pone España y el euro en la empresa. Y la localización española (l10n_es) se instala sola al activar Facturación, porque Odoo solo instala automáticamente un módulo de país si hay al menos una empresa de ese país. Sin país, Facturación arranca con un plan contable genérico.
La zona horaria no se pone sola. Al crear la base, Odoo solo fija la zona horaria de los usuarios si el país tiene una única zona. España tiene tres en la base de datos de zonas horarias (Europe/Madrid, Africa/Ceuta y Atlantic/Canary), así que no pone ninguna. Entra en el menú de tu avatar, Mis preferencias, y elige la Zona horaria de tu oficina. Repite con cada usuario.
Paso 6. Cierra la puerta antes de abrirla a internet
La lista de seguridad de la documentación de Odoo 19 empieza por aquí. Edita /etc/odoo/odoo.conf (con sudo) y deja algo así:
[options]
admin_passwd = una-contraseña-larga-y-aleatoria
db_user = odoo
db_name = miempresa
list_db = False
proxy_mode = True
workers = 5
max_cron_threads = 1admin_passwd: la contraseña maestra del gestor de bases de datos. La documentación propone generarla conpython3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'.list_db = False: oculta la lista de bases y bloquea el gestor de bases de datos, que según la documentación «no está pensado para producción». Funciona porquedb_namedice a Odoo qué base abrir; con varias bases por servidor, usadbfilter.proxy_mode = True: solo si Odoo queda detrás de un proxy con HTTPS, como Nginx. La documentación trae un ejemplo completo de Nginx que reenvía/websocketal puerto 8072 y lo demás al 8069.
Reinicia con sudo systemctl restart odoo después de cada cambio.
Paso 7. Workers y memoria
Con workers = 0 (el valor por defecto) Odoo funciona en un solo proceso con hilos: vale para probar, no para trabajar con varias personas. En producción la documentación de Odoo 19 da tres reglas:
- Máximo de workers: (núcleos × 2) + 1.
- Un worker atiende unos 6 usuarios a la vez.
- Memoria: el 80 % de las peticiones son ligeras (unos 150 MB) y el 20 % pesadas (unos 1.024 MB), así que cada proceso cuesta de media 0,8 × 150 + 0,2 × 1.024 = 324,8 MB.
Su ejemplo: 4 núcleos y 60 usuarios a la vez. Harían falta 10 workers (60 / 6), pero el máximo es 9; usa 8 workers y 1 de tareas programadas, y 9 × 324,8 MB dan unos 3 GB solo para Odoo, sin contar PostgreSQL.
Nunca workers = 1. El código de Odoo 19 marca ese caso y no genera PDF: el navegador muestra Necesita iniciar Odoo con al menos dos trabajadores para imprimir una versión pdf de los informes. Usa 0 o 2 o más.
- Workers necesarios (usuarios / 6)
- 10
- Máximo del servidor (núcleos × 2 + 1)
- 9
workers- 8
- Memoria estimada para Odoo
- 2.923 MB
workers = 8
max_cron_threads = 1 Paso 8. Copias de seguridad desde el primer día
La documentación pide copias diarias de las bases de datos y del filestore, guardadas en un servidor que no sea accesible desde el propio Odoo. Una copia solo de PostgreSQL no basta: los adjuntos y los PDF están en /var/lib/odoo/.local/share/Odoo/filestore/ y el nombre de la base (instalación con el paquete; en Docker, en /var/lib/odoo/filestore/).
sudo -u odoo pg_dump -Fc miempresa > miempresa-$(date +%F).dump
sudo tar czf filestore-$(date +%F).tar.gz -C /var/lib/odoo/.local/share/Odoo/filestore miempresaPrograma las dos líneas en el cron del servidor y copia los ficheros fuera. Prueba a restaurar una vez en otra máquina: es la única forma de saber que la copia vale.
Con Docker
La imagen oficial odoo es Community y necesita un PostgreSQL aparte. Un compose.yaml mínimo, con la etiqueta fijada y los datos en volúmenes:
services:
web:
image: odoo:19.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:15
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=cambia-esta-contraseña
- POSTGRES_USER=odoo
volumes:
- odoo-db-data:/var/lib/postgresql/data
volumes:
odoo-web-data:
odoo-db-data:
Arranca con docker compose up -d. Si cambias la contraseña de PostgreSQL, pon la misma en una variable PASSWORD del servicio web, que la imagen usa para conectarse (por defecto, odoo). postgres:15 es la versión de los ejemplos oficiales; cualquier versión desde la 13 cumple el mínimo de Odoo 19.
Tres avisos:
- Fija la versión. El 1 de noviembre de 2026, en Docker Hub,
odoo:latestapunta a la misma imagen queodoo:20.0. Undocker compose pullconlatestte cambiaría de versión mayor, y una base de Odoo 19 no se abre en Odoo 20 sin migración. - Sin volumen no hay datos. El filestore se crea dentro del contenedor; si lo borras sin el volumen de
/var/lib/odoo, pierdes los adjuntos. - wkhtmltopdf ya viene dentro: es el mismo paquete de jammy del paso 2.
La configuración de seguridad y workers del paso 6 va en ./config/odoo.conf.
En Windows
- Descarga
odoo_19.0.latest.exedel servidor nightly (Community) o el instalador de la página de descargas de Odoo. - Ejecútalo. Si Windows avisa con
Windows protected your PC, pulsaMore InfoyRun anyway, como indica la documentación. - Acepta el control de cuentas de usuario y elige
Odoo Server And PostgreSQL Serversi no tienes PostgreSQL. - Al terminar, Odoo se abre en el navegador.
Según el código del instalador de la 19.0, trae su propio Python y wkhtmltopdf, descarga PostgreSQL 16.14 si lo eliges, crea un servicio de Windows odoo-server- con la versión y guarda la configuración en server\odoo.conf dentro de la carpeta de instalación. Propone openpg / openpgpwd como usuario y contraseña de PostgreSQL: cámbialos en esa pantalla.
Y la advertencia de Odoo: el paquete de Windows es para «probar o usar en local con un solo usuario». El modo multiproceso no existe en Windows, así que el paso 7 no aplica.
Déjalo listo para España
Con la base creada en español y con España como país:
- Instala la app
FacturacióndesdeAplicaciones. Con la empresa en España, Odoo instala también España - Contabilidad (PGCE 2008) (l10n_es): plan de cuentas del PGC, impuestos con sus casillas, posiciones fiscales y modelos 111, 115, 130, 303 y 390. - Revisa en
Ajustes, secciónCompañías, el nombre, la dirección con provincia y el NIF de la empresa. Veri*Factu exige que el NIF tenga exactamente 9 caracteres sin el prefijoES(cómo). - Antes de crear la primera factura, comprueba en Facturación, Configuración, Ajustes (
Contabilidaden Enterprise), secciónLocalización fiscal, que elPaquetees el que corresponde (PyMEs, Completo, Canarias…). Odoo lo deja en solo lectura en cuanto hay un apunte contable en la empresa. - Instala el sistema de facturación que te toca: Veri*Factu, SII o TicketBAI en Álava, Bizkaia y Gipuzkoa.
Módulos de la OCA. En una instalación propia puedes añadir los módulos españoles de la comunidad (l10n-spain, rama 19.0, con más de 30 módulos el 1 de noviembre de 2026: modelos 347, 349, 190, Norma 43…). No van solos: l10n_es_aeat, la base de los modelos, depende de account_tax_balance (repositorio account-financial-reporting), que a su vez depende de date_range (repositorio server-ux), y pide la librería de Python unidecode. Descarga los tres repositorios en la rama 19.0, añade sus rutas a addons_path en odoo.conf y actualiza la lista de aplicaciones. Qué cubre cada edición está en Odoo Community en España.
Resultado
- Odoo 19 corre como servicio, con PostgreSQL 16 y wkhtmltopdf 0.12.6.1-3, y genera PDF.
- El gestor de bases de datos tiene contraseña maestra y, en producción, está cerrado con
list_db = False. - Los workers y la memoria salen de la regla de la documentación, nunca con
workers = 1. - La base está en español, con España, euro, zona horaria y la localización
l10n_esinstalada. - Hay copia diaria de la base y del filestore fuera del servidor.
Errores frecuentes
No se ha podido encontrar Wkhtmltopdf en este sistema. El informe será mostrado en HTML.Falta wkhtmltopdf o no está en elPATHdel usuarioodoo. Instálalo como en el paso 2 y reinicia el servicio.Necesita iniciar Odoo con al menos dos trabajadores para imprimir una versión pdf de los informes.Tienesworkers = 1. Pon 0 o 2 o más.Houston, we have a database naming issue!(en la traducción,Houston, tenemos un problema con el nombre de la base de datos.). El nombre de la base tiene espacios, tildes u otros caracteres. Solo letras, números, guion bajo, guion y punto.Warning, your Odoo database manager is not protected.No hay contraseña maestra. Fíjala enSet Master Passwordo conadmin_passwdenodoo.conf.- El chat y las notificaciones no se actualizan detrás de Nginx. Falta reenviar
/websocketal puerto 8072 o activarproxy_mode. Usa el bloque de Nginx de la documentación de despliegue. - Después de
docker compose pullla base no abre. La imagen eralatesty ha pasado a Odoo 20. Vuelve aodoo:19.0. - El plan de cuentas no es el español. La base se creó sin país o con otro. Pon España en la empresa y elige el paquete en
Localización fiscalantes de registrar ningún asiento.
Preguntas frecuentes
¿Qué versión de Ubuntu necesita Odoo 19?
El paquete .deb de Odoo 19 está publicado para Ubuntu 24.04 LTS (Noble), según la documentación de instalación. Odoo 19 admite Python de la 3.10 a la 3.14 (release.py) y Ubuntu 24.04 trae la 3.12. Con el repositorio oficial no tienes que tocar Python.
¿Por qué Odoo no genera los PDF de las facturas?
Casi siempre por wkhtmltopdf: o no está instalado (Odoo avisa «No se ha podido encontrar Wkhtmltopdf en este sistema») o el servidor arranca con workers = 1, que Odoo no admite para imprimir. Instala la 0.12.6.1-3 y usa workers = 0 o 2 o más.
¿Puedo instalar Odoo Enterprise así?
El método es el mismo, pero el paquete o el código de Enterprise solo se descargan desde la página de descargas de Odoo con una suscripción on-premise o de partner. No hay repositorio nightly de Enterprise. En Docker, la imagen oficial es Community; los módulos Enterprise se montan aparte en /mnt/extra-addons.
¿Docker o instalación con paquete?
Las dos son oficiales. El paquete .deb deja Odoo como servicio del sistema y se actualiza con apt. Docker aísla versiones y facilita tener pruebas y producción en la misma máquina, pero tienes que fijar la etiqueta (odoo:19.0) y guardar en volúmenes la base de datos y el filestore, o los pierdes al borrar el contenedor.
¿Se puede usar Odoo en Windows para trabajar?
La documentación de Odoo 19 lo desaconseja para producción: el instalador de Windows es para pruebas o para un solo usuario en local, y el modo multiproceso (workers) no existe en Windows.
Fuentes
- Documentación de Odoo 19 — Instaladores empaquetados (Linux y Windows)odoo.com
- Documentación de Odoo 19 — Configuración del sistema (workers, memoria, HTTPS, seguridad, gestor de bases de datos)odoo.com
- Código fuente de Odoo 19 — release.py (versiones de Python y PostgreSQL)github.com
- Código fuente de Odoo 19 — paquete debian (dependencias, odoo.conf, servicio y postinst)github.com
- Código fuente de Odoo 19 — instalador de Windows (setup.nsi)github.com
- Código fuente de Odoo 19 — estado de wkhtmltopdf y mínimo de dos workers (ir_actions_report.py)github.com
- Código fuente de Odoo 19 — creación de la base de datos (service/db.py)github.com
- Código fuente de Odoo 19 — instalación automática de módulos por país (ir_module.py)github.com
- Dockerfile oficial de Odoo 19.0 (ubuntu:noble con wkhtmltopdf de jammy)github.com
- Imagen oficial de Odoo en Docker Hub (etiquetas 19.0, 20.0 y latest)hub.docker.com
- wkhtmltopdf/packaging, versión 0.12.6.1-3 (paquetes publicados)github.com
- Repositorio de paquetes de Odoo 19 (nightly.odoo.com)nightly.odoo.com
- Ubuntu 24.04 (noble) — paquete postgresqlpackages.ubuntu.com
- OCA l10n-spain, rama 19.0github.com