openvibers/openvibe.fun .env.example
.env.example
| 1 | # OpenVibe.Fun — environment (production: /etc/openvibe/fun.env). Names only; never commit values. |
| 2 | |
| 3 | NODE_ENV=production |
| 4 | PORT=5140 |
| 5 | HOST=127.0.0.1 |
| 6 | BASE_URL=https://openvibe.fun |
| 7 | TRUST_PROXY=2 |
| 8 | |
| 9 | # PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh: the runtime role through PgBouncer, |
| 10 | # the owner on a direct connection (migrations), and Valkey (shared counters/readiness). |
| 11 | # Without DATABASE_URL, development uses an embedded PGlite database in data/pglite. |
| 12 | DATABASE_URL= |
| 13 | DATABASE_DIRECT_URL= |
| 14 | VALKEY_URL= |
| 15 | VALKEY_PREFIX=ov:fun: |
| 16 | # Per-actor limits (server/http/api.js) and per-address limits (server/app.js). |
| 17 | #FUN_LIMITS_MINUTE=120 |
| 18 | #FUN_LIMITS_HOUR=3000 |
| 19 | #FUN_API_RATE_LIMIT_PER_MIN=240 |
| 20 | #FUN_RATE_LIMIT_PER_MIN=300 |
| 21 | |
| 22 | # OpenVibe.Network: SSO (OAuth client `fun`, PKCE S256), JWKS, and (only when FUN_COINS=on) OpenCoins. |
| 23 | OV_NETWORK_URL=https://openvibe.network |
| 24 | OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000 |
| 25 | # OV_NETWORK_ISSUER=https://openvibe.network |
| 26 | OV_OAUTH_CLIENT_ID=fun |
| 27 | OV_OAUTH_CLIENT_SECRET= |
| 28 | # OV_OAUTH_REDIRECT_URI=https://openvibe.fun/auth/callback |
| 29 | # FUN_AUDIENCE=openvibe.fun |
| 30 | # OV_SESSION_AUDIENCE=openvibe.network |
| 31 | # FUN_PGLITE_DIR=./data/pglite |
| 32 | |
| 33 | # OpenVibe.Events: account export/deletion deliveries to POST /internal/events. The secret signs a delivery |
| 34 | # (comma-separated for rotation, 32+ characters each; unset makes the route answer 503). The subscription |
| 35 | # needs the events.subscription.manage capability for svc:fun. |
| 36 | FUN_EVENTS_SECRET= |
| 37 | FUN_EVENTS_URL= |
| 38 | # OpenVibe.Search's owner API: the queued Search documents (fun_outbox) are delivered there. Unset: they wait. |
| 39 | #FUN_SEARCH_URL=http://127.0.0.1:4710 |
| 40 | #FUN_EVENTS_ENDPOINT=http://127.0.0.1:5140/internal/events |
| 41 | #FUN_EVENTS_INTERVAL_MS=5000 |
| 42 | |
| 43 | # Public upstreams. Live is the channel/live check; Chat is the public history Fun reads (never posts); |
| 44 | # Today is called with the viewer's own token only. |
| 45 | OV_LIVE_URL=https://openvibe.live |
| 46 | OV_CHAT_URL=https://openvibe.chat |
| 47 | OV_TODAY_URL=https://openvibe.today |
| 48 | #FUN_UPSTREAM_TIMEOUT_MS=8000 |
| 49 | |
| 50 | # OpenStreetMap: identify, pace, cache, bound. Ticketmaster is OFF unless TICKETMASTER_API_KEY is set. |
| 51 | FUN_NOMINATIM_URL=https://nominatim.openstreetmap.org |
| 52 | FUN_OVERPASS_URL=https://overpass-api.de/api/interpreter |
| 53 | FUN_OSM_USER_AGENT=OpenVibeFun/0.1 (+https://openvibe.fun; [email protected]) |
| 54 | #[email protected] |
| 55 | #FUN_OSM_MIN_INTERVAL_MS=1000 |
| 56 | #FUN_OSM_TIMEOUT_MS=20000 |
| 57 | #FUN_OSM_RETRY_AFTER_MS=120000 |
| 58 | #FUN_GEO_CACHE_TTL_MS=604800000 |
| 59 | #FUN_GEO_STALE_TTL_MS=2592000000 |
| 60 | #FUN_GUIDE_RADIUS_KM=5 |
| 61 | #FUN_GUIDE_MAX_RADIUS_KM=25 |
| 62 | #FUN_GUIDE_MAX_RESULTS=30 |
| 63 | |
| 64 | # Ticketmaster Discovery: only read when this is set. Free API, never a paid provider; never log the key. |
| 65 | #TICKETMASTER_API_KEY= |
| 66 | # or the prefixed alias: |
| 67 | #FUN_TICKETMASTER_API_KEY= |
| 68 | #FUN_TICKETMASTER_URL=https://app.ticketmaster.com/discovery/v2/events.json |
| 69 | #FUN_TICKETMASTER_MIN_INTERVAL_MS=1000 |
| 70 | #FUN_TICKETMASTER_TIMEOUT_MS=8000 |
| 71 | #FUN_TICKETMASTER_TTL_MS=900000 |
| 72 | #FUN_TICKETMASTER_STALE_TTL_MS=86400000 |
| 73 | #FUN_TICKETMASTER_RADIUS_KM=10 |
| 74 | #FUN_TICKETMASTER_SIZE=12 |
| 75 | |
| 76 | # IRL quests and the read-only chat vote timer. |
| 77 | #FUN_QUEST_VERIFY_VOTES=3 |
| 78 | #FUN_QUEST_MAX_SUGGESTIONS=30 |
| 79 | #FUN_QUEST_COINS=25 |
| 80 | #FUN_CHAT_SYNC_INTERVAL_MS=60000 |
| 81 | #FUN_CHAT_SYNC_LIMIT=200 |
| 82 | |
| 83 | # OpenCoins (loyalty points, never money): off by default. When on, svc:fun needs identity.subject.resolve and |
| 84 | # network.coins.credit, and the wallet applies these caps. |
| 85 | FUN_COINS=off |
| 86 | #FUN_COINS_DAILY_CAP=50 |
| 87 | #FUN_COINS_GLOBAL_DAILY_CAP=5000 |
| 88 | #FUN_COINS_RETRY_MS=300000 |
| 89 | |
| 90 | # A restore drill starts no jobs and creates no subscriptions. |
| 91 | #FUN_DRILL=0 |
| 92 | |
| 93 | # optional: defaults to true in production |
| 94 | # COOKIE_SECURE=true |
| 95 |