Ir al contenido
Campus Cleverit · Guía actualizada · Septiembre 2026

Instala Odoo 20
en Ubuntu 26.04 LTS

Resolute Raccoon

Odoo 20 sobre Ubuntu 26.04 LTS, la última versión estable de Ubuntu. Guía paso a paso probada de principio a fin en una máquina limpia: uv de Astral para fijar la versión de Python, y el nuevo motor de informes de Odoo funcionando.

Nuevo en Odoo 20 Paper Muncher, el nuevo motor de PDF de Odoo, instalado y verificado.
 Odoo 20 CE + EE  Paper Muncher  Ubuntu 26.04 LTS · última estable  Python 3.12 via uv  PostgreSQL  wkhtmltopdf
⚡
¿Por qué usamos uv de Astral en lugar del entorno virtual tradicional?
Dos razones. Primera: uv es significativamente más rápido que pip tradicional y genera menos errores al instalar dependencias Python. Segunda: permite fijar una versión específica de Python para el entorno — en esta instalación usamos 3.12 — de forma que cualquier cambio de versión en el futuro sea controlado y explícito, sin sorpresas.

Cambios respecto a Ubuntu 24.04

Python y el motor PDF son lo nuevo

El 90% del proceso es idéntico a la guía de 24.04. Cambia cómo se gestiona Python y se añade Paper Muncher como motor de PDF, además del clásico wkhtmltopdf.

Concepto
Ubuntu 24.04
Ubuntu 26.04 ← esta guía
Python del sistema
3.12 (nativo)
3.14 — gestionamos con uv
Paquetes apt Python
python3-dev · python3-pip · python3-venv
Se omiten — uv los gestiona
Paso extra
—
Instalar uv + python 3.12
Crear entorno virtual
python3 -m venv .venv
uv venv --python 3.12 .venv
Motor de PDF
wkhtmltopdf
Paper Muncher (.deb nativo) + wkhtmltopdf
Resto del proceso
igual
igual

Antes de empezar

Requisitos previos

🖥️
Ubuntu 26.04 LTS
Servidor, VPS, VM local o bare metal. En ARM (Apple Silicon, Raspberry, Graviton) lee antes la nota del paso 06.
🔑
Acceso root / sudo
Necesario para instalar paquetes y crear el usuario del sistema.
🌐
Conexión a internet
Para descargar paquetes, clonar el repo de Odoo y uv.
🔗
Dominio (opcional)
Necesario para HTTPS en producción. No requerido para esta guía.

Guía de instalación

12 pasos — desde cero hasta Odoo corriendo

Ejecuta los comandos como root salvo donde se indique lo contrario.

01
Sistema
Crear usuario dedicado para Odoo

Recomendado para servidores. Si estás montando un entorno de desarrollo en tu propio equipo con Ubuntu de escritorio, puedes usar tu usuario habitual del sistema — no hace falta crear uno nuevo y evitas problemas de permisos innecesarios.

💡
Entorno local: salta este paso y continúa con tu usuario actual.
Servidor / VPS: crea el usuario dedicado con el comando de abajo.
root@server:~#
$ sudo useradd -m -d /home/odoo -s /bin/bash odoo
02
Sistema
Actualizar el índice de paquetes

Refrescamos el índice de paquetes para que los pasos siguientes usen las versiones más recientes del repositorio. No ejecutamos apt upgrade: en un sistema que no esté limpio puede arrastrar cambios inesperados. Si quieres actualizar el sistema, hazlo por tu cuenta y bajo tu responsabilidad.

root@server:~#
$ sudo apt update
03
Dependencias
Instalar paquetes y dependencias del sistema

En Ubuntu 26.04 no instalamos python3-dev, python3-pip ni python3-venv vía apt — esos los gestiona uv en el paso 05. Sí necesitamos las librerías de sistema para las extensiones C de Odoo.

root@server:~#
# Dependencias, fuentes multilengua y librerías de sistema
$ sudo apt update && \
sudo DEBIAN_FRONTEND=noninteractive apt install -y -q --no-install-recommends \ build-essential \ ca-certificates \ curl \ fonts-dejavu-core \ fonts-freefont-ttf \ fonts-freefont-otf \ fonts-noto-core \ fonts-inconsolata \ fonts-font-awesome \ fonts-roboto-unhinted \ gsfonts \ git \ gnupg \ htop \ libldap2-dev \ libpq-dev \ libsasl2-dev \ nano \ net-tools \ procps \ unzip \ zip
04
Base de datos
Instalar PostgreSQL y crear usuario

