Files
bridge/compose.standalone.yml
T
zeekay 83f826794a kms.lux.cloud is the brand host; kms.lux.network is retired
The .network host was retired 2026-07-27 and no longer resolves at all, so every
reference to it named an address that cannot answer. The brand host is .cloud,
matching kms.zoo.cloud and the rest of the white-label convention.

Left alone deliberately, because rewriting them would invert what they say: the
LLM.md line that RECORDS the retirement, the e2e spec that ASSERTS
kms.lux.network must not resolve, and the recorded applies + cluster backups,
which are faithful accounts of what was applied and are not config.
2026-08-05 07:51:13 -07:00

94 lines
3.1 KiB
YAML

# Lux Bridge — STANDALONE compose.
#
# Boots the absolute minimum services for a working bridge: Postgres
# (state) + bridge-server (API) + bridge-ui (Vite SPA). NO Casdoor /
# Vault / NATS / Consul / MPC nodes — every external dep is either
# optional at runtime (m-chain MPC, KMS, cosigners) or absent from this
# topology entirely.
#
# Use when:
# - Running on a dev laptop without spinning up the full Lux platform
# - Reproducing a swap state for debugging
# - White-label tenants who run their own IAM / KMS / MPC out-of-band
#
# When you want the full platform, run `docker compose -f compose.local.yml
# up` instead. That brings up Lux ID + Vault + NATS + Consul + 3-node MPC
# alongside this one.
#
# Quick start:
# 1. Copy ./config/env.standalone.example → ./config/env.standalone
# and fill in the bridge JWT signing key + any cosigner config.
# 2. docker compose -f compose.standalone.yml up --build
# 3. Bridge UI: http://localhost:3001
# Bridge API: http://localhost:5000/healthz
# Postgres: localhost:5433 (user=bridge, pass=bridge, db=bridge)
#
# To enable external services after boot, just set the corresponding env
# vars (BRIDGE_MPC_URL, BRIDGE_KMS_URL, …) — the bridge backend graceful-degrades
# when they're unset and starts using them when they appear.
services:
postgres:
image: ghcr.io/hanzoai/sql:latest
container_name: bridge-pg-standalone
environment:
POSTGRES_USER: bridge
POSTGRES_PASSWORD: bridge
POSTGRES_DB: bridge
ports:
- "5433:5432"
volumes:
- bridge-pg-standalone:/var/lib/postgresql/data
networks: [bridge-standalone]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U bridge"]
interval: 3s
timeout: 2s
retries: 10
bridge-server:
image: ghcr.io/luxfi/bridge-server:latest
container_name: bridge-server-standalone
depends_on:
postgres: { condition: service_healthy }
environment:
PORT: "5000"
POSTGRES_URL: postgres://bridge:bridge@postgres:5432/bridge
DATABASE_URL: postgres://bridge:bridge@postgres:5432/bridge
NODE_ENV: standalone
LOG_LEVEL: info
# All external integrations are OPTIONAL — uncomment to enable.
# BRIDGE_IAM_ISSUER: https://iam.lux.network
# BRIDGE_KMS_URL: https://kms.lux.cloud
# BRIDGE_KMS_ORG: lux
# BRIDGE_IAM_CLIENT_ID: lux-bridge
# BRIDGE_IAM_CLIENT_SECRET: <fetch from your secret store>
# BRIDGE_MPC_URL: https://mpc.lux.network
ports:
- "5000:5000"
networks: [bridge-standalone]
restart: unless-stopped
bridge-ui:
image: ghcr.io/luxfi/bridge:latest
container_name: bridge-ui-standalone
depends_on:
bridge-server: { condition: service_started }
environment:
# __ENV.js is templated by the SPA serving image at boot from these
# BRIDGE_* vars (one image, N envs).
BRIDGE_API_HOST: http://localhost:5000
BRIDGE_ENV: standalone
BRIDGE_IAM_ORG: lux
ports:
- "3001:80"
networks: [bridge-standalone]
restart: unless-stopped
volumes:
bridge-pg-standalone:
networks:
bridge-standalone:
driver: bridge