Escolher um CRM auto-hospedado não é apenas encontrar um lugar para armazenar contatos e acompanhar negociações. A questão maior é o que você vai precisar depois que o CRM estiver em funcionamento.

Uma pequena empresa pode começar com leads, contatos, oportunidades e atividades de vendas. Mais tarde, pode precisar de orçamentos, faturamento, estoque, compras, contabilidade ou outras ferramentas de gestão. Manter um aplicativo separado para cada necessidade pode tornar a configuração difícil de administrar.

Existem várias plataformas de CRM auto-hospedadas disponíveis hoje, e o Odoo é uma delas. O Odoo pode funcionar como CRM primeiro e crescer para uma plataforma mais ampla de gestão empresarial quando você precisar de mais do que CRM.

Se você está considerando o Odoo para auto-hospedagem, pode instalá-lo com Docker ou diretamente a partir do código-fonte em um servidor Linux.

Este guia cobre os dois métodos.

Primeiro vamos configurar o Odoo com Docker e PostgreSQL. Depois, vamos instalar o Odoo a partir do código-fonte e ver o trabalho adicional envolvido em administrá-lo diretamente no servidor.

Vale a pena hospedar por conta própria ou contratar um fornecedor de CRM personalizado?

Antes de investir tempo em um CRM, decida se você quer hospedá-lo e administrá-lo por conta própria ou trabalhar com um fornecedor especializado em desenvolvimento de CRM personalizado.

Hospede o CRM por conta própria se seu objetivo principal for aprender, avaliar os recursos, configurar recursos padrão e determinar se ele se encaixa no seu negócio.

Escolha um fornecedor de CRM quando você precisar de uma solução pronta para produção (production-ready), personalização significativa, integrações, migração de dados, fluxos de trabalho especializados ou suporte técnico contínuo.

Se você escolher um fornecedor, avalie-o com cuidado antes de tomar a decisão de compra. Não escolha um apenas com base no preço ou em uma demonstração convincente. Verifique a experiência dele com CRM, a capacidade técnica, o entendimento do seu negócio, projetos anteriores, a abordagem de personalização, o suporte, a capacidade de atualização e o custo total de longo prazo.

Um bom fornecedor deve primeiro determinar se seus requisitos podem ser atendidos por recursos padrão de CRM ou configuração. O desenvolvimento personalizado só deve ser recomendado quando for genuinamente necessário.

Se você prefere administrar o sistema por conta própria, o restante deste guia explica como avaliar e hospedar o Odoo usando Docker ou uma instalação a partir do código-fonte.

Antes de entrar na instalação, deixe-me apresentar brevemente o Odoo, seus recursos, as edições disponíveis e as diferenças entre elas. Isso dá uma ideia básica do que o Odoo oferece antes de começarmos a configurá-lo.

O que é o Odoo?

O Odoo é uma plataforma de aplicações empresariais que inclui CRM junto com aplicativos para vendas, contabilidade, estoque, compras, manufatura, gestão de projetos, sites, marketing e outras funções empresariais.

Os aplicativos do Odoo usam um banco de dados comum. Isso permite que diferentes partes do sistema trabalhem com os mesmos clientes, produtos, pedidos, faturas e outros registros de negócio.

Por exemplo, uma equipe de vendas pode gerenciar uma oportunidade no CRM, criar um orçamento, confirmar a venda e seguir com o faturamento e a entrega. O fluxo de trabalho disponível depende dos aplicativos que você instalar e configurar.

O Odoo é, portanto, mais amplo do que um CRM tradicional. Você pode usar apenas os aplicativos de que precisa e adicionar outros depois.

Recursos do Odoo

O Odoo oferece aplicativos para diferentes áreas de negócio:

O aplicativo de CRM inclui recursos como leads, oportunidades, pipelines de vendas, atividades, orçamentos, atribuição de leads, pontuação de leads e relatórios de vendas.

Você não precisa instalar todos os aplicativos. Uma instalação auto-hospedada pode começar com o CRM e os aplicativos de que você realmente precisa.

Odoo Community vs Enterprise

O Odoo está disponível em duas edições: Community e Enterprise.

A Community é a edição de código aberto e é licenciada sob a LGPLv3. A Enterprise inclui o código da Community junto com aplicativos e recursos proprietários adicionais. O software Enterprise é coberto pela Licença da Edição Enterprise do Odoo.

Para quem planeja uma instalação auto-hospedada, as principais diferenças são:

Os recursos exatos incluídos em cada edição podem mudar entre as versões do Odoo. Consulte a documentação da versão específica do Odoo antes de instalar módulos adicionais.

