Instalação Odoo 17 no Ubuntu 22.04
O Odoo é um software ERP/CRM de código aberto que contempla um conjunto abrangente de aplicações de negócios, incluindo: Gestão Fiscal, CRM, Gestão de Vendas, Gestão de Compras, Controle de Estoque, Manufatura, Recursos Humanos, Folha de Pagamento, etc.
É construído de maneira modular, permitindo acrescentar módulos à medida em que novas funcionalidades tornam-se necessárias e permitindo o desenvolvimento de módulos customizados.
É um sistema com abrangência global, sendo que cada país contribui com o desenvolvimento da sua respectiva localização com foco nos aspectos fiscais e legais. No Brasil, há uma forte comunidade de usuários e empresas especializadas tanto no desenvolvimento como no suporte e implementação.
1. Pré-requisitos
- Sistema Operacional Ubuntu 22.04 com Python >= 3.10.
- Usuário com privilégios administrativos (sudo).
- IP estático (ex: 172.16.15.10) devidamente configurado e com acesso a internet.
- Acesso SSH ao servidor onde será instalado o Odoo. Se estiver usando firewall (ex: UFW), libere coenxões com o serviço ou respectiva porta.
Nota: Caso seja possível, crie um snapshot do estado atual de sua máquina a fim de que caso haja algum problema, possa ser restaurado com rapidez.
Nota: É possível executar todos os comandos a seguir a partir do usuário root, mas por razões de segurança, é recomendad o uso de um usuário diferente com privilégios administrativos “sudo”.
2. Preparando o Sistema
Faça login em sua máquina com seu usário com permissões administrativas de root e atualize o sistema:
sudo apt update && sudo apt upgrade -y
Definir fuso horário:
sudo timedatectl set-timezone America/Sao_Paulo
Python 3.10: O Ubuntu 22.04 já possui nativamente a versão 3.10 do python. Confira a versão, usando o comando a seguir:
sudo python3 --version
O resultado da saída deste comando deve ser: Python 3.10.12
3. Definir regras do UFW (Uncomplicated Firewall)
Precisaremos que somente as portas 22, 80, 443, 6010, 5432, 8069 e 8072 estejam abertas para acesso externo. 22 é usado para SSH, 80 é para HTTP, 443 é para HTTPS, 6010 é usado para comunicação Odoo, 5432 é usado pelo PostgreSQL, 8069 é usado pelo aplicativo de servidor Odoo e 8072 é Long Polling.
Nota: Long Polling é uma tecnologia em que o cliente solicita informações do servidor sem esperar uma resposta imediata ou basicamente envolve fazer uma solicitação HTTP a um servidor e, em seguida, manter a conexão aberta para permitir que o servidor responda mais tarde.
Por padrão, o firewall UFW deveestar desabilitado e para evitar desconexões involuntárias, vamos manter desabilitado:
sudo ufw disable
O UFW, por padrão, é configurado para negar todas as conexões de entrada e permitir todas as conexões de saída. Isso significa que qualquer um que tentasse acessar o seu servidor não conseguiria conectar-se, ao passo que os aplicativos dentro do servidor conseguiriam alcançar o mundo exterior.
Vamos definir as regras do seu UFW para as configurações padrão:
sudo ufw default deny incoming sudo ufw default allow outgoing
Permita conexão com o protocolo SSH, porta padrão (22):
sudo ufw allow ssh
Nota: Caso utilize um porta diferente do padrão para algum dos serviços descritos no início dessa etapa, atualize a respectiva regra de firewall. Ex: Se utilizar a porta 2222 para SSH, libere essa porta ao invés da 22 (ssh).
Com o firewall já configurado para permitir as conexões de entrada via SSH, podemos habilitar o firewall:
sudo ufw enable
Confirme digitando “y”: Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
A mensagem de saída deste comando, deve ser: Firewall is active and enabled on system startup
Liberar as demais portas:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5432/tcp
sudo ufw allow 6010/tcp
sudo ufw allow 8069/tcp
sudo ufw allow 8072/tcp
Recarregue o firewall:
sudo ufw reload
A mensagem de saída deve ser: Firewall reloaded
Para conferir quais regras estão ativas, digite o seguinte comando:
sudo ufw status
A saída deve ser: Status: active To Action From
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5432/tcp ALLOW Anywhere 6010/tcp ALLOW Anywhere
8069/tcp ALLOW Anywhere
8072/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
5432/tcp (v6) ALLOW Anywhere (v6)
6010/tcp (v6) ALLOW Anywhere (v6)
8069/tcp (v6) ALLOW Anywhere (v6)
8072/tcp (v6) ALLOW Anywhere (v6)
4. Instalação de ferramentas para instalação das dependências necessárias
Instalar Git, PIP, NPM, NodeJS e as ferramentas requiridas para poder instalar as dependencias do Odoo:
sudo apt install git python3-pip python3-dev libxml2-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev build-essential libssl-dev libffi-dev libmysqlclient-dev libjpeg-dev libpq-dev libjpeg8-dev liblcms2-dev libblas-dev libatlas-base-dev gdebi-core python3-wheel python3-venv libxslt-dev libzip-dev -y
Instalar dependências WEB (NPM, NodeJS, Less):
sudo apt install nodejs npm -y
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g less less-plugin-clean-css
sudo apt install node-less -y
5. Criar usuário Odoo
Crie um novo usuário chamado odoo17 com seu respectivo diretório home /opt/odoo17. Isso evita os riscos de segurança representados pela execução do Odoo sob o usuário root. Pode ser usado qualquer nome, mas é importante que o usuário PostgreSQL, que será visto mais adiante, deve ter o mesmo nome. Use os seguintes comandos:
sudo useradd -m -d /opt/odoo17 -U -r -s /bin/bash odoo17
6. Instalar e Configurar PostgreSQL
Nesta etapa, é necessário configurar o servidor de banco de dados. O Odoo usa o PostgreSQL como banco de dados. Instale o servidor de banco de dados para Odoo usando o comando a seguir:
Instalar o pacote PostgreSQL a partir do repositório padrão do Ubuntu:
sudo apt install postgresql postgresql-client -y
Após completada a instalação, inicie o serviço do banco de dados:
sudo systemctl start postgresql
Caso queira saber a versão instalada, digite o seguinte comando:
sudo psql -V
Crie um usuário PostgreSQL com o mesmo nome previamente criado, em nosso caso, odoo17:
sudo su - postgres -c "createuser --encrypted --createdb --createrole --superuser odoo17"
Nota: Por padrão, o PostgreSQL só permite conexão por soquetes UNIX e conexões loopback. O soquete UNIX é bom se você desejar que o Odoo e o PostgreSQL sejam executados no mesmo servidor, mas se você precisar que Odoo e PostgreSQL executem em servidores diferentes, é necessário configurar o PostgreSQL para aceitar outras conexões de rede.
Os arquivos pg_hba.conf e postgresql.conf, necessitarão ser ajustados.
7. Criar pasta para armazenamento de LOGs. Vamos usar o mesmo nome do usuário, usado anteriormente.
sudo mkdir /var/log/odoo17
sudo chown odoo17:odoo17 /var/log/odoo17
sudo chmod 755 /var/log/odoo17
8. Instalar Wkhtmltopdf
Os pacotes wkhtmktox fornecem um conjunto de ferramentas de linha de comando de código aberto que podem renderizar HTML em PDF e vários formatos de imagem. Para imprimir relatórios em PDF, você precisará da ferramenta wkhtmltopdf. Odoo 17 requer uma versão superior a 0.12.2 e no Ubuntu 22.04, diferente de verões anteriores, o wkHTMLtoPDF foi adicionado ao repositório padrão do sistema operacional.
sudo apt install wkhtmltopdf
Para verificar a versão instalada, digite o seguinte comando:
sudo wkhtmltopdf -V
9. Instalação do Odoo
No Ubuntu 22.04, podemos instalar o Odoo a partir do repositório padrão, mas neste artigo, vamos instalar o Odoo 17 em um ambiente virtual python e clonar a partir do repositório oficial.
Altere para o usuário do sistema odoo17, criado anteriormente:
sudo su - odoo17
O comando acima mudará o seu usuário (ex: odoo17) e deve levá-lo para a pasta “/opt/odoo17”.
Agora, faça o clone do Odoo a partir do repositório oficial do Github para a subpasta “server”, indicada no final da linha. O conteúdo deve ficar em “/opt/odoo17/server”.
git clone https://github.com/odoo/odoo --depth 1 --branch 17.0 server/
Após concluído o downloaded, crie um novo ambiente virtual Python para a sua instalação:
cd /opt/odoo17
python3 -m venv venv-odoo17
O comando acima criará uma pasta com o mesmo nome de seu ambiente virtual (/opt/odoo17/env-odoo17).
O ambiente virtual está instalado, agora ative-o executando este comando:
source venv-odoo17/bin/activate
Uma vez executado, o prompt do shell deve ficar como mostrado a seguir:
(venv-odoo17) odoo17@seuServidorOdoo:~$
Atualizar o gerenciador de pacotes PIP
pip3 install --upgrade pip
Instalar todos os módulos python requiridos pelo Odoo com pip:
pip install wheel && pip install -r server/requirements.txt
Nota: Se for encontrado qualquer erro de compilação durante a instalação, tenha certeza de que você tem todas as requeridas depend~encias instaladas, listadas no início da seção
Caso você não encontre nenhum erro, use o comando abaixo para testar se todos os requisitos declarados no arquivo requirements.txt foram instalados:
pip list
Se for encontrado algum erro, vá para o arquivo requirements.txt e instale cada pacote um por um com o seu respectivo comando:
pip install nome_pacote==versãoEx: Caso haja alguma falha no pacote geoip2:
pip install geoip2==2.9.0
Desative o ambiente virtual, usando o seguinte comando:
deactivate
Note, no prompt do shell, que o ambiente virtual não é mais mostrado e o usuário do Odoo continua ativo odoo17@seuServidorOdoo:~$
10. Módulos de Terceiros
Mesmo que não seja usado nesse momento, é recomendado criar uma pasta exclusiva para armazenamento de módulos personalizados ou de terceiros
mkdir /opt/odoo17/server/custom-addons
Nota: Lembre-se de sempre adicionar o caminho completo desta pasta no arquivo de configuração do Odoo, na diretiva “addons_path”, ao qual veremos mais adiante.
Volte para o seu usuário sudo:
exit
Confira, no prompt do shell, se vocês voltou a estar com seu superusuário (root ou outro) ativo root@seuServidorOdoo:~#
11. Arquivo de Configuração para a seu servidor Odoo
Crie a pasta para armazenamento do arquivo de configuração:
sudo mkdir -p /etc/odoo
Crie um arquivo de configuração, copiando o arquivo exemplo:
sudo cp /opt/odoo17/server/debian/odoo.conf /etc/odoo/odoo17-server.conf
Abra o arquivo e edite comforme é mostrado a seguir:
sudo nano /etc/odoo/odoo17-server.conf
[options] ; admin_password é uma senha de autenticação, definida por você, para operação relacionada ao banco de dados que permite criar, restaurar, remover. Escolha uma senha segura e anote-a. admin_passwd = SenhaAdminDB db_host = False db_port = False db_user = odoo17 db_password = False xmlrpc_port = 8069 addons_path = /opt/odoo17/server/addons,/opt/odoo17/server/custom-addons logfile = /var/log/odoo17/odoo-server.log logrotate = True log_level = debug
Saia do editor, salvando o arquivo.
Nota: Substitua SenhaAdminDB por algo mais complexo e mais robusto. Essa é a senha mestre do banco de dados, que você precisará ao configurar o Odoo.
12. Criar o arquivo de inicialização Systemd Unit
Para rodar o Odoo como um serviço e assim poder inicia/parar/reiniciar, necessitamos criar um arquivo de serviço no diretório: /etc/systemd/system/
Crie o arquivo com seu editor de textos:
sudo nano /etc/systemd/system/odoo17.service
E cole a seguinte configuração:
[Unit] Description=Odoo17 Community Edition Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple SyslogIdentifier=odoo17 PermissionsStartOnly=true User=odoo17 Group=odoo17 ExecStart=/opt/odoo17/venv-odoo17/bin/python3 /opt/odoo17/server/odoo-bin -c /etc/odoo/odoo17-server.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
Saia do editor, salvando o arquivo.
Notifique o systemd de que um novo arquivo unit existe:
sudo systemctl daemon-reload
Inicie o serviço, rodando:
sudo systemctl start odoo17
Habilite o serviço para ser iniciado automaticamente na inicialização do seu sistema operacional:
sudo systemctl enable odoo17
Confira o status do serviço, com o seguinte comando:
sudo systemctl status odoo17
A saída deste comando deve ser semelhante a esta:
● odoo17.service – Odoo17 Community Edition Loaded: loaded (/etc/systemd/system/odoo17.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2024-01-03 21:51:22 -03; 2s ago Main PID: 37715 (python3) Tasks: 1 (limit: 2220) Memory: 44.2M CPU: 2.056s CGroup: /system.slice/odoo17.service └─37715 /opt/odoo17/venv-odoo17/bin/python3 /opt/odoo17/server/odoo-bin -c /etc/odoo/odoo17-server.conf
jan 03 21:51:22 seuServidorOdoo systemd[1]: Started Odoo17 Community Edition.
Se desejar visualizar as mensagens registradas do serviço, use o comando a seguir:
sudo journalctl -u odoo17
13. Testando a Instalação
OAbra o seu navegador web e digite o seu endereço e respectiva porta do Odoo: ‘http://<SeuDominio_ou_EndereçoIP>:8069’
Assumindo que a instalação foi um sucesso, uma tela similar a mostrada abaixo deve surgir e você poderá criar o seu banco de dados