feat(seed): arje-prod levanta red + sshd, así se puede entrar por SSH

Sin systemd ni NetworkManager, arje-zero quedaba sin red y sin sshd:
útil como bare init, inútil para sacar logs de una VPS sin pegado en
la consola web. Dos Cards nuevas en el seed prod:

- `net-up`: corre `/usr/sbin/arje-net-up` (script nuevo en scripts/),
  que pone up todas las interfaces y arranca `dhclient -d` en
  foreground sobre la primera no-loopback. Fallback a dhcpcd o
  busybox-udhcpc si dhclient no está. Crea de paso /run/sshd y
  /var/empty/sshd para que sshd no tenga que pelearlos. Restart
  supervisión.

- `sshd`: corre `/usr/sbin/sshd -D -e` (foreground + log a stderr).
  Usa las host keys que Fedora ya tenía. Restart supervisión.

El install script copia arje-net-up.sh a /usr/sbin/arje-net-up.

Prerequisito en el host (no automatizable desde acá): si la VPS no
tiene un cliente DHCP (Fedora Cloud trae sólo NetworkManager por
defecto), el script duerme con el link up y no obtiene IPv4. En ese
caso instalar antes del próximo boot: `dnf install dhcp-client`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-23 01:56:31 +00:00
parent 8fcc4dc067
commit be4de986be
3 changed files with 95 additions and 0 deletions
+32
View File
@@ -270,6 +270,38 @@
"lifecycle": "daemon", "priority": "low",
"flow": { "input": [], "output": [] }, "genesis": []
},
{
"schema_version": 1,
"id": "01J8YVKZQ0M0M0M0M0M0M0M0N0",
"lineage": null,
"label": "net-up",
"provides": [], "requires": [],
"permissions": { "networking": "full", "filesystem": "read-write", "ipc": { "allow": [] }, "processes": true },
"soma": { "namespaces": {"mount":false,"pid":false,"net":false,"uts":false,"ipc":false,"user":false,"cgroup":false},
"rlimits": {"mem_bytes":null,"nproc":null,"nofile":null},
"cgroup": {"path":"ente.slice/net","cpu_weight":null,"io_weight":null},
"cpu_affinity": null },
"payload": { "Native": { "exec": "/usr/sbin/arje-net-up", "argv": [], "envp": [["PATH", "/usr/sbin:/usr/bin:/sbin:/bin"]] } },
"supervision": { "Restart": { "initial": 500, "max": 30000 } },
"lifecycle": "daemon", "priority": "critical",
"flow": { "input": [], "output": [] }, "genesis": []
},
{
"schema_version": 1,
"id": "01J8YVKZQ0M0M0M0M0M0M0M0S0",
"lineage": null,
"label": "sshd",
"provides": [], "requires": [],
"permissions": { "networking": "full", "filesystem": "read-write", "ipc": { "allow": [] }, "processes": true },
"soma": { "namespaces": {"mount":false,"pid":false,"net":false,"uts":false,"ipc":false,"user":false,"cgroup":false},
"rlimits": {"mem_bytes":null,"nproc":null,"nofile":null},
"cgroup": {"path":"ente.slice/sshd","cpu_weight":null,"io_weight":null},
"cpu_affinity": null },
"payload": { "Native": { "exec": "/usr/sbin/sshd", "argv": ["-D", "-e"], "envp": [["PATH", "/usr/sbin:/usr/bin:/sbin:/bin"]] } },
"supervision": { "Restart": { "initial": 1000, "max": 60000 } },
"lifecycle": "daemon", "priority": "high",
"flow": { "input": [], "output": [] }, "genesis": []
},
{
"schema_version": 1,
"id": "01J8YVKZQ0M0M0M0M0M0M0M0G0",