Hospedagem e instalação são coisas diferentes

Community e Enterprise são edições do Odoo. Docker, instalação a partir do código-fonte, Odoo Online e Odoo.sh descrevem como ou onde o Odoo é executado. Não são edições separadas do Odoo.

Essa distinção é importante ao planejar uma instalação auto-hospedada.

Com a auto-hospedagem, você administra o servidor Linux, a instalação do Odoo, o banco de dados PostgreSQL, o armazenamento, os backups, as atualizações e o acesso à rede.

Existem várias maneiras de instalar o Odoo em seu próprio servidor. Neste guia, vamos cobrir duas delas:

  • Docker: o Odoo e o PostgreSQL rodam em contêineres.
  • Instalação a partir do código-fonte: o Odoo roda diretamente em um ambiente Linux com as dependências necessárias.

O restante deste guia se concentra nesses dois métodos de auto-hospedagem.

Método 1: hospedar o Odoo por conta própria com Docker

O Docker torna o Odoo fácil de executar e de manter. Você obtém uma instalação limpa, backups simples e um caminho fácil para atualizar depois.

Presumo que você esteja confortável com comandos básicos de Docker e Linux. O guia percorre uma configuração real, de um servidor vazio até uma instância do Odoo funcionando.

O que você precisa

Verifique primeiro sua versão do Docker:

docker --version
docker compose version

Se você vir números de versão para ambos, está pronto. Se não, instale o Docker:

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER

Saia e entre novamente depois deste último comando. Isso permite executar o Docker sem sudo.

Passo 1: criar uma pasta de projeto

mkdir odoo-docker && cd odoo-docker
mkdir config addons

A pasta config guarda as configurações do Odoo. A pasta addons guarda módulos personalizados, caso você adicione algum depois.

Passo 2: criar o arquivo de ambiente

O Odoo precisa de uma senha de banco de dados. Guarde-a em um arquivo .env, não no arquivo compose. Isso mantém sua senha fora do controle de versão.

cat > .env << 'EOF'
DB_PASSWORD=change_me_to_a_strong_password
EOF

Substitua a senha por uma de verdade. Use um gerenciador de senhas para gerá-la.

Passo 3: escrever o arquivo Docker Compose

Crie docker-compose.yml com este conteúdo:

services:
db:
image: postgres:18
restart: unless-stopped
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=${DB_PASSWORD}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
healthcheck:
test: ["CMD-SHELL", "pg_isready -U odoo"]
interval: 10s
timeout: 5s
retries: 5
odoo:
image: odoo:19.0
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8069:8069"
- "8072:8072"
environment:
- HOST=db
- USER=odoo
- PASSWORD=${DB_PASSWORD}
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
volumes:
odoo-db-data:
odoo-web-data:

Este arquivo define dois serviços: db (PostgreSQL) e odoo (o aplicativo). Eles se comunicam pela rede interna do Docker. Você não precisa expor a porta do banco de dados para o exterior.

Observação: se você quiser acessar o painel do Odoo apenas do seu sistema local, altere estas linhas:

ports:
- "8069:8069"
- "8072:8072"

para:

ports:
- "127.0.0.1:8069:8069"
- "127.0.0.1:8072:8072"

Passo 4: adicionar uma configuração básica do Odoo

Crie config/odoo.conf:

nano config/odoo.conf

com o seguinte conteúdo:

[options]
addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo
admin_passwd = change_me_master_password

A admin_passwd é diferente da senha do banco de dados. Ela protege a criação e a exclusão de bancos de dados dentro da própria interface do Odoo. Defina-a com um valor forte e exclusivo.

Passo 5: iniciar a pilha

docker compose up -d

Verifique se os dois contêineres estão em execução:

docker compose ps

Você deve ver db e odoo com status Up ou healthy.

Passo 6: abrir o Odoo

Acesse http://your-server-ip:8069 no navegador. Se você estiver no próprio servidor, use http://localhost:8069.

O Odoo mostra uma tela de criação de banco de dados. Preencha:

  • Senha mestra (a admin_passwd que você definiu)
  • Nome do banco de dados
  • Seu e-mail e senha (isso se torna seu login de administrador)

Clique em Create Database.

O Odoo cria seu primeiro banco de dados. Isso leva de um a dois minutos.

Depois que o banco de dados for criado, você será redirecionado automaticamente para o painel web do Odoo.

Agora você tem uma instância funcional do Odoo 19 rodando no Docker, com o PostgreSQL 18 por trás.

