# App APP_OFFLINE=false APP_NAME="Random Talk" ABOUT_LINK="https://docs.mirotalk.com/sites/rnd/" REPORT_EMAIL_LINK="mailto:support@example.com" REPORT_EMAIL_TEXT="support@example.com" OFFLINE_MESSAGE="We are currently offline for maintenance. Please check back soon." # Social OG_TITLE="Random Talk" OG_DESCRIPTION="Meet someone random. Talk instantly." OG_IMAGE="http://localhost:4010/images/social/og-image.png" OG_URL="http://localhost:4010" TWITTER_CARD="summary_large_image" # Server NODE_ENV=development # or production PORT=4010 USE_HTTPS=false TRUST_PROXY=false # Set to 1 for one reverse proxy (e.g. Nginx); use false without a proxy SSL_KEY_PATH=./ssl/key.pem SSL_CERT_PATH=./ssl/cert.pem # Real-time capacity limits MAX_ACTIVE_USERS=200 MAX_QUEUE_USERS=200 MAX_CONNECTIONS_PER_IP=5 # Multi-instance matchmaking (optional, disabled by default) # Set the same Redis URL on every instance to match users across instances (e.g. redis://localhost:6379). # MAX_ACTIVE_USERS and MAX_CONNECTIONS_PER_IP stay per instance. MAX_QUEUE_USERS becomes global. # Behind a load balancer, enable sticky sessions (Socket.IO long-polling needs them). REDIS_URL= # Connect with WebSocket only (no long-polling), so load balancers do not need sticky sessions. # Users on networks that block WebSockets will not be able to connect. SOCKET_WEBSOCKET_ONLY=false # Matching # When true, skipping never re-matches you (or the person you skipped) with each other right away. # When false, they may be paired again if nobody else is waiting. SKIP_AVOID_SAME_PARTNER=false # Abuse/rate limits SKIP_RATE_LIMIT_PER_10S=8 API_RATE_LIMIT_WINDOW_MS=60000 API_RATE_LIMIT_MAX_REQUESTS=120 # Reports and bans (community moderation) # Users can report their partner. When REPORT_BAN_THRESHOLD different IPs report the same IP within # REPORT_WINDOW_HOURS, that IP is banned for BAN_DURATION_HOURS. Repeat bans double in length (max 30 days). # Set REPORT_BAN_THRESHOLD=0 to disable reporting. Bans live in memory unless REDIS_URL is set, so a single # instance without Redis forgets them on restart. # IP detection follows X-Forwarded-For only for proxies trusted via TRUST_PROXY, so set TRUST_PROXY correctly # when behind a reverse proxy, or every user appears to have the proxy's IP. REPORT_BAN_THRESHOLD=3 REPORT_WINDOW_HOURS=24 BAN_DURATION_HOURS=24 # STUN servers (comma-separated) STUN_URLS=stun:stun.l.google.com:19302,stun:stun1.l.google.com:19302 # TURN fallback (comma-separated), for users behind strict NAT/firewalls TURN_URLS= TURN_USERNAME= TURN_PASSWORD= # Sentry error reporting (optional, disabled by default) SENTRY_ENABLED=false SENTRY_DSN= SENTRY_ENVIRONMENT=production # defaults to NODE_ENV SENTRY_RELEASE= SENTRY_TRACES_SAMPLE_RATE=0 # 0 to 1, performance tracing # Umami analytics (optional, disabled by default). The privacy policy is updated automatically when enabled. UMAMI_ENABLED=false UMAMI_SCRIPT_URL=https://analytics.example.com/script.js UMAMI_WEBSITE_ID= UMAMI_DOMAINS= # optional, comma-separated, only track these hostnames UMAMI_DO_NOT_TRACK=true # honor the browser's Do Not Track setting