Files
2026-06-21 03:53:06 +03:00

70 lines
4.3 KiB
TypeScript

import { loadEnvFile } from "node:process";
try {
loadEnvFile();
} catch (e) {
console.log(e);
}
const defaults = {
REDIS_URL: "", // Optional, for metrics
DATABASE_URL: "", // Optional, for permanent rooms and VBrowser management
YOUTUBE_API_KEY: "", // Optional, provide one to enable searching YouTube
NODE_ENV: "", // Usually, you should let process.env.NODE_ENV override this
FIREBASE_ADMIN_SDK_CONFIG: "", // Optional, for features requiring sign-in/authentication
FIREBASE_DATABASE_URL: "", // Optional (unused)
STRIPE_SECRET_KEY: "", // Optional, for subscriptions
VBROWSER_SESSION_SECONDS: 10800, // Number of seconds to allow vbrowsers to run for
VBROWSER_SESSION_SECONDS_LARGE: 86400, // Number of seconds to allow large vbrowsers to run for
VM_POOL_RAMP_DOWN_HOURS: "", // Comma separated start/end UTC hours of the ramp down period
VM_POOL_RAMP_UP_HOURS: "", // Comma separated start/end UTC hours of the ramp up period
VBROWSER_TAG: "", // Optional, tag to put on VBrowser VM instances
DO_TOKEN: "", // Optional, for DigitalOcean VMs
DO_GATEWAY: "", // Gateway handling SSL termination
DO_IMAGE: "", // ID of DigitalOcean snapshot image to use for vbrowser
DO_SSH_KEYS: "", // IDs of DigitalOcean SSH keys to access vbrowsers
HETZNER_TOKEN: "", // Optional, for Hetzner VMs
HETZNER_GATEWAY: "", // Gateway handling SSL termination
HETZNER_SSH_KEYS: "", // IDs of Hetzner SSH keys to access vbrowsers
HETZNER_IMAGE: "", // ID of Hetzner snapshot image to use for vbrowser
VM_MANAGER_CONFIG: "", // Comma-separated list of the pools of VMs to run (provider:size:region:minSize:limitSize:hostname), e.g. Docker:large:US:0:1:localhost,Docker:standard:US:0:1:localhost
SCW_SECRET_KEY: "", // Optional, for Scaleway VMs
SCW_ORGANIZATION_ID: "", // Optional, for Scaleway VMs
SCW_GATEWAY: "", // Gateway handling SSL termination
SCW_IMAGE: "", // ID of Scaleway snapshot image to use for vbrowser
DOCKER_VM_HOST: "localhost", // Optional, for Docker VMs
DOCKER_VM_HOST_SSH_USER: "root", // Optional, username for Docker host
DOCKER_VM_HOST_SSH_KEY_BASE64: "", // Optional, private SSH key for Docker host, or default to ~/.ssh/id_rsa content
SSL_KEY_FILE: "", // Optional, Filename of SSL key (to use https)
SSL_CRT_FILE: "", // Optional, Filename of SSL cert (to use https)
PORT: 8080, // Port to use for server
HOST: "0.0.0.0", // Host interface to bind server to
STATS_KEY: "", // Secret string to validate viewing stats
BETA_USER_EMAILS: "", // Comma-delimited list of user emails to include in the beta
CUSTOM_SETTINGS_HOSTNAME: "", // Hostname to send different config settings to client
STREAM_PATH: "", // Path of server that supports additional video streams
CONVERT_PATH: "", // Path of server that supports video conversion
ROOM_CAPACITY: 0, // Maximum capacity of a standard room. Set to 0 for unlimited.
ROOM_CAPACITY_SUB: 0, // Maximum capacity of a sub room. Set to 0 for unlimited.
BUILD_DIRECTORY: "build", // Name of the directory where the built React UI is served from
VM_MIN_UPTIME_MINUTES: 0, // Number of minutes of the hour VMs must exist for before being eligible for termination
SHARD: undefined, // Shard ID of the web server (configure in ecosystem.config.js)
FREE_ROOM_LIMIT: 1, // The maximum number of rooms a free user can have
SUBSCRIBER_ROOM_LIMIT: 20, // The maximum number of rooms a subscriber can have
VMWORKER_PORT: 3100, // Port to use for the vmWorker HTTP server
VM_ASSIGNMENT_TIMEOUT: 75, // Number of seconds to wait for a VM before failing
DISCORD_BOT_TOKEN: "", // Token for the Discord bot that generates WatchParty links
DISCORD_ADMIN_BOT_TOKEN: "", // Optional, for Discord bot to set subscriber roles
DISCORD_ADMIN_BOT_SERVER_ID: "708181150220156929", // Optional, ID of the Discord server
DISCORD_ADMIN_BOT_SUB_ROLE_ID: "722202622345609246", // Optional, ID of subscriber role
MEDIASOUP_SERVER: "", // Optional, URL of the MediaSoup server to broadcast to for larger screen/file shares
TWITCH_PROXY_PATH: "", // Optional, URL of the server that can proxy twitch HLS stream playlists and segments
VBROWSER_ADMIN_KEY: "", // Optional, the key to hit admin endpoints on the vbrowser
OPENSUBTITLES_KEY: "", // Optional, key to OpenSubtitles API
};
export default {
...defaults,
...process.env,
};