openvibers/openvibe.mediahub .env.example
.env.example
| 1 | # OpenVibe.MediaHub — environment (production: /etc/openvibe/media-hub.env). Names only; never commit values. |
| 2 | |
| 3 | NODE_ENV=production |
| 4 | PORT=4990 |
| 5 | HOST=127.0.0.1 |
| 6 | BASE_URL=https://openvibe.download |
| 7 | TRUST_PROXY=2 |
| 8 | # PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh media-hub: 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:media-hub: |
| 15 | # Per-caller limits (server/http/caller-limits.js): requests one caller may make to the API per minute and per hour. |
| 16 | #MEDIAHUB_LIMITS_MINUTE=120 |
| 17 | #MEDIAHUB_LIMITS_HOUR=3000 |
| 18 | |
| 19 | # OpenVibe.Network: SSO (OAuth client `media-hub`, PKCE S256) and its JWKS; app tokens for audience openvibe.download. |
| 20 | OV_NETWORK_URL=https://openvibe.network |
| 21 | OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000 |
| 22 | OV_OAUTH_CLIENT_ID=media-hub |
| 23 | OV_OAUTH_CLIENT_SECRET= |
| 24 | # OV_OAUTH_REDIRECT_URI=https://openvibe.download/auth/callback |
| 25 | # MEDIAHUB_AUDIENCE=openvibe.download |
| 26 | |
| 27 | # OpenVibe.Events: the ADR-033 account export/deletion deliveries (POST /internal/events, v2 signature, loopback |
| 28 | # only). Without it the route answers 503 and Events retries. |
| 29 | MEDIAHUB_EVENTS_SECRET= |
| 30 | # Where the two account export/deletion subscriptions are created at boot (OpenVibe.Events, loopback on the host). |
| 31 | MEDIAHUB_EVENTS_URL= |
| 32 | |
| 33 | # ── OpenVibe.Media: where the bytes live ──────────────────── |
| 34 | # The host-internal address of the Media object API. MediaHub calls it with its Network service token. |
| 35 | # Grant [media-hub, media.object.upload, openvibe.media] and [media-hub, media.object.read, openvibe.media] |
| 36 | # on namespace media-hub. Media's `media-hub` tenant holds the bytes. |
| 37 | MEDIAHUB_MEDIA_URL=http://127.0.0.1:4100 |
| 38 | # The public origin Media's /t/ cover URLs are made absolute on. |
| 39 | MEDIAHUB_MEDIA_PUBLIC_URL=https://openvibe.media |
| 40 | MEDIAHUB_MEDIA_APP=media-hub |
| 41 | #MEDIAHUB_MEDIA_TIMEOUT_MS=30000 |
| 42 | |
| 43 | # ── Per person (Media's quotas are per tenant, so these are enforced here) ── |
| 44 | #MEDIAHUB_QUOTA_BYTES=26843545600 |
| 45 | #MEDIAHUB_MAX_FILE_BYTES=2147483648 |
| 46 | #MEDIAHUB_UPLOADS_PER_DAY=50 |
| 47 | #MEDIAHUB_MAX_SHARES=20 |
| 48 | # The most a plain <input type=file> form may post in one request; keep it in step with client_max_body_size for |
| 49 | # `location = /files/upload` in deploy/nginx/openvibe.download.conf. Larger files go up in parts. |
| 50 | #MEDIAHUB_SINGLE_UPLOAD_BYTES=268435456 |
| 51 | # One part of a chunked upload. Media requires at least 5 MB and at most 256 MB; MediaHub clamps to that range. |
| 52 | #MEDIAHUB_PART_BYTES=8388608 |
| 53 | # How long an unfinished chunked upload may be resumed. |
| 54 | #MEDIAHUB_UPLOAD_TTL_SECONDS=21600 |
| 55 | # Where a no-JavaScript upload is spooled before it goes to Media (default: the system temp directory). |
| 56 | #MEDIAHUB_TMP_DIR= |
| 57 | |
| 58 | # optional: defaults to true in production |
| 59 | # COOKIE_SECURE=true |
| 60 | |
| 61 | # ── OpenVibe.Video: public watch pages for OpenVibe.Live's recordings and clips ── |
| 62 | # Served by Host header on openvibe.video; Live is called server-side, signed out. liveUrl and chatUrl |
| 63 | # are the host-internal addresses (production sets them to the loopback address); links people click |
| 64 | # use livePublicUrl. |
| 65 | MEDIAHUB_VIDEO_URL=https://openvibe.video |
| 66 | # Where "Edit in Studio" goes for a finished upload (the hand-off route). |
| 67 | MEDIAHUB_STUDIO_URL=https://openvibe.studio |
| 68 | # On by default. Set off to hide the Edit in Studio action while leaving the hand-off API. |
| 69 | # MEDIAHUB_STUDIO_VIDEO_EDIT=off |
| 70 | # The AI cut of an upload (server/video/cut.js): edited copies made here with ffmpeg, one at a time under nice. |
| 71 | #VIDEO_CUTS=off |
| 72 | #VIDEO_CUTS_PER_DAY=5 |
| 73 | #VIDEO_CUTS_MAX_SOURCE_SECONDS=10800 |
| 74 | #VIDEO_CUTS_SILENCE_DB=40 |
| 75 | #VIDEO_CUTS_THREADS=2 |
| 76 | MEDIAHUB_LIVE_URL=https://openvibe.live |
| 77 | MEDIAHUB_LIVE_PUBLIC_URL=https://openvibe.live |
| 78 | MEDIAHUB_CHAT_URL=https://openvibe.live |
| 79 | # IndexNow for openvibe.video (8–128 letters and digits): new watch pages are sent to search engines. Unset: off. |
| 80 | #INDEXNOW_KEY= |
| 81 | |
| 82 | # ── OpenVibe.Pics (openvibe.pics, server/pics) ── |
| 83 | # Served by Host header on openvibe.pics. Pictures are private Media objects served through this process. |
| 84 | MEDIAHUB_PICS_URL=https://openvibe.pics |
| 85 | #MEDIAHUB_PICS_MAX_IMAGE_BYTES=20971520 |
| 86 | #MEDIAHUB_PICS_MAX_PIXELS=100000000 |
| 87 | #MEDIAHUB_PICS_QUOTA_BYTES=5368709120 |
| 88 | #MEDIAHUB_PICS_IMAGES_PER_DAY=200 |
| 89 | #MEDIAHUB_PICS_ALBUMS_MAX=200 |
| 90 | #MEDIAHUB_PICS_ALBUM_IMAGES_MAX=500 |
| 91 | #MEDIAHUB_PICS_REPORTS_TO_HIDE=3 |
| 92 | # Alt text drafted by OpenVibe.AI when the uploader asks (needs OV_AI_INTERNAL_URL): off with off; a daily cap. |
| 93 | #MEDIAHUB_PICS_AI=off |
| 94 | #MEDIAHUB_PICS_AI_PER_DAY=300 |
| 95 | # Signed-out uploads stay off (unset) until the DMCA designated agent and the CSAM hash-matching account exist. |
| 96 | #MEDIAHUB_PICS_ANONYMOUS=1 |
| 97 | #MEDIAHUB_PICS_ANONYMOUS_MAX_IMAGE_BYTES=10485760 |
| 98 | #MEDIAHUB_PICS_ANONYMOUS_PER_DAY=20 |
| 99 | #MEDIAHUB_PICS_ANONYMOUS_IDLE_DAYS=30 |
| 100 |