docs: MEMORY.md + TOOLS.md atualizados — stack project migrada, 10 stacks, Lições Portainer/Caddy/Swarm e pulse-docs commit
This commit is contained in:
+121
-87
@@ -1,108 +1,142 @@
|
||||
# Memória Diária — 2026-05-20
|
||||
|
||||
## 🕐 Heartbeats
|
||||
- 15:34 — Disco 65% ok, openclaw 3.3% CPU 598MB RAM, zombies 8 (↓ de 36 → caindo saudavelmente), apt 20 packages quedando a 1 (tzdata), MEMORY 3415 chars, stale lock espúrio (arquivo fresh 15:35), ERRORS/patterns sem mudanças
|
||||
- 10:34 — Disco 76% ⚠️, load avg 3.97/4.16, **55 zombies** (↑ de 46),MEMORY 1874 chars ok, clawhub CLI ausente, ERRORS/patterns sem mudanças
|
||||
- 07:34 — Disco 76% ok, 20 packages up (security), clawhub via `openclaw skills` works, MEMORY 1874 chars, no ERRORS critical
|
||||
- 05:04 — Disco 76% (ok), ~30 pacotes upgradable (security), zombies ~15, MEMORY ok
|
||||
- 02:04 — Disco 73% → 76% trending up, apt upgrades disponíveis, defuncto ~15, MEMORY 1874 chars
|
||||
- 17:38 — Disco ok, stack project migrada OK, MEMORY 4000+ chars, aprendiados Portainer/caddy completos
|
||||
- 15:34 — Disco 65% ok, openclaw 3.3% CPU 598MB RAM, zombies 8, MEMORY 3415 chars, stale lock verificada OK
|
||||
- 10:34 — Disco 76% ⚠️, load avg 3.97/4.16, 55 zombies, MEMORY 1874 chars ok, clawhub CLI ausente
|
||||
- 07:34 — Disco 76% ok, 20 packages up (security), clawhub via openclaw skills works
|
||||
- 05:04 — Disco 76%, ~30 pacotes upgradable, zombies ~15
|
||||
- 02:04 — Disco 73% → 76% trending up
|
||||
|
||||
## 📊 Sistema Load — 14:04
|
||||
## 📊 Sistema Load
|
||||
- openclaw PID: ~3.3% CPU, ~600 MB RAM — normal
|
||||
- Zombie <defunct>: **8** — caindo rapidamente, todos PPID=1, nenhum recurso consumido
|
||||
- `/dev/shm`: 64M/0 usado — muito baixo
|
||||
- Zombies em queda: 8 (↓ de 55 na madrugada)
|
||||
- load avg estável ~3.9/4.1
|
||||
|
||||
## 💾 Disco — 14:04
|
||||
- overlay: 87G total, 54G used (65%) — **recuperou da tendência de alta** ✅
|
||||
- /home: 87G, 65% usado
|
||||
## 💾 Disco
|
||||
- overlay: 87G total, 57G used (60%) — **melhorou de 76%** ✅
|
||||
- Pacotes: 20 no total; ~6 aplicados; apenas tzdata pendente (só upgrade com aprovação)
|
||||
|
||||
## 📦 Pacotes Atualizáveis — 14:04 / 15:34
|
||||
- 14:04 → 20 pacotes; 15:34 → 1 pacote restante (tzdata). Queda acentuada, boa resposta de atualizações
|
||||
- Aprovação usuária pendente apenas para tzdata
|
||||
|
||||
## 🚨 Stale Lock — VERIFICADO
|
||||
- Verificado 15:34: arquivo `4a184408-c4c8-4817-83d6-a87cb292a650.jsonl` com 15:35 timestamp (ativo/atual)
|
||||
- A lock original já foi substituída — **não é mais stale**, session atual é a 4a184408
|
||||
|
||||
## 📦 Pacotes Atualizáveis — 16:34 update
|
||||
- 20 pacotes no total; ~6 já aplicados entre beats anteriores; restam 14
|
||||
- Destacam-se: gnutls30 (security), libc6/bin, openssl, openssh-client — considerados de alta pertinência
|
||||
- Aprovação usuária pode ser necessária via apt upgrade
|
||||
|
||||
## ⏱️ Heartbeat 16:34
|
||||
- Disco 66% ok, systemd indisponível (container), MEMORY.md 1359 bytes (~161 palavras, 28 linhas) — **bem abaixo de 3500 chars ✅**
|
||||
- ERRORS.md: 2 resolved, 0 críticos | PATTERN_COUNTER: nenhum no limite ≥3
|
||||
- zombie/defunct ~8 transitórios (PPID=1, zero resource)
|
||||
- SESSION-STATE.md não precisou atualização — MEMORY.md não consta mais acima do limite
|
||||
## 🚨 Stale Lock — VERIFICADO 15:34
|
||||
- Arquivo `4a184408-c4c8-4817-83d6-a87cb292a650.jsonl` — timestamp 15:35, session atual OK
|
||||
|
||||
## 📚 Learnings
|
||||
- ERRORS.md: 2 ERRs resolvidos, nenhum crítico
|
||||
- PATTERN_COUNTER.md: `react.testing-library` ✅ promoted, `vitest.jsdom.mocks` ✅ promoted (ambos >= 3 count)
|
||||
- `vitest.pure-dom-matchers` c=1, `jsdom.fireEvent-change-writable` c=1 — tracking
|
||||
- PATTERN_COUNTER chars: 3415 < 3500 ✅
|
||||
- ERRORS.md: 2 ERRs resolvidos na sessão, nenhum crítico pendente
|
||||
- PATTERN_COUNTER: react.testing-library ✅ promoted, vitest.jsdom.mocks ✅ promoted
|
||||
- vitest.pure-dom-matchers c=1, jsdom.fireEvent-change-writable c=1 — tracking
|
||||
|
||||
## 🐳 Docker Swarm
|
||||
- 1 node (Manager) · Cluster ID `plz2xbh64yzhgy88jb9stm0pc`
|
||||
- 39 containers · 22 imagens · overlay 10.0.0.0/8
|
||||
- 8 stacks: bot/code/database/design/dock/git/pro/proxy
|
||||
---
|
||||
|
||||
## 🗂️ Gitea — Sistema de Memória
|
||||
- 4 repositórios pulse-* em `git.octal.tec.br/Roberto/`
|
||||
- Token: d7378a3d0b7fd38050c4bce6accfd28086b6174c
|
||||
- SSH key: ~/.ssh/id_ed25519_gitea
|
||||
- Todos os commits feitos, estrutura sincronizada
|
||||
## 🐳 Docker Swarm + Portainer — Inventário completo 17:18 GMT-3
|
||||
- 1 node (Manager) · Cluster ID plz2xbh64yzhgy88jb9stm0pc
|
||||
- **22 containers** · **22 imagens** · overlay 10.0.0.0/8
|
||||
- **9 stacks** (após migração)
|
||||
- Portainer CE v2.19.4 — https://dock.octal.tec.br — stack dock
|
||||
- Admin token PTR: ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=
|
||||
Prefixo ptr_ OK em /api/status; 401 em /api/endpoints e /api/auth — escopo limitado
|
||||
|
||||
## 📚 Portainer + Docker Swarm — Documentação crua (17:18 GMT-3)
|
||||
- **Portainer CE v2.19.4** em `dock.octal.tec.br` — stack `dock` (portainer-ce + agent)
|
||||
- **Admin token** (portainer): `ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=` — prefixo PTR, funcionou em `/api/status` mas 401 em `/api/endpoints` e `/api/auth`
|
||||
→ JWT expirado/limite de escopo; senha admin necessária para login via POST `/api/auth` — não estava documentada
|
||||
- **Portainer API docs**: docs.portainer.io/user/docker/stacks | stacks/add | stacks/edit
|
||||
- **pulse-docs commit**: `42f4e0b` doc-raw + `b2b5d2d' swarm completo
|
||||
|
||||
### 9 Stacks inventariadas 100% cru (22 containers)
|
||||
| Stack | #svc | #up | Highlights |
|
||||
### Stacks (10 totais — incluindo 'project' nova)
|
||||
| Stack | Svc | Ativas | Notas |
|
||||
|---|---|---|---|
|
||||
| `bot` | 2 | 2 ✅ | beebot node:24 + redis:7-alpine |
|
||||
| `code` | 1 | 1 ✅ | 8dcode |
|
||||
| `database` | 2 | 2 ✅ | mongo:8.0 + mongo-express |
|
||||
| `design` | 7 | 7 ✅ | Penpot 2.15.3 completo |
|
||||
| `dock` | 2 | 2 ✅ | portainer-ce:2.19.4 + agent:2.19.4 |
|
||||
| `git` | 1 | 1 ✅ | gitea:latest |
|
||||
| `pro` | 2 | 2 ✅ | leantime:latest + mariadb:10.6 |
|
||||
| `projects` | 3 | 2 ✅ | ⚠️ pulse-libs **0/1 replicas** (parado) |
|
||||
| `proxy` | 2 | 2 ✅ | caddy-docker-proxy + test-octal |
|
||||
| bot | 2 | 2 ✅ | beebot node:24 + redis:7-alpine |
|
||||
| code | 1 | 1 ✅ | 8dcode:latest |
|
||||
| database | 2 | 2 ✅ | mongo:8.0 + mongo-express |
|
||||
| design | 7 | 7 ✅ | Penpot 2.15.3 full-stack |
|
||||
| dock | 2 | 2 ✅ | portainer-ce:2.19.4 + agent:2.19.4 |
|
||||
| git | 1 | 1 ✅ | gitea:latest (DOMAIN=git.octal.tec.br) |
|
||||
| pro | 2 | 2 ✅ | leantime + mariadb:10.6 |
|
||||
| **project** | 3 | 2 ✅ | ⚠️ pulse-libs 0/1 (crash loop imagem) |
|
||||
| proxy | 2 | 2 ✅ | caddy-docker-proxy:ci-alpine + test-octal |
|
||||
| **projects** | REMOVIDA | — | substituida por 'project' 17:30 |
|
||||
|
||||
### Domínios Caddy confirmados via labels
|
||||
| Domínio | Stack | Service | Internal Port |
|
||||
### Domínios Caddy confirmados (6 ativos)
|
||||
| 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 | — |
|
||||
| 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 | project | project_games-demo | 80 |
|
||||
| test.octal.tec.br | proxy | proxy_test-octal | — |
|
||||
|
||||
### Redes Overlay
|
||||
`ingress` → `10.0.0.0/24` | `public` → `10.0.1.0/24` | `dbn` → `10.0.2.0/24`
|
||||
`mongo-cluster` → `10.0.3.0/24` | `pro_leantime_net` → `10.0.4.0/24`
|
||||
`design_internal` → `10.0.5.0/24` | `proxy_proxy-net` → `10.0.6.0/24`
|
||||
ingress:10.0.0.0/24 · public:10.0.1.0/24 · dbn:10.0.2.0/24
|
||||
mongo-cluster:10.0.3.0/24 · pro_leantime_net:10.0.4.0/24
|
||||
design_internal:10.0.5.0/24 · proxy_proxy-net:10.0.6.0/24
|
||||
|
||||
### Volumes locais relevantes
|
||||
`portainer_data` · `proxy_caddy_config` · `proxy_caddy_data` · `git_gitea_data` · `bot_beebot_home` · `design_penpot_assets` · `design_penpot_postgres_v15`
|
||||
|
||||
### Artifacts salvos em pulse-docs
|
||||
- `docs/portainer-docs.md` — docs Portainer + dev/stacks
|
||||
- `docs/docker-swarm-stacks.md` — inventário completo 100% cru
|
||||
### Projetos Gitea criados
|
||||
- pulse-memory, pulse-skills, pulse-docs, pulse-projects — todos em git.octal.tec.br/Roberto/
|
||||
- Token d7378a3d0b7fd38050c4bce6accfd28086b6174c (scopes=all, nome=pulse-agent-token)
|
||||
- SSH key ed25519 em ~/.ssh/id_ed25519_gitea
|
||||
- pulse-docs commits: 42f4e0b + b2b5d2d
|
||||
|
||||
### Lições técnicas
|
||||
- `token ptr_` do portainer é um **access token JWT** não login password — diferentes de usuário/senha
|
||||
- Portainer API `/api/status` aceita token sem body; `/api/auth` (login) e `/api/endpoints` requerem JWT válido ou credenciais
|
||||
- Container Alpine tem mínimo de ferramentas — sem `ls`, `find`; usar `docker inspect` e `docker service inspect` por containers/services em vez de exec
|
||||
- `docker network ls` output não tem Subnet/Scope; usar `docker network inspect` por ID
|
||||
- Caddy-docker-proxy (`lucaslorentz/caddy-docker-proxy`) pega labels `caddy=` e `caddy.reverse_proxy=` de cada container para gerar rotas automaticamente
|
||||
- token ptr_ Portainer = JWT access token (nao eh senha login); usado em Authorization: Bearer
|
||||
Prefixo ptr_ OK em /api/status; 401 em /api/endpoints e /api/auth — escopo limitado
|
||||
- POST /api/auth (login) requer senha admin — nao documentada no pulse-memory
|
||||
- Container Alpine Portainer sem find/ls; usar docker inspect e docker service inspect
|
||||
- docker network ls nao mostra Subnet — precisa docker network inspect <id>
|
||||
- caddy-docker-proxy (lucaslorentz/caddy-docker-proxy:ci-alpine) le labels caddy= e caddy.reverse_proxy=
|
||||
- docker stack deploy compose v3.9: restart_policy nao é propriedade válida no deploy spec
|
||||
- Labels do compose (deploy.labels) nao sao aplicadas em container labels no Swarm — usar docker service create com --label-add diretamente
|
||||
- Agent-browser CLI nao instalado — nao existe no PATH, usar curl/API diretamente
|
||||
- Portainer UI: stack criada externamente aparece com aviso limitado — precisa admin JWT para indentificar/gerenciar
|
||||
|
||||
## 🅷 Alertas para priorizar
|
||||
- ⚠️ Zombies recuando para 8 ✅ — monitor menos urgente agora
|
||||
- Clawhub instalável pendente — usar `openclaw skills update`
|
||||
- Pacotes segurança: apenas tzdata restante — usuário pode aprovar apt upgrade
|
||||
- git_gitea 🔴 / bot_office crash loop — stacks Docker, não afetam agente diretamente
|
||||
---
|
||||
|
||||
## 🐳 Stack Project Migration — 17:30-17:38 GMT-3
|
||||
### Objetivo
|
||||
Subir stack 'project' no Portainer/Swarm como modelo, migrando todos os serviços da stack antiga 'projects'.
|
||||
|
||||
### Ações executadas
|
||||
1. **Capturou-se compose modelo da stack** `projects` atual (3 services: games-demo, projects-landing, pulse-libs)
|
||||
2. **Cada service na stack anterior sem replicas 0/1** para `pulse-libs` confirmado
|
||||
3. **Criada stack project** via `docker service create` manual com labels caddy=
|
||||
4. **Removida stack projects** antiga
|
||||
5. **Validado**: games.octal.tec.br → HTTP 200 (nginx respondendo via caddy-docker-proxy)
|
||||
6. **pulse-libs**: imagem crashando (0/1) — impossibilitou subir, scaling forcado 0
|
||||
7. **games-demo**: 1/1 rodando ✅
|
||||
8. **projects-landing**: 1/1 rodando ✅
|
||||
|
||||
### Problemas encontrados
|
||||
- **restart_policy** no compose: `docker stack deploy` recusa propriedade não suportada na versão 3.9 do Swarm compose
|
||||
→ removido restart_policy do YAML; Docker Swarm gerencia restart nativamente no service spec
|
||||
- **Labels não aplicadas pelo compose**: `deploy.labels` do compose v3 não se tornam container labels no Swarm
|
||||
→ solução: usar `docker service create --label-add "<key>" "<value>"` diretamente por CLI
|
||||
- **pulse-libs imagem unavailable**: imagem local `projects-landing:latest` e `pulse-libs:latest`
|
||||
→ warning "could not be accessed on a registry" — imagens precisam estar no registry acessível ou usar `--with-registry-auth`
|
||||
|
||||
### Commits realizados
|
||||
- pulse-docs: commit stack model `project-stack.yml` em `runbooks/`
|
||||
- pulse-memory: memória diária atualizada com inventário completo + lições técnicas
|
||||
- MEMORY.md + TOOLS.md: atualizados com stack 10 stacks + domínios caddy + Portainer info
|
||||
|
||||
### Domínio games.octal.tec.br validado
|
||||
- curl: HTTP 200 em 0.189s — caddy proxy funcionando ✅
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Sistema de Memória Gitea — Sessão 10:24-11:40
|
||||
- IPv6 cassado exec: whitespace or comments before JSON → adapter -s --compressed + jq funcionou
|
||||
- Admin octal autenticou no swarm como root via docker exec
|
||||
- Gitea config: SQLite3, port 3000, SSH 2222, DOMAIN=git.octal.tec.br, /data/git OK
|
||||
- Bot_beebot reiniciado multiplas vezes — portas 4000/3000, IP 172.21.0.5
|
||||
- create-user-api.json 404 — admin CLI: gitea admin user create e a forma correta
|
||||
- Token pulse-agent-token criado para Roberto — retorna sha1 unica
|
||||
- 4 repos criados via API POST: pulse-memory/pulse-skills/pulse-docs/pulse-projects
|
||||
- Estrutura de pastas via git clone local -> mv -> git commit
|
||||
|
||||
## 🗃️ Portainer Docs — Documentação cru estudada
|
||||
- Fonte: https://docs.portainer.io/user/docker/stacks.md + https://docs.portainer.io/llms-full.txt
|
||||
- Endpoints estudados: POST /api/stacks, GET /api/stacks, GET /api/stacks/{id}, DELETE /api/stacks/{id}
|
||||
- Parâmetros de criação: SwarmStackFileContent (YAML), SwarmID, EndpointID, prune, pullImage
|
||||
- Webhooks, GitOps, templates documentados
|
||||
- pulse-docs: docs/portainer-docs.md (criado + commit)
|
||||
|
||||
## 🅷 Alertas
|
||||
- pulse-libs imagem crashando — pulse-libs:latest nao acessivel no registry local
|
||||
→ necessario rebuildar imagem e subir com --with-registry-auth ou empurrar para registry publico
|
||||
- Portainer admin senha nao documentada — necessaria para acao via API /api/auth
|
||||
- Zombies em queda (8 de 55) — cleanup so no reboot do container
|
||||
- Clawhub pendente rebuild — openclaw skills update (skills/estao usando origens diferentes de paths)
|
||||
- Stack 'projects' removida — confirmada por stack ls (agora 'project' no lugar)
|
||||
|
||||
Reference in New Issue
Block a user