90 lines
3.7 KiB
Plaintext
90 lines
3.7 KiB
Plaintext
# Copy this file to .env and fill in the values before running the application.
|
|
|
|
# Public origin. Also decides the environment when APP_ENV is not set:
|
|
# dev http://localhost:3102 or https://esports-dev.vash.software
|
|
# staging https://esports-staging.vash.software
|
|
# prod https://esports.vash.software
|
|
ORIGIN="http://localhost:3102"
|
|
# dev | staging | prod. Dev and staging prefix page titles, show an environment
|
|
# badge, and enable the simulation lab. Leave unset to derive it from ORIGIN.
|
|
APP_ENV=""
|
|
|
|
# Postgres in the shared instance, one database and login role per environment:
|
|
# vash (prod), vash_staging, vash_dev on 127.0.0.1:5440.
|
|
DB_URL="postgresql://vash_dev:password@127.0.0.1:5440/vash_dev"
|
|
DATABASE_URL="postgresql://vash_dev:password@127.0.0.1:5440/vash_dev"
|
|
|
|
# Lobbies: simulator | irc. Unset means irc in production and simulator
|
|
# everywhere else, so dev and staging never log production's osu! account out.
|
|
BANCHO_MODE="simulator"
|
|
|
|
# One object per osu! account. A normal account hosts 4 tournament lobbies;
|
|
# add friends' accounts to host more at once. botAccount raises rate limits.
|
|
# OSU_IRC_ACCOUNTS='[{"id":"main","username":"player","password":"irc-password","maxLobbies":4}]'
|
|
# Single-account shorthand (https://osu.ppy.sh/home/account/edit#legacy-api):
|
|
OSU_IRC_USERNAME=""
|
|
OSU_IRC_PASSWORD=""
|
|
# osu! account signed in to the autonomous tourney streamer; Vash adds it as a room referee.
|
|
OSU_TOURNEY_ACCOUNT=""
|
|
# Another IRC server, such as a private Bancho or a local fake. Defaults to irc.ppy.sh:6667.
|
|
# OSU_IRC_HOST=""
|
|
# OSU_IRC_PORT=""
|
|
|
|
# Stable Better Auth user ID of the root admin. The migration stores this role
|
|
# in the database; no OAuth or email-shaped identity is used for authorization.
|
|
ROOT_ADMIN_USER_ID=""
|
|
|
|
# Better Auth secret: 32+ random characters, e.g. `openssl rand -hex 32`.
|
|
BETTER_AUTH_SECRET=""
|
|
|
|
# Email registration, verification, recovery, and email changes become available
|
|
# when both are set. Social sign-in does not require either value.
|
|
RESEND_API_KEY=""
|
|
EMAIL_FROM="Vash Esports <auth@esports.vash.software>"
|
|
|
|
# Cloudflare R2 image storage (team avatars, tournament icons and banners).
|
|
# The bucket needs public access at R2_PUBLIC_URL.
|
|
R2_ACCOUNT_ID=""
|
|
R2_ACCESS_KEY_ID=""
|
|
R2_SECRET_ACCESS_KEY=""
|
|
R2_BUCKET="vash-esports-images"
|
|
R2_PUBLIC_URL="https://cdn.esports.vash.software"
|
|
|
|
# osu! OAuth application: https://osu.ppy.sh/home/account/edit#oauth
|
|
# Callback: <ORIGIN>/api/auth/oauth2/callback/osu
|
|
OSU_CLIENT_ID=""
|
|
OSU_CLIENT_SECRET=""
|
|
|
|
# "Sign in with Discord" application (not the bot).
|
|
DISCORD_CLIENT_ID=""
|
|
DISCORD_CLIENT_SECRET=""
|
|
# The notification bot. Several environments may share one token: the bot only
|
|
# posts. Point dev and staging at a private channel such as #dev-channel.
|
|
DISCORD_BOT_TOKEN=""
|
|
# Optional; read from the token when unset. Used for the "Add bot" link on /admin.
|
|
DISCORD_BOT_CLIENT_ID=""
|
|
DISCORD_GUILD_ID=""
|
|
# Match results (no pings) and stream announcements (@everyone in a channel that
|
|
# members with the "no stream notifications" role cannot read).
|
|
DISCORD_MATCH_CHANNEL_ID=""
|
|
DISCORD_STREAM_CHANNEL_ID=""
|
|
|
|
# Google OAuth: https://console.cloud.google.com/apis/credentials
|
|
GOOGLE_CLIENT_ID=""
|
|
GOOGLE_CLIENT_SECRET=""
|
|
|
|
# Sentry error tracking (https://sentry.io)
|
|
PUBLIC_SENTRY_DSN=""
|
|
# Only CI needs this, to upload source maps. Keep it out of local builds.
|
|
SENTRY_AUTH_TOKEN=""
|
|
# Fraction of requests traced. Defaults to 0.1 in prod and 0 elsewhere.
|
|
SENTRY_TRACES_SAMPLE_RATE=""
|
|
|
|
# Logging: LOG_LEVEL=debug for more detail, LOG_SQL=1 to log every query.
|
|
LOG_LEVEL="info"
|
|
LOG_SQL=""
|
|
|
|
# Encrypts streaming platform keys (Broadcast → Stream). Defaults to BETTER_AUTH_SECRET;
|
|
# set it separately to rotate the auth secret without re-entering stream keys.
|
|
# STREAM_KEY_SECRET=""
|