A configuração usa volumes nomeados para segurança dos dados, mantém as portas locais até você adicionar um proxy reverso e separa a senha do banco de dados da senha mestra do Odoo.

Próximos passos: configure HTTPS com um proxy reverso, agende backups automáticos e teste uma restauração antes de colocar dados reais de clientes no sistema.

Se as portas estiverem vinculadas a 127.0.0.1

Se o arquivo compose expõe as portas apenas para 127.0.0.1, o Odoo ainda não estará acessível de fora do seu servidor. Isso é por segurança.

Você deve colocar um proxy reverso (nginx ou Caddy) na frente do Odoo. O proxy cuida do HTTPS e encaminha o tráfego para a porta 8069. Executar o Odoo diretamente na internet pública sem HTTPS não é seguro.

Um bloco de site nginx mínimo fica assim:

server {
listen 443 ssl;
server_name crm.example.com;
ssl_certificate /etc/letsencrypt/live/crm.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/crm.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8069;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /longpolling {
proxy_pass http://127.0.0.1:8072;
}
}

Depois de adicionar um proxy reverso, adicione esta linha a config/odoo.conf:

proxy_mode = True

Isso diz ao Odoo para confiar nos cabeçalhos do proxy. Sem isso, o Odoo pode gerar links errados e loops de redirecionamento.

Backups

Seus dados ficam em dois volumes do Docker: odoo-db-data e odoo-web-data. Faça backup dos dois, não apenas de um. O banco de dados guarda seus registros. O filestore guarda arquivos enviados e anexos.

Backup do banco de dados:

docker compose exec db pg_dump -U odoo -d your_database_name > backup.sql

Backup do filestore:

docker run --rm -v odoo-docker_odoo-web-data:/data -v $(pwd):/backup alpine \
tar czf /backup/filestore-backup.tar.gz -C /data .

Execute os dois comandos em uma agenda com cron. Teste seu processo de restauração pelo menos uma vez. Um backup que você nunca testou não é um backup de verdade.

Atualizando o Odoo

O Odoo fornece builds noturnos para cada versão principal. Para atualizar dentro da mesma versão:

docker compose pull
docker compose up -d

Isso baixa a imagem mais recente do Odoo 19 e reinicia o contêiner. Seus dados permanecem nos volumes, então isso é seguro para atualizações menores.

Atualizações de versão principal (por exemplo, 19 para 20) exigem um processo diferente. O Odoo não oferece suporte a atualizações principais no local apenas com Docker. Teste atualizações principais em uma cópia do seu banco de dados primeiro.

Problemas comuns

Método 2: instalar o Odoo a partir do código-fonte

Esta instalação foi testada com:

Operating System: Ubuntu 26.04 LTS
RAM:              8 GB
Disk:             30 GB
Odoo:             19.0 Community
Python:           3.14.4
Git:              2.53.0
PostgreSQL:       Ubuntu PostgreSQL package
Installation:     Odoo source installation
Purpose:          Test / learning VM

Isso é destinado a aprendizado e avaliação, não a implantação em produção.

Por que instalar a partir do código-fonte?

O Odoo oferece instalações empacotadas e a partir do código-fonte.

Para esta VM usamos a instalação a partir do código-fonte porque o pacote .deb do Odoo 19 atualmente documenta suporte para Ubuntu 24.04 LTS (Noble), enquanto esta VM usa Ubuntu 26.04.

A instalação a partir do código-fonte permite executar o Odoo diretamente da árvore de código do Git e também é útil para aprendizado, desenvolvimento, personalização e execução de várias versões do Odoo.

Instalar o PostgreSQL

Atualize o Ubuntu:

sudo apt update
sudo apt upgrade -y

Instale o PostgreSQL:

sudo apt install -y postgresql postgresql-client

Verifique:

sudo systemctl is-active postgresql

Saída esperada:

active

Verifique o PostgreSQL:

psql -l

Inicialmente você deve ver:

postgres
template0
template1

Instalar Git e dependências do Python

Instale os pacotes de desenvolvimento necessários:

sudo apt install -y \
git \
python3 \
python3-pip \
python3-venv \
python3-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
libsasl2-dev \
libldap2-dev \
libssl-dev \
libjpeg-dev \
libpq-dev \
libffi-dev \
build-essential

Verifique o Python:

python3 --version

Verifique o Git:

git --version

Baixar o código-fonte do Odoo 19 Community

Vá para o diretório home:

cd ~

Clone o branch 19 do Odoo:

