# OpenPay — env file template. # # Copy to /etc/openpay/openpay.env (referenced by openpay.service) # and edit. systemd reads `KEY=value` lines; quote strings only if # the value itself contains spaces. # # Reality check on what's wired: # # READ BY SHIPPED BINARY (crates/op-server/src/main.rs): # OP_BIND_ADDR, RUST_LOG # # CONVENTIONS THIS GUIDE ADOPTS (need a patched main.rs or a # custom binary that reads them — see deploy/README.md): # OP_GRAPH_PATH, OP_API_KEYS, OP_LOG_FORMAT # --- Bind address --------------------------------------------------- # Where op-server binds. Default 127.0.0.1:8080 in the shipped # binary. Keep it on loopback; terminate TLS in Caddy. OP_BIND_ADDR=127.0.0.1:8080 # --- Persistence ---------------------------------------------------- # Path to the single-file Minigraf-backed graph database. Every # domain store (refunds, disputes, settlement, ledger, reconciliation, # webhooks, subscriptions, idempotency) writes here. Reopening the # same path on restart recovers all state. # # Wired via AppState::with_graph_path in crates/op-server/src/state.rs. # The shipped main.rs ignores this — patch it to read this env var # (see deploy/README.md §3) or it has no effect. OP_GRAPH_PATH=/var/lib/openpay/data.graph # --- Authentication ------------------------------------------------- # Comma-separated list of API keys accepted by ApiKeyAuthLayer. # Generate with: openssl rand -hex 32 # Clients pass the key as `Authorization: Bearer ` (or # whatever header your ApiKeyAuthLayer config picks up — check # crates/op-server/src/auth.rs). # # Empty / unset disables auth — DO NOT ship to production without # this set, unless you've wired your own auth layer. OP_API_KEYS= # --- Logging -------------------------------------------------------- # tracing-subscriber EnvFilter directive. The shipped main.rs # defaults to "info,op_server=debug" when this is unset. Examples: # RUST_LOG=info # RUST_LOG=warn,op_server=debug,op_orchestrator=trace # RUST_LOG=off # silence everything RUST_LOG=info,op_server=debug # Log output format. The shipped main.rs uses the default pretty # subscriber and does NOT branch on this env. To get newline- # delimited JSON for journald → loki / Datadog ingestion, patch # main.rs to read it and switch to `tracing_subscriber::fmt().json()` # when this is `json`. See deploy/monitoring.md. # # Accepted values (by convention, not by the shipped binary): # text (default — human readable, color) # json (one event per line, structured) OP_LOG_FORMAT=json