Odoo se conecta a PostgreSQL con el nombre del usuario del sistema que lo ejecuta. Por eso el rol que crees aquí tiene que llamarse igual que ese usuario: elige el comando según lo que hicieras en el paso 01.

⚠️
Si te saltaste el paso 01 y creas el rol como odoo, Odoo arrancará con tu usuario y fallará con FATAL: role "tu_usuario" does not exist. El error no aparece aquí: aparece en el paso 11.
root@server:~#
$ sudo apt install postgresql postgresql-client

# OPCIÓN A · Servidor / VPS (creaste el usuario odoo en el paso 01)
$ sudo -u postgres createuser -d -R -S odoo

# OPCIÓN B · Entorno local (te saltaste el paso 01 y usas tu usuario)
$ sudo -u postgres createuser -d -R -S "$USER"

# Comprobar que el rol existe
$ sudo -u postgres psql -c "\du"
05
⚡ Paso clave · Solo en Ubuntu 26.04
Instalar uv y Python 3.12

Instalamos uv en /usr/local/bin para que esté disponible para todos los usuarios del servidor. A continuación fijamos Python 3.12 como versión del entorno — más rápido que pip y sin depender de la versión global del sistema.

root@server:~#
# Instalar uv en /usr/local/bin (disponible para todos los usuarios)
$ curl -LsSf https://astral.sh/uv/install.sh \
| env UV_INSTALL_DIR=/usr/local/bin sh
# Verificar
$ uv --version
uv 0.x.x (linux) ✓
# Instalar Python 3.12 (uv lo descarga automáticamente)
$ uv python install 3.12
Installed Python 3.12.x ✓
# Verificar versiones disponibles
$ uv python list
cpython-3.12.x ← usaremos esta cpython-3.14.x ← sistema (no tocar)
06
⚡ Paso clave · Motores PDF
Instalar Paper Muncher y wkhtmltopdf

Odoo 20 estrena Paper Muncher, su motor de PDF propio (Vaev), que se comunica con Odoo por pipes —sin HTTP de por medio— y trae sandbox nativo en Linux. Se instala como paquete .deb oficial: usa resolute en Ubuntu 26.04 (también publican noble, jammy, plucky, trixie y bookworm).

wkhtmltopdf sigue siendo el motor por defecto de Odoo 20 y se instala igual que en la guía de 24.04 — lo mantenemos para los reportes que aún no se hayan migrado.

📦 Descargas: odoo/paper-muncher/releases · wkhtmltopdf/packaging/releases

🧬
Paper Muncher aún está en alpha temprana. Se activa reporte a reporte en Ajustes → Técnico → Reportes, cambiando el tipo a PDF (Paper-Muncher). Si un layout sale raro, deja ese reporte en PDF (wkhtmltopdf).
root@server:~#
# 1. Paper Muncher (recomendado · Ubuntu 26.04 resolute)
$ curl -sSLO https://github.com/odoo/paper-muncher/releases/download/v0.7.1/paper-muncher_v0.7.1_resolute_amd64.deb
$ sudo apt install -y ./paper-muncher_v0.7.1_resolute_amd64.deb

# Expón el binario en el PATH (Odoo lo resuelve con find_in_path)
$ sudo ln -sf /opt/paper-muncher/bin/paper-muncher /usr/local/bin/paper-muncher
$ paper-muncher --version
paper-muncher v0.7.1 ✓
# 2. wkhtmltopdf (legacy · build para Jammy)
# Descarga wkhtmltox_*.jammy_amd64.deb desde el link de arriba
$ sudo apt install -y ./wkhtmltox_*.deb
$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt) ✓
¿Estás en ARM? Paper Muncher solo publica binarios amd64
No existe release oficial de Paper Muncher para arm64, ni en Linux (Raspberry, Ampere, Graviton) ni en macOS con Apple Silicon. Si estás en un Mac M1, M2, M3 o M4, o en una VM ARM, el .deb de este paso no te va a funcionar: las opciones oficiales son compilar desde fuente (clang + CuteKit) o usar una máquina amd64.

Hemos preparado nuestra propia solución para ARM y la vamos a publicar en GitHub, con vídeo explicativo paso a paso. Mientras tanto, para wkhtmltopdf sí hay build arm64 oficial.
 Repositorio y vídeo · próximamente Guarda esta página: publicaremos aquí el enlace en cuanto esté listo.
07
Estructura
Cambiar a usuario odoo y crear directorios

A partir de aquí trabajamos como usuario odoo. Si elegiste la opción B del paso 04 (entorno local), sáltate el su odoo y crea la estructura en tu propio $HOME: el resto de la guía es idéntico, solo cambia la ruta base.

root@server:~#
$ su odoo
$ cd /home/odoo

# Crear estructura de directorios
$ mkdir -p ~/odoo_dev/odoo20/{config,log,data}

# Resultado en /home/odoo/odoo_dev/odoo20/
config ← odoo.conf data ← filestore log ← fichero de log odoo ← repo (siguiente paso) .venv ← entorno virtual Python 3.12
08
Odoo
Clonar Odoo 20
odoo@server:~$
# Community Edition
$ git clone https://github.com/odoo/odoo.git \
-b 20.0 --depth 1 --single-branch ~/odoo_dev/odoo20/odoo
# Enterprise Edition — requiere:
# · Clave SSH configurada en tu cuenta de GitHub
# · Acceso al repositorio privado de Odoo Enterprise (partners)
$ git clone git@github.com:odoo/enterprise.git \
-b 20.0 --depth 1 --single-branch ~/odoo_dev/odoo20/enterprise
09
⚡ Paso clave · Solo en Ubuntu 26.04
Crear entorno virtual con Python 3.12

Con uv venv --python 3.12 .venv el entorno queda vinculado a una versión fija de Python. Si en el futuro hay que cambiarla, se cambia de forma explícita y controlada — sin sorpresas.

odoo@server:~/odoo_dev/odoo20$
$ cd ~/odoo_dev/odoo20

# Crear entorno virtual con Python 3.12
$ uv venv --python 3.12 .venv
Using Python 3.12.x Creating virtual environment at: .venv ✓
# Con uv no hace falta activar el entorno
# Usa directamente la ruta al Python del venv
$ ./.venv/bin/python --version
Python 3.12.x ✓
10
Python
Instalar dependencias Python de Odoo

Con uv pip la instalación es significativamente más rápida que con pip estándar. Hay que estar en la carpeta del proyecto para que uv detecte el entorno virtual automáticamente.

odoo@server:~$
# Ir a la carpeta del proyecto
$ cd ~/odoo_dev/odoo20

# Instalar dependencias con uv pip
$ uv pip install phonenumbers
$ uv pip install -r ./odoo/requirements.txt

# Verificar
$ uv pip list
11
Arranque
Iniciar Odoo por primera vez

Accede desde el navegador a http://:8069 una vez que el proceso esté activo.

odoo@server:~/odoo_dev/odoo20$
# Community Edition
$ ~/odoo_dev/odoo20/.venv/bin/python ~/odoo_dev/odoo20/odoo/odoo-bin

# Enterprise Edition
$ ~/odoo_dev/odoo20/.venv/bin/python \
~/odoo_dev/odoo20/odoo/odoo-bin \ --addons-path=/home/odoo/odoo_dev/odoo20/enterprise,/home/odoo/odoo_dev/odoo20/odoo/addons
# Detener
$ pkill -f odoo-bin
12
Utilidades
Script de gestión manage_odoo.sh

Crea el fichero con nano ~/odoo_dev/odoo20/manage_odoo.sh, pega el contenido, guarda con Ctrl+X → Y → Enter y dale permisos.

odoo@server:~/odoo_dev/odoo20$
#!/bin/bash

start_odoo() {
echo "Starting Odoo server..." ~/odoo_dev/odoo20/.venv/bin/python ~/odoo_dev/odoo20/odoo/odoo-bin &
}

if [ $1 == 'start' ]; then
start_odoo
elif [ $1 == 'stop' ]; then
pkill -f odoo-bin
elif [ $1 == 'restart' ]; then
pkill -f odoo-bin start_odoo
fi

# Dar permisos y usar
$ chmod +x manage_odoo.sh
$ ./manage_odoo.sh start
$ ./manage_odoo.sh stop
$ ./manage_odoo.sh restart

Elige cómo la usas

La misma guía, a tres velocidades

La primera es a mano y sin IA. Las otras dos existen porque esto es un procedimiento verificado y no una lista de comandos sueltos: eso lo puede leer un agente. Si usas una de esas dos, copia el prompt y cambia [URL de esta guía] por la dirección de esta página.

Velocidad 1 A mano, sin IA
Sigue esta guía al pie de la letra, y ya está. Para el técnico que quiere saber el porqué de cada comando y prefiere ir ejecutando uno a uno. Aquí no hay prompt: subes al paso 01 y los comandos te los picas tú.

Es la más lenta de las tres, y la única que te deja sabiendo montar un Odoo sin que nadie te lleve de la mano.
Velocidad 2 Que te la empaquete en un instalador
Para el que ya sabe instalar Odoo y no quiere teclearlo otra vez. La IA no decide nada: transcribe a un script un procedimiento que ya está probado. Funciona igual en Claude, OpenCode o Codex.
Prompt
Lee esta guía completa: [URL de esta guía] Conviértela en un único script de instalación en bash para Ubuntu 26.04. No cambies ningún paso ni añadas ninguno que no esté en la guía: si algo no está ahí, no va en el script. Requisitos: - Parametriza arriba: usuario del sistema, ruta base, edición (community o enterprise) y rama. - El rol de PostgreSQL debe llamarse igual que el usuario del sistema que ejecutará Odoo. - El entorno virtual se crea como .venv, con punto. Nunca como venv. - Antes de instalar Paper Muncher comprueba la arquitectura: si no es amd64, avisa y continúa sin él. - Idempotente: ejecutarlo dos veces no puede duplicar ni romper nada. - set -euo pipefail, y que diga en qué paso ha fallado. - Al terminar, verifica: versión de Odoo, rol de PostgreSQL, paquetes del entorno virtual y los dos binarios de PDF. Antes de escribir el script, dime en una lista qué has entendido que hay que hacer, y espera a que te lo confirme.
Velocidad 3 Que te monte el entorno él solo
Modo agéntico. Le das la dirección de esta guía y una frase, y el agente la ejecuta en tu máquina. Las reglas de abajo no sobran: son los puntos donde una instalación falla en silencio.
Prompt
Lee esta guía completa: [URL de esta guía] Replica ese entorno en esta máquina, ejecutando los pasos en orden. Quiero la edición [community o enterprise] en la ruta [tu ruta]. Reglas: - Sigue la guía. No sustituyas sus comandos por los que tú te sepas. - Pídeme confirmación antes de cualquier comando con sudo. - Párate en el primer error. No lo arregles por tu cuenta sin decírmelo antes. - Mira cuál es mi usuario del sistema y crea el rol de PostgreSQL con ese mismo nombre. - El entorno virtual se llama .venv, con punto. - Comprueba mi arquitectura antes del paso de Paper Muncher. - Después de cada bloque, verifica que ha funcionado antes de pasar al siguiente. Al final dame un resumen: versiones instaladas, rutas, y cómo arranco y paro Odoo.
🧭
Por qué las tres funcionan con la misma guía
Porque es un procedimiento verificado de principio a fin en una máquina limpia, no una lista de comandos copiada de otro sitio. Un procedimiento verificado lo puede seguir una persona, lo puede encapsular una IA y lo puede ejecutar un agente. Una lista de comandos sin probar rompe las tres.

¿Y ahora qué?

Siguientes pasos para producción

Esta guía cubre la instalación base. Para un entorno productivo real necesitas esto:

🔒
Configurar Proxy SSL + HTTPS
Nginx como proxy inverso, certificado Let's Encrypt y renovación automática. Obligatorio para pasarelas de pago y chat en tiempo real.
⚙️
Odoo como servicio systemd
Para que Odoo arranque automáticamente al reiniciar el servidor y se gestione como servicio estándar del sistema.
🛡️
Firewall + Backups automáticos
UFW configurado y backups programados de base de datos y filestore. Sin esto, el servidor no está listo para producción.

Campus Cleverit

¿Quieres ir más allá de la instalación?

Aprende a desarrollar en Odoo con base técnica real — backend, OWL, módulos, reportes e integraciones. Cursos en español orientados a producción.

¿Necesitas instalación rápida o soporte técnico?

 Troton Installer Pro — Odoo en 3 minutos