# 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) |