Infraestrutura

Onde a plataforma roda

Produção e testes ficam na nuvem própria meCloud (cluster Proxmox IDC-EVEO). O ERP e a central de telefonia continuam na rede Fale Paco — ligados por túnel privado com lista fechada de destinos. Fonte: 05-INFRA.md.

Ambientes

AmbienteOndeHostsAdaptersDeploy
localDev machinelocalhostFake*compose dev
LABvc1-lab all-in-one*.lab.vc1.com.brLabGuarded* + legado demoAutomático no merge main
PRODvc1-app-prod + vc1-db-prod*.vc1.com.brAdapters produçãoworkflow_dispatch + aprovação GitHub

Secrets por ambiente no vault (beesy-secrets/commerce-vc1/{lab,prod}.env) — nomes em §7 de 05-INFRA.md, sem valores neste site.

Topologia

Diagrama LAB: vm vc1-lab all-in-one, meDNS, túnel WireGuard e allowlist para legado Fale Paco
Laboratório — uma VM com app, filas, SPA, Redis e PostgreSQL; conecta ao legado real só com IDs demo (LabGuarded).
Ampliar diagrama LAB
Diagrama PROD: vc1-app-prod e vc1-db-prod, meDNS, TLS, backup PBS e S3, monitoramento e túnel para legado
Produção — borda Caddy na VM de app; PostgreSQL dedicado na LAN privada; backup em camadas (PBS + WAL PITR).
Ampliar diagrama PROD
Evolução da infraestrutura por épico E0 a E6, incluindo HA opcional após E3
Crescimento por épico de produto — HA de app/PG só se a carga após E3 exigir (itens não especificados: a definir).
Ampliar evolução

Recursos por ambiente

RecursoLAB (vc1-lab)PROD app (vc1-app-prod)PROD db (vc1-db-prod)
vCPU484
RAM8 GiB16 GiB16 GiB
Disco80 GiB80 GiB250 GiB
IPv4 público111 (5432 bloqueado)
Private NetworkONONON
PostgreSQL16 local— (remoto LAN)16 dedicado
Redis7 local7 · AOF · max 2 GiB—
Backup disco VMPBS 2×/diaPBS 2×/diaPBS 2×/dia
Backup bancodump + PBS · RPO ~24 hWAL contínuo + base diária → S3 · RPO ~5 min
HA clusterNãoOpcional pós-E3 (2ª app, Patroni) — a definir se necessário
Custo WHMCS pid=6a confirmar (05-INFRA §12 — não inventar valores)

Rede e perímetro

Túnel proposto WireGuard wg-vc1 overlay 10.20.20.0/24 entre meCloud e peer BRS (perninha vs VM salto: a verificar). Admin SSH nas VMs via WireGuard meCloud 10.10.10.0/24, usuário mecloud360 — não via bastion legado.

Allowlist para o legado (PROD e LAB)

DestinoPortaUso
erp.falepaco.com.br (177.11.49.9)443 TLSProvisioningPort
172.16.49.2228080 TCPSipPulse SOAP (TelcoPort)
172.16.49.222MySQL a verificarCdrPort SELECT sippulse_reports

Fora do escopo desta plataforma: SIP/RTP (sip.falepaco.com.br), UI SipPulse Admin, NeoRouter como dependência do túnel VC1.

Firewall (resumo nftables + PVE)

DNS e TLS

Zona vc1.com.br no meDNS (ns1–ns4.medns.com.br). Wildcard * → IP de vc1-app-prod (APP_IP a verificar pós-provision). Apex institucional pode apontar para Site-VC1, não necessariamente a VM commerce.

Certificados Let's Encrypt via DNS-01 (Caddy + plugin PowerDNS); chaves API escopadas por ambiente. Renovação ~60 dias; alerta <21 dias.

Pipeline CI/CD

  1. backend — PR e push main: PHP 8.3, Pint, Pest.
  2. frontend — npm ci, Vitest, build SPA.
  3. images — push main: build Docker → ghcr.io/softwarebeesy/commerce-vc1-api e -front (tags SHA).
  4. deploy-lab — após images verde: SSH vc1-lab, pull, compose up, migrate --force, health.
  5. deploy-prod — manual: environment production, migrations com checkbox explícito, health /api/v1/health.
Regra Beesy Branch front/* + PR; agente não faz push em main.

Backup e recuperação (DR)

CamadaFerramentaRetenção (proposta)
Disco VMPBS cluster EVEO-S3 (02:30, 22:30)daily 7 · weekly 4
PG base + WAL PRODmeStorage S3 vc1-prod-wal14 dias (PITR)
Objetosvc1-prod-objects versionado30 dias noncurrent
LAB PGdump local + PBS VM3 dias

RPO / RTO (proposta): PROD RPO ~5 min, RTO ~2 h · LAB RPO ~24 h, RTO ~8 h (melhor esforço). Restore: GO operador → snapshot PBS → PITR → conciliar outbox fiscal/pagamento antes de reprocessar.

Monitoramento e alertas

Catálogo .beesy/monitoring.yaml com partner_group: paco. Hub beesy-monitoring ainda planned — até lá: blackbox HTTP, node_exporter, e-mail operador (endereço a verificar).

Runbooks (títulos)

  1. R1 — Provisionar VM (WHMCS pid=6, cloud-provision, nftables, inventário).
  2. R2 — Criar zona vc1.com.br no meDNS + delegação registro.br.
  3. R3 — Emitir certificados wildcard (Caddy DNS-01 LAB e PROD).
  4. R4 — Deploy (ordem db → migrate → app → workers → frontend).
  5. R5 — Rollback de app (pin tag GHCR; schema irreversível → R7).
  6. R6 — Rotacionar secrets (vault, recreate containers).
  7. R7 — Restore DB (PITR, parar filas, conciliação outbox).
  8. R8 — Domínio vanity revenda (pós-E0).
  9. R9 — Incidente SipPulse unreachable (WG, nc :8080 da VM app).
  10. R10 — Incidente CDR lag (upstream acc-import vs fila rating).

Detalhe operacional: criar OPERATIONS.md no repo em E0 (ainda inexistente).

Pré-requisitos para E0

Sem itens 1–8 abaixo não há deploy LAB que fale com legado real. Itens 9–12 podem usar Fake* até GO.

#Pré-requisitoOwner
1Repo GitHub privado + environments lab/productionOperador
2Zona vc1.com.br Master meDNS + NS registro.brOperador + meDNS
3API key PDNS escopada ACME (vault)Operador meDNS
4VM vc1-lab (e PROD antes de go-live) WHMCS Ubuntu 9001Operador
5Private Network + rota dns-master:8443Operador
6Túnel WireGuard wg-vc1 handshake <180 sOperador ambos lados
7nftables allowlist aplicadaOperador / E0
8Contas demo ERP/SIP + lab_allowlist (GO explícito)Operador
9–15Buckets S3, secrets, GHCR, MySQL read-only, pool PVE vc1, monitoring.yamlOperador / E0

Pendências D-INF-*: Ver decisões e pendências →