# The whole `ace` server's converted service set, installed together on ONE node behind the mesh # foundation — the media/home-automation half of the whole-mesh rehearsal (novox/hq). Sibling of # scenarios/whole-mesh-novox.yml; same topology, a different (larger, media-heavy) module set. # # Foundation (store, broker, control) rides `anchor` and NOTHING else; ALL of ace's services ride the # `ace` node. An overlay is placed so the two DB consumers (baserow, letta) reach the postgres # providers co-located with them. The media stack (sonarr/radarr/lidarr/plex/bazarr/nzbget/ # qbittorrent/bookshelf) shares the operator-owned library directories under /services/media (ADR # 0051 `accesses`); the test pre-creates them on the node, as the operator would, before the push — # the mesh confirms the paths exist and mounts them, but creates and chowns none of it. # # MESH_LAB_HOST_BINARY=.../mesh-host MESH_LAB_BUNDLE=.../examples/foundation-first-node.lock # The runtimes are built by scripts/build-module-runtime.sh (one per module) and must be in the local # daemon, because nothing serves them and nothing can. Every media/app image is pulled from the # internet by the node itself, over its uplink, by the digest its module.json already pins. The test # loads each committed module.json from mesh-catalog and rewrites only OUR image references, to the # ID the machine holds each one under. scenario: whole-mesh-ace segments: hosting: kind: public cidr: [192.0.2.0/24] machines: anchor: at: { segment: hosting, address: [192.0.2.10] } egress: true inbound: allow memory: 4GiB cpus: 4 disk: 20GiB # The foundation only, so the control plane's image only. The runtimes belong on the node that # runs the modules, and a 20GiB disk has no room for them anyway. images: [mesh-controller:development] # The whole ace service set — 24 modules, ~50 containers, several heavy (Plex, Home Assistant, # Letta ~1.8GiB, Baserow ~1.5GiB, the UniFi controller's JVM, mssql ~2GiB). Sized past novox. ace: at: { segment: hosting, address: [192.0.2.20] } egress: true inbound: allow memory: 18GiB cpus: 8 disk: 120GiB # Every runtime. Not mesh-controller: the control plane runs on the anchor. images: - mesh-runtime-postgres:development - mesh-runtime-redis:development - mesh-runtime-mssql:development - mesh-runtime-portainer:development - mesh-runtime-sonarr:development - mesh-runtime-radarr:development - mesh-runtime-lidarr:development - mesh-runtime-plex:development - mesh-runtime-bazarr:development - mesh-runtime-nzbget:development - mesh-runtime-qbittorrent:development - mesh-runtime-jackett:development - mesh-runtime-ombi:development - mesh-runtime-tautulli:development - mesh-runtime-bookshelf:development - mesh-runtime-home-assistant:development - mesh-runtime-mosquitto:development - mesh-runtime-influxdb:development - mesh-runtime-grafana:development - mesh-runtime-baserow:development - mesh-runtime-letta:development - mesh-runtime-nodered:development - mesh-runtime-searxng:development - mesh-runtime-unifi:development images: - mesh-controller:development # The per-module runtimes (built by scripts/build-module-runtime.sh). - mesh-runtime-postgres:development - mesh-runtime-redis:development - mesh-runtime-sonarr:development - mesh-runtime-radarr:development - mesh-runtime-lidarr:development - mesh-runtime-plex:development - mesh-runtime-bazarr:development - mesh-runtime-nzbget:development - mesh-runtime-qbittorrent:development - mesh-runtime-jackett:development - mesh-runtime-ombi:development - mesh-runtime-tautulli:development - mesh-runtime-bookshelf:development - mesh-runtime-home-assistant:development - mesh-runtime-mosquitto:development - mesh-runtime-influxdb:development - mesh-runtime-grafana:development - mesh-runtime-baserow:development - mesh-runtime-letta:development - mesh-runtime-nodered:development - mesh-runtime-searxng:development - mesh-runtime-unifi:development - mesh-runtime-portainer:development - mesh-runtime-mssql:development place: all: [host, runtime]