Instalacao

Deploy da distribuicao NooviChat licenciada via Docker no seu servidor.

Licenca NooviChat

O NooviChat nao e uma revenda do Chatwoot Enterprise nem a venda do codigo-fonte completo. A licenca NooviChat autoriza operar a distribuicao Noovi de um fork MIT modificado do Chatwoot em uma VPS/instancia propria. Para novas instalacoes, use o Auto Instalador com sua chave de licenca.

Requisitos

RequisitoMinimoRecomendado
CPU2 vCPUs4 vCPUs
RAM4 GB8 GB
Disco20 GB SSD50 GB SSD
Arquiteturaamd64 (x86_64)amd64 ou ARM64 (aarch64)
Docker20.10+24.0+
Docker Composev2.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) a partir da versao v4.15.1.13.

A imagem :latest resolve a arquitetura sozinha

A tag nooviai/noovichat:latest (e as versionadas, como :v4.15.1.13) e um manifest multi-arch (amd64 + arm64): o Docker escolhe automaticamente a arquitetura do host. Se voce ja 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 no especifico do cluster), use as tags explicitas:

TagArquitetura
nooviai/noovichat:latestMulti-arch (amd64 + arm64), escolhida pelo host
nooviai/noovichat:latest-arm64ARM64 / aarch64 (fixa)
nooviai/noovichat:v4.15.1.13-arm64ARM64 / aarch64, versao fixa
nooviai/noovichat:latest-amd64Intel / AMD (amd64) fixa

O restante da stack de suporte (pgvector/pgvector:pg16, redis, MinIO, Traefik, n8n) tambem e multi-arch — nenhum ajuste extra e necessario em ARM.

Auto Instalador: ARM 100% automatico

Ao instalar pelo Auto Instalador, a arquitetura e detectada automaticamente (uname -m) e os componentes do NooviChat sao baixados. Quando o cliente opta por WAHA, a integracao usa a imagem arm-2026.6.2 com engine GOWS, alem de Redis e pgvector. O provedor WAHA permanece separado.

Stack ARM montada a mao: 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 servico 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 configuracao tecnica escolhida.

WAHA e UAZAPI sao provedores separados

O NooviChat oferece a integracao tecnica. Licencas, infraestrutura, credenciais, custos e operacao de WAHA ou UAZAPI sao gerenciados separadamente pelo cliente e nao estao inclusos na licenca NooviChat.

Auto Instalador (recomendado)

O caminho recomendado para clientes e executar o instalador oficial em uma VPS Linux limpa e informar a chave de licenca NooviChat quando solicitado.

bash
bash <(curl -sL instalador.noovichat.com)

Servicos operacionais adicionais

Setup gerenciado, migracao assistida, hospedagem e gestao recorrente de VPS podem ser contratados separadamente. Eles nao fazem parte automaticamente da licenca de software.

Docker Compose manual

Use este caminho apenas em ambientes avancados onde voce ja controla o stack Docker. A instancia continua exigindo uma licenca NooviChat ativa e nao substitui o processo oficial do Auto Instalador.

1

Criar diretorio do projeto

bash
mkdir noovichat && cd noovichat
2

Criar arquivo .env

Crie o arquivo .env com as variaveis de configuracao:

bash
# 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=true
3

Criar 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.

yaml
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:
4

Preparar banco de dados e iniciar

bash
# Preparar banco de dados
docker compose run --rm noovichat bundle exec rails db:chatwoot_prepare

# Iniciar todos os servicos
docker compose up -d

Docker Run manual

Para ambientes avancados onde voce ja possui PostgreSQL, Redis e processo de licenciamento/configuracao operacional definidos:

bash
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:latest

Variaveis de Ambiente

Lista das variaveis basicas do stack manual. Variaveis de licenca, canais WhatsApp e credenciais operacionais sao fornecidas conforme a configuracao da licenca e do instalador.

VariavelObrigatorioDescricao
SECRET_KEY_BASESimChave secreta para encriptacao (min 32 chars)
FRONTEND_URLSimURL publica da aplicacao
DEFAULT_LOCALENaoIdioma padrao (default: en)
POSTGRES_HOSTSimHost do PostgreSQL
POSTGRES_DATABASESimNome do banco de dados
POSTGRES_USERNAMESimUsuario do banco de dados
POSTGRES_PASSWORDSimSenha do banco de dados
REDIS_URLSimURL de conexao com Redis
MAILER_SENDER_EMAILNaoEmail remetente das notificacoes
SMTP_ADDRESSNaoServidor SMTP
SMTP_PORTNaoPorta SMTP (default: 587)
SMTP_USERNAMENaoUsuario SMTP
SMTP_PASSWORDNaoSenha SMTP
ACTIVE_STORAGE_SERVICENaoServico de storage (local, amazon_s3, gcs)

Verificacao

Apos iniciar os containers, verifique se tudo esta funcionando:

bash
# 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:3000

Primeiro acesso

Acesse http://localhost:3000 no navegador. Na primeira vez, voce sera direcionado para criar a conta de administrador.

Atualizacao

Para atualizar para a ultima versao:

bash
# Baixar nova imagem
docker compose pull noovichat

# Executar migracoes
docker compose run --rm noovichat bundle exec rails db:migrate

# Reiniciar servicos
docker compose up -d

Backup

Sempre faca backup do banco de dados antes de atualizar. Use docker compose exec postgres pg_dump para criar um dump.