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

RequisitoMínimoRecomendado
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). 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:

TagArquitetura
nooviai/noovichat:latestMulti-arch (amd64 + arm64), escolhida pelo host
nooviai/noovichat:latest-arm64ARM64 / aarch64 (fixa)
nooviai/noovichat:v4.16.2.3-arm64ARM64 / aarch64, versão fixa
nooviai/noovichat:latest-amd64Intel / 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
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.

1

Criar diretório do projeto

bash
mkdir noovichat && cd noovichat
2

Criar arquivo .env

Crie o arquivo .env com as variáveis de configuração:

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 avançados onde você já possui PostgreSQL, Redis e processo de licenciamento/configuração 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

Variá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ávelObrigatórioDescrição
SECRET_KEY_BASESimChave secreta para encriptação (min 32 chars)
FRONTEND_URLSimURL pública da aplicação
DEFAULT_LOCALENãoIdioma padrão (default: en)
POSTGRES_HOSTSimHost do PostgreSQL
POSTGRES_DATABASESimNome do banco de dados
POSTGRES_USERNAMESimUsuário do banco de dados
POSTGRES_PASSWORDSimSenha do banco de dados
REDIS_URLSimURL de conexao com Redis
MAILER_SENDER_EMAILNãoEmail remetente das notificações
SMTP_ADDRESSNãoServidor SMTP
SMTP_PORTNãoPorta SMTP (default: 587)
SMTP_USERNAMENãoUsuário SMTP
SMTP_PASSWORDNãoSenha SMTP
ACTIVE_STORAGE_SERVICENãoServiço de storage (local, amazon_s3, gcs)

Verificação

Após iniciar os containers, verifique se tudo está 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, você será direcionado para criar a conta de administrador.

Atualização

Para atualizar para a última versão:

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 faça backup do banco de dados antes de atualizar. Use docker compose exec postgres pg_dump para criar um dump.