Instalação
Deploy da distribuição NooviChat licenciada via Docker no seu servidor.
Licença NooviChat
O NooviChat não é uma revenda do Chatwoot Enterprise nem a venda do código-fonte completo. A licença NooviChat autoriza operar a distribuição Noovi de um fork MIT modificado do Chatwoot em uma VPS/instância própria. Para novas instalações, use o Auto Instalador com sua chave de licença.
Requisitos
| Requisito | Mínimo | Recomendado |
|---|---|---|
| CPU | 2 vCPUs | 4 vCPUs |
| RAM | 4 GB | 8 GB |
| Disco | 20 GB SSD | 50 GB SSD |
| Arquitetura | amd64 (x86_64) | amd64 ou ARM64 (aarch64) |
| Docker | 20.10+ | 24.0+ |
| Docker Compose | v2.0+ | v2.20+ |
Arquitetura (amd64 / ARM64)
O NooviChat roda tanto em servidores amd64 (Intel/AMD) quanto em ARM64/aarch64 (Ampere, AWS Graviton, Oracle Ampere A1, Raspberry Pi 4/5, entre outros). Desde a versão v4.16.2.3 toda release é publicada nas duas arquiteturas, então a versão ARM nunca fica para trás da amd64.
A imagem :latest resolve a arquitetura sozinha
A tag nooviai/noovichat:latest (e as versionadas, como :v4.16.2.3) é um manifest multi-arch (amd64 + arm64): o Docker escolhe automaticamente a arquitetura do host. Se você já usa uma stack Docker comum, basta trocar a imagem e rodar rails db:migrate — funciona igual em amd64 e ARM, sem mudar mais nada.
Se preferir fixar a arquitetura (por exemplo em um nó específico do cluster), use as tags explícitas:
| Tag | Arquitetura |
|---|---|
nooviai/noovichat:latest | Multi-arch (amd64 + arm64), escolhida pelo host |
nooviai/noovichat:latest-arm64 | ARM64 / aarch64 (fixa) |
nooviai/noovichat:v4.16.2.3-arm64 | ARM64 / aarch64, versão fixa |
nooviai/noovichat:latest-amd64 | Intel / AMD (amd64) fixa |
O restante da stack de suporte (pgvector/pgvector:pg16, redis, MinIO, Traefik, n8n) também é multi-arch — nenhum ajuste extra é necessário em ARM.
Auto Instalador: ARM 100% automático
Ao instalar pelo Auto Instalador, a arquitetura é detectada automaticamente (uname -m) e os componentes do NooviChat são baixados. Quando o cliente opta por WAHA, a integração usa a imagem arm-2026.6.2 com engine GOWS, além de Redis e pgvector. O provedor WAHA permanece separado.
Stack ARM montada à mão: Redis e ARM64-COW-BUG
Em alguns kernels ARM64, o Redis pode se auto-encerrar por causa do aviso ARM64-COW-BUG. Suba o Redis com a flag --ignore-warnings ARM64-COW-BUG (no exemplo de Docker Compose acima, o comando do serviço redis vira redis-server --appendonly yes --ignore-warnings ARM64-COW-BUG). O WAHA em ARM usa a tag arm-2026.6.2 (WAHA Core). O Auto Instalador prepara a configuração técnica escolhida.
WAHA e UAZAPI são provedores separados
O NooviChat oferece a integração técnica. Licenças, infraestrutura, credenciais, custos e operação de WAHA ou UAZAPI são gerenciados separadamente pelo cliente e não estão inclusos na licença NooviChat.
Auto Instalador (recomendado)
O caminho recomendado para clientes é executar o instalador oficial em uma VPS Linux limpa e informar a chave de licença NooviChat quando solicitado.
bash <(curl -sL instalador.noovichat.com)Serviços operacionais adicionais
Setup gerenciado, migração assistida, hospedagem e gestão recorrente de VPS podem ser contratados separadamente. Eles não fazem parte automaticamente da licença de software.
Docker Compose manual
Use este caminho apenas em ambientes avançados onde você já controla o stack Docker. A instância continua exigindo uma licença NooviChat ativa e não substitui o processo oficial do Auto Instalador.
Criar diretório do projeto
mkdir noovichat && cd noovichatCriar arquivo .env
Crie o arquivo .env com as variáveis de configuração:
# Configuracao basica
SECRET_KEY_BASE=sua_chave_secreta_de_32_caracteres_minimo
FRONTEND_URL=https://chat.seudominio.com
DEFAULT_LOCALE=pt_BR
# Banco de dados
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DATABASE=noovichat
POSTGRES_USERNAME=noovichat
POSTGRES_PASSWORD=senha_segura_aqui
# Redis
REDIS_URL=redis://redis:6379
# Email (SMTP)
MAILER_SENDER_EMAIL=chat@seudominio.com
SMTP_ADDRESS=smtp.seudominio.com
SMTP_PORT=587
SMTP_USERNAME=chat@seudominio.com
SMTP_PASSWORD=senha_smtp
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=trueCriar docker-compose.yml
O serviço nooviconnect é o motor de WhatsApp nativo. Ele compartilha o mesmo PostgreSQL (criando o próprio schema de sessões) e a mesma SECRET_KEY_BASE do app — assim o app e o sidekiq o alcançam automaticamente em http://nooviconnect:3000, sem variáveis extras.
version: "3.8"
services:
noovichat:
image: nooviai/noovichat:latest
depends_on:
- postgres
- redis
ports:
- "3000:3000"
env_file: .env
environment:
- RAILS_ENV=production
- NODE_ENV=production
volumes:
- storage:/app/storage
restart: unless-stopped
sidekiq:
image: nooviai/noovichat:latest
depends_on:
- postgres
- redis
env_file: .env
environment:
- RAILS_ENV=production
- NODE_ENV=production
command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
- storage:/app/storage
restart: unless-stopped
# WhatsApp nativo (NooviConnect) — motor unico, nao escale este servico.
# O nome do servico DEVE ser "nooviconnect": o app o alcanca em
# http://nooviconnect:3000 (zero configuracao, sem vars extras no app/sidekiq).
nooviconnect:
image: nooviai/nooviconnect:latest
depends_on:
- postgres
- noovichat
env_file: .env
environment:
# Mesmo PostgreSQL do NooviChat (o motor cria o proprio schema de sessoes)
- POSTGRESQL_URL=postgresql://noovichat:senha_segura_aqui@postgres:5432/noovichat
# URL interna do servico app, para o motor enviar as mensagens recebidas
- NOOVI_CHATWOOT_URL=http://noovichat:3000
# Sem volume: as sessoes ficam no PostgreSQL; a midia e efemera
restart: unless-stopped
postgres:
image: postgres:16-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=noovichat
- POSTGRES_USER=noovichat
- POSTGRES_PASSWORD=senha_segura_aqui
restart: unless-stopped
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
- redis_data:/data
restart: unless-stopped
volumes:
postgres_data:
redis_data:
storage:Preparar banco de dados e iniciar
# Preparar banco de dados
docker compose run --rm noovichat bundle exec rails db:chatwoot_prepare
# Iniciar todos os servicos
docker compose up -dDocker Run manual
Para ambientes avançados onde você já possui PostgreSQL, Redis e processo de licenciamento/configuração operacional definidos:
docker run -d \
--name noovichat \
-p 3000:3000 \
-e SECRET_KEY_BASE="sua_chave_secreta" \
-e FRONTEND_URL="https://chat.seudominio.com" \
-e DEFAULT_LOCALE="pt_BR" \
-e POSTGRES_HOST="seu-postgres-host" \
-e POSTGRES_PORT="5432" \
-e POSTGRES_DATABASE="noovichat" \
-e POSTGRES_USERNAME="noovichat" \
-e POSTGRES_PASSWORD="senha_segura" \
-e REDIS_URL="redis://seu-redis-host:6379" \
-v noovichat_storage:/app/storage \
--restart unless-stopped \
nooviai/noovichat:latestVariáveis de Ambiente
Lista das variáveis básicas do stack manual. Variáveis de licença, canais WhatsApp e credenciais operacionais são fornecidas conforme a configuração da licença e do instalador.
| Variável | Obrigatório | Descrição |
|---|---|---|
SECRET_KEY_BASE | Sim | Chave secreta para encriptação (min 32 chars) |
FRONTEND_URL | Sim | URL pública da aplicação |
DEFAULT_LOCALE | Não | Idioma padrão (default: en) |
POSTGRES_HOST | Sim | Host do PostgreSQL |
POSTGRES_DATABASE | Sim | Nome do banco de dados |
POSTGRES_USERNAME | Sim | Usuário do banco de dados |
POSTGRES_PASSWORD | Sim | Senha do banco de dados |
REDIS_URL | Sim | URL de conexao com Redis |
MAILER_SENDER_EMAIL | Não | Email remetente das notificações |
SMTP_ADDRESS | Não | Servidor SMTP |
SMTP_PORT | Não | Porta SMTP (default: 587) |
SMTP_USERNAME | Não | Usuário SMTP |
SMTP_PASSWORD | Não | Senha SMTP |
ACTIVE_STORAGE_SERVICE | Não | Serviço de storage (local, amazon_s3, gcs) |
Verificação
Após iniciar os containers, verifique se tudo está funcionando:
# Verificar se os containers estao rodando
docker compose ps
# Verificar logs
docker compose logs -f noovichat
# Testar acesso (deve retornar HTTP 200)
curl -I http://localhost:3000Primeiro acesso
Acesse http://localhost:3000 no navegador. Na primeira vez, você será direcionado para criar a conta de administrador.
Atualização
Para atualizar para a última versão:
# Baixar nova imagem
docker compose pull noovichat
# Executar migracoes
docker compose run --rm noovichat bundle exec rails db:migrate
# Reiniciar servicos
docker compose up -dBackup
Sempre faça backup do banco de dados antes de atualizar. Use docker compose exec postgres pg_dump para criar um dump.