6b6c706979
- TOOLS.md: nova secao Docker Swarm com tabela completa das 9 stacks - MEMORY.md: adiciona Portainer v2.19.4 + admin token info + dominio map - memory/2026-05-20.md: inventario completo pessoal (22 containers, redes overlay)
82 lines
4.0 KiB
Markdown
82 lines
4.0 KiB
Markdown
# MEMORY.md — Memória Curada
|
|
|
|
## 🧠 Agente OpenClaw
|
|
- Debian 12 container, `/root/.openclaw/workspace/`
|
|
- Projeto ativo: `@pulse-libs/core` — 136/136 testes ✅
|
|
- Stack: React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage
|
|
|
|
## ⚙️ Infra
|
|
- Disco 76% (↑ de 66%), 87G total — **monitorar** (tendência de alta)
|
|
- Sem systemd no container
|
|
- Gitea: `git.octal.tec.br` → `localhost:3000` (Caddy proxy) — Docker Swarm stack `git`
|
|
- User: Roberto (betotn91@gmail.com), SSH key em `~/.ssh/id_ed25519_gitea`
|
|
- Repos Gitea: `pulse-memory`, `pulse-skills`, `pulse-docs`, `pulse-projects` — clonados via HTTPS
|
|
|
|
## 🐳 Docker Swarm — Stack Real (inventariado 2026-05-20)
|
|
- **Node**: `s1` · ID `x3fm004yzn3j7pvhz0fuuskez` (Leader) · Docker 29.4.3
|
|
- **Cluster ID**: `plz2xbh64yzhgy88jb9stm0pc`
|
|
- **22 containers** · **22 imagens** · **9 stacks**
|
|
- **Stacks**: `bot`, `code`, `database`, `design`, `dock`, `git`, `pro`, `projects`, `proxy`
|
|
- **Portainer CE v2.19.4** — https://dock.octal.tec.br — stack `dock`
|
|
- **Admin portainer token**: `ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=`
|
|
|
|
### Domínios / Rotas Caddy (confirmados)
|
|
| Domínio | Stack | Service | Porta |
|
|
|---|---|---|---|
|
|
| `dock.octal.tec.br` | `dock` | `dock_portainer` | 9443/9000 |
|
|
| `git.octal.tec.br` | `git` | `git_gitea` | 3000 |
|
|
| `ai.octal.tec.br` | `bot` | `bot_beebot` | 18789 |
|
|
| `manager.octal.tec.br` | `pro` | `pro_leantime` | 8080 |
|
|
| `games.octal.tec.br` | `projects` | `projects_games-demo` | 80 |
|
|
| `test.octal.tec.br` | `proxy` | `proxy_test-octal` | — |
|
|
|
|
### Serviços por Stack
|
|
| Stack | #svc | Serviços ativos |
|
|
|---|---|---|
|
|
| `bot` | 2 | ✅ beebot (node:24), ✅ redis:7-alpine |
|
|
| `code` | 1 | ✅ 8dcode |
|
|
| `database` | 2 | ✅ mongo:8.0, ✅ mongo-express |
|
|
| `design` | 7 | ✅ Penpot 2.15.3 *(backend+frontend+postgres+valkey+exporter+mcp+mailcatch)* |
|
|
| `dock` | 2 | ✅ portainer-ce:2.19.4, ✅ agent:2.19.4 |
|
|
| `git` | 1 | ✅ gitea:latest |
|
|
| `pro` | 2 | ✅ leantime, ✅ mariadb:10.6 |
|
|
| `projects` | 3 | ✅ games-demo, ✅ projects-landing, ⚠️ pulse-libs **0/1** (down) |
|
|
| `proxy` | 2 | ✅ caddy-docker-proxy, ✅ test-octal |
|
|
|
|
### Redes Overlay
|
|
| Rede | Subnet | GW | Containers |
|
|
|---|---|---|---|
|
|
| `ingress` | 10.0.0.0/24 | 10.0.0.1 | 3 |
|
|
| `public` | 10.0.1.0/24 | 10.0.1.1 | 14 |
|
|
| `dbn` | 10.0.2.0/24 | 10.0.2.1 | 2 |
|
|
| `mongo-cluster` | 10.0.3.0/24 | 10.0.3.1 | 3 |
|
|
| `pro_leantime_net` | 10.0.4.0/24 | 10.0.4.1 | 3 |
|
|
| `design_internal` | 10.0.5.0/24 | 10.0.5.1 | 8 |
|
|
| `proxy_proxy-net` | 10.0.6.0/24 | 10.0.6.1 | 0 |
|
|
|
|
## Docs externas coletadas
|
|
- Portainer: https://docs.portainer.io/user/docker/stacks.md
|
|
- Portainer add stack: https://docs.portainer.io/user/docker/stacks/add.md
|
|
- Portainer edit stack: https://docs.portainer.io/user/docker/stacks/edit.md
|
|
- Portainer full corpus: https://docs.portainer.io/llms-full.txt (truncado às 6k chars)
|
|
- Armazenadas em `pulse-docs/docs/`
|
|
|
|
## 🔑 Lições High-Signal
|
|
- `flat(Infinity)` quebra tsup DTS — usar `flat(2)`
|
|
- `process.env` direto quebra SSR — `typeof window !== 'undefined'`
|
|
- Backticks aninhadas em TS → usar `.replace()` por fora
|
|
- Zod: `.transform(v => v.replace(...))` não `.replace()` direto
|
|
- `vi.useFakeTimers()` não usar globalmente (quebra outros hooks)
|
|
- `fireEvent.change` jsdom: `value` precisa `writable` via `Object.defineProperty`
|
|
- `getByRole('textbox')` não funciona no jsdom puro — usar `container.querySelector`
|
|
- Portainer API token `ptr_...` prefixo PTR — funciona para UI, não para endpoint `/api/endpoints` (401)
|
|
→ Senha admin necessário para login via POST `/api/auth` — não documentada em pulse-memory
|
|
|
|
## Decisões Recentes
|
|
- `react.testing-library` e `vitest.jsdom.mocks` promoted → AGENTS.md (count≥3)
|
|
- `tsup.flat2-not-flatinfinity` pattern criada
|
|
- Docker Swarm proxy modelo replicado na stack `proxy`
|
|
- Dominio live: `https://test.octal.tec.br` (Caddy + Let's Encrypt)
|
|
- **Domínios mapeados via labels Caddy**: 6 confirmados (dock/git/ai/manager/games/test)
|
|
- **pulse-memory clonado via HTTPS** (credenciais fornecidas pelo usuário)
|