git clone --depth 1 --branch 19.0 \
https://github.com/odoo/odoo.git odoo

Entre no diretório:

cd ~/odoo

Verifique o branch:

git branch --show-current

Esperado:

19.0

Criar ambiente virtual do Python

A partir do diretório do Odoo:

cd ~/odoo

Crie o ambiente virtual:

python3 -m venv odoo-venv

Ative-o:

source odoo-venv/bin/activate

Verifique:

python --version

E:

which python

O caminho do Python deve conter:

~/odoo/odoo-venv/bin/python

Instalar as dependências Python do Odoo

Certifique-se de que o ambiente virtual esteja ativo:

cd ~/odoo
source odoo-venv/bin/activate

Instale as dependências:

pip install -r requirements.txt

Aguarde o comando terminar com sucesso.

Criar usuário e banco de dados no PostgreSQL

Crie um papel no PostgreSQL correspondente ao usuário atual do Ubuntu:

sudo -u postgres createuser -d -R -S $USER

Em seguida, crie um banco de dados:

createdb $USER

Verifique:

psql -l

Agora você deve ver um banco de dados com o nome do seu usuário do Ubuntu.

Por exemplo:

ostechnix
postgres
template0
template1

Iniciar o Odoo

Ative o ambiente virtual:

cd ~/odoo
source odoo-venv/bin/activate

Inicie o Odoo:

./odoo-bin

O Odoo deve informar que o serviço HTTP está rodando na porta 8069.

Saída típica:

HTTP service (werkzeug) running on ...:8069

Mantenha este terminal aberto enquanto o Odoo estiver em execução.

Inicializar o banco de dados do Odoo

Se o banco de dados existe mas ainda não foi inicializado, pare o Odoo:

Ctrl+C

Depois inicialize o módulo base do Odoo:

cd ~/odoo
source odoo-venv/bin/activate
./odoo-bin -d $USER -i base

Aguarde os módulos terminarem de carregar.

Depois o Odoo pode ser acessado pelo navegador.

Acessar o Odoo de outro computador

Descubra o endereço IP da VM:

hostname -I

Por exemplo:

192.168.0.30

De outro computador na mesma rede, abra:

http://192.168.0.30:8069

Substitua o endereço IP pelo endereço real da VM.

A porta HTTP padrão do Odoo é 8069.

É assim que a página de login do Odoo se parece:

Login inicial

Para o banco de dados de teste criado durante esta instalação, as credenciais iniciais de administrador eram:

Username: admin
Password: admin

Altere imediatamente a senha de administrador ao usar qualquer coisa além de um ambiente de teste descartável.

Veja como o painel do Odoo se parece:

Parar o Odoo

Sim. Como esta é sua VM de teste/aprendizado, você pode fechar/parar o Odoo quando terminar.

Seu Odoo foi iniciado manualmente com ./odoo-bin, então:

  1. Vá ao terminal da VM onde o Odoo está rodando.
  2. Pressione Ctrl+C. A documentação do Odoo confirma que isso para o servidor.
  3. Você pode então fechar o terminal/sessão SSH se quiser.

Seus dados permanecerão no PostgreSQL. Parar o servidor Odoo não exclui seu banco de dados.

Na próxima vez, você o iniciará novamente com:

cd ~/odoo
source odoo-venv/bin/activate
./odoo-bin

Depois acesse-o do seu PC usando o mesmo IP da VM e :8069.

Configurar o Odoo como serviço de sistema

A instalação do Odoo a partir do código-fonte roda diretamente por meio de odoo-bin; estamos simplesmente deixando o systemd gerenciar esse processo automaticamente.

Crie o arquivo de serviço:

sudo nano /etc/systemd/system/odoo.service

Cole:

[Unit]
Description=Odoo 19
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
User=ostechnix
WorkingDirectory=/home/ostechnix/odoo
ExecStart=/home/ostechnix/odoo/odoo-venv/bin/python /home/ostechnix/odoo/odoo-bin
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

Substitua ostechnix pelo seu nome de usuário real.

Pressione Ctrl+O → Enter → Ctrl+X para salvar e fechar o arquivo.

Recarregue o systemd:

sudo systemctl daemon-reload

Habilite o Odoo na inicialização:

sudo systemctl enable odoo

Inicie o Odoo agora:

sudo systemctl start odoo

Verifique se está rodando:

sudo systemctl status odoo

Você quer ver:

Active: active (running)

Pressione q para sair da tela de status.

Agora é hora de testar. Do seu PC, abra:

http://<VM-IP>:8069

