4.3 KiB
4.3 KiB
Guia de Deploy VPS (Portainer) 🚀
Este guia explica como pegar as alterações que fizemos (WuzAPI V1 e Fixes) e colocar para rodar no seu servidor VPS usando Portainer.
Pré-requisitos
- Conta no Docker Hub: Crie uma em hub.docker.com (Grátis).
- Docker Instalado Localmente: Para construir a imagem.
- Portainer na VPS: Já rodando.
Passo 1: Construir e Publicar a Imagem
Como alteramos o código (Ruby), precisamos criar uma "nova versão" do Chatwoot.
No seu terminal local (VS Code):
-
Faça login no Docker Hub:
docker login # Digite seu usuário e senha -
Configurar Buildx (Multi-Arch): Garante que a imagem funcione tanto em servidores Intel/AMD (VPS Comum) quanto Apple Silicon.
docker buildx create --use --name xbuilder || true docker buildx inspect --bootstrap docker buildx build \ --platform linux/amd64,linux/arm64 \ -f docker/Dockerfile \ -t rodrigobm10/chatwoot:wuzapi-v1 \ --push .
Passo 2: Configurar no Portainer (VPS)
- Acesse seu Portainer.
- Vá em Stacks -> Add stack.
- Dê o nome
chatwoot. - Cole o seguinte conteúdo no Editor Web:
ATENÇÃO: Substitua
image: SEU_USUARIO/chatwoot:v2pela imagem que você criou no passo anterior.
version: "3.8"
services:
base: &base
image: rodrigobm10/chatwoot:wuzapi-v2 # <--- SUA IMAGEM CORRETA
env_file: .env
volumes:
- storage_data:/app/storage
rails:
<<: *base
depends_on:
- postgres
- redis
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
entrypoint: docker/entrypoints/rails.sh
command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]
restart: always
deploy:
resources:
limits:
memory: 2048M
sidekiq:
<<: *base
depends_on:
- postgres
- redis
environment:
- NODE_ENV=production
- RAILS_ENV=production
- INSTALLATION_ENV=docker
command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
restart: always
deploy:
resources:
limits:
memory: 1024M
postgres:
image: pgvector/pgvector:pg16
restart: always
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=chatwoot
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=suasenhabancoforte
redis:
image: redis:alpine
restart: always
command: ["sh", "-c", 'redis-server --requirepass "$REDIS_PASSWORD"']
environment:
- REDIS_PASSWORD=suasenharedis
volumes:
- redis_data:/data
volumes:
storage_data:
postgres_data:
redis_data:
- Variáveis de Ambiente (.env):
No Portainer, adicione as variáveis de ambiente ("Environment variables"). Copie do seu
.envlocal, mas ATENÇÃO:FRONTEND_URL: Deve ser o seu domínio real (ex:https://chat.suaempresa.com).POSTGRES_PASSWORD: Use a mesma definida no YAML acima.REDIS_PASSWORD: Use a mesma definida no YAML acima.ACTIVE_RECORD_ENCRYPTION_...: CRÍTICO! Copie as chaves do seu arquivo local. Se mudar, perde o acesso aos tokens do WuzAPI.
Passo 3: Migrações (Primeiro Deploy)
Após subir a stack, o banco de dados estará vazio ou desatualizado e você precisa rodar as migrações:
- No Portainer, entre no container
chatwoot_rails(clique no ícone de Console>_). - Execute:
bundle exec rails db:prepare # Ou se já existir banco e só quiser atualizar: bundle exec rails db:migrate
Passo 4: Automação (Webhook)
Para atualizar automaticamente quando você der docker push:
- No Portainer, na sua Stack ou Service (
chatwoot_railsechatwoot_sidekiq), ative "Service Webhook". - Ele vai gerar uma URL (ex:
https://portainer.seu.com/api/webhooks/...). - Configure seu CI/CD (GitHub Actions) ou simplesmente chame essa URL com um POST após o push.
- Nota: O Portainer Business Edition tem isso facilitado. No Community Edition, você pode precisar de um script extra para atualizar a stack inteira.
Pronto! Seu Chatwoot personalizado com WuzAPI estará no ar.