Control total
Instalación manual con Portainer
Usa este camino si Docker Swarm, Portainer, PostgreSQL, red y proxy ya están preparados. Podrás revisar el stack y cada variable antes del deploy.
Antes de empezar
15–25 min- Docker Swarm activo
- Portainer accesible
- PostgreSQL disponible
- Traefik y dominio configurados
- 1
Crea los volúmenes externos usados por los datos locales y archivos de FZAP.
bashdocker volume create fzap_dbdata docker volume create fzap_files - 2
En Portainer, abre Stacks → Add stack, usa el nombre fzap y pega el stack oficial.
Abrir stack oficial en GitHubstack.ymlversion: "3.7" services: fzap: image: dncarbonell/fzap:latest networks: - FloudsNet volumes: - fzap_dbdata:/app/dbdata - fzap_files:/app/files - fzap_logos:/app/data/public-folder-logos environment: # --- Configurações Gerais e Sistema --- - TZ=America/Sao_Paulo - FZAP_LANGUAGE=pt-BR # pt-BR, en-US, es-LATAM - PUBLIC_BASE_URL=https://exemplo.com # URL completa onde a fzap está instalada - Se instalado em subdomínio colocar o subdomínio completo, sempre com "https://". Ex: https://api.exemplo.com #- GLOBAL_PROXY_URL= # Proxy global opcional para todas as instâncias; o proxy de cada instância tem prioridade e o substitui # --- Armazenamento S3 Global (Backblaze B2 - Opcional) --- # Instâncias sem S3 próprio usam este bucket; a configuração individual tem prioridade. # Os arquivos são separados por instância no caminho users/<id>/... # O S3 global é ativado automaticamente ao preencher bucket, access key e secret key. #- GLOBAL_S3_BUCKET=seu-bucket #- GLOBAL_S3_ACCESS_KEY=seu-application-key-id #- GLOBAL_S3_SECRET_KEY=sua-application-key #- GLOBAL_S3_ENDPOINT=https://s3.us-west-004.backblazeb2.com #- GLOBAL_S3_REGION=us-west-004 #- GLOBAL_S3_PATH_STYLE=false #- GLOBAL_S3_PUBLIC_URL= # URL pública ou CDN opcional #- GLOBAL_S3_MEDIA_DELIVERY=both # base64, s3 ou both #- GLOBAL_S3_RETENTION_DAYS=0 # 0 mantém os arquivos indefinidamente #- LOG_LEVEL=info # trace, debug, info, warn, error, fatal, panic #- CHATWOOT_SYSTEM_IDENTIFIER=flouds.com.br # Uso interno no Chatwoot - é o identificador do contato de onboarding - Antes era FZAP_SYSTEM_IDENTIFIER #- CHATWOOT_SYSTEM_NAME=FZAP # Nome exibido no contato de onboarding - Antes era FZAP_SYSTEM_NAME #- CHATWOOT_PLATFORM_NAME=Chatwoot # Nome da plataforma white label do Chatwoot - Antes era PLATFORM_NAME #- CHATWOOT_SERVICE_URL=https://app.chatwoot.com # Url de exemplo de conexão e integração do Chawtoot - Antes era DEFAULT_SERVICE_URL # --- Autenticação e Licença --- - ADMIN_TOKEN=admin_token_exemplo # Token de autenticação da API. Escolha um valor seguro - FLOUDS_LICENCE_KEY= # Deixe vazio para usar a versão free - Em caso de assinatura, a key estará no seu dashboard - FLOUDS_LIFETIME_LICENCE_KEY= # Caso tenha versão vitalícia (licença fixa por domínio - legado) # --- Banco de Dados (PostgreSQL) --- - DB_DRIVER=postgres - DB_HOST=postgres - DB_PORT=5432 - DB_NAME=fzap - DB_USER=postgres - DB_PASSWORD=senha_exemplo # --- Banco de Dados do Chatwoot (Global - Opcional) --- #- CHATWOOT_GLOBAL_DB_HOST= # Host global opcional do PostgreSQL do Chatwoot; os campos de cada instância têm prioridade e o substituem #- CHATWOOT_GLOBAL_DB_PORT=5432 # Porta global opcional do PostgreSQL do Chatwoot #- CHATWOOT_GLOBAL_DB_NAME= # Nome global opcional do banco de dados do Chatwoot #- CHATWOOT_GLOBAL_DB_USER= # Usuário global opcional do banco de dados do Chatwoot #- CHATWOOT_GLOBAL_DB_PASS= # Senha global opcional do banco de dados do Chatwoot # --- WhatsApp e Webhooks --- - SESSION_DEVICE_NAME=Fzap # Nome da dispositivo conectado (aparece no celular) - WEBHOOK_FORMAT=json #- IMAGE_QUALITY_HD=false # true para HD, false para padrão # --- Transcrição de Áudio (IA) --- #- TRANSCRIPTION_ENABLED=false # Habilita a transcrição global de áudio (true/false, padrão: false) #- TRANSCRIPTION_PROVIDER=openai # Provedor de transcrição: openai (padrão) ou groq #- TRANSCRIPTION_API_KEY= # Chave de API do provedor de transcrição selecionado #- TRANSCRIPTION_MODEL= # Substituição de modelo (padrão: whisper-1 para openai, whisper-large-v3 para groq) #- TRANSCRIPTION_BASE_URL= # Substituição opcional de endpoint (URL) para o provedor selecionado # --- WhatsApp Cloud API (Meta Embedded Signup) --- # Configurações para habilitar o fluxo guiado de cadastro direto pela Meta Cloud API. # ATENÇÃO: Recurso exclusivo para planos pagos (requer licença válida, não funciona na versão free). #- META_APP_ID= # Meta App ID (obtido em developers.facebook.com) #- META_APP_SECRET= # Meta App Secret (chave secreta do aplicativo) #- META_CONFIG_ID= # Meta Business Login Config ID (ID de configuração do login) # --- Mensageria (RabbitMQ) --- #- RABBITMQ_ENABLED=true #- RABBITMQ_URL=amqp://fzap:fzap@rabbitmq:5672/ #- RABBITMQ_EXCHANGE=fzap_events #- RABBITMQ_PREFIX=fzap #- RABBITMQ_FRAME_MAX=131072 # Tamanho máx de frame (128KB) #- RABBITMQ_HEARTBEAT=30 # Em segundos #- RABBITMQ_MAX_RECONNECT=10 #- RABBITMQ_RECONNECT_DELAY=5 # Em segundos # --- Monitoramento de Erros (Sentry) - Opcional --- # O Sentry é uma ferramenta de rastreamento que captura *somente erros* e falhas da aplicação em tempo real. # Isso permite que o desenvolvedor identifique e corrija os problemas de forma ativa, sem precisar esperar uma reclamação ou feedback do usuário. # A URL (DSN) de integração deve ser obtida com a equipe no grupo de suporte oficial. Deixe vazio caso não queira utilizar. #- SENTRY_DSN= deploy: mode: replicated replicas: 1 placement: constraints: - node.role == manager labels: # Configuração Traefik - traefik.enable=true - traefik.http.routers.fzap.rule=Host(`exemplo.com`) - traefik.http.routers.fzap.entrypoints=websecure - traefik.http.routers.fzap.tls=true - traefik.http.routers.fzap.tls.certresolver=letsencryptresolver - traefik.http.routers.fzap.service=fzap - traefik.http.services.fzap.loadbalancer.server.port=8080 volumes: fzap_dbdata: name: fzap_dbdata external: true fzap_files: name: fzap_files external: true fzap_logos: name: fzap_logos external: true networks: FloudsNet: name: FloudsNet external: true - 3
Revisa ADMIN_TOKEN, base de datos, dominio, idioma y zona horaria. Si tienes licencia, agrega FLOUDS_LICENCE_KEY.
- 4
Haz clic en Deploy the stack y espera hasta que el servicio esté activo.
- 5
Abre el dominio configurado, entra con ADMIN_TOKEN y prueba la API.
Activación
Free y pago usan la misma instalación
La clave solo define qué módulos quedan disponibles. No cambia la imagen Docker, la base de datos ni el deploy.
No necesitas una licencia
Deja FLOUDS_LICENCE_KEY vacía. API Core, dashboard, instancias y nodes n8n continúan disponibles en Free.
Comparar los planes de pagoDespués del deploy
Confirma que todo funciona
- 1Espera a que FZAP y PostgreSQL aparezcan activos en tu panel.
- 2Abre el dominio público configurado para la instalación.
- 3Consulta ADMIN_TOKEN en las variables y úsalo para entrar al dashboard.
- 4Crea una instancia, conecta WhatsApp y envía un mensaje de prueba.