openvibers/openvibe.vip .env.example

.env.example

main 4.6 KB · 92 lines · plaintext

1# OpenVibe.VIP — environment (development: .env; production: /etc/openvibe/vip.env).
2# Names only here; never commit a value.
3
4# ── Runtime ──────────────────────────────────────────────
5NODE_ENV=development
6PORT=4620
7HOST=127.0.0.1
8BASE_URL=http://localhost:4620
9# PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh vip: the runtime role through PgBouncer,
10# the owner on a direct connection (migrations), and Valkey (shared limit counters).
11# Without DATABASE_URL, development uses an embedded PGlite database in data/pglite.
12DATABASE_URL=
13DATABASE_DIRECT_URL=
14VALKEY_URL=
15VALKEY_PREFIX=
16# TRUST_PROXY=1
17
18# ── OpenVibe.Network (identity) ──────────────────────────
19OV_NETWORK_URL=https://openvibe.network
20OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000
21# OV_NETWORK_ISSUER=https://openvibe.network
22# OV_NETWORK_PUBLIC_KEY= # optional; otherwise fetched from /api/.well-known/jwks
23# VIP_AUDIENCE=openvibe.vip
24# Client `vip`: service tokens (Billing, Events, Network) and browser sign-in
25OV_OAUTH_CLIENT_ID=vip
26OV_OAUTH_CLIENT_SECRET=
27# OV_OAUTH_REDIRECT_URI=https://openvibe.vip/auth/callback
28# Signs the pages' anti-forgery tokens (required in production): openssl rand -hex 32
29VIP_FORM_SECRET=
30# Staff who manage network plans and see any creator's members hold staff.site.configure in the
31# contracts staff map (Network admins); VIP_STAFF_ROLES is gone.
32
33# ── OpenVibe.Billing (entitlement truth, checkout, cancel) ──
34BILLING_URL=http://127.0.0.1:4600
35
36# OpenVibe.Media: the image on a members-only post (the bytes live in Media, under the VIP_MEDIA_APP tenant).
37OV_MEDIA_URL=https://openvibe.media
38OV_MEDIA_INTERNAL_URL=http://127.0.0.1:4100
39VIP_MEDIA_APP=vip
40# BILLING_AUDIENCE=openvibe.billing
41# VIP_BILLING_TIMEOUT_MS=5000
42# Providers offered on plan pages (must be enabled on Billing); `credit` pays from Vibes credit.
43# Leave EMPTY until Billing is authoritative (Wave 8 cutover): checkout is then closed.
44# optional: unset = 'powerchat,credit'; set but empty = no checkout (before launch)
45# VIP_CHECKOUT_PROVIDERS=
46# Turns Billing's PowerChat checkout_ref into a link: {ref} and {cents}
47# optional: empty = no PowerChat link
48# VIP_POWERCHAT_LINK_TEMPLATE=
49# VIP_BILLING_RATES_TTL_MS=300000
50
51# ── Entitlement projection ───────────────────────────────
52# A projection answer is trusted at most this long after VIP last heard from Billing (and never
53# past the paid period's end); within the grace a projection-only check still answers (stale),
54# after it VIP answers "unknown" until Billing confirms.
55# optional: defaults to 900000
56# VIP_PROJECTION_MAX_AGE_MS=900000
57# optional: defaults to 60000
58# VIP_PROJECTION_GRACE_MS=60000
59
60# ── OpenVibe.Events ──────────────────────────────────────
61# Outbox relay (vip.plan.published, vip.membership.changed); off when empty
62EVENTS_URL=
63# EVENTS_RELAY_INTERVAL_MS=2000
64# Signing secret of VIP's Billing-event subscriptions (scripts/subscribe.js); comma-separate to rotate
65VIP_EVENTS_SECRET=
66
67# ── Jobs ─────────────────────────────────────────────────
68# VIP_JOBS=off
69# VIP_REFRESH_INTERVAL_MS=60000
70
71# ── Public card, badge and widget (/embed) ───────────────
72# The widget's CSP frame-ancestors: any site by default (it is meant to be embedded); e.g.
73# "https://openvibe.live https://*.openvibe.network" to restrict it. The rest of VIP stays 'self'.
74# VIP_WIDGET_FRAME_ANCESTORS=*
75# How long a creator's member count (from Billing) is reused
76# VIP_MEMBER_COUNT_TTL_MS=300000
77
78# ── IndexNow (openvibe-shared/indexnow) ──────────────────
79# With a key (8-128 hex or alphanumeric characters, what IndexNow's own tools generate), search
80# engines are told the moment a published plan appears, changes or is archived (the key file is served
81# at /<key>.txt). Unset: off — nothing is mounted and nothing is sent.
82#INDEXNOW_KEY=
83
84# ── Per-actor limits (server/api/actor-limits.js) ───────
85# Reads one caller (a service principal, a person, else an address) may make to /api/v1 per minute
86# and per hour; past them 429 rate_limited with Retry-After. Entitlement checks, policy evaluation,
87# checkout and catalog changes have their own numbers (README).
88# optional: defaults to 120
89# VIP_LIMITS_MINUTE=120
90# optional: defaults to 3000
91# VIP_LIMITS_HOUR=3000
92