---
title: "Odoo con Docker Compose y hosting en un clic"
description: "Odoo, software empresarial de código abierto: CRM, ventas, facturación, inventario, sitio web y más, todo en uno. Autoaloja Odoo Community en un clic."
---

[← Todas las plantillas](https://pethost.dev/es/templates/) · [Productividad](https://pethost.dev/es/templates/productivity/)

# Despliega Odoo en un clic

Aplicaciones empresariales en una sola suite: CRM, ventas, facturación, inventario, sitio web, proyectos y más

Una alternativa autoalojada a Salesforce, SAP Business One y NetSuite.

[Desplegar en Pethost](https://console.pethost.dev/?template=odoo)

## ¿Qué es Odoo?

Odoo es una suite de aplicaciones empresariales de código abierto que funcionan por separado o juntas como un solo ERP. Una pequeña empresa lleva desde la misma base de datos su CRM y su flujo de ventas, presupuestos y facturas, compras e inventario, fabricación, proyectos y partes de horas, empleados y ausencias, un punto de venta, un sitio web con tienda en línea, marketing por correo electrónico, eventos y chat en tiempo real, así que una oportunidad ganada se convierte en un pedido, una entrega y una factura sin volver a escribir nada.

Cada aplicación se instala desde el menú Aplicaciones de Odoo cuando la necesitas, y todos los usuarios inician sesión en la misma interfaz web, con permisos de acceso por aplicación. Odoo Community, la edición gratuita, tiene las aplicaciones anteriores; Odoo S.A. vende Odoo Enterprise, que agrega la contabilidad completa, Studio, Servicio de asistencia, Documentos, Firma electrónica, Planificación, Servicio de campo e Información.

Esta plantilla ejecuta Odoo Community con la imagen oficial de Odoo, versión 20, y una base de datos Postgres 18 que Nuevo proyecto crea a su lado, o una de las tuyas que elijas. La base de datos se inicializa y el administrador recibe el correo y la contraseña que escribes antes de que Odoo responda a nadie; la página “Gestionar bases de datos” sigue cerrada, y los clientes solo se registran por invitación. Su correo sale por Resend, SendGrid o Amazon SES, el que elijas en Nuevo proyecto, y no envía ninguno hasta que elijas uno.

## Hosting de Odoo en Pethost

1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
2. Nuevo proyecto se abre en Odoo. Rellenas lo que pide y haces clic en Crear proyecto: **Correo electrónico**, **Contraseña de administrador**.
3. El correo es opcional: para que Odoo lo envíe, eliges **Resend**, **SendGrid** o **Amazon SES** en Nuevo proyecto y pegas lo que te da el proveedor.
4. Nuevo proyecto también crea una base de datos nueva para Odoo y la conecta antes de que la app arranque por primera vez: **[Postgres](https://pethost.dev/es/postgres/)** (512 MB). O eliges una de tus bases de datos **Postgres**: Odoo recibe en ella un usuario y una base de datos propios, que las demás apps de allí no pueden leer, y todas las apps que la usan comparten el backup y se restauran juntas.
5. En un par de minutos Odoo está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
6. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

## Preguntas sobre Odoo

**¿Odoo es gratis?**

Odoo Community es de código abierto bajo la LGPL-3.0 y gratis para cualquier número de usuarios. Odoo Enterprise se paga por usuario y agrega aplicaciones como la contabilidad completa, Studio, Servicio de asistencia y Documentos.

**¿Qué aplicaciones tiene Odoo Community?**

Entre otras, CRM, Ventas, Facturación, Compra, Inventario, Fabricación, Proyecto, Empleados, Ausencias, Punto de venta, Sitio web, Comercio electrónico, Marketing por correo electrónico, Eventos, Encuestas, Chat en directo y Conversaciones.

**Odoo frente a Salesforce: ¿en qué se diferencian?**

Salesforce es un CRM que se vende por usuario en su propia nube. El CRM de Odoo es una aplicación entre muchas: la misma base de datos guarda también las ventas, la facturación, el inventario y los proyectos, y ejecutar Odoo Community no cuesta nada.

**¿Puedo agregar módulos de la Odoo App Store?**

Sí. Un módulo hecho para Odoo 20 Community se copia en el volumen addons, en /mnt/extra-addons del servicio odoo; luego, con el modo de desarrollador activado, “Actualizar lista de aplicaciones” en Aplicaciones lo muestra para instalarlo.

**¿Odoo Community tiene contabilidad?**

Tiene Facturación: facturas de cliente y facturas de proveedores, pagos, impuestos y el plan contable de tu país. La contabilidad completa, con sincronización y conciliación bancaria, informes financieros y las herramientas para quien lleva la contabilidad, está en Odoo Enterprise.

**¿Cuánta memoria y disco necesita Odoo?**

Odoo ocupa unos 150 MB de memoria junto a su Postgres de 512 MB, y más a medida que instalas y usas aplicaciones; los adjuntos ocupan lo que ocupan sus archivos. Nuevo proyecto da a cada base de datos de la app la memoria que recomienda la plantilla, salvo que la cambies: Postgres (512 MB). En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

## El archivo Docker Compose de Odoo

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito. La máquina escribe allí cómo inicia sesión la app en sus bases de datos, al conectarlas. Nuevo proyecto escribe los ajustes de correo elegidos en él, o los deja vacíos si la app no envía correo.

**Contenedores:** odoo (odoo:20).

**Bases de datos, cada una un proyecto propio:** [Postgres](https://pethost.dev/es/postgres/) (512 MB).

**Volúmenes, en el backup de cada noche:** data, addons.

```
services:
  odoo:
    image: odoo:20
    restart: unless-stopped
    environment:
      PGHOST: ${DATABASE_HOST:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGPORT: ${DATABASE_PORT:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGUSER: ${DATABASE_USER:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGPASSWORD: ${DATABASE_PASSWORD:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      PGDATABASE: ${DATABASE_NAME:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      # Odoo's bus and cron listen on this database: the app's own, as it may reach no other.
      PGDATABASE_SYSTEM: ${DATABASE_NAME:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      MASTER_PASSWORD: ${MASTER_PASSWORD}
      # The mail provider picked in New project, by STARTTLS on its port; with none, Odoo sends no
      # mail until an outgoing mail server is added in its settings.
      SMTP_HOST: ${SMTP_HOST}
      SMTP_PORT: ${SMTP_PORT}
      SMTP_USER: ${SMTP_USER}
      SMTP_PASSWORD: ${SMTP_PASSWORD}
      SMTP_FROM: ${SMTP_FROM}
    # The configuration is written at every start from the lines above: one database, the
    # database manager closed, the proxy's headers trusted, and a pool within the connections the
    # Postgres part gives. A new database is initialised before Odoo answers anyone, with
    # auth_signup, which turns free sign-up on when it is installed: so it is installed here, and
    # sign-up set to "On invitation" in the step that gives Odoo's administrator, whose login Odoo
    # makes "admin" with the password "admin", the email and password of the fields. A start that
    # finds auth_signup not installed, or the login still "admin", does what an earlier start left
    # undone.
    command:
      - bash
      - -c
      - |
        set -e
        {
          echo "[options]"
          echo "addons_path = /mnt/extra-addons"
          echo "data_dir = /var/lib/odoo"
          echo "http_interface = 0.0.0.0"
          echo "admin_passwd = $$MASTER_PASSWORD"
          echo "db_name = $$PGDATABASE"
          echo "dbfilter = ^$$PGDATABASE\$$"
          echo "list_db = False"
          echo "proxy_mode = True"
          echo "db_maxconn = 24"
          echo "max_cron_threads = 1"
          if [ -n "$$SMTP_HOST" ]; then
            echo "smtp_server = $$SMTP_HOST"
            echo "smtp_port = $$SMTP_PORT"
            echo "smtp_ssl = True"
            echo "smtp_user = $$SMTP_USER"
            echo "smtp_password = $$SMTP_PASSWORD"
            echo "email_from = $$SMTP_FROM"
          fi
        } > /etc/odoo/odoo.conf
        wait-for-psql.py --timeout=120
        installed="select 1 from ir_module_module where name = 'auth_signup' and state = 'installed'"
        if [ -z "$$(psql -tAc "$$installed" 2>/dev/null)" ]; then
          psql -c 'create extension if not exists pg_trgm'
          odoo -d "$$PGDATABASE" -i base,auth_signup --stop-after-init --no-http
        fi
        admin="select u.login from res_users u join ir_model_data d on d.res_id = u.id where d.module = 'base' and d.name = 'user_admin'"
        if [ "$$(psql -tAc "$$admin" 2>/dev/null)" = admin ]; then
          odoo shell -d "$$PGDATABASE" --no-http <<'PYTHON'
        import os
        admin = env.ref('base.user_admin')
        admin.write({'login': os.environ['ADMIN_EMAIL'], 'email': os.environ['ADMIN_EMAIL'], 'password': os.environ['ADMIN_PASSWORD']})
        env['ir.config_parameter'].set_str('auth_signup.invitation_scope', 'b2b')
        env.cr.commit()
        PYTHON
        fi
        exec odoo
    volumes:
      # Attachments, sessions and the files of installed apps.
      - data:/var/lib/odoo
      - addons:/mnt/extra-addons
    healthcheck:
      test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8069/web/health"]
      interval: 10s
      timeout: 5s
      retries: 30
      start_period: 300s
volumes:
  data:
  addons:
```

[compose.yaml](https://pethost.dev/templates/odoo/compose.yaml)[Verla en GitHub](https://github.com/pethost-dev/templates/tree/main/odoo)

## [Más en Productividad](https://pethost.dev/es/templates/productivity/)

- [**Mealie**Un administrador de recetas y planificador de comidas](https://pethost.dev/es/templates/mealie/)
- [**Ryot**Seguimiento de películas, series, libros, juegos y entrenamientos](https://pethost.dev/es/templates/ryot/)
- [**Vikunja**Listas de tareas y proyectos, con vistas kanban y Gantt](https://pethost.dev/es/templates/vikunja/)
- [**Excalidraw**Una pizarra para diagramas y bocetos dibujados a mano, con colaboración en tiempo real](https://pethost.dev/es/templates/excalidraw/)
- [**NocoDB**Una base de datos sin código: tablas como hojas de cálculo, formularios, tableros kanban y calendarios, con API](https://pethost.dev/es/templates/nocodb/)
- [**PLANKA**Tableros kanban para proyectos y equipos, actualizados para todos en tiempo real](https://pethost.dev/es/templates/planka/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Plantillas](https://pethost.dev/es/templates/)
- [Sobre nosotros](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/es/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Términos](https://pethost.dev/terms/)
- [Privacidad](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de datos

- [Postgres](https://pethost.dev/es/postgres/)

Comparativas

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/es/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/es/blog/coolify-cloud-vs-dokploy-cloud/)
- [Precios de Railway vs Render vs Fly.io](https://pethost.dev/es/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hosting gestionado para Docker Compose](https://pethost.dev/es/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas a Railway](https://pethost.dev/es/blog/railway-alternatives/)
- [Alternativas a Heroku](https://pethost.dev/es/blog/heroku-alternatives/)
- [Alternativas a Dokploy](https://pethost.dev/es/blog/dokploy-alternatives/)
- [Alternativas a Coolify](https://pethost.dev/es/blog/coolify-alternatives/)
- [Alternativas a Render](https://pethost.dev/es/blog/render-alternatives/)
- [Alternativas a Sliplane](https://pethost.dev/es/blog/sliplane-alternatives/)
