servidor: repo.gioser.net existe (A → 2.29.29.217) y el guion que lo publica sin tocar el Caddyfile

El nombre está dado de alta en la zona de Hetzner con la convención de la zona (A, ttl 60, la misma
IP que takana/git/gitea/www). Resuelve — comprobado contra Cloudflare; el resolutor de Google aún
servía el NXDOMAIN cacheado, que es negativo de 1 h por el `minimum` del SOA y no un fallo del alta.

⚠ La API vieja de DNS de Hetzner (dns.hetzner.com/api/v1) ya no es la buena y devuelve HTML de la
consola web, que es lo peor que puede devolver: no falla, contesta. Las zonas están hoy en la API de
cloud y las lee el MISMO token de ~/.config/hcloud/cli.toml (gioser.net = zona 986350).

Hoy el nombre resuelve y no sirve nada: falta el vhost, que es root. `publicar-repo.sh` hace la
parte publicable —repo firmado en /srv/repo + verificación contra trust/— y para imprimiendo el
bloque de Caddy en vez de editarlo: esta caja sirve 19 dominios y su Caddyfile ya lleva 20 `.bak`.

Y aborta antes de publicar si el takana de la caja es anterior al arreglo del SDD 28 §5.5 (se
detecta porque no conoce `outdated`): con uno viejo el repo sale con las 16 recetas multi-parche
irreproducibles y 8 paquetes prometiendo un binario que no existe.
This commit is contained in:
Sergio
2026-09-21 18:41:32 +00:00
parent 7be17b5a2a
commit 0d6599ac14
2 changed files with 108 additions and 0 deletions
+29
View File
@@ -546,6 +546,35 @@ habría hidratado y muerto al final. Comprobado después del arreglo, contra el
por HTTP: `parted` (6 parches **y** binario en `/usr/sbin`) instala en 0,17 s y responde
`parted (GNU parted) 3.7`; `bash` instala y responde `5.3.0(1)-release`.
### 5.7 El nombre ya existe: `repo.gioser.net` *(2026-09-21)*
Dado de alta en la zona de Hetzner (la DNS de `gioser.net` está ahí: `helium`/`hydrogen`/`oxygen`),
con la convención que ya usaban `takana`, `git`, `gitea`, `sergio` y `www`: **`repo` A →
2.29.29.217, ttl 60**. Resuelve *(comprobado contra Cloudflare; el resolutor de Google todavía
servía el NXDOMAIN cacheado — negativo de 1 h por el `minimum` del SOA, no es un fallo del alta)*.
**La API vieja de DNS de Hetzner ya no es la buena.** `dns.hetzner.com/api/v1/zones` con
`Auth-API-Token` devuelve **HTML de la consola web** (301 → 200 de una SPA), que es lo peor que
puede devolver: no falla, contesta. Las zonas viven hoy en la **API de cloud** y las lee el MISMO
token de `~/.config/hcloud/cli.toml`:
```sh
curl -H "Authorization: Bearer $TOKEN" https://api.hetzner.cloud/v1/zones # gioser.net = 986350
curl -H "Authorization: Bearer $TOKEN" https://api.hetzner.cloud/v1/zones/986350/rrsets
```
Hoy el nombre resuelve y **no sirve nada**: `http://repo.gioser.net` da el 308 global de Caddy y el
HTTPS muere en el handshake (`tlsv1 alert internal error`) porque no hay site block ⇒ no hay
certificado. Falta el vhost, que es root y va a mano: `scripts/servidor/publicar-repo.sh` publica y
firma en `/srv/repo`, comprueba el lazo y **imprime el bloque sin tocar el Caddyfile** — en esta
caja Caddy sirve 19 dominios y su config ya acumula 20 `.bak`; un guion que la reescribe a ciegas es
cómo se tiran 19 sitios para levantar uno.
**Y trae su propia guarda contra el error más fácil de cometer:** si el `takana` de la caja es
anterior al §5.5 (se detecta porque no conoce `outdated`), **aborta antes de publicar**. Con uno
viejo el repo sale con las 16 recetas multi-parche irreproducibles y 8 paquetes prometiendo un
binario que no existe — y eso no se nota hasta que alguien instala.
**Lo que queda vivo y no se tocó:** un `install <librería>` DIRECTO sigue fallando tras hidratar,
porque el `.swm` exige que el `target_bin` exista y para una librería no hay respuesta buena. Hacer
`target_bin` opcional toca el formato ([SDD 06](06-swm-format.md)) y es su propia unidad de trabajo.