CEOS — Runbook operacional (VPS)
Como o CEOS está integrado à VPS da fleet OpenClaw (root@103.90.161.70,
host gclaw). Referência para operar, reconstruir e reverter com segurança.
Princípio: os 5 agentes existentes e os sites em
compositelab.netsão produção. Mudanças emopenclaw.jsone no nginx são aditivas, sempre com backup e validação (--dry-run/nginx -t) antes de aplicar.
Componentes
| O quê | Onde |
|---|---|
| Clone do repo | /opt/ceos (deploy key dedicada) |
| Workspace do agente | /opt/ceos/vault |
| Deploy key (privada) | /root/.ssh/ceos_deploy_ed25519 — read-write, só para este repo |
| Config do agente | ~/.openclaw/openclaw.json → agents.list[] id=ceos |
| Site (fonte) | /opt/ceos/site (Eleventy) |
| Site (publicado) | /var/www/ceos (servido pelo nginx) |
| Build automático | ceos-build.timer + ceos-build.service (systemd, root) |
| nginx | /etc/nginx/sites-available/ceos → sites-enabled/ceos |
| TLS | cert dedicado Let's Encrypt ceos.compositelab.net |
| Basic auth | /etc/nginx/.htpasswd-ceos (protege /dashboard, /status) |
| Credenciais entregues | /root/ceos-credentials.txt (chmod 600, não no terminal) |
Deploy key
O /opt/ceos usa uma chave dedicada (não a chave pessoal do Glaucus),
fixada no repo:
git -C /opt/ceos config core.sshCommand # ssh -i /root/.ssh/ceos_deploy_ed25519 -o IdentitiesOnly=yes ...
A pública está registrada como deploy key read-write no repo glaucus1/ceos.
Para revogar: remova a deploy key em GitHub → repo → Settings → Deploy keys.
Fluxo de publicação (build on push)
- Autoria/commit vão para
github.com/glaucus1/ceos(branchmain). ceos-build.timerdisparaceos-build.serviceperiodicamente:git -C /opt/ceos fetch; semainavançou,git pull(deploy key) e rebuild do site para/var/www/ceos.- nginx serve
/var/www/ceosimediatamente.
Forçar build agora:
systemctl start ceos-build.service
journalctl -u ceos-build.service -n 30 --no-pager
Build manual direto:
cd /opt/ceos/site && npm ci && npm run build # saída em /var/www/ceos
Reconstruir / reverter
- Reverter config do agente: os backups estão em
~/.openclaw/openclaw.json.pre-claude-ceos-*. Restaure o mais recente eopenclaw gateway restart. - Remover o 6º agente:
openclaw agents delete ceos(ou restaure o backup). - Reverter nginx:
rm /etc/nginx/sites-enabled/ceos && nginx -t && systemctl reload nginx. Os outros sites não dependem do blococeos. - Renovar TLS:
certbot renew(o certceos.compositelab.neté independente dos demais).
Troubleshooting
| Sintoma | Verificar |
|---|---|
| Agente não responde | systemctl --user is-active openclaw-gateway.service; openclaw agents list; modelo/quotas (openclaw logs) |
| Site 502/404 | systemctl status ceos-build.service; existe /var/www/ceos/index.html? |
| TLS inválido | certbot certificates; validade do cert ceos.compositelab.net |
/dashboard sem pedir senha |
/etc/nginx/.htpasswd-ceos existe? location tem auth_basic? |
Push falha em /opt/ceos |
deploy key presente? ssh -i /root/.ssh/ceos_deploy_ed25519 -T git@github.com |
Segurança
- Segredos nunca aparecem em logs/terminal. Credenciais de basic auth ficam
só em
/root/ceos-credentials.txt. - O vault não é publicado; só
/e/docssão públicos. - Capturas são
untrusted— nenhum job proativo executa o que está nelas (verCLAUDE.md). A filanemotron-3.5-content-safety:freefaz triagem de injeção (verops/models.md).