Tutorial

Alojar Odoo 17 Community en VPS: instalación completa con Docker

Autoalojamiento10 min de lectura10 pasos

Odoo 17 Community Edition es uno de los ERP de código abierto más completos disponibles hoy en día. Gratuito, extensible y respaldado por una gran comunidad, cubre la gestión de ventas, contabilidad, inventario, recursos humanos y mucho más. Sin embargo, muchas empresas siguen pagando suscripciones SaaS por funcionalidades que podrían alojar ellas mismas en un VPS, con control total sobre sus datos. Esta guía te acompaña paso a paso para desplegar Odoo 17 Community en un VPS mediante Docker Compose, configurar las copias de seguridad, asegurar la instancia y optimizar su rendimiento.

Contenido· Por qué autoalojar Odoo Community1/12
  1. 01Por qué autoalojar Odoo Community
  2. 02Qué incluye Odoo 17 Community
  3. 03Diferencias entre Community y Enterprise
  4. 04Requisitos del VPS para alojar Odoo 17
  5. 05Instalar Odoo 17 con Docker Compose
  6. 06Configurar la base de datos y la instancia
  7. 07Configurar las copias de seguridad automáticas
  8. 08Activar los módulos clave tras la instalación
  9. 09Optimizar el rendimiento de tu instancia
  10. 10Asegurar la instancia Odoo en producción
  11. 11Consejo avanzado: integrar módulos personalizados
  12. 12Comparativa de alojamiento: VPS autoalojado vs Odoo SaaS

Por qué autoalojar Odoo Community

La versión SaaS de Odoo, comercializada a través de Odoo.sh o mediante socios, cobra por usuario y por módulo activado. Para una pyme de 10 personas que use cinco módulos, la factura mensual supera rápidamente varios cientos de euros. Un VPS desde 99 DH/mes es suficiente para ejecutar la misma instancia, sin ninguna restricción en el número de usuarios o módulos Community.

El control de los datos es el otro argumento de peso. Con una instancia autoalojada, la base de datos PostgreSQL permanece en tu servidor, en el datacenter que elijas. Ningún tercero accede a tus clientes, presupuestos, facturas ni datos de RRHH. Para empresas sujetas a requisitos de cumplimiento — sector médico, jurídico, fintech — este control no es opcional.

Finalmente, la personalización es ilimitada. Odoo Community permite instalar cualquier módulo de la comunidad o desarrollado internamente, sin restricciones del editor.

Qué incluye Odoo 17 Community

  • CRM: pipeline de ventas, leads, actividades y seguimiento de clientes
  • Ventas: presupuestos, pedidos de compra, precios y condiciones de pago
  • Contabilidad: plan de cuentas, diarios, conciliación bancaria, IVA
  • Facturación: facturas de clientes y proveedores, recordatorios automáticos, pagos
  • Inventario: gestión de stock, ubicaciones, reglas de reaprovisionamiento
  • Compras: solicitudes de compra, peticiones de oferta y seguimiento de proveedores
  • Recursos Humanos: empleados, contratos, ausencias y asistencia
  • Email Marketing: listas de correo, campañas y estadísticas de envío
  • Sitio web y e-commerce: constructor de páginas, tienda online integrada
  • Helpdesk: ticketing de clientes, SLA y portal de autoservicio

Diferencias entre Community y Enterprise

Desplace la tabla

FuncionalidadCommunityEnterpriseAlternativa open-source
Contabilidad avanzada (informes analíticos)BásicaCompletaMódulo OCA `account-financial-reporting`
Firma electrónicaNo incluidaIncluidaMódulo `sign` comunidad o Docusign
Hojas de asistencia avanzadasNo incluidaIncluidaMódulo OCA `hr-attendance`
Soporte oficial del editorForo comunidadSLA garantizadoPartner Odoo certificado
Actualizaciones automáticas (Odoo.sh)No aplicaIncluidasScript de migración manual
Número de usuariosIlimitadoIlimitado (licenciado)Sin restricciones
Precio (autoalojado)GratuitoGratuito si es autoalojado *Gratuito

Requisitos del VPS para alojar Odoo 17

Odoo es una aplicación Python/PostgreSQL que consume bastante RAM, especialmente cuando varios usuarios trabajan simultáneamente. El dimensionamiento mínimo recomendado para una pyme de 5 a 15 usuarios:

- CPU: mínimo 4 vCPU; Odoo es multiproceso y aprovecha el paralelismo
- RAM: 8 GB recomendados (4 GB funcionan para pruebas, insuficientes en producción)
- Almacenamiento: 40 GB SSD NVMe; planifica más si activas e-commerce con medios
- SO: Ubuntu 22.04 LTS o Debian 12
- Docker Engine 24+ y Docker Compose v2
- Un nombre de dominio apuntando a la IP del VPS
- Un proxy inverso (Caddy o Nginx) para gestionar TLS

