Metaยถ
Descriptionยถ
This role deploys the Meta Infinite Graph, a browsable graph of every Infinito.Nexus role and the dependencies between them. It is served as a pre-rendered static site from a project-owned container image.
Overviewยถ
The graph is a read-only surface. It has no accounts, no login and no authenticated state, so meta/services.yml pins both sso and logout to false and the role declares PERSONA_ADMINISTRATOR_BLOCKED and PERSONA_BIBER_BLOCKED in templates/playwright.env.j2.
Everything else the role couples to is driven by group membership: a service turns on exactly when its provider role is part of the deployment. The role runs in both compose and swarm mode and is published on meta.{{ DOMAIN_PRIMARY }}.
Architectureยถ
ARCHITECTURE.md draws Meta from its own metadata: the containers it runs under compose, what changes under swarm, how each volume is backed, and every role it depends on or is depended upon by.
Section |
Drawn from |
|---|---|
|
|
|
|
|
|
|
Featuresยถ
Dependency graph: renders every role and the edges between them, so the modular structure of a deployment is inspectable without reading
meta/files by hand.Pinned release image:
ghcr.io/infinito-nexus/metafrom the projectโs own registry namespace, pinned to a release tag rather than a floatinglatest. The role declares noarchitectures, so the deploy matrix may place it on either.Live role data: when
web-svc-apiis in the deployment,templates/env.j2rendersMIG_API_URLfrom its canonical URL so the graph reads role data from the running API instead of a build-time snapshot.Dashboard tile: when
web-app-dashboardis present, the graph is offered as a card pointing at this roleโs canonical domain.Shared styling: when
web-svc-designis present, the site consumes the central stylesheet.Usage statistics: when
web-app-matomois present, the tracker is injected bysys-front-inj-matomo.Scrape target: when
web-app-prometheusis present, the role joins the monitoring closure.Onion surface: when
svc-net-toris present, the graph is additionally served over its onion address. Both variants inmeta/variants.ymlkeep tor on.Resource envelope: 0.2 CPU, 128 MB reservation, 256 MB limit, 256 PIDs, 1224 MB minimum storage;
curlhealthcheck on internal port 80, locally published on 8047.
Quick Setupยถ
Developmentยถ
Clone, set up the workstation, and deploy Meta onto the local stack:
git clone https://github.com/infinito-nexus/core.git
cd core
make onboard
make compose-deploy mode=reinstall apps=web-app-meta full_cycle=false
Productionยถ
Run the published image to provision the inventory and deploy Meta to a managed server over SSH. The image logs in as root, so the server must accept root over a public key, and the two key variables are the two halves of one key pair: the private half authenticates the deploy, and the public half is what the deploy keeps authorized for root and installs for the administrator account. Naming a public half that does not belong to the private one locks the running deploy out at its next reconnect.
APP=web-app-meta
HOST="<your-server>"
DOMAIN="<your-domain>"
TLS_MODE=self_signed
SSH_PUBLIC_KEY="<your-ssh-public-key>"
SSH_PRIVATE_KEY="<your-ssh-private-key-file>"
WORKDIR="$HOME/.infinito.nexus"
mkdir -p "$WORKDIR/inventories"
docker run --rm \
-v "$WORKDIR/inventories:/etc/infinito.nexus/inventories" \
-v "$SSH_PRIVATE_KEY:/run/secrets/deploy_key:ro" \
-e APP="$APP" -e HOST="$HOST" -e DOMAIN="$DOMAIN" -e TLS_MODE="$TLS_MODE" -e SSH_PUBLIC_KEY="$SSH_PUBLIC_KEY" \
ghcr.io/infinito-nexus/core/debian:latest bash -c '
INVENTORY=/etc/infinito.nexus/inventories/production
infinito administration inventory provision "$INVENTORY" \
--inventory-file "$INVENTORY/devices.yml" \
--host "$HOST" \
--include "$APP" \
--vars "{\"TLS_MODE\": \"$TLS_MODE\", \"DOMAIN_PRIMARY\": \"$DOMAIN\", \"SYS_SVC_SSHD_PERMIT_ROOT_LOGIN\": \"prohibit-password\", \"users\": {\"root\": {\"authorized_keys\": [\"$SSH_PUBLIC_KEY\"]}, \"administrator\": {\"authorized_keys\": [\"$SSH_PUBLIC_KEY\"]}}}" &&
infinito administration deploy dedicated "$INVENTORY/devices.yml" \
--password-file "$INVENTORY/.password" \
-u root --private-key /run/secrets/deploy_key \
--diff -vv'
The inventory under $WORKDIR is written by the container as root, including the vault password at inventories/production/.password. Run sudo chown -R "$USER" "$WORKDIR" afterwards to read it.
Further Resourcesยถ
Creditsยถ
Part of the Infinito.Nexus Project and maintained by Kevin Veen-Birkenbach. Licensed under the Infinito.Nexus Community License (Non-Commercial).
That licence covers this role. The software it deploys is a separate grant: MIT, under which commercial use is allowed. You owe its authors this much: keep the copyright notice and the licence text. Permission for one of the two is not permission for the other.