O Odoo agora deve estar disponível sem executar manualmente odoo-bin.

De agora em diante, você não precisa executar manualmente:

cd ~/odoo
source odoo-venv/bin/activate
./odoo-bin

Quando o Ubuntu iniciar, o systemd iniciará o Odoo automaticamente.

Você também pode controlá-lo com:

sudo systemctl start odoo
sudo systemctl stop odoo
sudo systemctl restart odoo
sudo systemctl status odoo

É isso. Sem reinstalação, sem ativação do ambiente virtual, sem inicialização manual do Odoo.

Habilitar o modo desenvolvedor

O modo desenvolvedor é útil para aprender a arquitetura técnica do Odoo.

Adicione:

?debug=1

à URL do Odoo.

Exemplo:

http://192.168.0.50:8069/?debug=1

O ícone de desenvolvedor/bug deve então aparecer na interface.

Solução de problemas

O Odoo não está rodando

Verifique:

sudo systemctl status odoo

Depois inspecione os logs recentes:

sudo journalctl -u odoo -n 50 --no-pager

Acompanhe os logs ao vivo:

sudo journalctl -u odoo -f

Erro 217/USER

Exemplo:

status=217/USER

Isso normalmente indica um problema com a conta User= no serviço systemd.

Para esta instalação o usuário correto é:

ostechnix

Verifique:

id ostechnix

O serviço deve conter:

User=ostechnix

e os caminhos devem usar:

/home/ostechnix/odoo

A página do Odoo não abre

Verifique se o Odoo está rodando:

sudo systemctl status odoo

Verifique se a porta 8069 está escutando:

sudo ss -ltnp | grep 8069

Descubra o IP da VM:

hostname -I

Depois navegue até:

http://<VM-IP>:8069

Atualizar a instalação a partir do código-fonte

Como esta instalação usa Git, o código-fonte do Odoo pode ser atualizado pelo Git. A documentação do Odoo descreve o processo de atualização do código-fonte baseado em Git usando git fetch e git rebase --autostash.

Antes de atualizar uma instalação real:

Sempre faça backup do banco de dados primeiro.

Para esta VM de aprendizado, o processo básico de atualização do código-fonte é:

cd ~/odoo
git fetch
git rebase --autostash

Depois reinicie o Odoo:

sudo systemctl restart odoo

Aviso: não aplique atualizações de código-fonte cegamente em um sistema de produção que contenha módulos personalizados. Teste as atualizações primeiro.

Resumo rápido de reprodução

Para uma VM de teste nova com Ubuntu 26.04, a sequência essencial é:

# Update
sudo apt update
sudo apt upgrade -y
# PostgreSQL
sudo apt install -y postgresql postgresql-client
# System dependencies
sudo apt install -y \
git python3 python3-pip python3-venv python3-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
libsasl2-dev libldap2-dev libssl-dev \
libjpeg-dev libpq-dev libffi-dev \
build-essential
# Odoo source
cd ~
git clone --depth 1 --branch 19.0 \
https://github.com/odoo/odoo.git odoo
# Python environment
cd ~/odoo
python3 -m venv odoo-venv
source odoo-venv/bin/activate
# Python dependencies
pip install -r requirements.txt
# PostgreSQL user/database
sudo -u postgres createuser -d -R -S $USER
createdb $USER
# Start Odoo
./odoo-bin

Se o banco de dados precisar de inicialização:

./odoo-bin -d $USER -i base

Depois acesse:

http://<VM-IP>:8069

Perguntas frequentes (FAQ)

P: Posso executar o Odoo Community gratuitamente para sempre?

R: Sim. O Odoo Community é licenciado sob a LGPL. Não há taxa de licença nem limite de usuários.

P: Preciso de um servidor potente?

R: Não. Um VPS pequeno com 2 GB de RAM roda o Odoo bem para alguns usuários. Adicione mais RAM conforme sua equipe e seus dados crescerem.

P: O Docker é obrigatório para hospedar o Odoo por conta própria?

R: Não, mas é a maneira mais fácil. O Docker isola o Odoo e o Postgres do resto do seu sistema e torna backups e atualizações previsíveis.

P: Qual versão do PostgreSQL o Odoo 19 precisa?

R: O Odoo 19 funciona com PostgreSQL 13 até 17. Este guia usa 17, a versão estável mais recente no momento da escrita.

P: Onde o Odoo armazena os arquivos enviados?

Dentro do contêiner em /var/lib/odoo, mapeado para o volume Docker odoo-web-data no seu host.

Recursos: