Files
57_WolveandClaude Opus 4.8 70d3019a1c feat(kanrisha): add two-phase deployment scaffold (host prep + ScoutFS)
Add deployments/kanrisha: a phased, self-contained deploy.sh for a custom
app that runs on a ScoutFS filesystem. Alma/Rocky (RHEL family) only for now.

Phase 1 (host prep) is complete and automated: EPEL + the host package set
(git tar sparse mt-st mtx sg3_utils pciutils mbuffer wget curl zstd jq
bash-completion sos lsof), Docker, and ScoutFS via setup-scoutfs.sh with a
prompted-or-globals license key. It then prints a handoff: create + mount a
ScoutFS filesystem, then re-run with SCOUTFS_PATH set.

Phase 2 (deploy the stack behind Caddy/TLS) is wired but its compose/Caddyfile
content is a clearly-marked STUB pending the real Kanrisha compose file. The
script auto-selects the phase from whether SCOUTFS_PATH is a live ScoutFS
mount; idempotent and re-runnable.

Wiring: register kanrisha in automations.sh (DEPLOYMENTS + ask_deployment_vars),
add SCOUTFS_LICENSE to globals.env.example, and document it in README
(deployments table + Alma/Rocky-only note). No oslib.sh change needed --
os_detect already folds rocky into the rhel family.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 20:35:37 -05:00
..
2026-06-14 21:07:45 +00:00

globals/

Shared, cross-deployment assets. Everything here is referenced by the launcher (../automations.sh), the helper library (../scripts/lib.sh), and the per-deployment cloud-init templates — so a value lives in exactly one place.

File Purpose
globals.env.example Template of shared defaults. Copy to globals.env (git-ignored) and edit. Sourced by the launcher and lib.sh.
age-pubkey.txt Age public key recipient(s) for encrypted backups. Used by any stack that backs up (e.g. simplex). Public key — safe to commit.
authorized_keys Static admin SSH public keys. The fallback source when SSH_KEYS_URL is unset.
motd.txt MOTD template (token-based) rendered to /etc/motd by ../scripts/setup-host.sh. You edit the content; the renderer draws the borders and computes all spacing.
Network Domain Name Schema.md Reference: the DNS naming convention (service/device acronyms, UN/LOCODE geo-coding) used for host and service names. setup-host.sh derives the FQDN and Node ID from it.

SSH key resolution (URL-preferred)

resolve_ssh_keys() in ../scripts/lib.sh decides where admin SSH keys come from:

  1. If SSH_KEYS_URL is set in globals.env, it is fetched live with curl -fsSL (always current — best when you rotate keys often). This can be a GitHub keys endpoint (https://github.com/<user>.keys) or any raw authorized_keys URL.
  2. Otherwise, globals/authorized_keys is read directly (self-contained, versioned — edit the repo to rotate).

Rules

  • Only public material lives here. Never commit private keys (SSH private keys, age identities). globals.env and common private-key filename patterns are git-ignored (see ../.gitignore).
  • Store the age private key(s) and SSH private keys somewhere safe, outside this repository.