2026-07-14 14:19:17 -07:00
2026-07-14 14:19:17 -07:00
2026-07-10 10:51:04 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-05 16:54:59 -07:00
2026-07-06 11:24:47 -07:00
2026-07-05 16:54:59 -07:00

Reforger Panel

Reforger Panel is a private web control panel for an Arma Reforger server hosted through Pterodactyl. It provides a focused interface for trusted server staff to monitor the server, manage access, review player activity, inspect configuration, search Workshop mods, and run limited power actions without exposing Pterodactyl credentials to the browser.

The panel is intended for one private community server. It is not a replacement for Pterodactyl and does not provide billing, public signup, raw console access, arbitrary file management, or multi-tenant hosting.

Project Structure

apps/api        Express API, database schema, auth, Pterodactyl integration, log ingestion
apps/web        Vite, React, and Tailwind dashboard
packages/shared Shared roles, DTOs, and Reforger configuration types

Requirements

  • Node.js 22 or newer
  • npm
  • Docker, for the local Postgres database
  • Discord application credentials, only when using real Discord login
  • Pterodactyl Client API credentials, only when connecting to a real server

Local Setup

  1. Copy the example environment file:
cp .env.example .env
  1. For local development without Discord or Pterodactyl, set these values in .env:
DEV_AUTH_BYPASS=true
USE_MOCK_PTERODACTYL=true
  1. Start Postgres:
docker compose up -d
  1. Install dependencies and prepare the database:
npm install
npm run db:migrate
npm run db:seed

Launch Locally

Start the API and web app:

npm run dev

Open:

http://localhost:5173

When DEV_AUTH_BYPASS=true, use the local development login. The API runs on port 3001; the web app runs on port 5173.

Production Launch

  1. Copy and edit the environment file:
cp .env.example .env
  1. Set production values in .env:
NODE_ENV=production
DEV_AUTH_BYPASS=false
USE_MOCK_PTERODACTYL=false
SESSION_SECRET=<long-random-secret>
WEB_ORIGIN=https://your-panel-domain.example
DISCORD_REDIRECT_URI=https://your-panel-domain.example/api/auth/discord/callback
DISCORD_CLIENT_ID=<discord-client-id>
DISCORD_CLIENT_SECRET=<discord-client-secret>
OWNER_DISCORD_ID=<your-discord-user-id>
PTERODACTYL_BASE_URL=<pterodactyl-url>
PTERODACTYL_CLIENT_API_KEY=<client-api-key>
PTERODACTYL_SERVER_ID=<server-id>
  1. Start the production stack:
docker compose -f docker-compose.prod.yml up -d --build
  1. Put HTTPS in front of port 3001 with a reverse proxy such as Caddy, nginx, or Tailscale Serve.

Connecting Pterodactyl

Use a Pterodactyl Client API key from an account that only has access to the intended Arma Reforger server. Do not use a Pterodactyl Application API key.

Recommended log configuration:

REFORGER_LOG_DIRECTORY=/profile/logs
REFORGER_LOG_FILE_PATTERN=console.log

The panel follows the newest logs_* folder during sync. If you need to pin a single file instead, set REFORGER_ADMIN_LOG_PATH.

Common Commands

npm run dev          # Start API and web app in development mode
npm run build        # Build all workspaces
npm run typecheck    # Run TypeScript checks
npm run lint         # Run ESLint
npm test             # Run tests
npm run db:migrate   # Apply database migrations
npm run db:seed      # Seed initial server data

Notes

  • Roles are stored in the panel database.
  • New Discord users start as viewers.
  • The Discord account matching OWNER_DISCORD_ID becomes the owner.
  • Pterodactyl credentials are used only by the backend.
  • The browser only calls the panel API.
  • Production mode requires HTTPS because secure cookies are enabled.
S
Description
Connects to a pterodactyl API to have a custom dashboard to better manage Arma Reforger Servers, with mod manager.
Readme
547 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 98.7%
CSS 1%
Dockerfile 0.2%