openvibers/openvibe.food .env.example
.env.example
| 1 | # OpenVibe.Food — environment (production: /etc/openvibe/food.env). Names only; never commit values. |
| 2 | |
| 3 | NODE_ENV=production |
| 4 | PORT=4970 |
| 5 | HOST=127.0.0.1 |
| 6 | BASE_URL=https://openvibe.food |
| 7 | TRUST_PROXY=2 |
| 8 | # PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh food: the runtime role through PgBouncer, |
| 9 | # the owner on a direct connection (migrations), and Valkey (shared limit counters). |
| 10 | # Without DATABASE_URL, development uses an embedded PGlite database in data/pglite. |
| 11 | DATABASE_URL= |
| 12 | DATABASE_DIRECT_URL= |
| 13 | VALKEY_URL= |
| 14 | VALKEY_PREFIX=ov:food: |
| 15 | # Per-caller limits (server/http/caller-limits.js): requests one caller may make to the API per minute and per hour. |
| 16 | #FOOD_LIMITS_MINUTE=120 |
| 17 | #FOOD_LIMITS_HOUR=3000 |
| 18 | |
| 19 | # OpenVibe.Network: SSO (OAuth client `food`, PKCE S256) and its JWKS; app tokens for audience openvibe.food. |
| 20 | OV_NETWORK_URL=https://openvibe.network |
| 21 | OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000 |
| 22 | OV_OAUTH_CLIENT_ID=food |
| 23 | OV_OAUTH_CLIENT_SECRET= |
| 24 | # OpenVibe.AI on loopback, for recipe ideas from the cupboard (workflow food.suggest_recipes). Unset = recipe ideas are off. |
| 25 | OV_AI_INTERNAL_URL= |
| 26 | # OV_OAUTH_REDIRECT_URI=https://openvibe.food/auth/callback |
| 27 | # FOOD_AUDIENCE=openvibe.food |
| 28 | |
| 29 | # OpenVibe.Events → Food (ADR-033 account export and deletion): the secret signs a delivery (comma-separated for |
| 30 | # rotation, 32+ characters each; unset makes POST /internal/events answer 503); the url is where the two subscriptions |
| 31 | # are created at boot (off when unset); FOOD_EVENTS_SUBSCRIBE=0 turns that off. |
| 32 | FOOD_EVENTS_SECRET= |
| 33 | FOOD_EVENTS_URL= |
| 34 | #FOOD_EVENTS_ENDPOINT=http://127.0.0.1:4970/internal/events |
| 35 | |
| 36 | # OpenStreetMap, the two services "food near you" stands on (server/food/places.js). Both are open data under ODbL 1.0 |
| 37 | # with published usage policies; server/food/upstream.js paces every call (one a second per host) and caches every |
| 38 | # answer for FOOD_GEO_CACHE_TTL_MS. Tests point these at a stand-in (test/helpers/osm.js); never at the public hosts. |
| 39 | #FOOD_NOMINATIM_URL=https://nominatim.openstreetmap.org |
| 40 | #FOOD_OVERPASS_URL=https://overpass-api.de/api/interpreter |
| 41 | # Identifies OpenVibe.Food to OSM, as both policies require. Defaults to OpenVibeFood/0.1 (+<BASE_URL>). |
| 42 | #FOOD_OSM_USER_AGENT= |
| 43 | # The pace between two requests to the same host, in ms (the policies ask for at least 1000). |
| 44 | #FOOD_OSM_MIN_INTERVAL_MS=1000 |
| 45 | #FOOD_OSM_TIMEOUT_MS=25000 |
| 46 | # Overpass servers tried after FOOD_OVERPASS_URL, comma-separated (default: private.coffee, then VK Maps: the OSM |
| 47 | # wiki's public instances without request limits), each for FOOD_OVERPASS_TRY_MS of the budget. |
| 48 | #FOOD_OVERPASS_FALLBACK_URLS=https://overpass.private.coffee/api/interpreter,https://maps.mail.ru/osm/tools/overpass/api/interpreter |
| 49 | #FOOD_OVERPASS_TRY_MS=8000 |
| 50 | # After an area query failed, the same query answers at once (its last result, or "busy") for this long, in ms. |
| 51 | #FOOD_OSM_RETRY_AFTER_MS=180000 |
| 52 | # The home's "food near" cities refreshed in the background (server/food/near-warm.js): how often, in ms (0 = off), |
| 53 | # and each area query's budget there. |
| 54 | #FOOD_NEAR_WARM_MS=21600000 |
| 55 | #FOOD_NEAR_WARM_BUDGET_MS=150000 |
| 56 | # How long a geocode or an area answer is kept, in ms (default 7 days). |
| 57 | #FOOD_GEO_CACHE_TTL_MS=604800000 |
| 58 | |
| 59 | # optional: defaults to true in production |
| 60 | # COOKIE_SECURE=true |
| 61 |