Test env NATS cluster cut-over

This commit is contained in:
George Lambert 2026-09-11 23:59:56 -04:00
commit b1e9dfa39d
25 changed files with 833 additions and 0 deletions

63
HOST-DEPS.md Normal file
View file

@ -0,0 +1,63 @@
# Host dependencies (`scripts/host-deps.sh`)
Every Forgejo module on `git.georgelambert.org` is listed in `host-deps.tsv`. This script **checks** that the current machine has the OS packages, Node, and (when this host runs JetStream) `nats-server`. Missing pieces are **downloaded and installed** for the OS it is running on.
| OS family | Package tool | Node | nats-server |
|-----------|--------------|------|-------------|
| Debian / Ubuntu | `apt-get` | official `linux-x64` / `linux-arm64` tarball into `$PREFIX` | GitHub release tarball |
| Alpine | `apk` | `apk add nodejs` then musl tarball if still too old | `apk add nats-server` or glibc release (last resort) |
| macOS | Homebrew | already on PATH or brew | brew / skip |
`$PREFIX` is `/usr/local` as root, otherwise `~/.local`. Put `$PREFIX/bin` on `PATH`.
Do **not** copy `node_modules` from macOS onto Linux (`better-sqlite3``invalid ELF header`). Run `npm install` **on the target OS** (`scripts/install-deps.sh`).
Zapier cloud never talks to NATS. `nats-server` binds **127.0.0.1:4222** only on `ns1-all-in-one` and `ns1-archive`.
## Commands
```bash
git clone ssh://git@git.georgelambert.org:2223/marchon/verae-bootstrap.git
cd verae-bootstrap
# What this box still needs (no changes)
bash scripts/host-deps.sh --check --type ns1-all-in-one
# Install git, curl, Node 22, build tools, nats-server
bash scripts/host-deps.sh --type ns1-all-in-one
# Single module (e.g. a thin Alpine VM that only runs worm)
bash scripts/host-deps.sh --module verae-archive-worm
# Catalog PDF/HTML build tools (pandoc, weasyprint, pypdf)
bash scripts/host-deps.sh --docs --module zapier-docs-master
# Then clone + npm
export VERAE_SRC=$HOME/verae-src
bash scripts/fetch.sh ns1-all-in-one
```
`scripts/fetch.sh` runs `host-deps.sh` first so Git/Node exist before clone.
## Module → host needs
| Module (Forgejo) | Node | npm | native C++ | NATS client | Notes |
|------------------|------|-----|------------|-------------|--------|
| zappier-edge | 20 | yes | **better-sqlite3** | yes | Rebuild sqlite on Linux |
| verae-middleware | **22** | yes | | yes | |
| verae-zapier-app / verae-activate | 18 | local zapier CLI only | | | Runs on Zapier cloud |
| archive-worm / tree-node / aggregator / splitter | 20 | yes | | yes | |
| fleet | 20 | yes | | | `openssh-client` |
| keep, IAM, session, access-* , identity, jobs-events, billing NATS | 20 | yes | | most | |
| overview, docs-master, user-docs, decisions, nats-accounts, ops | — | | | | Docs only (`--docs` for catalog build) |
Full table: `host-deps.tsv`.
## Server types and nats-server
| Type | `nats-server` on this host? |
|------|------------------------------|
| ns1-all-in-one | yes (`--nats` implied) |
| ns1-archive | yes |
| control-plane | no (client to NS1 loopback / private URL) |
| lan-worker | no (client; lan-134 stays disabled until SSH works) |