# verae-nats-cluster Three **distinct Proxmox LXC** guests running **NATS JetStream** as a cluster, on the private bridge only. This is the test stand before the same layout moves to separate hardware. **Forgejo:** https://git.georgelambert.org/marchon/verae-nats-cluster **SSH:** `ssh://git@git.georgelambert.org:2223/marchon/verae-nats-cluster.git` | Guest | VMID | `vmbr1` IP | Client | Cluster | Monitor | |-------|------|------------|--------|---------|---------| | nats-a | 511 | 10.10.10.21 | `:4222` | `:6222` | `127.0.0.1:8222` | | nats-b | 512 | 10.10.10.22 | `:4222` | `:6222` | `127.0.0.1:8222` | | nats-c | 513 | 10.10.10.23 | `:4222` | `:6222` | `127.0.0.1:8222` | Cluster name: `verae`. Client URL: ```text nats://10.10.10.21:4222,nats://10.10.10.22:4222,nats://10.10.10.23:4222 ``` **Not** on `vmbr0`. **Not** `0.0.0.0`. Host lab NATS on `127.0.0.1:4222` is left running so current keep/fleet/middleware stay up until you cut over. ```bash # on NS1 (the Proxmox host) git clone ssh://git@git.georgelambert.org:2223/marchon/verae-nats-cluster.git cd verae-nats-cluster bash scripts/create-cluster.sh bash scripts/status.sh bash scripts/test.sh ``` Test-env cut-over (keep/fleet/middleware on NS1): ```bash # 1) create product streams (replicas=3) bash scripts/ensure-streams.sh # 2) fleet overlay nats.url + services/*.json already list the three URLs # 3) restart fleet and keep with NATS_URL from client.env ``` `JETSTREAM_REPLICAS=3` on middleware. Host `127.0.0.1:4222` can stay up unused. Zapier cloud never talks to NATS. nkeys/mTLS: `verae-nats-accounts` still has the INTERNAL/LEAF sketch. Do **not** enable accounts on this cluster until every client passes credentials in `NATS_URL`. Private `vmbr1` is the current isolation. Hardware move: same three configs, three boxes, private NIC only — change IPs in `cluster.env` and `conf/nats.conf.tmpl`.