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_passwdque 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:
- Vá ao terminal da VM onde o Odoo está rodando.
- Pressione Ctrl+C. A documentação do Odoo confirma que isso para o servidor.
- 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:




