los nueve daemons propios declarados — y la línea entre «se muda» y «se INTERCAMBIA»
Nueve de las diez sellaron y están promovidas. Cinco corren en la caja (matilda, tupu, pacha, pacha-secretos, willay-daemon, más el par de shuma de ayer); cuatro quedan instaladas y FRENADAS a propósito, cada una con su guarda diciendo qué falta. ⚠ LA PAUTA DE LOS VHOSTS NO SIRVE PARA UNA IDENTIDAD. Con los sitios la regla fue «mudá el DNS y dejá el origen encendido, así volver cuesta un minuto» (§6.26). Con `tejido` es justo lo contrario: su README dice que la clave que el roster atesta ES la identidad de transporte libp2p (`~/.tejido/device.seed`), así que dos máquinas con la misma semilla no son dos réplicas — son el MISMO PeerId en dos sitios, dos impostores mutuos para la flota. `tejido` se INTERCAMBIA: se apaga allá, se enciende acá, en ese orden. Todo listo para el intercambio (binario, cuenta 964, identidad 700 instalada) y su Card en `cards.d` pero NO en el `genesis`, para que un reinicio no lo encienda. Y arrastra a `willay-crosscheck`, que no es independiente: corriendo su línea a mano dice «no hay roster en /root/.tejido/roster.postcard — emparejá primero». Vive dentro de la red de tejido. `thasnuna` tampoco puede: su INSTALAR.md —escrito hoy por el frente tawasuyu para esta mudanza— pide `sandokan-mcp` y `claude` AUTENTICADO, y el CLI de claude es glibc de ~300 M (jaula qorpa). De ahí sale un hallazgo que vale para el respaldo entero: la Card `openrc-openclaw` de gioser lleva la API key de su proveedor EN CLARO dentro del JSON de /etc/arje/cards.d/, que se respalda y se copia. Un secreto dentro de una Card viaja a todas partes. `--label` de willay-crosscheck NOMBRA A LA MÁQUINA: en gioser decía `momento`. Ahora sale de `hostname` y la guarda frena si no hay. Y tres veredictos FALSOS en una tarde, los tres por probar con lo que la caja no tiene: `/dev/tcp` (busybox ash no lo tiene) dio los 5 puertos de gioser «cerrados»; la expansión de llaves dijo que los artefactos no habían llegado; y `find -newermt "-2 minutes"` dijo que tupu no escribía. Tupu SÍ escribe: su fichero tiene tamaño CONSTANTE —es una serie fija— así que ni los bytes ni ese find prueban nada; lo que decide es el mtime, medido dos veces con 40 s de por medio. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2293,6 +2293,66 @@ Dos veredictos falsos en una tarde, los dos por probar con algo que la caja no t
|
||||
Es la misma lección del §6.23 (`ps` y `dig` ausentes) y merece repetirse: *una prueba que no puede
|
||||
pasar se ve igual que una que todavía no pasó*.
|
||||
|
||||
### 6.39 🕸️ Los nueve daemons propios, y la línea que separa «se muda» de «se INTERCAMBIA» *(2026-09-16)*
|
||||
|
||||
Nueve de las diez recetas sellaron. Cinco corren; cuatro están instaladas y **frenadas a propósito**,
|
||||
cada una por un motivo distinto y con su guarda diciéndolo.
|
||||
|
||||
| corriendo | | frenado | por qué |
|
||||
|---|---|---|---|
|
||||
| `matilda` · `tupu` | root, escriben `/var/lib/tupu/takana/` | `sandokan-watch` | en takana no hay `auth.log` ni journalctl |
|
||||
| `pacha` · `pacha-secretos` | cuenta `pacha` (965) | `tejido` | **misma identidad libp2p que el de gioser** |
|
||||
| `willay-daemon` | root, con su índice mudado | `willay-crosscheck` | necesita el roster de tejido |
|
||||
| `shuma-daemon` · `shuma-gateway` | cuenta `shuma` (§6.37) | `thasnuna` | pide `claude` autenticado y `sandokan-mcp` |
|
||||
|
||||
#### ⚠ La regla que sirvió para los vhosts NO sirve para una identidad
|
||||
|
||||
Con los sitios web la pauta fue: **mudá el DNS y dejá el origen encendido**, así volver cuesta un
|
||||
minuto (§6.26). Con `tejido` eso es exactamente lo que NO hay que hacer, y el README del propio
|
||||
tejido lo dice: *«la clave que el roster atesta ES la identidad de transporte libp2p»*
|
||||
(`~/.tejido/device.seed`). Dos máquinas con la misma semilla no son dos réplicas del mismo servicio:
|
||||
son **el mismo PeerId en dos sitios**, o sea dos impostores mutuos para el resto de la flota.
|
||||
|
||||
⇒ `tejido` se **intercambia**: se apaga allá, se enciende acá, en ese orden. Está todo listo para el
|
||||
intercambio —binario, cuenta `tejido` (964), identidad instalada 700 en `/var/lib/tejido/.tejido/`—
|
||||
y su Card vive en `cards.d` pero **no en el `genesis`**, para que un reinicio no lo encienda solo.
|
||||
|
||||
Y arrastra a otro: `willay-crosscheck` **no es independiente**. Corriendo su línea a mano:
|
||||
|
||||
```
|
||||
Error: no hay roster en /root/.tejido/roster.postcard — emparejá primero (`tejido serve` / `tejido join`)
|
||||
```
|
||||
|
||||
Vive dentro de la red de tejido, así que hereda su condición. Se enciende en el mismo movimiento.
|
||||
|
||||
#### Lo que cada guarda evita
|
||||
|
||||
- `thasnuna`: su `INSTALAR.md` —escrito hoy por el frente tawasuyu para esta misma mudanza— pide
|
||||
tres cosas, y dos no están: `sandokan-mcp` en el PATH («el agente contesta pero no tiene
|
||||
herramientas») y **`claude` instalado y AUTENTICADO** («no hay anfitrión»). El CLI de claude es un
|
||||
binario **glibc de ~300 M**: en una caja musl pide jaula qorpa, como `sergioh-api`.
|
||||
- Y de ahí sale un hallazgo que vale para el respaldo entero: ese documento explica por qué el token
|
||||
no va en la Card, y el motivo está medido en la máquina vieja — **la Card `openrc-openclaw` de
|
||||
gioser lleva la API key de su proveedor EN CLARO dentro del JSON de `/etc/arje/cards.d/`**, que es
|
||||
un directorio que se respalda y se copia. Un secreto dentro de una Card viaja a todas partes.
|
||||
- `willay-crosscheck`: `--label` **nombra a la máquina**. En gioser decía `momento`; copiarlo tal
|
||||
cual habría hecho que la caja nueva se anunciara con el nombre de la que se borra. Ahora sale de
|
||||
`hostname`, y si no hay, la guarda lo dice.
|
||||
|
||||
#### 🔁 Tres veredictos falsos en una tarde, los tres por probar con lo que la caja no tiene
|
||||
|
||||
Van con el §6.38 y ya son patrón, no anécdota:
|
||||
|
||||
| la prueba | lo que dijo | lo que pasaba |
|
||||
|---|---|---|
|
||||
| `/dev/tcp/host/puerto` | los 5 puertos de gioser «cerrados» | busybox `ash` no tiene `/dev/tcp` |
|
||||
| `ls /store/*-{a,b}` | «los artefactos no llegaron» | busybox no expande llaves |
|
||||
| `find … -newermt "-2 minutes"` | «tupu no escribe hace 2 min» | tupu **sí** escribe: su `mtime` avanza cada 10 s |
|
||||
|
||||
El de `tupu` es el más instructivo porque casi produce un diagnóstico al revés: el fichero tiene
|
||||
**tamaño constante** (es una serie de tamaño fijo), así que «no cambió de bytes» tampoco probaba
|
||||
nada. Lo que decide es el `mtime`, medido dos veces con 40 s de por medio.
|
||||
|
||||
## 7. Reusar los scripts que ya existen, y no escribir de nuevo
|
||||
|
||||
Pedido explícito del usuario. El inventario de lo que ya hace el trabajo:
|
||||
|
||||
+18
-1
@@ -1338,6 +1338,12 @@ paquetes = [
|
||||
# `sergio.gioser.net`. Construidos desde el monorepo de tawasuyu por decisión del usuario, en vez
|
||||
# de mudar el binario glibc de gioser —cuyo inodo, además, ya estaba BORRADO del disco.
|
||||
"shuma-daemon", "shuma-gateway",
|
||||
# ── los daemons propios del usuario (2026-09-16) ──────────────────────────────────────────────
|
||||
# Decisión suya: «viven todos los tawasuyu». Se construyen desde el monorepo, no se copian — tres
|
||||
# de ellos corrían en gioser desde un INODO BORRADO. Entran al perfil como PAQUETES todos; cuáles
|
||||
# ARRANCAN solos es otra pregunta y está más abajo, en `servicios`.
|
||||
"matilda", "tupu", "sandokan-watch", "pacha", "pacha-secretos",
|
||||
"willay-daemon", "willay-crosscheck", "tejido", "thasnuna",
|
||||
# `curl`/`wget`: bajar del mirror y del repo. `takana install --repo https://…` los necesita del
|
||||
# lado del cliente, y son también la única forma de diagnosticar un origen caído desde la caja.
|
||||
"curl", "wget",
|
||||
@@ -1447,7 +1453,18 @@ paquetes = [
|
||||
# La cuenta `shuma` la declara `recipes/shuma-daemon.toml` con `[[user]]`, sin privilegio y con
|
||||
# `shell = /bin/sh` —no `/bin/false`—, porque este demonio existe para abrir PTYs: con la shell
|
||||
# inerte el servicio arranca, se supervisa, y cada pestaña muere al instante.
|
||||
servicios = ["sshd", "gitea", "caddy", "minga", "squid", "crond", "chronyd", "shuma-daemon", "shuma-gateway"]
|
||||
# ⚠ CUATRO DE LOS NUEVE DAEMONS PROPIOS **NO** ESTÁN ACÁ, Y ES LO IMPORTANTE DE ESTA LÍNEA:
|
||||
# · `sandokan-watch` — en takana no hay `auth.log` ni journalctl: arrancaría verde SIN VIGILAR.
|
||||
# · `tejido` y `willay-crosscheck` — comparten la identidad libp2p (`device.seed`) con el tejido
|
||||
# que TODAVÍA CORRE en gioser. Dos máquinas con la misma semilla son el MISMO PeerId: no son dos
|
||||
# réplicas, son dos impostores mutuos. Se encienden en el mismo movimiento en que el viejo se
|
||||
# apaga — es un INTERCAMBIO, no una convivencia, y por eso no van al arranque automático.
|
||||
# · `thasnuna` — su INSTALAR.md pide `sandokan-mcp` y `claude` AUTENTICADO, y el CLI de claude es
|
||||
# glibc: pide jaula qorpa.
|
||||
# Sus Cards están instaladas en `cards.d` (se pueden encarnar a pedido) y sus guardas salen 78
|
||||
# diciendo qué falta. La distinción `cards.d` vs `genesis` es exactamente ésta.
|
||||
servicios = ["sshd", "gitea", "caddy", "minga", "squid", "crond", "chronyd", "shuma-daemon", "shuma-gateway",
|
||||
"matilda", "tupu", "pacha", "pacha-secretos", "willay-daemon"]
|
||||
|
||||
# ════════════════════════════════════════════════════════════════════════════════════════════════
|
||||
[perfil.metal-tigerlake]
|
||||
|
||||
Reference in New Issue
Block a user