---
title: "Odoo com Docker Compose e hospedagem em um clique"
description: "O Odoo é um sistema de gestão open source: CRM, vendas, faturamento, inventário, site e mais num só lugar. Auto-hospede o Odoo Community em um clique."
---

[← Todos os templates](https://pethost.dev/pt/templates/) · [Produtividade](https://pethost.dev/pt/templates/productivity/)

# Faça deploy de Odoo em um clique

Apps de negócios num só lugar: CRM, vendas, faturamento, inventário, site, projetos e mais

Uma alternativa auto-hospedada para Salesforce, SAP Business One e NetSuite.

[Fazer deploy no Pethost](https://console.pethost.dev/?template=odoo)

## O que é Odoo?

O Odoo é uma suíte de apps de negócios de código aberto que funcionam sozinhos ou juntos, como um só ERP. Uma empresa pequena gerencia, no mesmo banco de dados, o CRM e o funil de vendas, cotações e faturas, compras e inventário, fabricação, projetos e planilhas de horas, funcionários e folgas, um ponto de venda, um site com loja online, marketing por e-mail, eventos e chat ao vivo, então uma oportunidade ganha vira um pedido, uma entrega e uma fatura sem ser digitada de novo.

Cada app é instalado pelo menu Aplicativos do Odoo quando você precisar dele, e todos os usuários entram na mesma interface web, com direitos de acesso por app. O Odoo Community, a edição gratuita, tem os apps acima; a Odoo S.A. vende o Odoo Enterprise, que adiciona a contabilidade completa e os apps Estúdio, Central de Ajuda, Documentos, Assinatura de Documentos, Planejamento, Serviço de Campo e Conhecimento.

Este template roda o Odoo Community a partir da imagem oficial do Odoo, versão 20, com um banco de dados Postgres 18 que o Novo projeto cria ao lado dele, ou um dos seus que você escolher. O banco de dados é inicializado, e o administrador recebe o e-mail e a senha que você digita, antes de o Odoo responder a qualquer pessoa; o gerenciador de bancos de dados continua fechado, e os clientes só se cadastram com convite. Os e-mails dele saem pelo Resend, SendGrid ou Amazon SES, o que você escolher no Novo projeto, e nenhum sai até você escolher um.

## Hospedagem de Odoo no Pethost

1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
2. Novo projeto abre em Odoo. Você preenche o que ele pede e clica em Criar projeto: **E-mail**, **Senha do administrador**.
3. O e-mail é opcional: para o app Odoo enviar e-mails, você escolhe **Resend**, **SendGrid** ou **Amazon SES** no Novo projeto e cola o que o provedor te dá.
4. Novo projeto também cria um banco de dados novo para Odoo e conecta os dois antes de o app iniciar pela primeira vez: **[Postgres](https://pethost.dev/pt/postgres/)** (512 MB). Ou você escolhe um dos seus bancos **Postgres**: o app Odoo ganha nele um usuário e um banco de dados próprios, que os outros apps de lá não conseguem ler, e todos os apps desse banco entram no mesmo backup e são restaurados juntos.
5. Em um ou dois minutos Odoo está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
6. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

## Perguntas sobre Odoo

**O Odoo é gratuito?**

O Odoo Community é de código aberto sob a LGPL-3.0 e de uso gratuito para qualquer número de usuários. O Odoo Enterprise é pago por usuário e adiciona apps como a contabilidade completa, Estúdio, Central de Ajuda e Documentos.

**Quais apps vêm no Odoo Community?**

Entre outros, CRM, Vendas, Faturamento, Compras, Inventário, Fabricação, Projeto, Funcionários, Folga, Ponto de Venda, Site, e-Commerce, Marketing por e-mail, Eventos, Pesquisas, Chat ao Vivo e Mensagens.

**Odoo ou Salesforce: qual é a diferença?**

O Salesforce é um CRM vendido por usuário, na nuvem da própria empresa. O CRM do Odoo é um app entre muitos: o mesmo banco de dados também guarda vendas, faturamento, inventário e projetos, e o Odoo Community não custa nada para rodar.

**Posso adicionar módulos da Odoo App Store?**

Sim. Um módulo feito para o Odoo 20 Community é copiado para o volume addons, em /mnt/extra-addons no serviço odoo; depois, “Atualizar lista de aplicativos”, em Aplicativos, com o modo de desenvolvedor ativado, mostra o módulo para instalar.

**O Odoo Community tem contabilidade?**

Tem o app Faturamento: faturas de clientes e de fornecedores, pagamentos, impostos e o plano de contas do seu país. A contabilidade completa, com sincronização e conciliação bancárias, relatórios financeiros e as ferramentas do contador, fica no Odoo Enterprise.

**De quanta memória e disco Odoo precisa?**

O Odoo usa cerca de 150 MB de memória ao lado do seu Postgres de 512 MB, mais à medida que você instala e usa apps; os anexos ocupam o que os arquivos deles ocupam. Novo projeto dá a cada banco de dados do app a memória que o template recomenda, a menos que você a mude: Postgres (512 MB). No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

## Arquivo Docker Compose de Odoo

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito. A máquina grava ali como o app entra nos seus bancos de dados, ao conectá-los. Novo projeto grava ali as configurações de e-mail escolhidas nele, ou as deixa vazias quando o app não envia e-mail.

**Containers:** odoo (odoo:20).

**Bancos de dados, cada um como projeto próprio:** [Postgres](https://pethost.dev/pt/postgres/) (512 MB).

**Volumes, no backup noturno:** 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)[Ver no GitHub](https://github.com/pethost-dev/templates/tree/main/odoo)

## [Mais em Produtividade](https://pethost.dev/pt/templates/productivity/)

- [**Mealie**Um gerenciador de receitas e planejador de refeições](https://pethost.dev/pt/templates/mealie/)
- [**Ryot**Um app para acompanhar filmes, séries, livros, jogos e treinos](https://pethost.dev/pt/templates/ryot/)
- [**Vikunja**Listas de tarefas e projetos, com visões kanban e Gantt](https://pethost.dev/pt/templates/vikunja/)
- [**Excalidraw**Quadro branco para diagramas e esboços em estilo desenhado à mão, com colaboração ao vivo](https://pethost.dev/pt/templates/excalidraw/)
- [**NocoDB**Um banco de dados no-code: tabelas como planilhas, formulários, quadros kanban e calendários, com uma API](https://pethost.dev/pt/templates/nocodb/)
- [**PLANKA**Quadros kanban para projetos e equipes, atualizados para todos em tempo real](https://pethost.dev/pt/templates/planka/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/pt/templates/)
- [Sobre nós](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/pt/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Termos](https://pethost.dev/terms/)
- [Privacidade](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bancos de dados

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

Comparativos

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/pt/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/pt/blog/coolify-cloud-vs-dokploy-cloud/)
- [Preços Railway vs Render vs Fly.io](https://pethost.dev/pt/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hospedagem gerenciada de Docker Compose](https://pethost.dev/pt/blog/managed-docker-compose-hosting/)

Alternativas

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