Files
2026-09-05 13:10:36 -07:00

66 lines
3.0 KiB
Bash

# --- Core ---
# Postgres connection string. Matches docker-compose.yml defaults.
DATABASE_URL=postgresql://reforger:reforger@127.0.0.1:5433/reforger_panel
# Random string, at least 32 characters. Used to sign OAuth state.
SESSION_SECRET=change-me-to-a-long-random-string-1234
# API listen port and the origin the web app is served from (CORS + OAuth redirects).
PORT=3001
WEB_ORIGIN=http://localhost:5173
NODE_ENV=development
# --- Discord OAuth ---
# Create an application at https://discord.com/developers/applications,
# add the redirect URI below under OAuth2 -> Redirects.
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_REDIRECT_URI=http://localhost:3001/api/auth/discord/callback
# Your Discord user ID. This account is auto-assigned the "owner" role at login.
OWNER_DISCORD_ID=
# Local development only: set to true to enable POST /api/auth/dev-login,
# which signs you in as a fake owner without Discord credentials.
# Hard-disabled when NODE_ENV=production.
DEV_AUTH_BYPASS=false
# --- Reforger Workshop API (backend-only, never called from the browser) ---
# The panel uses the v2 API. Responses are cached in-process with
# stale-while-revalidate, so the Mods page does not wait on the network.
REFORGER_WORKSHOP_API_BASE_URL=https://api.reforgermods.net
# Optional. The free public tier needs no credentials; set a key only if you
# have a paid reforgermods.net plan and want its higher rate limits.
REFORGER_WORKSHOP_API_KEY=
# --- Pterodactyl (Client API, not Application API) ---
# Leave USE_MOCK_PTERODACTYL=true to run everything locally with mock data.
PTERODACTYL_BASE_URL=
# Create under Account Settings -> API Credentials in Pterodactyl.
PTERODACTYL_CLIENT_API_KEY=
# The short server identifier from the Pterodactyl server URL, e.g. "1a2b3c4d".
PTERODACTYL_SERVER_ID=
USE_MOCK_PTERODACTYL=true
# Proxy Pterodactyl's Wings websocket for the live console and real-time
# resource metrics. This is what makes install, update and mod-download output
# visible in the panel; without it you only see the game's own log file, which
# does not exist until the game has already started. Set to false to fall back
# to REST polling.
PTERODACTYL_WEBSOCKET_ENABLED=true
# --- Reforger config ---
# Path of the server's config.json in the Pterodactyl file manager. Read live
# on every request and written in place by the Configuration and Mods pages
# (the previous file is always kept as config.json.bak).
REFORGER_CONFIG_PATH=/config.json
# --- Reforger log ingestion ---
# Powers player sessions and the killfeed, which are parsed out of the game's
# own log file. The live console does not depend on this.
# Recommended: set REFORGER_LOG_DIRECTORY (e.g. /profile/logs) and the panel
# follows the newest logs_* dated subfolder automatically on every sync.
# REFORGER_ADMIN_LOG_PATH pins one exact file and overrides discovery.
REFORGER_ADMIN_LOG_PATH=
REFORGER_LOG_DIRECTORY=
REFORGER_LOG_FILE_PATTERN=console.log
REFORGER_LOG_POLL_INTERVAL_SECONDS=20
REFORGER_LOG_MAX_DOWNLOAD_BYTES=2097152
REFORGER_LOG_STALE_AFTER_SECONDS=90