Skip to content
0xle0nePublic

About

A focused operations dashboard for monitoring and managing a Palworld dedicated server.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

PalOps logo

PalOps

A focused operations dashboard for monitoring and managing a Palworld dedicated server.

PalOps connects to the Palworld REST API and gives authorized operators a small, practical control surface for server health, players, moderation, and lifecycle actions.

What it does

  • Overview: See server status, version, connected players, FPS, and uptime at a glance.
  • Player operations: Browse connected players, copy user IDs, kick players, and manage bans.
  • Lifecycle controls: Request a server restart and track the restart state as the server goes offline and comes back.
  • Settings: Inspect the settings reported by the Palworld API in a read-only view.
  • Authentication: Protect the dashboard with an OpenID Connect provider and role-based access for moderation actions.
  • Persistence: Store sessions, bans, and restart state in SQLite through Prisma.

Tech stack

  • Next.js 16 with the App Router
  • React 19 and TypeScript
  • Prisma with SQLite and better-sqlite3
  • OpenID Connect via openid-client
  • Tailwind CSS 4 and shadcn-style UI components
  • Palworld REST API

Requirements

  • Node.js 20 or newer
  • npm
  • A Palworld dedicated server with its REST API enabled
  • An OpenID Connect provider for dashboard authentication

Getting started

  1. Install dependencies:

    npm install
  2. Create .env.local with the required configuration:

    APP_URL=http://localhost:3000
    DATABASE_URL=file:./dev.db
    
    OIDC_ISSUER_URL=https://identity.example.com
    OIDC_CLIENT_ID=palops
    OIDC_CLIENT_SECRET=replace-me
    # Optional: defaults to "openid profile email"
    OIDC_SCOPES=openid profile email
    # Optional: defaults to 86400 seconds
    SESSION_TTL_SECONDS=86400
    
    PALWORLD_API_URL=http://127.0.0.1:8212
    PALWORLD_ADMIN_PASSWORD=replace-me

    Register http://localhost:3000/auth/callback as an allowed redirect URI with your OIDC provider.

  3. Create or update the database:

    npx prisma migrate deploy
  4. Start the development server:

    npm run dev
  5. Open http://localhost:3000 and sign in through your OIDC provider.

Commands

Command Purpose
npm run dev Start the development server
npm run build Create a production build
npm run start Serve the production build
npm run lint Run ESLint
npx prisma migrate deploy Apply pending database migrations
npx prisma generate Regenerate the Prisma client

Configuration notes

  • PALWORLD_API_URL should point to the base URL of the Palworld REST API. PalOps appends the API paths it needs.
  • PALWORLD_ADMIN_PASSWORD is used for authenticated API requests and should be kept server-side.
  • Users with the root role can perform moderation actions. Other authenticated users can view the dashboard according to the route permissions.
  • Use HTTPS in production so authentication cookies can be marked secure. Set APP_URL to the public application URL.
  • Never commit .env.local, database files, or administrator credentials.

Project structure

app/          Next.js routes, layouts, and auth handlers
components/   Dashboard and reusable UI components
lib/          Palworld client, auth, lifecycle, and database helpers
prisma/       Database schema and migrations
public/       Static assets, including the PalOps logo

Deployment

Build the application and run it with a production environment configured:

npm run build
npm run start

Apply migrations as part of the deployment process before serving traffic. Ensure the deployed instance can reach the Palworld REST API and that the OIDC provider allows the production callback URL. This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

About

A focused operations dashboard for monitoring and managing a Palworld dedicated server.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages