Para autoalojar Odoo en un VPS, necesitas un servidor Linux, PostgreSQL, Odoo en sí, un servidor web en frente con SSL, y una copia de seguridad que hayas probado. Hacerlo funcionar toma una tarde. El verdadero trabajo es lo que viene después: workers, actualizaciones, registros, copias de seguridad y seguridad, cada mes, mientras Odoo funcione.
Ejecutar Odoo en tu propio VPS es una opción razonable. Es barato para empezar, eliges el país, y tienes control total. Muchos equipos comienzan de esta manera, a menudo con un poco de ayuda de IA para superar la instalación.
Esta guía muestra cada parte que asumes, en el orden en que la encontrarás. Para cada una, verás lo que Odoo pide que otras aplicaciones no. Esas son las partes de las que nadie te advierte.
1. El servidor
Elige un VPS con suficiente memoria primero, luego CPU. Odoo utiliza memoria para cada trabajador, y Postgres quiere su propia parte. Un servidor pequeño puede ejecutar un Odoo de prueba. Un equipo de 20 personas trabajando todo el día necesita más.
El dimensionamiento se reduce a cuántas personas usan Odoo al mismo tiempo, no cuántas cuentas tienes. Nuestra guía sobre cuántos Odoo workers necesitas muestra cómo resolverlo.
Elige el país con cuidado también. Tus datos viven donde vive el servidor.
2. PostgreSQL
Odoo almacena todo en PostgreSQL. Puedes ejecutarlo en el mismo VPS, o usar una base de datos administrada de tu proveedor de nube.
Odoo necesita su propio usuario de base de datos que pueda crear bases de datos. No ejecutes Odoo como el superusuario postgres.
sudo -u postgres createuser --createdb --no-superuser --no-createrole odoo
Aquí está la primera trampa de Odoo. Cuando restaures una base de datos manualmente más tarde, debe ser propiedad del usuario odoo. Si es propiedad de postgres, el administrador de bases de datos de Odoo no la verá, y perderás tiempo averiguando por qué. En casi cualquier otra aplicación, un pg_restore simple está bien. Con Odoo, no lo está.
3. Odoo en sí mismo
Instala Odoo desde los paquetes oficiales o desde la fuente. Usa la versión de Python que tu versión de Odoo solicita, en su propio entorno virtual. Mantén tus propios módulos en una carpeta separada del código de Odoo, para que las actualizaciones no los confundan.
Todas las configuraciones van en un archivo de configuración. Un punto de partida para un pequeño equipo:
[options]
db_host = localhost
db_user = odoo
db_password = CAMBIA_ME
admin_passwd = UNA_CONTRASEÑA_LARGA_ALEATORIA
list_db = False
dbfilter = ^yourdb$
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
data_dir = /var/lib/odoo
proxy_mode = True
workers = 4
max_cron_threads = 1
gevent_port = 8072
logfile = /var/log/odoo/odoo.log
Algunas de estas líneas importan más de lo que parecen:
- list_db = False oculta el administrador de bases de datos de internet. Déjalo activado y cualquiera puede intentar acceder a él.
- admin_passwd protege a ese administrador. Hazlo largo. Nunca dejes el predeterminado.
- los workers por encima de 0 activan el modo multiproceso. Con workers = 0, Odoo se ejecuta como un solo proceso. Eso está bien para pruebas, pero demasiado lento para un equipo en el trabajo.
- data_dir es donde viven tus archivos. Los adjuntos, imágenes y PDFs no están en la base de datos. Recuerda esto para las copias de seguridad.
Ejecuta Odoo como un servicio del sistema, para que se inicie de nuevo después de un reinicio.
4. El servidor web, SSL y modo proxy
Odoo no debe enfrentarse a Internet por sí solo. Coloca Nginx (u otro proxy) al frente, y deja que maneje SSL.
Desde Odoo 16, las funciones en vivo utilizan un websocket en un segundo puerto (8072 por defecto). Si tu proxy no envía /websocket allí, el chat y las actualizaciones en vivo dejan de funcionar sin un error claro.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream odoo { server 127.0.0.1:8069; }
upstream odoochat { server 127.0.0.1:8072; }
server {
listen 443 ssl;
server_name erp.example.com;
# las líneas ssl_certificate y ssl_certificate_key van aquí
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
location /websocket {
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;}
location / {
proxy_pass http://odoo;
}
}
Aquí hay dos configuraciones que van juntas. proxy_mode = True en la configuración de Odoo, y los encabezados X-Forwarded-Host y X-Forwarded-Proto en el proxy. Con solo una de las dos, Odoo piensa que se ejecuta en http:// y con el nombre incorrecto. Los enlaces en correos electrónicos, el sitemap y los enlaces de idioma en tu sitio web salen todos incorrectos. Nuestra guía de modo proxy lo explica línea por línea.
Para SSL, un certificado gratuito de Let’s Encrypt funciona bien. Configúralo para que se renueve solo, luego verifica que realmente lo hizo.
5. Copias de seguridad que sabes que se restaurarán
Una copia de seguridad de Odoo tiene dos partes: la base de datos y el filestore. La mayoría de las copias de seguridad caseras solo guardan la primera.
# base de datos
pg_dump -U odoo -Fc yourdb > /backups/yourdb-$(date +%F).dump
# archivos (adjuntos, imágenes, PDFs)
tar -czf /backups/yourdb-files-$(date +%F).tar.gz -C /var/lib/odoo/filestore yourdb
Luego tres reglas:
- Copia las copias de seguridad fuera del servidor. Una copia de seguridad en el mismo disco muere con el disco.
- Mantén más de una. Un cambio malo encontrado una semana después necesita una copia de seguridad de antes.
- Restaura una, en otro servidor, en un día establecido cada mes. Hasta que lo hayas hecho, no sabes si tus copias de seguridad funcionan.
Para restaurar, haz que la base de datos sea propiedad de odoo, como en el paso 2:
createdb -U odoo -O odoo yourdb_restored
pg_restore -U odoo -d yourdb_restored --no-owner --role=odoo /backups/yourdb-2026-10-01.dump
Luego pon los archivos de vuelta en filestore/yourdb_restored. Una base de datos sin filestore se abre, pero cada imagen y adjunto falta. Nuestra guía sobre cómo saber si una copia de seguridad de Odoo se restaurará cubre la prueba completa.
6. Actualizaciones
Hay tres tipos, y cada uno es tuyo.
- El servidor. Actualizaciones de seguridad para Linux, Nginx y Postgres. La mayoría puede funcionar por su cuenta. Algunos necesitan un reinicio que debes planificar.
- Correcciones de Odoo. Odoo envía correcciones de errores y de seguridad para cada versión. Descargas el nuevo código y reinicias.
- Tus módulos. Cuando cambias un módulo, ejecutas una actualización en la base de datos:
odoo -c /etc/odoo/odoo.conf -d yourdb -u your_module --stop-after-init
Una actualización cambia la base de datos. Si falla a mitad de camino, no puedes volver simplemente usando el código antiguo. Haz una copia de seguridad justo antes, y prueba la actualización en una copia primero. Esa copia es tu entorno de pruebas. En un solo VPS, lo construyes tú mismo.
7. Registros y espacio en disco
Odoo escribe una línea de registro para cada solicitud. Sin rotación de registros, el registro crece hasta que el disco está lleno, y luego Odoo se detiene. Configura logrotate para /var/log/odoo/ desde el primer día.
Vigila el disco para la base de datos, el filestore y tus copias de seguridad locales también. Los tres solo crecen.
8. Vigilándolo
Alguien tiene que saber cuándo Odoo está caído, lento o sin memoria, idealmente antes que tu equipo. Al menos, configura una verificación externa en tu página de inicio de sesión que te alerte, y revisa la memoria y el disco cada semana.
A lo que suma
Nada de esto es difícil por sí solo. La parte difícil es que nunca termina, y cada trampa de Odoo aparece una a la vez, a menudo en un día ocupado. Aprenderlas todas lleva meses, y cada una cuesta aproximadamente lo que costó el último problema.
En nuestra experiencia, un Odoo autogestionado toma 10 horas al mes para mantenerse en buen estado. Toma más en un mes malo.
Si has ejecutado Odoo en producción antes, un VPS es una buena opción y esta lista no te sorprenderá. Si no lo has hecho, compara primero el costo real: autoalojamiento vs gestionado.
Mantén tu VPS, delega el trabajo de Odoo
Hay un camino intermedio. Mantienes tu VPS, en tu cuenta y tu país. Nosotros ejecutamos Odoo en él: despliegues desde Git, staging, copias de seguridad, actualizaciones y ayuda de expertos en Odoo. Tú mantienes el servidor funcionando y lo suficientemente grande. Nuestro software se conecta desde tu servidor, así que no abres ningún puerto para nosotros.
Descubre cómo funciona usar tu propio servidor. O lee las seis formas de alojar Odoo comparadas.
Skysize está construido por exingenieros de Odoo y está certificado ISO 27001.
Habla con un experto en alojamiento de Odoo
FAQ
¿Puedo alojar Odoo en un VPS? Sí. Necesitas un servidor Linux, PostgreSQL, Odoo, un servidor web con SSL al frente, y copias de seguridad probadas. Hacerlo funcionar es rápido. Mantenerlo en buen estado requiere tiempo cada mes.
¿Qué tan grande debería ser mi VPS para Odoo? Depende de cuántas personas usen Odoo al mismo tiempo. La memoria es lo más importante. Ve cuántos Odoo workers necesitas.
¿Por qué el chat en vivo y las actualizaciones en vivo no funcionan en mi VPS? La mayoría de las veces el proxy no envía /websocket al puerto 8072. Verifica que gevent_port en la configuración de Odoo coincida con el puerto en tu proxy.
¿Por qué los enlaces en mis correos electrónicos de Odoo están en http:// o en el dominio incorrecto? Odoo no sabe que está detrás de un proxy. Establece proxy_mode = True y envía los encabezados X-Forwarded-Host y X-Forwarded-Proto.
¿Qué necesita incluir una copia de seguridad de Odoo? La base de datos y el almacenamiento de archivos. El almacenamiento de archivos contiene tus adjuntos, imágenes y PDFs, y no está en la base de datos.
¿Es más barato autoalojar Odoo? El servidor es más barato. Tu tiempo es el costo. Cuenta las horas cada mes antes de decidir.