- docker-compose: porta 4000, extra_hosts, traefik-net - routes.yml: rota omniroute-https pra gateway.m5digital.net.br - CLAUDE.md: seção Pi Agent com instruções de uso - Pi Agent reconfigurado: Ollama Cloud → OmniRoute (NVIDIA NIM) - 30 chaves NVIDIA rotacionando, duplicatas limpas - Ollama: llama3 + qwen2.5:7b acessíveis via OmniRoute - Wrapper pi-task criado em /usr/local/bin/pi-task Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
11 KiB
11 KiB
CLAUDE.md — Motor E-commerce Multi-Canal Brasil
Dono: Iris Florencio | irisflorencio@yahoo.com.br Atualizado: 06/jul/2026 VPS: 31.220.78.126 (Ubuntu 24.04, 193GB disco, 11GB RAM) Gateway: Hermes + Telegram bot @OB1s
Projeto
Motor e-commerce multi-canal para o mercado brasileiro. Objetivo: operar Amazon, Mercado Livre, Shopee, Magazine Luiza, TikTok Shop e Site Próprio a partir de um motor centralizado (Saleor + PostgreSQL + Redis + n8n + WhatsApp).
Status Atual (06/jul/2026 — pós-higienização)
| Sistema | Status | URL | Container |
|---|---|---|---|
| Traefik | ✅ | http://31.220.78.126:8090 | m5_traefik |
| Saleor | ✅ | loja.m5digital.net.br | m5_saleor |
| Saleor Dashboard | ✅ | dashboard.m5digital.net.br | m5_saleor_dashboard |
| PostgreSQL | ✅ | - | m5_postgres |
| Redis | ✅ | - | m5_redis |
| Gitea | ✅ | git.m5digital.net.br | m5_gitea |
| n8n | ⚠️ PARCIAL | n8n.m5digital.net.br | m5_n8n (login quebrado) |
| OpenWA | ✅ | wa.m5digital.net.br | m5_openwa |
| Chatwoot | ✅ | chat.m5digital.net.br | chatwoot-chatwoot-1 |
| Twenty CRM | ✅ | crm.m5digital.net.br | twenty_front (substituiu Hermes CRM) |
| Portainer | ✅ | http://31.220.78.126:9443 | portainer |
| yt-pub-livesx | ✅ | video.m5digital.net.br | yt-pub-livesx-dashboard-1 |
| Omniroute | ✅ | gateway.digitalavello.shop | omniroute |
20 containers ativos · 9 subdomínios HTTPS validados · 0 produtos Saleor
Estrutura de Diretórios
/root/ecommerce/ # RAIZ na VPS
├── HANDOFF-2026-07-06.md # Estado completo + plano
├── CLAUDE.md # ESTE ARQUIVO
├── vault/ # Obsidian KB — fonte de verdade
│ ├── checkpoint-2026-06-22.md
│ └── ecommerce-kb/
│ ├── HOME.md
│ ├── DASHBOARD.md
│ ├── SYSTEMS-STATUS.md # Status atual (atualizado 06/jul)
│ ├── HIGIENIZACAO-06jul2026.md # Log da limpeza desta sessão
│ ├── N8N-WORKFLOWS.md
│ ├── TWENTY-CRM-SETUP.md
│ ├── CHATWOOT-SETUP.md
│ ├── INTEGRATIONS.md
│ └── ...
├── scripts/ # Scripts + Docker
│ ├── docker-compose.m5.yml # Stack completa M5
│ ├── openwa-compose.yml # WhatsApp (OpenWA v0.5.0)
│ ├── traefik-conf/
│ │ ├── traefik.yml
│ │ ├── routes.yml # 9 subdomínios HTTPS
│ │ └── dynamic-config.yml
│ ├── backups/
│ ├── calculators/
│ ├── compliance/
│ └── skills/
├── skills/ # Skills Hermes (18 marketplaces)
├── ecom-store/ # Repo de código (git + Gitea)
│ ├── utils/
│ │ ├── m5log.py # Logger M5 (3 modos: text/json/json_clean)
│ │ └── example_usage.py
│ ├── README.md
│ └── .gitignore # inclui .gitea_token
├── workflows/ # n8n workflows
│ ├── m5-openwa-to-twenty.json # WhatsApp → CRM (importar via UI)
│ ├── m5-twenty-to-openwa.json # CRM → WhatsApp
│ ├── chatwoot-integration.json
│ ├── README-FASE5-OPENWA-TWENTY.md
│ └── n8n-current/ # (vazio, stubs movidos para backup)
├── backup/ # Snapshots do vault + workflows stubs
├── logs/ # Logs m5log (JSON clean rotacionado)
└── .gitea_token # Git token (chmod 600, gitignored)
Mudanças Recentes (06/jul/2026)
Substituições
- Hermes CRM → Twenty CRM — backup em
/root/backups/2026-07-06_pre-crm-reorg/ - Container
twenty_frontna porta 3000, atrás decrm-httpsno Traefik
Higienização (~7.4GB liberados)
- 14 volumes Docker órfãos removidos
- 2 networks órfãs removidas
- 14 imagens Docker sem uso removidas
- Traefik limpo (IPs hardcoded → service names)
- 3 workflows n8n stubs movidos para backup local
Validação
- 9/9 subdomínios HTTP 200
- Traefik dashboard UP
- OpenWA
marcos-pessoalsessão READY - Gitea repo
ecom-storepushado (2 commits)
Pendências Críticas (06/jul/2026)
- n8n login quebrado — wizard de senha não aceita (auth layer além do DB resetado)
- Sessão WhatsApp
bussines-m5— QR não escaneado - Saleor sem produtos — zerado em 21/jun, aguardando catalogação
- Workflows reais do n8n — JSON pronto mas precisa importar via UI (depende #1)
- Webhook OpenWA → n8n — depende sessão ativa
Stack de Integração
| Camada | Componente |
|---|---|
| Motor e-commerce | Saleor 3.23 + PostgreSQL 16 + Redis 7 |
| Orquestração | n8n 2.27.4 (workflows em /root/ecommerce/workflows/) |
| Proxy | Traefik 3.0 + Let's Encrypt (dedyn.io) |
| OpenWA v0.5.0 (ghcr.io/rmyndharis/openwa) | |
| CRM | Twenty CRM 1.x (twentycrm/twenty) |
| Suporte | Chatwoot 3.3.0 |
| Código | Gitea 1.22.6 |
| LLMs | custom:aibee (aibee.cloud) + Ollama qwen3.6/deepseek-v4 |
| GPU | NVIDIA APIs (build.nvidia.com) — Nemotron, Kimi |
URLs dos Serviços
| Serviço | URL |
|---|---|
| Traefik Dashboard | http://31.220.78.126:8090 |
| Saleor API | https://loja.m5digital.net.br/graphql/ |
| Saleor Dashboard | https://dashboard.m5digital.net.br |
| Gitea | https://git.m5digital.net.br |
| n8n | https://n8n.m5digital.net.br |
| OpenWA Dashboard | https://wa.m5digital.net.br |
| OpenWA API | https://wa.m5digital.net.br/api |
| Chatwoot | https://chat.m5digital.net.br |
| Twenty CRM | https://crm.m5digital.net.br |
| yt-pub-livesx | https://video.m5digital.net.br |
| Omniroute | https://gateway.digitalavello.shop |
| Portainer | http://31.220.78.126:9443 |
OpenWA — WhatsApp Business
- Software: rmyndharis/OpenWA v0.5.0 (MIT, NestJS + whatsapp-web.js + React)
- Container:
m5_openwa - Porta interna: 2785
- Dashboard: https://wa.m5digital.net.br
- API: https://wa.m5digital.net.br/api
- API Key (regenerada 29/jun/2026):
owa_k1_1e56b98c39a2daa5bdb537d04f35da17117021bedc8c1de80eaba2926c584b39 - Persistência: bind mount
/root/ecommerce/scripts/openwa-sessions/→/app/data/ - Sessões:
marcos-pessoal— READY ✓bussines-m5— PENDENTE (escanear QR no dashboard)
Twenty CRM — Cliente/CRM
- Software: Twenty CRM 1.x (MIT)
- Container:
twenty_front(NestJS frontend) - Backend:
twenty_postgres(5434) +twenty_redis - URL: https://crm.m5digital.net.br
- Traefik route:
crm-https→twenty_front:3000 - Setup: wizard via browser (em andamento pela Iris)
- Integração n8n: workflows em
/root/ecommerce/workflows/m5-*-twenty.json
Chatwoot — Suporte
- Software: Chatwoot v3.3.0 (Ruby on Rails)
- Container:
chatwoot-chatwoot-1 - Admin: Marcos Moreira (admin@m5online.com.br)
- Account ID: 1 (M5 Digital)
- API Token:
AwnRiNkenTfzmipP8sM4dewQ - API Base: https://chat.m5digital.net.br/api/v1
- Rede Docker:
scripts_m5_network
Gitea — Código
- Software: Gitea 1.22.6
- Container:
m5_gitea - URL: https://git.m5digital.net.br
- Repo principal:
m5digital/ecom-store(push feito 06/jul, 2 commits) - Token de acesso:
/root/ecommerce/.gitea_token(chmod 600, fora do git) - SSH: porta 2222
Configurações de Credenciais
.env da VPS
- File:
/root/ecommerce/scripts/.env - Contém: credenciais PostgreSQL, Redis, Saleor, Gitea, n8n, OpenWA API keys
.env Hermes
- File:
/root/.hermes/.env - Contém:
ANTHROPIC_BASE_URL=https://gateway.digitalavello.shop
Claude Code na VPS
- Wrapper:
/usr/local/bin/cc - Key file:
/root/.claude_keys/key(mode 600) - Modelo: claude-sonnet-4-6 via digitalavello.shop
Cron Jobs Ativos
| Job | Schedule | Status |
|---|---|---|
| M5 — Resumo Diário 08:00 | 0 8 * * * |
ok |
| M5 — Check Docker Health | 0 */2 * * * |
ok |
| M5 — Compliance Check 14:00 | 0 14 * * * |
ok |
| M5 — Backup Vault 02:00 | 0 2 * * * |
pausado |
Canais de Venda (prioridade)
| # | Canal | Status | Tipo |
|---|---|---|---|
| 1 | Mercado Livre | SKILL pronta | Marketplace |
| 2 | Shopee | SKILL pronta | Marketplace |
| 3 | Amazon | SKILL pronta | Marketplace (FBA) |
| 4 | Magazine Luiza | SKILL pronta | Marketplace |
| 5 | TikTok Shop | SKILL pronta | Marketplace + Live Commerce |
| 6 | Site Próprio | SKILL pronta | B2C / B2B |
Recursos INEMA Disponíveis
Tudo em /root/inema_materiais/:
viralads/— curso UGC, ViralAdsyt-pub-livesx/— pipeline vídeo automatizado (Docker)ads-skill.zip(ja instalado em~/.hermes/skills/ads-skill/)ClaudeOS-Hermes-V2.3.zip— dashboard operacional (88MB)
Regras de Operação
- NUNCA criar arquivos em root — usar
/root/ecommerce/ - Secrets vão em
.env— nunca comitar - Vault Obsidian (
/root/ecommerce/vault/) é fonte de verdade - Skills em
/root/ecommerce/skills/e~/.hermes/skills/ecommerce/ - Rede Docker:
scripts_m5_network— todos os containers nela - Porta OpenWA: 2785 (NÃO 8002 — legado)
- Aprovar item a item antes de executar ações autônomas
- Apresentar plano antes de agir
- Trabalho completo — não só planos
- Autoverificar código antes de entregar (skill-auto-verify)
- Questionar respostas medíocres — nunca aceitar "ok"
- Manter contexto pequeno — compactar se > 60%
Referências Rápidas
/root/ecommerce/HANDOFF-2026-07-06.md— handoff completo da operação/root/ecommerce/vault/ecommerce-kb/SYSTEMS-STATUS.md— status atual dos sistemas/root/ecommerce/vault/ecommerce-kb/HIGIENIZACAO-06jul2026.md— log da limpeza/root/ecommerce/workflows/README-FASE5-OPENWA-TWENTY.md— passo-a-passo Fase 5/root/ecommerce/scripts/traefik-conf/routes.yml— roteamento HTTP/root/ecommerce/ecom-store/utils/m5log.py— Logger M5 (303 linhas)/root/.claude/CLAUDE.md— Skills Hermes auto-invocadas/root/inema_materiais/— Material INEMA (cursos, ads, vídeo)/root/backups/2026-07-06_pre-crm-reorg/MANIFEST.md— Inventário pré-CRM
Pi Agent — Subagente de Apoio
Binário: /usr/local/bin/pi (v0.80.3)
Wrapper: /usr/local/bin/pi-task
Config: /root/.pi/agent/
Provider: OmniRoute (localhost:4000) → NVIDIA NIM nemotron-3-super-120b-a12b
Quando usar o Pi:
- Tarefas de verificação e consulta (status containers, disco, RAM)
- Leitura e resumo de documentação
- Execução de scripts simples
- Consultas rápidas enquanto o Claude principal foca em tarefa complexa
Como invocar:
pi-task "verificar status dos containers" # via NVIDIA (rápido)
pi-task --local "listar arquivos" # via Ollama (offline)
pi-task --model llama-3.3-nemotron-super-49b-v1.5 "tarefa"
Modelos disponíveis no Pi:
| Modelo | Context | Velocidade | Uso |
|---|---|---|---|
| nemotron-3-super-120b-a12b | 131K | ~2s | Principal |
| llama-3.3-nemotron-super-49b-v1.5 | 131K | ~2s | Alternativa |
| ollama/qwen2.5:7b | 32K | ~30s | Offline |
| ollama/llama3:latest | 8K | ~30s | Emergência |