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.
- 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.
- 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
- Node.js 20 or newer
- npm
- A Palworld dedicated server with its REST API enabled
- An OpenID Connect provider for dashboard authentication
-
Install dependencies:
npm install
-
Create
.env.localwith 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/callbackas an allowed redirect URI with your OIDC provider. -
Create or update the database:
npx prisma migrate deploy
-
Start the development server:
npm run dev
-
Open http://localhost:3000 and sign in through your OIDC provider.
| 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 |
PALWORLD_API_URLshould point to the base URL of the Palworld REST API. PalOps appends the API paths it needs.PALWORLD_ADMIN_PASSWORDis used for authenticated API requests and should be kept server-side.- Users with the
rootrole 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_URLto the public application URL. - Never commit
.env.local, database files, or administrator credentials.
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
Build the application and run it with a production environment configured:
npm run build
npm run startApply 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.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen 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.
