Files
esports/.env.example

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=""