# Copy to .env and edit. See DEPLOY.md for the full bring-up. # .env is gitignored — it holds the Influx token and DB password. # --- WebAuthn RP (admin passkeys are ORIGIN-BOUND — must be the UI's real URL) -- # For this deployment the UI is https://diskless-server.bitasylum.org . FLEET_MGR_RP_ID=diskless-server.bitasylum.org FLEET_MGR_RP_ORIGIN=https://diskless-server.bitasylum.org FLEET_MGR_RP_NAME=Fleet Command # --- admin plane HTTPS --------------------------------------------------------- # The UI cert is a publicly-trusted Let's Encrypt cert via DNS-01 (the UI is on # the mgmt net, not internet-reachable, so HTTP-01/TLS-ALPN-01 can't validate; # DNS-01 proves control of bitasylum.org via a TXT record). An external ACME # client (lego/certbot + your DNS provider) writes fullchain/privkey into # ./pki/admin/ ; the manager hot-reloads on renewal. See DEPLOY.md. FLEET_MGR_ADMIN_ADDR=127.0.0.1:9500 FLEET_MGR_ADMIN_CERT=/pki/admin/fullchain.pem FLEET_MGR_ADMIN_KEY=/pki/admin/privkey.pem # Dev-only escape hatch: plaintext, NO passkey auth. NEVER set true in prod. FLEET_MGR_ADMIN_INSECURE=false # --- admin UI cert: Let's Encrypt DNS-01 via Route 53 (the `acme` side-car) ----- # The side-car issues + auto-renews the UI cert into ./pki/admin/ ; the manager # hot-reloads it. ACME_DOMAIN is taken from FLEET_MGR_RP_ID above. Give it AWS # creds scoped to the bitasylum.org hosted zone (IAM policy in DEPLOY.md §2c), or # omit them and attach an instance role. ACME_EMAIL=you@bitasylum.org AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION=us-east-1 # Optional but recommended: pin the Route 53 zone. Skips ListHostedZonesByName # (so you can drop it from the IAM policy) and disambiguates public/private zones. AWS_HOSTED_ZONE_ID= # Public resolver(s) for the DNS-01 propagation check (comma-separated host:port). # Needed because internal/split-horizon DNS won't resolve the public challenge # record. Defaults to Google DNS; override if 8.8.8.8 is blocked (e.g. 1.1.1.1:53). ACME_RESOLVERS=8.8.8.8:53 # ACME_STAGING=1 # uncomment for a dry-run vs LE staging (UNTRUSTED certs, no rate limit) # --- agent plane (gRPC + mTLS, fleet CA) --------------------------------------- # Routable mgmt address enrolled hosts dial (":9600" = all interfaces). The # server cert is issued by the fleet CA (server-pki.sh); the client CA is the # fleet root so host TPM certs verify. Paths are fixed in docker-compose.yml. FLEET_MGR_AGENT_ADDR=:9600 # --- authorise pillar (enrol-broker admin plane over mTLS) --------------------- # The broker runs network_mode:host on 127.0.0.1:9443. The manager's client cert # is minted by ../enrol-broker/admin-pki.sh (admin CA), into ./pki/broker/ . FLEET_MGR_BROKER_URL=https://127.0.0.1:9443 # --- InfluxDB (private; the manager is the ONLY reader/writer) ----------------- # The token is handed to BOTH influxdb (init admin token) and the manager, so a # single value wires the two with no copy step. Treat as a secret. FLEET_MGR_INFLUX_TOKEN=changeme-generate-a-long-random-token FLEET_MGR_INFLUX_ORG=fleet FLEET_MGR_INFLUX_BUCKET=fleet_health INFLUX_ADMIN_USER=fleet-admin INFLUX_ADMIN_PASSWORD=changeme-influx-admin-password INFLUX_RETENTION=90d # --- misc ---------------------------------------------------------------------- # CI image tag to run (from .gitea/workflows/fleet-manager-image.yaml): a release # semver, main-, or a - dev build. Defaults to :latest. FLEET_MANAGER_VERSION=latest FLEET_MGR_SESSION_TTL_MIN=720 # Must match the enrol-broker's HOSTNQN_BASE. HOSTNQN_BASE=nqn.2026-06.org.example.fleet:host-