Un VPS 299 DH/mes en ServOrbit.com cubre ampliamente estos requisitos.

Instalar Odoo 17 con Docker Compose

  1. Crear la estructura de directorios

    Conéctate por SSH a tu VPS y crea el árbol de trabajo:

    mkdir -p /opt/odoo/{data,addons,config,backups}
    cd /opt/odoo

    Estas carpetas albergarán los datos persistentes, módulos personalizados, configuración de Odoo y copias de seguridad respectivamente.

  2. Redactar el archivo docker-compose.yml

    Crea /opt/odoo/docker-compose.yml con el siguiente contenido:

    services:
      db:
        image: postgres:16
        restart: unless-stopped
        environment:
          POSTGRES_DB: postgres
          POSTGRES_USER: odoo
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
        volumes:
          - ./data/postgres:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U odoo"]
          interval: 10s
          retries: 5
    
      odoo:
        image: odoo:17.0
        restart: unless-stopped
        depends_on:
          db:
            condition: service_healthy
        environment:
          HOST: db
          USER: odoo
          PASSWORD: ${POSTGRES_PASSWORD}
        volumes:
          - ./data/odoo:/var/lib/odoo
          - ./addons:/mnt/extra-addons
          - ./config/odoo.conf:/etc/odoo/odoo.conf
        ports:
          - "127.0.0.1:8069:8069"
          - "127.0.0.1:8072:8072"
  3. Crear el archivo .env y la configuración de Odoo

    Crea /opt/odoo/.env:

    POSTGRES_PASSWORD=$(openssl rand -hex 32)
    echo "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}" > /opt/odoo/.env

    Luego crea /opt/odoo/config/odoo.conf:

    [options]
    db_host = db
    db_port = 5432
    db_user = odoo
    db_password = ${POSTGRES_PASSWORD}
    addons_path = /usr/lib/python3/dist-packages/odoo/addons,/mnt/extra-addons
    admin_passwd = REEMPLAZAR_CON_CONTRASEÑA_FUERTE
    without_demo = all
    workers = 4
    max_cron_threads = 2
    limit_memory_hard = 2684354560
    limit_memory_soft = 2147483648
  4. Configurar el proxy inverso con Caddy

    Caddy es la opción más sencilla: gestiona TLS automáticamente mediante Let's Encrypt. Instálalo y crea /etc/caddy/Caddyfile:

    odoo.tudominio.com {
        reverse_proxy 127.0.0.1:8069
    
        handle /websocket {
            reverse_proxy 127.0.0.1:8072
        }
    
        header {
            X-Frame-Options SAMEORIGIN
            X-Content-Type-Options nosniff
            Strict-Transport-Security "max-age=31536000; includeSubDomains"
        }
    
        encode gzip
    }

    Recarga Caddy: systemctl reload caddy.

  5. Iniciar los contenedores

    Desde /opt/odoo, ejecuta:

    docker compose up -d

    Sigue los logs de arranque:

    docker compose logs -f odoo

    Odoo tarda 30 a 60 segundos en inicializarse. Verás HTTP service (werkzeug) running cuando esté listo.

  6. Acceder a la interfaz y crear la base de datos

    Abre https://odoo.tudominio.com/web/database/manager en tu navegador. Introduce la contraseña maestra (admin_passwd) definida en odoo.conf, elige un nombre de base de datos, idioma y correo de administrador, luego haz clic en Crear. La primera inicialización tarda de 2 a 5 minutos según los módulos seleccionados.

Configurar la base de datos y la instancia

Tras la creación de la base de datos, Odoo te redirige a la interfaz principal. Lo primero que hay que hacer es verificar la contraseña maestra en Ajustes > Técnico > Contraseña maestra. Esta contraseña protege el acceso al gestor de bases de datos — debe ser larga y única.

En Ajustes > General, configura el nombre de la empresa, la moneda base, la zona horaria y la dirección. Estos parámetros influyen en los documentos generados (facturas, pedidos de compra).

Configurar las copias de seguridad automáticas

Una instancia Odoo en producción sin copias de seguridad es una deuda técnica inmediata. La estrategia recomendada se basa en dos niveles.

Volcado diario de PostgreSQL con un script cron:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/opt/odoo/backups
DB_NAME=tu_base_de_datos

docker compose -f /opt/odoo/docker-compose.yml exec -T db \
  pg_dump -U odoo ${DB_NAME} | gzip > ${BACKUP_DIR}/odoo_${DATE}.sql.gz

# Conservar 7 días
find ${BACKUP_DIR} -name "odoo_*.sql.gz" -mtime +7 -delete

Planifica este script en /etc/cron.d/odoo-backup para ejecutarse a las 02:00 cada noche.

Copia de seguridad de volúmenes: la carpeta /opt/odoo/data/odoo contiene adjuntos, imágenes y archivos subidos. Sincronízala diariamente con almacenamiento de objetos usando rclone o restic.

Activar los módulos clave tras la instalación

  • Ventas (sale_management): presupuestos, pedidos, portal de clientes
  • Contabilidad (account_accountant): plan de cuentas, IVA, conciliación bancaria
  • Inventario (stock): gestión multialmacén, lotes y números de serie
  • Compras (purchase): solicitudes de compra, licitaciones, facturación a proveedores
  • Recursos Humanos (hr): ficha de empleado, estructura organizativa, documentos RRHH
  • Helpdesk (helpdesk): ticketing, SLA, portal de autoservicio del cliente
  • Sitio web (website): constructor de páginas, blog, formularios de contacto
  • E-Commerce (website_sale): tienda online, carrito, pago

Optimizar el rendimiento de tu instancia

  1. Ajustar el número de workers

    En odoo.conf, el parámetro workers controla el número de procesos Python que gestionan las solicitudes HTTP. La regla práctica: workers = (vCPU × 2) + 1. En un VPS de 4 vCPU, fija workers = 4.

  2. Configurar los límites de memoria

    Odoo mata los workers que superan los límites definidos para evitar fugas de memoria.

    limit_memory_soft = 2147483648   # 2 GB: señal de fin gracioso
    limit_memory_hard = 2684354560   # 2,5 GB: kill inmediato
  3. Limitar los crons para no saturar la CPU

    El parámetro max_cron_threads = 2 reserva 2 hilos para tareas planificadas. Más allá, los crons compiten con los workers HTTP. En un servidor dedicado a Odoo, puedes subir a 4, pero empieza de forma conservadora.

  4. Activar el almacenamiento de sesiones Redis (opcional)

    Por defecto, Odoo almacena las sesiones en disco. Añade un servicio Redis a docker-compose.yml y configura:

    session_store = redis
    redis_url = redis://redis:6379

Asegurar la instancia Odoo en producción

La seguridad de una instancia Odoo se basa en varias capas complementarias.

Desactivar el gestor de bases de datos en producción es la medida más importante. Añade en odoo.conf:

dbfilter = ^tu_base$
list_db = False

list_db = False oculta la interfaz de gestión e impide la enumeración de bases de datos.

Forzar TLS: Caddy lo gestiona de forma nativa.

Fail2ban: configura una jaula para intentos de inicio de sesión fallidos en /web/login.

Contraseña maestra robusta: esta contraseña debe tener al menos 32 caracteres alfanuméricos generados aleatoriamente.

Consejo avanzado: integrar módulos personalizados

La carpeta /opt/odoo/addons está montada en el contenedor en /mnt/extra-addons. Para instalar un módulo de la comunidad (OCA o desarrollado internamente), colócalo en esta carpeta y añade la ruta a addons_path en odoo.conf.

Tras añadir un módulo, reinicia Odoo (docker compose restart odoo), luego ve a Ajustes > Aplicaciones > Actualizar lista de aplicaciones. El módulo aparece en la lista y se instala como cualquier módulo nativo.

Comparativa de alojamiento: VPS autoalojado vs Odoo SaaS

Desplace la tabla

CriterioVPS autoalojado (ServOrbit.com)Odoo.sh / SaaS socio
Coste mensual (10 usuarios)Desde 99 DH/mes150 a 500 € según módulos
Control de datosTotal — datos en tu servidorDatos con el editor o el socio
Módulos CommunityTodos disponibles, sin restriccionesDepende del plan y el socio
Módulos EnterpriseNo incluidos (licencia separada)Incluidos en la suscripción
Copias de seguridadA tu cargo, configurablesGestionadas por la plataforma
ActualizacionesManuales (migración mayor)Gestionadas (actualización asistida)
PersonalizaciónIlimitadaRestringida o facturable
Habilidades requeridasAdministración Linux, DockerSin necesidad de conocimientos de servidor
Soporte técnicoComunidad + socio a elecciónSLA según contrato con el editor

Despliega tu ERP con total autonomía

ServOrbit.com ofrece VPS optimizados para cargas de trabajo exigentes como Odoo. Recursos dedicados, SSD NVMe, soporte técnico ágil — todo lo necesario para ejecutar tu ERP en producción.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva